@hebcal/core 6.0.7 → 6.1.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.
- package/dist/DailyLearning.d.ts +1 -1
- package/dist/HolidayEvent.d.ts +1 -0
- package/dist/ashkenazi.po.d.ts +14 -2
- package/dist/bundle.js +2086 -1536
- package/dist/bundle.js.map +1 -1
- package/dist/bundle.min.js +17 -19
- package/dist/bundle.min.js.map +1 -1
- package/dist/coverage/block-navigation.d.ts +1 -0
- package/dist/coverage/block-navigation.js +70 -0
- package/dist/coverage/prettify.d.ts +0 -0
- package/dist/coverage/prettify.js +477 -0
- package/dist/coverage/sorter.d.ts +1 -0
- package/dist/coverage/sorter.js +176 -0
- package/dist/eslint.config.d.mts +83 -0
- package/dist/eslint.config.mjs +28 -0
- package/dist/esm/DailyLearning.d.ts +1 -1
- package/dist/esm/DailyLearning.js +1 -1
- package/dist/esm/DailyLearning.js.map +1 -1
- package/dist/esm/HebrewDateEvent.js +5 -5
- package/dist/esm/HebrewDateEvent.js.map +1 -1
- package/dist/esm/HolidayEvent.d.ts +1 -0
- package/dist/esm/HolidayEvent.js +17 -1
- package/dist/esm/HolidayEvent.js.map +1 -1
- package/dist/esm/MevarchimChodeshEvent.js +2 -1
- package/dist/esm/MevarchimChodeshEvent.js.map +1 -1
- package/dist/esm/ParshaEvent.js +2 -1
- package/dist/esm/ParshaEvent.js.map +1 -1
- package/dist/esm/TimedEvent.js +9 -3
- package/dist/esm/TimedEvent.js.map +1 -1
- package/dist/esm/YomKippurKatanEvent.js +2 -1
- package/dist/esm/YomKippurKatanEvent.js.map +1 -1
- package/dist/esm/ashkenazi.po.d.ts +14 -2
- package/dist/esm/ashkenazi.po.js +2 -2
- package/dist/esm/ashkenazi.po.js.map +1 -1
- package/dist/esm/calendar.js +6 -8
- package/dist/esm/calendar.js.map +1 -1
- package/dist/esm/candles.js +11 -3
- package/dist/esm/candles.js.map +1 -1
- package/dist/esm/event.js +18 -1
- package/dist/esm/event.js.map +1 -1
- package/dist/esm/getStartAndEnd.js +2 -2
- package/dist/esm/getStartAndEnd.js.map +1 -1
- package/dist/esm/hallel.js +1 -1
- package/dist/esm/he-x-NoNikud.po.d.ts +1 -0
- package/dist/esm/he-x-NoNikud.po.js +2 -2
- package/dist/esm/he-x-NoNikud.po.js.map +1 -1
- package/dist/esm/he.po.d.ts +20 -0
- package/dist/esm/he.po.js +2 -2
- package/dist/esm/he.po.js.map +1 -1
- package/dist/esm/hebcal.js +3 -3
- package/dist/esm/hebcal.js.map +1 -1
- package/dist/esm/holidays.js +3 -3
- package/dist/esm/holidays.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/isAssurBemlacha.js +1 -1
- package/dist/esm/locale.d.ts +1 -2
- package/dist/esm/locale.js +1 -1
- package/dist/esm/locale.js.map +1 -1
- package/dist/esm/location.js +7 -1
- package/dist/esm/location.js.map +1 -1
- package/dist/esm/modern.js +1 -1
- package/dist/esm/molad.d.ts +71 -1
- package/dist/esm/molad.js +113 -12
- package/dist/esm/molad.js.map +1 -1
- package/dist/esm/moladBase.d.ts +15 -0
- package/dist/esm/moladBase.js +83 -0
- package/dist/esm/moladBase.js.map +1 -0
- package/dist/esm/moladDate.d.ts +12 -0
- package/dist/esm/moladDate.js +63 -0
- package/dist/esm/moladDate.js.map +1 -0
- package/dist/esm/omer.d.ts +0 -1
- package/dist/esm/omer.js +7 -4
- package/dist/esm/omer.js.map +1 -1
- package/dist/esm/parshaName.js +2 -2
- package/dist/esm/parshaName.js.map +1 -1
- package/dist/esm/parshaYear.js +1 -1
- package/dist/esm/pkgVersion.d.ts +1 -1
- package/dist/esm/pkgVersion.js +2 -2
- package/dist/esm/pkgVersion.js.map +1 -1
- package/dist/esm/reformatTimeStr.js +5 -6
- package/dist/esm/reformatTimeStr.js.map +1 -1
- package/dist/esm/sedra.js +13 -7
- package/dist/esm/sedra.js.map +1 -1
- package/dist/esm/staticHolidays.js +1 -1
- package/dist/esm/tachanun.js +4 -4
- package/dist/esm/tachanun.js.map +1 -1
- package/dist/esm/zmanim.d.ts +114 -1
- package/dist/esm/zmanim.js +242 -8
- package/dist/esm/zmanim.js.map +1 -1
- package/dist/he-x-NoNikud.po.d.ts +1 -0
- package/dist/he.po.d.ts +20 -0
- package/dist/index.d.ts +2 -0
- package/dist/locale.d.ts +1 -2
- package/dist/molad.d.ts +71 -1
- package/dist/moladBase.d.ts +15 -0
- package/dist/moladDate.d.ts +12 -0
- package/dist/omer.d.ts +0 -1
- package/dist/pkgVersion.d.ts +1 -1
- package/dist/po2json.js +3 -4
- package/dist/src/DailyLearning.d.ts +1 -1
- package/dist/src/HebrewDateEvent.js +4 -4
- package/dist/src/HolidayEvent.d.ts +1 -0
- package/dist/src/HolidayEvent.js +16 -0
- package/dist/src/MevarchimChodeshEvent.js +1 -0
- package/dist/src/ParshaEvent.js +1 -0
- package/dist/src/TimedEvent.js +8 -2
- package/dist/src/YomKippurKatanEvent.js +1 -0
- package/dist/src/ashkenazi.po.d.ts +14 -2
- package/dist/src/ashkenazi.po.js +1 -1
- package/dist/src/calendar.js +5 -7
- package/dist/src/candles.js +10 -2
- package/dist/src/event.js +17 -0
- package/dist/src/getStartAndEnd.js +1 -1
- package/dist/src/he-x-NoNikud.po.d.ts +1 -0
- package/dist/src/he-x-NoNikud.po.js +1 -1
- package/dist/src/he.po.d.ts +20 -0
- package/dist/src/he.po.js +1 -1
- package/dist/src/hebcal.js +2 -2
- package/dist/src/holidays.js +2 -2
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/locale.d.ts +1 -2
- package/dist/src/locale.js +1 -1
- package/dist/src/location.js +6 -0
- package/dist/src/molad.d.ts +71 -1
- package/dist/src/molad.js +112 -11
- package/dist/src/moladBase.d.ts +15 -0
- package/dist/src/moladBase.js +78 -0
- package/dist/src/moladDate.d.ts +12 -0
- package/dist/src/moladDate.js +58 -0
- package/dist/src/omer.d.ts +0 -1
- package/dist/src/omer.js +6 -3
- package/dist/src/parshaName.js +1 -1
- package/dist/src/pkgVersion.d.ts +1 -1
- package/dist/src/pkgVersion.js +1 -1
- package/dist/src/reformatTimeStr.js +4 -5
- package/dist/src/sedra.js +12 -6
- package/dist/src/tachanun.js +3 -3
- package/dist/src/zmanim.d.ts +114 -1
- package/dist/src/zmanim.js +240 -6
- package/dist/version.js +1 -2
- package/dist/zmanim.d.ts +114 -1
- package/package.json +17 -19
- package/dist/size-demo/dist/getHoliday.d.ts +0 -1944
- package/dist/size-demo/dist/getHoliday.js +0 -3712
- package/dist/size-demo/dist/parshiyot.js +0 -10662
- package/dist/size-demo/dist/sedra.d.ts +0 -1411
- package/dist/size-demo/dist/sedra.js +0 -2359
- package/dist/size-demo/dist/tachanun.d.ts +0 -1015
- package/dist/size-demo/dist/tachanun.js +0 -1755
- package/dist/size-demo/getHoliday.d.ts +0 -1
- package/dist/size-demo/getHoliday.js +0 -3
- package/dist/size-demo/parshiyot.d.ts +0 -1
- package/dist/size-demo/parshiyot.js +0 -11
- package/dist/size-demo/rollup.config.d.ts +0 -3
- package/dist/size-demo/rollup.config.js +0 -47
- package/dist/size-demo/sedra.d.ts +0 -1
- package/dist/size-demo/sedra.js +0 -3
- package/dist/size-demo/tachanun.d.ts +0 -1
- package/dist/size-demo/tachanun.js +0 -3
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
var addSorting = (function () {
|
|
4
|
+
'use strict';
|
|
5
|
+
var cols, currentSort = {
|
|
6
|
+
index: 0,
|
|
7
|
+
desc: false
|
|
8
|
+
};
|
|
9
|
+
// returns the summary table element
|
|
10
|
+
function getTable() {
|
|
11
|
+
return document.querySelector('.coverage-summary');
|
|
12
|
+
}
|
|
13
|
+
// returns the thead element of the summary table
|
|
14
|
+
function getTableHeader() {
|
|
15
|
+
return getTable().querySelector('thead tr');
|
|
16
|
+
}
|
|
17
|
+
// returns the tbody element of the summary table
|
|
18
|
+
function getTableBody() {
|
|
19
|
+
return getTable().querySelector('tbody');
|
|
20
|
+
}
|
|
21
|
+
// returns the th element for nth column
|
|
22
|
+
function getNthColumn(n) {
|
|
23
|
+
return getTableHeader().querySelectorAll('th')[n];
|
|
24
|
+
}
|
|
25
|
+
function onFilterInput() {
|
|
26
|
+
const searchValue = document.getElementById('fileSearch').value;
|
|
27
|
+
const rows = document.getElementsByTagName('tbody')[0].children;
|
|
28
|
+
// Try to create a RegExp from the searchValue. If it fails (invalid regex),
|
|
29
|
+
// it will be treated as a plain text search
|
|
30
|
+
let searchRegex;
|
|
31
|
+
try {
|
|
32
|
+
searchRegex = new RegExp(searchValue, 'i'); // 'i' for case-insensitive
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
searchRegex = null;
|
|
36
|
+
}
|
|
37
|
+
for (let i = 0; i < rows.length; i++) {
|
|
38
|
+
const row = rows[i];
|
|
39
|
+
let isMatch = false;
|
|
40
|
+
if (searchRegex) {
|
|
41
|
+
// If a valid regex was created, use it for matching
|
|
42
|
+
isMatch = searchRegex.test(row.textContent);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Otherwise, fall back to the original plain text search
|
|
46
|
+
isMatch = row.textContent
|
|
47
|
+
.toLowerCase()
|
|
48
|
+
.includes(searchValue.toLowerCase());
|
|
49
|
+
}
|
|
50
|
+
row.style.display = isMatch ? '' : 'none';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// loads the search box
|
|
54
|
+
function addSearchBox() {
|
|
55
|
+
var template = document.getElementById('filterTemplate');
|
|
56
|
+
var templateClone = template.content.cloneNode(true);
|
|
57
|
+
templateClone.getElementById('fileSearch').oninput = onFilterInput;
|
|
58
|
+
template.parentElement.appendChild(templateClone);
|
|
59
|
+
}
|
|
60
|
+
// loads all columns
|
|
61
|
+
function loadColumns() {
|
|
62
|
+
var colNodes = getTableHeader().querySelectorAll('th'), colNode, cols = [], col, i;
|
|
63
|
+
for (i = 0; i < colNodes.length; i += 1) {
|
|
64
|
+
colNode = colNodes[i];
|
|
65
|
+
col = {
|
|
66
|
+
key: colNode.getAttribute('data-col'),
|
|
67
|
+
sortable: !colNode.getAttribute('data-nosort'),
|
|
68
|
+
type: colNode.getAttribute('data-type') || 'string'
|
|
69
|
+
};
|
|
70
|
+
cols.push(col);
|
|
71
|
+
if (col.sortable) {
|
|
72
|
+
col.defaultDescSort = col.type === 'number';
|
|
73
|
+
colNode.innerHTML =
|
|
74
|
+
colNode.innerHTML + '<span class="sorter"></span>';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return cols;
|
|
78
|
+
}
|
|
79
|
+
// attaches a data attribute to every tr element with an object
|
|
80
|
+
// of data values keyed by column name
|
|
81
|
+
function loadRowData(tableRow) {
|
|
82
|
+
var tableCols = tableRow.querySelectorAll('td'), colNode, col, data = {}, i, val;
|
|
83
|
+
for (i = 0; i < tableCols.length; i += 1) {
|
|
84
|
+
colNode = tableCols[i];
|
|
85
|
+
col = cols[i];
|
|
86
|
+
val = colNode.getAttribute('data-value');
|
|
87
|
+
if (col.type === 'number') {
|
|
88
|
+
val = Number(val);
|
|
89
|
+
}
|
|
90
|
+
data[col.key] = val;
|
|
91
|
+
}
|
|
92
|
+
return data;
|
|
93
|
+
}
|
|
94
|
+
// loads all row data
|
|
95
|
+
function loadData() {
|
|
96
|
+
var rows = getTableBody().querySelectorAll('tr'), i;
|
|
97
|
+
for (i = 0; i < rows.length; i += 1) {
|
|
98
|
+
rows[i].data = loadRowData(rows[i]);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// sorts the table using the data for the ith column
|
|
102
|
+
function sortByIndex(index, desc) {
|
|
103
|
+
var key = cols[index].key, sorter = function (a, b) {
|
|
104
|
+
a = a.data[key];
|
|
105
|
+
b = b.data[key];
|
|
106
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
107
|
+
}, finalSorter = sorter, tableBody = document.querySelector('.coverage-summary tbody'), rowNodes = tableBody.querySelectorAll('tr'), rows = [], i;
|
|
108
|
+
if (desc) {
|
|
109
|
+
finalSorter = function (a, b) {
|
|
110
|
+
return -1 * sorter(a, b);
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
for (i = 0; i < rowNodes.length; i += 1) {
|
|
114
|
+
rows.push(rowNodes[i]);
|
|
115
|
+
tableBody.removeChild(rowNodes[i]);
|
|
116
|
+
}
|
|
117
|
+
rows.sort(finalSorter);
|
|
118
|
+
for (i = 0; i < rows.length; i += 1) {
|
|
119
|
+
tableBody.appendChild(rows[i]);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// removes sort indicators for current column being sorted
|
|
123
|
+
function removeSortIndicators() {
|
|
124
|
+
var col = getNthColumn(currentSort.index), cls = col.className;
|
|
125
|
+
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
|
|
126
|
+
col.className = cls;
|
|
127
|
+
}
|
|
128
|
+
// adds sort indicators for current column being sorted
|
|
129
|
+
function addSortIndicators() {
|
|
130
|
+
getNthColumn(currentSort.index).className += currentSort.desc
|
|
131
|
+
? ' sorted-desc'
|
|
132
|
+
: ' sorted';
|
|
133
|
+
}
|
|
134
|
+
// adds event listeners for all sorter widgets
|
|
135
|
+
function enableUI() {
|
|
136
|
+
var i, el, ithSorter = function ithSorter(i) {
|
|
137
|
+
var col = cols[i];
|
|
138
|
+
return function () {
|
|
139
|
+
var desc = col.defaultDescSort;
|
|
140
|
+
if (currentSort.index === i) {
|
|
141
|
+
desc = !currentSort.desc;
|
|
142
|
+
}
|
|
143
|
+
sortByIndex(i, desc);
|
|
144
|
+
removeSortIndicators();
|
|
145
|
+
currentSort.index = i;
|
|
146
|
+
currentSort.desc = desc;
|
|
147
|
+
addSortIndicators();
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
for (i = 0; i < cols.length; i += 1) {
|
|
151
|
+
if (cols[i].sortable) {
|
|
152
|
+
// add the click event handler on the th so users
|
|
153
|
+
// dont have to click on those tiny arrows
|
|
154
|
+
el = getNthColumn(i).querySelector('.sorter').parentElement;
|
|
155
|
+
if (el.addEventListener) {
|
|
156
|
+
el.addEventListener('click', ithSorter(i));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
el.attachEvent('onclick', ithSorter(i));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// adds sorting functionality to the UI
|
|
165
|
+
return function () {
|
|
166
|
+
if (!getTable()) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
cols = loadColumns();
|
|
170
|
+
loadData();
|
|
171
|
+
addSearchBox();
|
|
172
|
+
addSortIndicators();
|
|
173
|
+
enableUI();
|
|
174
|
+
};
|
|
175
|
+
})();
|
|
176
|
+
window.addEventListener('load', addSorting);
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
declare const _default: (import("@eslint/config-helpers").Config | {
|
|
2
|
+
files: string[];
|
|
3
|
+
languageOptions: {
|
|
4
|
+
sourceType: string;
|
|
5
|
+
globals: {
|
|
6
|
+
__dirname: false;
|
|
7
|
+
__filename: false;
|
|
8
|
+
AbortController: false;
|
|
9
|
+
AbortSignal: false;
|
|
10
|
+
atob: false;
|
|
11
|
+
Blob: false;
|
|
12
|
+
BroadcastChannel: false;
|
|
13
|
+
btoa: false;
|
|
14
|
+
Buffer: false;
|
|
15
|
+
ByteLengthQueuingStrategy: false;
|
|
16
|
+
clearImmediate: false;
|
|
17
|
+
clearInterval: false;
|
|
18
|
+
clearTimeout: false;
|
|
19
|
+
CompressionStream: false;
|
|
20
|
+
console: false;
|
|
21
|
+
CountQueuingStrategy: false;
|
|
22
|
+
crypto: false;
|
|
23
|
+
Crypto: false;
|
|
24
|
+
CryptoKey: false;
|
|
25
|
+
CustomEvent: false;
|
|
26
|
+
DecompressionStream: false;
|
|
27
|
+
DOMException: false;
|
|
28
|
+
Event: false;
|
|
29
|
+
EventTarget: false;
|
|
30
|
+
exports: true;
|
|
31
|
+
fetch: false;
|
|
32
|
+
File: false;
|
|
33
|
+
FormData: false;
|
|
34
|
+
global: false;
|
|
35
|
+
Headers: false;
|
|
36
|
+
Intl: false;
|
|
37
|
+
MessageChannel: false;
|
|
38
|
+
MessageEvent: false;
|
|
39
|
+
MessagePort: false;
|
|
40
|
+
module: false;
|
|
41
|
+
performance: false;
|
|
42
|
+
PerformanceEntry: false;
|
|
43
|
+
PerformanceMark: false;
|
|
44
|
+
PerformanceMeasure: false;
|
|
45
|
+
PerformanceObserver: false;
|
|
46
|
+
PerformanceObserverEntryList: false;
|
|
47
|
+
PerformanceResourceTiming: false;
|
|
48
|
+
process: false;
|
|
49
|
+
queueMicrotask: false;
|
|
50
|
+
ReadableByteStreamController: false;
|
|
51
|
+
ReadableStream: false;
|
|
52
|
+
ReadableStreamBYOBReader: false;
|
|
53
|
+
ReadableStreamBYOBRequest: false;
|
|
54
|
+
ReadableStreamDefaultController: false;
|
|
55
|
+
ReadableStreamDefaultReader: false;
|
|
56
|
+
Request: false;
|
|
57
|
+
require: false;
|
|
58
|
+
Response: false;
|
|
59
|
+
setImmediate: false;
|
|
60
|
+
setInterval: false;
|
|
61
|
+
setTimeout: false;
|
|
62
|
+
structuredClone: false;
|
|
63
|
+
SubtleCrypto: false;
|
|
64
|
+
TextDecoder: false;
|
|
65
|
+
TextDecoderStream: false;
|
|
66
|
+
TextEncoder: false;
|
|
67
|
+
TextEncoderStream: false;
|
|
68
|
+
TransformStream: false;
|
|
69
|
+
TransformStreamDefaultController: false;
|
|
70
|
+
URL: false;
|
|
71
|
+
URLSearchParams: false;
|
|
72
|
+
WebAssembly: false;
|
|
73
|
+
WritableStream: false;
|
|
74
|
+
WritableStreamDefaultController: false;
|
|
75
|
+
WritableStreamDefaultWriter: false;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
rules: {
|
|
79
|
+
'n/no-missing-import': string;
|
|
80
|
+
'n/no-unpublished-require': string;
|
|
81
|
+
};
|
|
82
|
+
})[];
|
|
83
|
+
export default _default;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import gtsConfig from 'gts/build/src/index.js';
|
|
2
|
+
import globals from 'globals';
|
|
3
|
+
export default [
|
|
4
|
+
...gtsConfig,
|
|
5
|
+
{
|
|
6
|
+
ignores: [
|
|
7
|
+
'build/',
|
|
8
|
+
'test/',
|
|
9
|
+
'docs/',
|
|
10
|
+
'dist/',
|
|
11
|
+
'src/*.json.ts',
|
|
12
|
+
'src/*.po.ts',
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
files: ['**/*.js'],
|
|
17
|
+
languageOptions: {
|
|
18
|
+
sourceType: 'module',
|
|
19
|
+
globals: {
|
|
20
|
+
...globals.node,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
rules: {
|
|
24
|
+
'n/no-missing-import': 'off',
|
|
25
|
+
'n/no-unpublished-require': 'off',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
];
|
|
@@ -12,7 +12,7 @@ export declare class DailyLearning {
|
|
|
12
12
|
* @param calendar a function that returns an `Event` or `null`
|
|
13
13
|
* @param startDate the first date for which this calendar is valid
|
|
14
14
|
*/
|
|
15
|
-
static addCalendar(name: string, calendar:
|
|
15
|
+
static addCalendar(name: string, calendar: (hd: HDate, il: boolean) => Event | null, startDate?: HDate): void;
|
|
16
16
|
/**
|
|
17
17
|
* Returns an event from daily calendar for a given date. Returns `null` if there
|
|
18
18
|
* is no learning from this calendar on this date.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/core v6.0
|
|
1
|
+
/*! @hebcal/core v6.1.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
|
|
2
2
|
const cals = new Map();
|
|
3
3
|
/**
|
|
4
4
|
* Plug-ins for daily learning calendars such as Daf Yomi, Mishna Yomi, Nach Yomi, etc.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DailyLearning.js","sources":["../../../src/DailyLearning.ts"],"sourcesContent":["import {HDate} from '@hebcal/hdate';\nimport {Event} from './event';\n\ntype LearningCalendar = {\n fn:
|
|
1
|
+
{"version":3,"file":"DailyLearning.js","sources":["../../../src/DailyLearning.ts"],"sourcesContent":["import {HDate} from '@hebcal/hdate';\nimport {Event} from './event';\n\ntype LearningCalendar = {\n fn: (hd: HDate, il: boolean) => Event | null;\n startDate?: HDate;\n};\nconst cals = new Map<string, LearningCalendar>();\n\n/**\n * Plug-ins for daily learning calendars such as Daf Yomi, Mishna Yomi, Nach Yomi, etc.\n *\n * Learning schedules are provided by the `@hebcal/learning` package.\n */\nexport class DailyLearning {\n /**\n * Register a new learning calendar.\n * @param name case insensitive\n * @param calendar a function that returns an `Event` or `null`\n * @param startDate the first date for which this calendar is valid\n */\n static addCalendar(\n name: string,\n calendar: (hd: HDate, il: boolean) => Event | null,\n startDate?: HDate\n ) {\n if (typeof calendar !== 'function') {\n throw new TypeError(`Invalid calendar function: ${calendar}`);\n }\n cals.set(name.toLowerCase(), {\n fn: calendar,\n startDate: startDate,\n });\n }\n\n /**\n * Returns an event from daily calendar for a given date. Returns `null` if there\n * is no learning from this calendar on this date.\n * @param name case insensitive\n * @param hd Hebrew Date\n * @param il true for Israel, false for Diaspora\n */\n static lookup(name: string, hd: HDate, il: boolean): Event | null {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.fn(hd, il);\n }\n return null;\n }\n\n static getStartDate(name: string): HDate | undefined {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.startDate;\n }\n return undefined;\n }\n\n /**\n * Tests to see if learning calendar has been registered\n * @param name case insensitive\n */\n static has(name: string): boolean {\n return cals.has(name.toLowerCase());\n }\n\n /** Returns the names of all calendars registered */\n static getCalendars(): string[] {\n return Array.from(cals.keys());\n }\n}\n"],"names":[],"mappings":";AAOA,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B;AAEhD;;;;AAIG;MACU,aAAa,CAAA;AACxB;;;;;AAKG;AACH,IAAA,OAAO,WAAW,CAChB,IAAY,EACZ,QAAkD,EAClD,SAAiB,EAAA;AAEjB,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAClC,YAAA,MAAM,IAAI,SAAS,CAAC,8BAA8B,QAAQ,CAAA,CAAE,CAAC;QAC/D;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAC3B,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,SAAS,EAAE,SAAS;AACrB,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,EAAS,EAAE,EAAW,EAAA;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QACvB;AACA,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,YAAY,CAAC,IAAY,EAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,GAAG,CAAC,SAAS;QACtB;AACA,QAAA,OAAO,SAAS;IAClB;AAEA;;;AAGG;IACH,OAAO,GAAG,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC;;AAGA,IAAA,OAAO,YAAY,GAAA;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC;AACD;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/core v6.0
|
|
1
|
+
/*! @hebcal/core v6.1.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
|
|
2
2
|
import { Locale, gematriya, months } from '@hebcal/hdate';
|
|
3
3
|
import { Event, flags } from './event.js';
|
|
4
4
|
import './locale.js';
|
|
@@ -22,8 +22,8 @@ class HebrewDateEvent extends Event {
|
|
|
22
22
|
* console.log(ev.render('he')); // 'ט״ו חֶשְׁוָן תשס״ט'
|
|
23
23
|
*/
|
|
24
24
|
render(locale) {
|
|
25
|
-
const locale1 = locale
|
|
26
|
-
const locale0 = locale1
|
|
25
|
+
const locale1 = locale?.toLowerCase();
|
|
26
|
+
const locale0 = locale1 ?? 'en';
|
|
27
27
|
const hd = this.getDate();
|
|
28
28
|
switch (locale0) {
|
|
29
29
|
case 'h':
|
|
@@ -56,8 +56,8 @@ class HebrewDateEvent extends Event {
|
|
|
56
56
|
* console.log(ev.renderBrief('he')); // 'ט״ו חֶשְׁוָן'
|
|
57
57
|
*/
|
|
58
58
|
renderBrief(locale) {
|
|
59
|
-
const locale1 = locale
|
|
60
|
-
const locale0 = locale1
|
|
59
|
+
const locale1 = locale?.toLowerCase();
|
|
60
|
+
const locale0 = locale1 ?? 'en';
|
|
61
61
|
const hd = this.getDate();
|
|
62
62
|
if (hd.getMonth() === months.TISHREI && hd.getDate() === 1) {
|
|
63
63
|
return this.render(locale0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HebrewDateEvent.js","sources":["../../../src/HebrewDateEvent.ts"],"sourcesContent":["import {HDate, gematriya, months, Locale} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Daily Hebrew date (\"11th of Sivan, 5780\") */\nexport class HebrewDateEvent extends Event {\n /**\n * @param date\n */\n constructor(date: HDate) {\n super(date, date.toString(), flags.HEBREW_DATE);\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n * @example\n * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n *\n * const hd = new HDate(15, months.CHESHVAN, 5769);\n * const ev = new HebrewDateEvent(hd);\n * console.log(ev.render('en')); // '15th of Cheshvan, 5769'\n * console.log(ev.render('he')); // 'ט״ו חֶשְׁוָן תשס״ט'\n */\n render(locale?: string): string {\n const locale1 = locale?.toLowerCase();\n const locale0 = locale1 ?? 'en';\n const hd = this.getDate();\n switch (locale0) {\n case 'h':\n case 'he':\n return hd.renderGematriya(false);\n case 'he-x-nonikud':\n return hd.renderGematriya(true);\n default:\n return hd.render(locale0, true);\n }\n }\n /**\n * @private\n * @param locale\n */\n private renderBriefHebrew(locale: string): string {\n const hd = this.getDate();\n const dd = hd.getDate();\n const mm = Locale.gettext(hd.getMonthName(), locale);\n return gematriya(dd) + ' ' + mm;\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n * @example\n * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n *\n * const hd = new HDate(15, months.CHESHVAN, 5769);\n * const ev = new HebrewDateEvent(hd);\n * console.log(ev.renderBrief()); // '15th of Cheshvan'\n * console.log(ev.renderBrief('he')); // 'ט״ו חֶשְׁוָן'\n */\n renderBrief(locale?: string): string {\n const locale1 = locale?.toLowerCase();\n const locale0 = locale1 ?? 'en';\n const hd = this.getDate();\n if (hd.getMonth() === months.TISHREI && hd.getDate() === 1) {\n return this.render(locale0);\n }\n switch (locale0) {\n case 'h':\n case 'he':\n case 'he-x-nonikud':\n return this.renderBriefHebrew(locale0);\n default:\n return hd.render(locale0, false);\n }\n }\n}\n"],"names":[],"mappings":";;;;;AAIA;AACM,MAAO,eAAgB,SAAQ,KAAK,CAAA;AACxC;;AAEG;AACH,IAAA,WAAA,CAAY,IAAW,EAAA;AACrB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC;IACjD;AACA;;;;;;;;;AASG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;
|
|
1
|
+
{"version":3,"file":"HebrewDateEvent.js","sources":["../../../src/HebrewDateEvent.ts"],"sourcesContent":["import {HDate, gematriya, months, Locale} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Daily Hebrew date (\"11th of Sivan, 5780\") */\nexport class HebrewDateEvent extends Event {\n /**\n * @param date\n */\n constructor(date: HDate) {\n super(date, date.toString(), flags.HEBREW_DATE);\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n * @example\n * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n *\n * const hd = new HDate(15, months.CHESHVAN, 5769);\n * const ev = new HebrewDateEvent(hd);\n * console.log(ev.render('en')); // '15th of Cheshvan, 5769'\n * console.log(ev.render('he')); // 'ט״ו חֶשְׁוָן תשס״ט'\n */\n render(locale?: string): string {\n const locale1 = locale?.toLowerCase();\n const locale0 = locale1 ?? 'en';\n const hd = this.getDate();\n switch (locale0) {\n case 'h':\n case 'he':\n return hd.renderGematriya(false);\n case 'he-x-nonikud':\n return hd.renderGematriya(true);\n default:\n return hd.render(locale0, true);\n }\n }\n /**\n * @private\n * @param locale\n */\n private renderBriefHebrew(locale: string): string {\n const hd = this.getDate();\n const dd = hd.getDate();\n const mm = Locale.gettext(hd.getMonthName(), locale);\n return gematriya(dd) + ' ' + mm;\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n * @example\n * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n *\n * const hd = new HDate(15, months.CHESHVAN, 5769);\n * const ev = new HebrewDateEvent(hd);\n * console.log(ev.renderBrief()); // '15th of Cheshvan'\n * console.log(ev.renderBrief('he')); // 'ט״ו חֶשְׁוָן'\n */\n renderBrief(locale?: string): string {\n const locale1 = locale?.toLowerCase();\n const locale0 = locale1 ?? 'en';\n const hd = this.getDate();\n if (hd.getMonth() === months.TISHREI && hd.getDate() === 1) {\n return this.render(locale0);\n }\n switch (locale0) {\n case 'h':\n case 'he':\n case 'he-x-nonikud':\n return this.renderBriefHebrew(locale0);\n default:\n return hd.render(locale0, false);\n }\n }\n}\n"],"names":[],"mappings":";;;;;AAIA;AACM,MAAO,eAAgB,SAAQ,KAAK,CAAA;AACxC;;AAEG;AACH,IAAA,WAAA,CAAY,IAAW,EAAA;AACrB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC;IACjD;AACA;;;;;;;;;AASG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;AACpB,QAAA,MAAM,OAAO,GAAG,MAAM,EAAE,WAAW,EAAE;AACrC,QAAA,MAAM,OAAO,GAAG,OAAO,IAAI,IAAI;AAC/B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QACzB,QAAQ,OAAO;AACb,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;AAClC,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;AACjC,YAAA;gBACE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;;IAErC;AACA;;;AAGG;AACK,IAAA,iBAAiB,CAAC,MAAc,EAAA;AACtC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AACzB,QAAA,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;AACvB,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC;QACpD,OAAO,SAAS,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE;IACjC;AACA;;;;;;;;;AASG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,MAAM,EAAE,WAAW,EAAE;AACrC,QAAA,MAAM,OAAO,GAAG,OAAO,IAAI,IAAI;AAC/B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AACzB,QAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B;QACA,QAAQ,OAAO;AACb,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACxC,YAAA;gBACE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;;IAEtC;AACD;;;;"}
|
|
@@ -11,6 +11,7 @@ export declare class HolidayEvent extends Event {
|
|
|
11
11
|
* - Tzom Tammuz postponed from the 17th to the 18th
|
|
12
12
|
*/
|
|
13
13
|
observed?: boolean;
|
|
14
|
+
constructor(date: HDate, desc: string, mask?: number, attrs?: object);
|
|
14
15
|
basename(): string;
|
|
15
16
|
url(): string | undefined;
|
|
16
17
|
urlDateSuffix(): string;
|
package/dist/esm/HolidayEvent.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/core v6.0
|
|
1
|
+
/*! @hebcal/core v6.1.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
|
|
2
2
|
import { isoDateString, Locale } from '@hebcal/hdate';
|
|
3
3
|
import { Event, flags } from './event.js';
|
|
4
4
|
import { holidayDesc } from './staticHolidays.js';
|
|
@@ -6,6 +6,20 @@ import './locale.js';
|
|
|
6
6
|
|
|
7
7
|
/** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */
|
|
8
8
|
class HolidayEvent extends Event {
|
|
9
|
+
/** During Sukkot or Pesach */
|
|
10
|
+
cholHaMoedDay;
|
|
11
|
+
/**
|
|
12
|
+
* `true` if the fast day was postponed a day to avoid Shabbat.
|
|
13
|
+
* - Tish'a B'Av postponed from the 9th to the 10th
|
|
14
|
+
* - Tzom Tammuz postponed from the 17th to the 18th
|
|
15
|
+
*/
|
|
16
|
+
observed;
|
|
17
|
+
constructor(date, desc, mask = 0, attrs) {
|
|
18
|
+
super(date, desc, mask, attrs);
|
|
19
|
+
if (typeof attrs === 'object' && attrs !== null) {
|
|
20
|
+
Object.assign(this, attrs);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
9
23
|
basename() {
|
|
10
24
|
return this.getDesc()
|
|
11
25
|
.replace(/ \d{4}$/, '')
|
|
@@ -114,6 +128,7 @@ const KEYCAP_DIGITS = [
|
|
|
114
128
|
* we subclass HolidayEvent to generate the correct URL.
|
|
115
129
|
*/
|
|
116
130
|
class ChanukahEvent extends HolidayEvent {
|
|
131
|
+
chanukahDay;
|
|
117
132
|
/**
|
|
118
133
|
* @param chanukahDay should be undefined for 1st night of Chanukah
|
|
119
134
|
*/
|
|
@@ -137,6 +152,7 @@ class ChanukahEvent extends HolidayEvent {
|
|
|
137
152
|
}
|
|
138
153
|
/** Represents Rosh Hashana, the Jewish New Year */
|
|
139
154
|
class RoshHashanaEvent extends HolidayEvent {
|
|
155
|
+
hyear;
|
|
140
156
|
/**
|
|
141
157
|
* @private
|
|
142
158
|
* @param date Hebrew date event occurs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HolidayEvent.js","sources":["../../../src/HolidayEvent.ts"],"sourcesContent":["import {HDate, Locale, isoDateString} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {holidayDesc as hdesc} from './staticHolidays';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */\nexport class HolidayEvent extends Event {\n /** During Sukkot or Pesach */\n cholHaMoedDay?: number;\n /**\n * `true` if the fast day was postponed a day to avoid Shabbat.\n * - Tish'a B'Av postponed from the 9th to the 10th\n * - Tzom Tammuz postponed from the 17th to the 18th\n */\n observed?: boolean;\n\n basename(): string {\n return this.getDesc()\n .replace(/ \\d{4}$/, '')\n .replace(/ \\(CH''M\\)$/, '')\n .replace(/ \\(observed\\)$/, '')\n .replace(/ \\(Hoshana Raba\\)$/, '')\n .replace(/ [IV]+$/, '')\n .replace(/: \\d Candles?$/, '')\n .replace(/: 8th Day$/, '')\n .replace(/^Erev /, '');\n }\n\n url(): string | undefined {\n const year = this.greg().getFullYear();\n if (year < 100 || year > 2999) {\n return undefined;\n }\n const url =\n 'https://www.hebcal.com/holidays/' +\n this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\n '-' +\n this.urlDateSuffix();\n return this.getFlags() & flags.IL_ONLY ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const year = this.greg().getFullYear();\n return String(year);\n }\n\n getEmoji(): string {\n if (this.emoji) {\n return this.emoji;\n } else if (this.getFlags() & flags.SPECIAL_SHABBAT) {\n return '🕍';\n } else {\n return '✡️';\n }\n }\n\n getCategories(): string[] {\n if (this.cholHaMoedDay) {\n return ['holiday', 'major', 'cholhamoed'];\n }\n const cats = super.getCategories();\n if (cats[0] !== 'unknown') {\n return cats;\n }\n // Don't depend on flags.MINOR_HOLIDAY always being set. Look for minor holidays.\n const desc = this.getDesc();\n switch (desc) {\n case hdesc.LAG_BAOMER:\n case hdesc.LEIL_SELICHOT:\n case hdesc.PESACH_SHENI:\n case hdesc.EREV_PURIM:\n case hdesc.PURIM_KATAN:\n case hdesc.SHUSHAN_PURIM:\n case hdesc.TU_BAV:\n case hdesc.TU_BISHVAT:\n case hdesc.ROSH_HASHANA_LABEHEMOT:\n return ['holiday', 'minor'];\n }\n\n return ['holiday', 'major'];\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const str = super.render(locale);\n return str.replace(/'/g, '’');\n }\n /**\n * Returns a brief (translated) description of this event.\n * For most events, this is the same as render(). For some events, it procudes\n * a shorter text (e.g. without a time or added description).\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n const str = super.renderBrief(locale);\n return str.replace(/'/g, '’');\n }\n}\n\n/**\n * Because Asara B'Tevet often occurs twice in the same Gregorian year,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class AsaraBTevetEvent extends HolidayEvent {\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.greg());\n return isoDate.replace(/-/g, '');\n }\n}\n\nconst chanukahEmoji = '🕎';\nconst KEYCAP_DIGITS = [\n '0️⃣',\n '1️⃣',\n '2️⃣',\n '3️⃣',\n '4️⃣',\n '5️⃣',\n '6️⃣',\n '7️⃣',\n '8️⃣',\n '9️⃣',\n] as const;\n\n/**\n * Because Chanukah sometimes starts in December and ends in January,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class ChanukahEvent extends HolidayEvent {\n readonly chanukahDay?: number;\n /**\n * @param chanukahDay should be undefined for 1st night of Chanukah\n */\n constructor(date: HDate, desc: string, mask: number, chanukahDay?: number) {\n super(date, desc, mask);\n this.chanukahDay = chanukahDay;\n this.emoji = chanukahEmoji;\n if (chanukahDay !== 8) {\n const candles = chanukahDay ? chanukahDay + 1 : 1;\n this.emoji += KEYCAP_DIGITS[candles];\n }\n }\n urlDateSuffix(): string {\n const dt = this.greg();\n let year = dt.getFullYear();\n if (dt.getMonth() === 0) {\n year--;\n }\n return String(year);\n }\n}\n\n/** Represents Rosh Hashana, the Jewish New Year */\nexport class RoshHashanaEvent extends HolidayEvent {\n private readonly hyear: number;\n /**\n * @private\n * @param date Hebrew date event occurs\n * @param hyear Hebrew year\n * @param mask optional holiday flags\n */\n constructor(date: HDate, hyear: number, mask: number) {\n super(date, `Rosh Hashana ${hyear}`, mask);\n this.hyear = hyear;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return Locale.gettext('Rosh Hashana', locale) + ' ' + this.hyear;\n }\n\n getEmoji(): string {\n return '🍏🍯';\n }\n}\n\nconst roshChodeshStr = 'Rosh Chodesh';\n\n/** Represents Rosh Chodesh, the beginning of a new month */\nexport class RoshChodeshEvent extends HolidayEvent {\n /**\n * Constructs Rosh Chodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n */\n constructor(date: HDate, monthName: string) {\n super(date, `${roshChodeshStr} ${monthName}`, flags.ROSH_CHODESH);\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const monthName = this.getDesc().substring(roshChodeshStr.length + 1);\n const monthName0 = Locale.gettext(monthName, locale);\n const monthName1 = monthName0.replace(/'/g, '’');\n return Locale.gettext(roshChodeshStr, locale) + ' ' + monthName1;\n }\n\n basename(): string {\n return this.getDesc();\n }\n\n getEmoji(): string {\n return this.emoji || '🌒';\n }\n}\n"],"names":["hdesc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HolidayEvent.js","sources":["../../../src/HolidayEvent.ts"],"sourcesContent":["import {HDate, Locale, isoDateString} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {holidayDesc as hdesc} from './staticHolidays';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */\nexport class HolidayEvent extends Event {\n /** During Sukkot or Pesach */\n cholHaMoedDay?: number;\n /**\n * `true` if the fast day was postponed a day to avoid Shabbat.\n * - Tish'a B'Av postponed from the 9th to the 10th\n * - Tzom Tammuz postponed from the 17th to the 18th\n */\n observed?: boolean;\n constructor(date: HDate, desc: string, mask = 0, attrs?: object) {\n super(date, desc, mask, attrs);\n if (typeof attrs === 'object' && attrs !== null) {\n Object.assign(this, attrs);\n }\n }\n\n basename(): string {\n return this.getDesc()\n .replace(/ \\d{4}$/, '')\n .replace(/ \\(CH''M\\)$/, '')\n .replace(/ \\(observed\\)$/, '')\n .replace(/ \\(Hoshana Raba\\)$/, '')\n .replace(/ [IV]+$/, '')\n .replace(/: \\d Candles?$/, '')\n .replace(/: 8th Day$/, '')\n .replace(/^Erev /, '');\n }\n\n url(): string | undefined {\n const year = this.greg().getFullYear();\n if (year < 100 || year > 2999) {\n return undefined;\n }\n const url =\n 'https://www.hebcal.com/holidays/' +\n this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\n '-' +\n this.urlDateSuffix();\n return this.getFlags() & flags.IL_ONLY ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const year = this.greg().getFullYear();\n return String(year);\n }\n\n getEmoji(): string {\n if (this.emoji) {\n return this.emoji;\n } else if (this.getFlags() & flags.SPECIAL_SHABBAT) {\n return '🕍';\n } else {\n return '✡️';\n }\n }\n\n getCategories(): string[] {\n if (this.cholHaMoedDay) {\n return ['holiday', 'major', 'cholhamoed'];\n }\n const cats = super.getCategories();\n if (cats[0] !== 'unknown') {\n return cats;\n }\n // Don't depend on flags.MINOR_HOLIDAY always being set. Look for minor holidays.\n const desc = this.getDesc();\n switch (desc) {\n case hdesc.LAG_BAOMER:\n case hdesc.LEIL_SELICHOT:\n case hdesc.PESACH_SHENI:\n case hdesc.EREV_PURIM:\n case hdesc.PURIM_KATAN:\n case hdesc.SHUSHAN_PURIM:\n case hdesc.TU_BAV:\n case hdesc.TU_BISHVAT:\n case hdesc.ROSH_HASHANA_LABEHEMOT:\n return ['holiday', 'minor'];\n }\n\n return ['holiday', 'major'];\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const str = super.render(locale);\n return str.replace(/'/g, '’');\n }\n /**\n * Returns a brief (translated) description of this event.\n * For most events, this is the same as render(). For some events, it procudes\n * a shorter text (e.g. without a time or added description).\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n const str = super.renderBrief(locale);\n return str.replace(/'/g, '’');\n }\n}\n\n/**\n * Because Asara B'Tevet often occurs twice in the same Gregorian year,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class AsaraBTevetEvent extends HolidayEvent {\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.greg());\n return isoDate.replace(/-/g, '');\n }\n}\n\nconst chanukahEmoji = '🕎';\nconst KEYCAP_DIGITS = [\n '0️⃣',\n '1️⃣',\n '2️⃣',\n '3️⃣',\n '4️⃣',\n '5️⃣',\n '6️⃣',\n '7️⃣',\n '8️⃣',\n '9️⃣',\n] as const;\n\n/**\n * Because Chanukah sometimes starts in December and ends in January,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class ChanukahEvent extends HolidayEvent {\n readonly chanukahDay?: number;\n /**\n * @param chanukahDay should be undefined for 1st night of Chanukah\n */\n constructor(date: HDate, desc: string, mask: number, chanukahDay?: number) {\n super(date, desc, mask);\n this.chanukahDay = chanukahDay;\n this.emoji = chanukahEmoji;\n if (chanukahDay !== 8) {\n const candles = chanukahDay ? chanukahDay + 1 : 1;\n this.emoji += KEYCAP_DIGITS[candles];\n }\n }\n urlDateSuffix(): string {\n const dt = this.greg();\n let year = dt.getFullYear();\n if (dt.getMonth() === 0) {\n year--;\n }\n return String(year);\n }\n}\n\n/** Represents Rosh Hashana, the Jewish New Year */\nexport class RoshHashanaEvent extends HolidayEvent {\n private readonly hyear: number;\n /**\n * @private\n * @param date Hebrew date event occurs\n * @param hyear Hebrew year\n * @param mask optional holiday flags\n */\n constructor(date: HDate, hyear: number, mask: number) {\n super(date, `Rosh Hashana ${hyear}`, mask);\n this.hyear = hyear;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return Locale.gettext('Rosh Hashana', locale) + ' ' + this.hyear;\n }\n\n getEmoji(): string {\n return '🍏🍯';\n }\n}\n\nconst roshChodeshStr = 'Rosh Chodesh';\n\n/** Represents Rosh Chodesh, the beginning of a new month */\nexport class RoshChodeshEvent extends HolidayEvent {\n /**\n * Constructs Rosh Chodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n */\n constructor(date: HDate, monthName: string) {\n super(date, `${roshChodeshStr} ${monthName}`, flags.ROSH_CHODESH);\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const monthName = this.getDesc().substring(roshChodeshStr.length + 1);\n const monthName0 = Locale.gettext(monthName, locale);\n const monthName1 = monthName0.replace(/'/g, '’');\n return Locale.gettext(roshChodeshStr, locale) + ' ' + monthName1;\n }\n\n basename(): string {\n return this.getDesc();\n }\n\n getEmoji(): string {\n return this.emoji || '🌒';\n }\n}\n"],"names":["hdesc"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/core v6.0
|
|
1
|
+
/*! @hebcal/core v6.1.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
|
|
2
2
|
import { Locale, HDate, months } from '@hebcal/hdate';
|
|
3
3
|
import { Event, flags } from './event.js';
|
|
4
4
|
import { Molad } from './molad.js';
|
|
@@ -7,6 +7,7 @@ import './locale.js';
|
|
|
7
7
|
const mevarchimChodeshStr = 'Shabbat Mevarchim Chodesh';
|
|
8
8
|
/** Represents Mevarchim haChodesh, the announcement of the new month */
|
|
9
9
|
class MevarchimChodeshEvent extends Event {
|
|
10
|
+
monthName;
|
|
10
11
|
/**
|
|
11
12
|
* Constructs Mevarchim haChodesh event
|
|
12
13
|
* @param date Hebrew date event occurs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MevarchimChodeshEvent.js","sources":["../../../src/MevarchimChodeshEvent.ts"],"sourcesContent":["import {HDate, Locale, months} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {Molad} from './molad';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst mevarchimChodeshStr = 'Shabbat Mevarchim Chodesh';\n\n/** Represents Mevarchim haChodesh, the announcement of the new month */\nexport class MevarchimChodeshEvent extends Event {\n readonly monthName: string;\n /**\n * Constructs Mevarchim haChodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n * @param [memo]\n * @param locale Optional locale name\n */\n constructor(date: HDate, monthName: string, memo: string, locale?: string) {\n super(date, `${mevarchimChodeshStr} ${monthName}`, flags.SHABBAT_MEVARCHIM);\n this.monthName = Locale.gettext(monthName, locale);\n if (memo) {\n this.memo = memo;\n } else {\n const hyear = date.getFullYear();\n const hmonth = date.getMonth();\n const monNext =\n hmonth === HDate.monthsInYear(hyear) ? months.NISAN : hmonth + 1;\n const molad = new Molad(hyear, monNext);\n this.memo = molad.render('en', {hour12: false});\n }\n }\n\n basename(): string {\n return this.getDesc();\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const monthName0 = Locale.gettext(this.monthName, locale);\n const monthName = monthName0.replace(/'/g, '’');\n return Locale.gettext(mevarchimChodeshStr, locale) + ' ' + monthName;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n const str = this.render(locale);\n const space = str.indexOf(' ');\n return str.substring(space + 1);\n }\n}\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,mBAAmB,GAAG,2BAA2B;AAEvD;AACM,MAAO,qBAAsB,SAAQ,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"MevarchimChodeshEvent.js","sources":["../../../src/MevarchimChodeshEvent.ts"],"sourcesContent":["import {HDate, Locale, months} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {Molad} from './molad';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst mevarchimChodeshStr = 'Shabbat Mevarchim Chodesh';\n\n/** Represents Mevarchim haChodesh, the announcement of the new month */\nexport class MevarchimChodeshEvent extends Event {\n readonly monthName: string;\n /**\n * Constructs Mevarchim haChodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n * @param [memo]\n * @param locale Optional locale name\n */\n constructor(date: HDate, monthName: string, memo: string, locale?: string) {\n super(date, `${mevarchimChodeshStr} ${monthName}`, flags.SHABBAT_MEVARCHIM);\n this.monthName = Locale.gettext(monthName, locale);\n if (memo) {\n this.memo = memo;\n } else {\n const hyear = date.getFullYear();\n const hmonth = date.getMonth();\n const monNext =\n hmonth === HDate.monthsInYear(hyear) ? months.NISAN : hmonth + 1;\n const molad = new Molad(hyear, monNext);\n this.memo = molad.render('en', {hour12: false});\n }\n }\n\n basename(): string {\n return this.getDesc();\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const monthName0 = Locale.gettext(this.monthName, locale);\n const monthName = monthName0.replace(/'/g, '’');\n return Locale.gettext(mevarchimChodeshStr, locale) + ' ' + monthName;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n const str = this.render(locale);\n const space = str.indexOf(' ');\n return str.substring(space + 1);\n }\n}\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,mBAAmB,GAAG,2BAA2B;AAEvD;AACM,MAAO,qBAAsB,SAAQ,KAAK,CAAA;AACrC,IAAA,SAAS;AAClB;;;;;;AAMG;AACH,IAAA,WAAA,CAAY,IAAW,EAAE,SAAiB,EAAE,IAAY,EAAE,MAAe,EAAA;AACvE,QAAA,KAAK,CAAC,IAAI,EAAE,CAAA,EAAG,mBAAmB,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAE,KAAK,CAAC,iBAAiB,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;QAClD,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAClB;aAAO;AACL,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC9B,MAAM,OAAO,GACX,MAAM,KAAK,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC;YAClE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AACvC,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC;QACjD;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;AACA;;;AAGG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;AACpB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;QACzD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAC/C,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,SAAS;IACtE;AACA;;;AAGG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QAC9B,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC;AACD;;;;"}
|
package/dist/esm/ParshaEvent.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/core v6.0
|
|
1
|
+
/*! @hebcal/core v6.1.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
|
|
2
2
|
import { Event, flags } from './event.js';
|
|
3
3
|
import { isoDateString } from '@hebcal/hdate';
|
|
4
4
|
import { renderParshaName } from './parshaName.js';
|
|
@@ -8,6 +8,7 @@ import './locale.js';
|
|
|
8
8
|
* Represents one of 54 weekly Torah portions, always on a Saturday
|
|
9
9
|
*/
|
|
10
10
|
class ParshaEvent extends Event {
|
|
11
|
+
p;
|
|
11
12
|
constructor(parsha) {
|
|
12
13
|
const desc = 'Parashat ' + parsha.parsha.join('-');
|
|
13
14
|
super(parsha.hdate, desc, flags.PARSHA_HASHAVUA);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParshaEvent.js","sources":["../../../src/ParshaEvent.ts"],"sourcesContent":["import {Event, flags} from './event';\nimport {isoDateString} from '@hebcal/hdate';\nimport {renderParshaName} from './parshaName';\nimport {SedraResult} from './sedra';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Represents one of 54 weekly Torah portions, always on a Saturday\n */\nexport class ParshaEvent extends Event {\n readonly p: SedraResult;\n constructor(parsha: SedraResult) {\n const desc = 'Parashat ' + parsha.parsha.join('-');\n super(parsha.hdate, desc, flags.PARSHA_HASHAVUA);\n this.p = parsha;\n }\n /**\n * @param [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to empty locale.\n */\n render(locale?: string): string {\n return renderParshaName(this.p.parsha, locale);\n }\n\n basename(): string {\n return this.p.parsha.join('-');\n }\n\n url(): string | undefined {\n const year = this.greg().getFullYear();\n if (year < 100 || year > 2999) {\n return undefined;\n }\n const dt = this.urlDateSuffix();\n const url =\n 'https://www.hebcal.com/sedrot/' +\n this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\n '-' +\n dt;\n return this.p.il ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.greg());\n return isoDate.replace(/-/g, '');\n }\n\n /** convenience function for compatibility with previous implementation */\n get parsha(): string[] {\n return this.p.parsha;\n }\n}\n"],"names":[],"mappings":";;;;;;AAMA;;AAEG;AACG,MAAO,WAAY,SAAQ,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"ParshaEvent.js","sources":["../../../src/ParshaEvent.ts"],"sourcesContent":["import {Event, flags} from './event';\nimport {isoDateString} from '@hebcal/hdate';\nimport {renderParshaName} from './parshaName';\nimport {SedraResult} from './sedra';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Represents one of 54 weekly Torah portions, always on a Saturday\n */\nexport class ParshaEvent extends Event {\n readonly p: SedraResult;\n constructor(parsha: SedraResult) {\n const desc = 'Parashat ' + parsha.parsha.join('-');\n super(parsha.hdate, desc, flags.PARSHA_HASHAVUA);\n this.p = parsha;\n }\n /**\n * @param [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to empty locale.\n */\n render(locale?: string): string {\n return renderParshaName(this.p.parsha, locale);\n }\n\n basename(): string {\n return this.p.parsha.join('-');\n }\n\n url(): string | undefined {\n const year = this.greg().getFullYear();\n if (year < 100 || year > 2999) {\n return undefined;\n }\n const dt = this.urlDateSuffix();\n const url =\n 'https://www.hebcal.com/sedrot/' +\n this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\n '-' +\n dt;\n return this.p.il ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.greg());\n return isoDate.replace(/-/g, '');\n }\n\n /** convenience function for compatibility with previous implementation */\n get parsha(): string[] {\n return this.p.parsha;\n }\n}\n"],"names":[],"mappings":";;;;;;AAMA;;AAEG;AACG,MAAO,WAAY,SAAQ,KAAK,CAAA;AAC3B,IAAA,CAAC;AACV,IAAA,WAAA,CAAY,MAAmB,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAClD,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC;AAChD,QAAA,IAAI,CAAC,CAAC,GAAG,MAAM;IACjB;AACA;;AAEG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;IAChD;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC;IAEA,GAAG,GAAA;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE;AAC7B,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;QAC/B,MAAM,GAAG,GACP,gCAAgC;AAChC,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YAClE,GAAG;AACH,YAAA,EAAE;AACJ,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG;IACxC;IAEA,aAAa,GAAA;QACX,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAClC;;AAGA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM;IACtB;AACD;;;;"}
|
package/dist/esm/TimedEvent.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/core v6.0
|
|
1
|
+
/*! @hebcal/core v6.1.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
|
|
2
2
|
import { Locale } from '@hebcal/hdate';
|
|
3
3
|
import { Event } from './event.js';
|
|
4
4
|
import { reformatTimeStr } from './reformatTimeStr.js';
|
|
@@ -7,6 +7,11 @@ import './locale.js';
|
|
|
7
7
|
|
|
8
8
|
/** An event that has an `eventTime` and `eventTimeStr` */
|
|
9
9
|
class TimedEvent extends Event {
|
|
10
|
+
eventTime;
|
|
11
|
+
location;
|
|
12
|
+
eventTimeStr;
|
|
13
|
+
fmtTime;
|
|
14
|
+
linkedEvent;
|
|
10
15
|
/**
|
|
11
16
|
* @param desc Description (not translated)
|
|
12
17
|
*/
|
|
@@ -16,9 +21,9 @@ class TimedEvent extends Event {
|
|
|
16
21
|
this.location = location;
|
|
17
22
|
const timeFormat = location.getTimeFormatter();
|
|
18
23
|
this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);
|
|
19
|
-
const opts =
|
|
24
|
+
const opts = { ...options, location };
|
|
20
25
|
this.fmtTime = reformatTimeStr(this.eventTimeStr, 'pm', opts);
|
|
21
|
-
if (
|
|
26
|
+
if (linkedEvent !== undefined) {
|
|
22
27
|
this.linkedEvent = linkedEvent;
|
|
23
28
|
}
|
|
24
29
|
}
|
|
@@ -64,6 +69,7 @@ class CandleLightingEvent extends TimedEvent {
|
|
|
64
69
|
}
|
|
65
70
|
/** Havdalah after Shabbat or holiday */
|
|
66
71
|
class HavdalahEvent extends TimedEvent {
|
|
72
|
+
havdalahMins;
|
|
67
73
|
constructor(date, mask, eventTime, location, havdalahMins, linkedEvent, options) {
|
|
68
74
|
super(date, 'Havdalah', mask, eventTime, location, linkedEvent, options);
|
|
69
75
|
if (havdalahMins) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimedEvent.js","sources":["../../../src/TimedEvent.ts"],"sourcesContent":["import {HDate, Locale} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\nimport {Location} from './location';\nimport {Event} from './event';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport {Zmanim} from './zmanim';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** An event that has an `eventTime` and `eventTimeStr` */\nexport class TimedEvent extends Event {\n readonly eventTime: Date;\n readonly location: Location;\n readonly eventTimeStr: string;\n readonly fmtTime: string;\n readonly linkedEvent?: Event;\n /**\n * @param desc Description (not translated)\n */\n constructor(\n date: HDate,\n desc: string,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, desc, mask);\n this.eventTime = Zmanim.roundTime(eventTime);\n this.location = location;\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n const opts = {...options, location};\n this.fmtTime = reformatTimeStr(this.eventTimeStr, 'pm', opts);\n if (
|
|
1
|
+
{"version":3,"file":"TimedEvent.js","sources":["../../../src/TimedEvent.ts"],"sourcesContent":["import {HDate, Locale} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\nimport {Location} from './location';\nimport {Event} from './event';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport {Zmanim} from './zmanim';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** An event that has an `eventTime` and `eventTimeStr` */\nexport class TimedEvent extends Event {\n readonly eventTime: Date;\n readonly location: Location;\n readonly eventTimeStr: string;\n readonly fmtTime: string;\n readonly linkedEvent?: Event;\n /**\n * @param desc Description (not translated)\n */\n constructor(\n date: HDate,\n desc: string,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, desc, mask);\n this.eventTime = Zmanim.roundTime(eventTime);\n this.location = location;\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n const opts = {...options, location};\n this.fmtTime = reformatTimeStr(this.eventTimeStr, 'pm', opts);\n if (linkedEvent !== undefined) {\n this.linkedEvent = linkedEvent;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Candle lighting\" without the time.\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale);\n }\n\n getCategories(): string[] {\n const desc = this.getDesc();\n switch (desc) {\n // LIGHT_CANDLES or LIGHT_CANDLES_TZEIS\n case 'Candle lighting':\n return ['candles'];\n // YOM_TOV_ENDS\n case 'Havdalah':\n return ['havdalah'];\n // flags.MINOR_FAST or flags.MAJOR_FAST\n case 'Fast begins':\n case 'Fast ends':\n return ['zmanim', 'fast'];\n }\n /* NOTREACHED */\n return ['unknown'];\n }\n}\n\n/** Candle lighting before Shabbat or holiday */\nexport class CandleLightingEvent extends TimedEvent {\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(\n date,\n 'Candle lighting',\n mask,\n eventTime,\n location,\n linkedEvent,\n options\n );\n }\n\n getEmoji(): string {\n return '🕯️';\n }\n}\n\n/** Havdalah after Shabbat or holiday */\nexport class HavdalahEvent extends TimedEvent {\n private readonly havdalahMins?: number;\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n havdalahMins?: number,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, 'Havdalah', mask, eventTime, location, linkedEvent, options);\n if (havdalahMins) {\n this.havdalahMins = havdalahMins;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return this.renderBrief(locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Havdalah\" without the time.\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n let str = Locale.gettext(this.getDesc(), locale);\n if (this.havdalahMins) {\n const min = Locale.gettext('min', locale);\n str += ` (${this.havdalahMins} ${min})`;\n }\n return str;\n }\n\n getEmoji(): string {\n return '✨';\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/core v6.0
|
|
1
|
+
/*! @hebcal/core v6.1.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
|
|
2
2
|
import { Locale } from '@hebcal/hdate';
|
|
3
3
|
import { flags } from './event.js';
|
|
4
4
|
import { HolidayEvent } from './HolidayEvent.js';
|
|
@@ -7,6 +7,7 @@ import './locale.js';
|
|
|
7
7
|
const ykk = 'Yom Kippur Katan';
|
|
8
8
|
/** YKK is minor day of atonement on the day preceeding each Rosh Chodesh */
|
|
9
9
|
class YomKippurKatanEvent extends HolidayEvent {
|
|
10
|
+
nextMonthName;
|
|
10
11
|
/**
|
|
11
12
|
* @private
|
|
12
13
|
* @param date Hebrew date event occurs
|