@vestcards/shared 1.3.0 → 1.4.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/date-Bn1ahM0R.cjs +1 -0
- package/dist/date-D5P-dKAx.js +134 -0
- package/dist/date.cjs +1 -1
- package/dist/date.d.ts +35 -0
- package/dist/date.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +31 -0
- package/dist/index.js +59 -52
- package/dist/spaced-repetition.cjs +1 -1
- package/dist/spaced-repetition.d.ts +25 -4
- package/dist/spaced-repetition.js +243 -222
- package/package.json +1 -1
- package/dist/date-DS8JYZte.js +0 -103
- package/dist/date-DoLsSDIb.cjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./chunk-BK-Lzi7j.cjs`);let t=require(`date-fns/locale`),n=require(`date-fns`),r=require(`date-fns-tz`);var i=t.ptBR,a=`America/Sao_Paulo`;function o(e){return e instanceof Date?e:typeof e==`number`?new Date(e):typeof e==`string`?(0,n.parseISO)(e):e}var s=e.t({format:()=>u,formatDistance:()=>c,formatDistanceToNow:()=>l,formatRelative:()=>d});e.n(s,require(`date-fns`));function c(e,t=new Date,r){return(0,n.formatDistance)(o(e),o(t),{locale:i,...r})}function l(e,t){return(0,n.formatDistanceToNow)(o(e),{locale:i,...t})}function u(e,t,r){return(0,n.format)(o(e),t,{locale:i,...r})}function d(e,t=new Date,r){return(0,n.formatRelative)(o(e),o(t),{locale:i,...r})}function f(e,t,n=a){return u((0,r.toZonedTime)(o(e),n),t,{locale:i})}var p=e=>{let t=new Date,n=(0,s.differenceInMinutes)(e,t);if(n<1)return`<1m`;if(n<10)return`<${Math.ceil(n/10)*10}m`;if((0,s.differenceInHours)(e,t)<1)return`<1h`;let r=(0,s.differenceInDays)(e,t);if(r<1)return`<1d`;if(r<7)return`${r}d`;let i=(0,s.differenceInMonths)(e,t);return i<1?`${Math.ceil(r/30)}M`:i<12?`${i}M`:`${(0,s.differenceInYears)(e,t)}y`};function m(e,t=new Date,s=`às`,c=a){let l=(0,n.formatRelative)((0,r.toZonedTime)(o(e),c),(0,r.toZonedTime)(o(t),c),{locale:i}).replace(/às/g,s);return`${l.charAt(0).toUpperCase()}${l.slice(1)}`}function h(e,i){return(0,n.formatDistanceToNow)((0,r.toZonedTime)(o(e),a),{locale:t.ptBR,...i})}function g(e){try{return Intl.DateTimeFormat(void 0,{timeZone:e}),!0}catch{return!1}}function _(e){return e&&g(e)?e:a}function v(e,t){let i=(0,n.getDay)((0,r.toZonedTime)(e,t));return i===0?6:i-1}function y(e,t){return(0,r.fromZonedTime)((0,n.startOfDay)((0,r.toZonedTime)(e,t)),t)}function b(e,t){return(0,r.fromZonedTime)((0,n.endOfDay)((0,r.toZonedTime)(e,t)),t)}function x(e,t){return(0,r.fromZonedTime)((0,n.startOfWeek)((0,r.toZonedTime)(e,t),{weekStartsOn:1}),t)}var S=e.t({DEFAULT_LOCALE:()=>i,DEFAULT_TZ:()=>a,endOfDayInTz:()=>b,format:()=>u,formatDateTZ:()=>f,formatDistance:()=>c,formatDistanceToNow:()=>l,formatRelative:()=>d,formatRelativeDate:()=>m,formatRelativeDateToNow:()=>h,formatRelativeReviewDate:()=>p,getWeekStartUTC:()=>x,getWeekdayIndex:()=>v,isValidIANATimezone:()=>g,safeTimezone:()=>_,startOfDayInTz:()=>y,toDate:()=>o});e.n(S,s),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return a}});
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { ptBR as e } from "date-fns/locale";
|
|
2
|
+
import { endOfDay as t, format as n, formatDistance as r, formatDistanceToNow as i, formatRelative as a, getDay as o, parseISO as s, startOfDay as c, startOfWeek as l } from "date-fns";
|
|
3
|
+
import { fromZonedTime as u, toZonedTime as d } from "date-fns-tz";
|
|
4
|
+
//#region \0rolldown/runtime.js
|
|
5
|
+
var f = Object.defineProperty, p = Object.getOwnPropertyDescriptor, m = Object.getOwnPropertyNames, h = Object.prototype.hasOwnProperty, g = (e, t) => {
|
|
6
|
+
let n = {};
|
|
7
|
+
for (var r in e) f(n, r, {
|
|
8
|
+
get: e[r],
|
|
9
|
+
enumerable: !0
|
|
10
|
+
});
|
|
11
|
+
return t || f(n, Symbol.toStringTag, { value: "Module" }), n;
|
|
12
|
+
}, _ = (e, t, n, r) => {
|
|
13
|
+
if (t && typeof t == "object" || typeof t == "function") for (var i = m(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !h.call(e, s) && s !== n && f(e, s, {
|
|
14
|
+
get: ((e) => t[e]).bind(null, s),
|
|
15
|
+
enumerable: !(r = p(t, s)) || r.enumerable
|
|
16
|
+
});
|
|
17
|
+
return e;
|
|
18
|
+
}, v = (e, t, n) => (_(e, t, "default"), n && _(n, t, "default")), y = e, b = "America/Sao_Paulo";
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/date/helpers.ts
|
|
21
|
+
function x(e) {
|
|
22
|
+
return e instanceof Date ? e : typeof e == "number" ? new Date(e) : typeof e == "string" ? s(e) : e;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/date/fns.ts
|
|
26
|
+
var S = /* @__PURE__ */ g({
|
|
27
|
+
format: () => E,
|
|
28
|
+
formatDistance: () => w,
|
|
29
|
+
formatDistanceToNow: () => T,
|
|
30
|
+
formatRelative: () => D
|
|
31
|
+
});
|
|
32
|
+
import * as C from "date-fns";
|
|
33
|
+
v(S, C);
|
|
34
|
+
function w(e, t = /* @__PURE__ */ new Date(), n) {
|
|
35
|
+
return r(x(e), x(t), {
|
|
36
|
+
locale: y,
|
|
37
|
+
...n
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function T(e, t) {
|
|
41
|
+
return i(x(e), {
|
|
42
|
+
locale: y,
|
|
43
|
+
...t
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function E(e, t, r) {
|
|
47
|
+
return n(x(e), t, {
|
|
48
|
+
locale: y,
|
|
49
|
+
...r
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function D(e, t = /* @__PURE__ */ new Date(), n) {
|
|
53
|
+
return a(x(e), x(t), {
|
|
54
|
+
locale: y,
|
|
55
|
+
...n
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/date/format.ts
|
|
60
|
+
function O(e, t, n = b) {
|
|
61
|
+
return E(d(x(e), n), t, { locale: y });
|
|
62
|
+
}
|
|
63
|
+
var k = (e) => {
|
|
64
|
+
let t = /* @__PURE__ */ new Date(), n = (0, S.differenceInMinutes)(e, t);
|
|
65
|
+
if (n < 1) return "<1m";
|
|
66
|
+
if (n < 10) return `<${Math.ceil(n / 10) * 10}m`;
|
|
67
|
+
if ((0, S.differenceInHours)(e, t) < 1) return "<1h";
|
|
68
|
+
let r = (0, S.differenceInDays)(e, t);
|
|
69
|
+
if (r < 1) return "<1d";
|
|
70
|
+
if (r < 7) return `${r}d`;
|
|
71
|
+
let i = (0, S.differenceInMonths)(e, t);
|
|
72
|
+
return i < 1 ? `${Math.ceil(r / 30)}M` : i < 12 ? `${i}M` : `${(0, S.differenceInYears)(e, t)}y`;
|
|
73
|
+
};
|
|
74
|
+
//#endregion
|
|
75
|
+
//#region src/date/relative.ts
|
|
76
|
+
function A(e, t = /* @__PURE__ */ new Date(), n = "às", r = b) {
|
|
77
|
+
let i = a(d(x(e), r), d(x(t), r), { locale: y }).replace(/às/g, n);
|
|
78
|
+
return `${i.charAt(0).toUpperCase()}${i.slice(1)}`;
|
|
79
|
+
}
|
|
80
|
+
function j(t, n) {
|
|
81
|
+
return i(d(x(t), b), {
|
|
82
|
+
locale: e,
|
|
83
|
+
...n
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//#endregion
|
|
87
|
+
//#region src/date/timezone.ts
|
|
88
|
+
function M(e) {
|
|
89
|
+
try {
|
|
90
|
+
return Intl.DateTimeFormat(void 0, { timeZone: e }), !0;
|
|
91
|
+
} catch {
|
|
92
|
+
return !1;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function N(e) {
|
|
96
|
+
return e && M(e) ? e : b;
|
|
97
|
+
}
|
|
98
|
+
function P(e, t) {
|
|
99
|
+
let n = o(d(e, t));
|
|
100
|
+
return n === 0 ? 6 : n - 1;
|
|
101
|
+
}
|
|
102
|
+
function F(e, t) {
|
|
103
|
+
return u(c(d(e, t)), t);
|
|
104
|
+
}
|
|
105
|
+
function I(e, n) {
|
|
106
|
+
return u(t(d(e, n)), n);
|
|
107
|
+
}
|
|
108
|
+
function L(e, t) {
|
|
109
|
+
return u(l(d(e, t), { weekStartsOn: 1 }), t);
|
|
110
|
+
}
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region src/date/index.ts
|
|
113
|
+
var R = /* @__PURE__ */ g({
|
|
114
|
+
DEFAULT_LOCALE: () => y,
|
|
115
|
+
DEFAULT_TZ: () => b,
|
|
116
|
+
endOfDayInTz: () => I,
|
|
117
|
+
format: () => E,
|
|
118
|
+
formatDateTZ: () => O,
|
|
119
|
+
formatDistance: () => w,
|
|
120
|
+
formatDistanceToNow: () => T,
|
|
121
|
+
formatRelative: () => D,
|
|
122
|
+
formatRelativeDate: () => A,
|
|
123
|
+
formatRelativeDateToNow: () => j,
|
|
124
|
+
formatRelativeReviewDate: () => k,
|
|
125
|
+
getWeekStartUTC: () => L,
|
|
126
|
+
getWeekdayIndex: () => P,
|
|
127
|
+
isValidIANATimezone: () => M,
|
|
128
|
+
safeTimezone: () => N,
|
|
129
|
+
startOfDayInTz: () => F,
|
|
130
|
+
toDate: () => x
|
|
131
|
+
});
|
|
132
|
+
v(R, S);
|
|
133
|
+
//#endregion
|
|
134
|
+
export { y as _, M as a, A as c, k as d, E as f, x as g, D as h, P as i, j as l, T as m, I as n, N as o, w as p, L as r, F as s, R as t, O as u, b as v };
|
package/dist/date.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-Bn1ahM0R.cjs`);exports.DEFAULT_LOCALE=e._,exports.DEFAULT_TZ=e.v,exports.endOfDayInTz=e.n,exports.format=e.f,exports.formatDateTZ=e.u,exports.formatDistance=e.p,exports.formatDistanceToNow=e.m,exports.formatRelative=e.h,exports.formatRelativeDate=e.c,exports.formatRelativeDateToNow=e.l,exports.formatRelativeReviewDate=e.d,exports.getWeekStartUTC=e.r,exports.getWeekdayIndex=e.i,exports.isValidIANATimezone=e.a,exports.safeTimezone=e.o,exports.startOfDayInTz=e.s,exports.toDate=e.g;var t=require(`date-fns`);Object.keys(t).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})});
|
package/dist/date.d.ts
CHANGED
|
@@ -10,6 +10,11 @@ export declare const DEFAULT_LOCALE: Locale;
|
|
|
10
10
|
|
|
11
11
|
export declare const DEFAULT_TZ: "America/Sao_Paulo";
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Returns the UTC `Date` for the end of `date`'s day in `timezone` (23:59:59.999 local → UTC).
|
|
15
|
+
*/
|
|
16
|
+
export declare function endOfDayInTz(date: Date, timezone: string): Date;
|
|
17
|
+
|
|
13
18
|
export declare function format(date: DateValue, pattern: string, options?: Parameters<typeof format_2>[2]): string;
|
|
14
19
|
|
|
15
20
|
/**
|
|
@@ -47,6 +52,36 @@ export declare function formatRelativeDateToNow(date: DateValue, options?: Param
|
|
|
47
52
|
|
|
48
53
|
export declare const formatRelativeReviewDate: (date: Date) => string;
|
|
49
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Returns the ISO weekday index (Mon = 0 … Sun = 6) for `date` evaluated in
|
|
57
|
+
* `timezone`. Uses `toZonedTime` so the result is always consistent with the
|
|
58
|
+
* given timezone regardless of the server's local clock.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getWeekdayIndex(date: Date, timezone: string): number;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Returns the UTC `Date` that corresponds to Monday midnight (00:00:00) in `timezone`.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getWeekStartUTC(now: Date, timezone: string): Date;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Returns true if `tz` is a valid IANA timezone identifier recognised by the
|
|
69
|
+
* runtime's Intl API (e.g. "America/Sao_Paulo", "America/Manaus", "UTC").
|
|
70
|
+
*/
|
|
71
|
+
export declare function isValidIANATimezone(tz: string): boolean;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Returns `tz` if it is a valid IANA timezone, otherwise falls back to
|
|
75
|
+
* `DEFAULT_TZ` ("America/Sao_Paulo"). Use this as a safety net when reading
|
|
76
|
+
* timezone values from the database to avoid crashing on corrupted data.
|
|
77
|
+
*/
|
|
78
|
+
export declare function safeTimezone(tz: string | null | undefined): string;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Returns the UTC `Date` for the start of `date`'s day in `timezone` (00:00:00.000 local → UTC).
|
|
82
|
+
*/
|
|
83
|
+
export declare function startOfDayInTz(date: Date, timezone: string): Date;
|
|
84
|
+
|
|
50
85
|
export declare function toDate(value: DateValue): Date;
|
|
51
86
|
|
|
52
87
|
|
package/dist/date.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, u as h, v as g } from "./date-D5P-dKAx.js";
|
|
2
2
|
export * from "date-fns";
|
|
3
|
-
export {
|
|
3
|
+
export { e as DEFAULT_LOCALE, g as DEFAULT_TZ, u as endOfDayInTz, i as format, h as formatDateTZ, f as formatDistance, l as formatDistanceToNow, o as formatRelative, n as formatRelativeDate, c as formatRelativeDateToNow, r as formatRelativeReviewDate, p as getWeekStartUTC, s as getWeekdayIndex, t as isValidIANATimezone, d as safeTimezone, m as startOfDayInTz, a as toDate };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./fsrs-DO2rNRTM.cjs`),t=require(`./theme-Bt1AkSvq.cjs`);var n=9999;function r({data:e,error:t},n){if(t){let e=t.value,r=e&&typeof e==`object`&&e&&`message`in e?String(e.message):n;throw Error(r||n)}if(!e||typeof e==`object`&&`error`in e)throw Error(n);return e}var i=function(e){return e.Draft=`draft`,e.Published=`published`,e}({}),a=[`not-reviewed`,`card-updated`,`demand-rejected`,`card-removed`],o=function(e){return e.Draft=`draft`,e.Review=`to_review`,e.Published=`published`,e.Archived=`archived`,e}({}),s=[`matemática`,`geografia`,`física`,`biologia`,`história`,`literatura`,`gramática`,`sociologia`,`química`,`filosofia`,`redação`,`artes`,`inglês`],c=function(e){return e.Admin=`admin`,e.Moderator=`moderator`,e.User=`user`,e}({}),l=function(e){return e.Owner=`owner`,e.Admin=`admin`,e.Member=`member`,e}({}),u=function(e){return e.Premium=`premium`,e}({}),d=function(e){return e.Active=`active`,e.Canceled=`canceled`,e.Pending=`pending`,e.Expired=`expired`,e}({}),f={APP:{ACCESS:`app:access`},DECK:{CREATE_OWN:`deck:create:own`,CREATE_PUBLIC:`deck:create:public`,READ_OWN:`deck:read:own`,READ_OTHERS:`deck:read:others`,READ_UNPUBLISHED:`deck:read:unpublished`,READ_FREE:`deck:read:free`,READ_PREMIUM:`deck:read:premium`,READ_PRIVATE:`deck:read:private`,UPDATE_OWN:`deck:update:own`,UPDATE_PUBLIC:`deck:update:public`,DELETE_OWN:`deck:delete:own`,DELETE_PUBLIC:`deck:delete:public`},CARD_DEMAND:{READ_ALL:`card-demand:read:*`,CREATE:`card-demand:create`,ACTION:`card-demand:action`},USER:{UPDATE_OWN:`user:update:own`,UPDATE_ALL:`user:update:*`,DELETE_OWN:`user:delete:own`,DELETE_ALL:`user:delete:*`,READ_OWN:`user:read:own`,READ_ALL:`user:read:*`},STATS:{VIEW:`stats:view`},MEMBERSHIP:{MANAGE:`membership:manage`},PLAN:{CREATE:`plan:create`,UPDATE:`plan:update`,DELETE:`plan:delete`},BLOGPOST:{CREATE:`blogpost:create`,UPDATE:`blogpost:update`,DELETE:`blogpost:delete`},VESTY:{CHAT:`vesty:chat`},STUDY:{READ:`study:read`,WRITE:`study:write`},LIBRARY:{READ:`library:read`,WRITE:`library:write`,WRITE_PREMIUM:`library:write:premium`},ADMIN_PANEL:{VIEW:`admin-panel:view`}},
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./fsrs-DO2rNRTM.cjs`),t=require(`./theme-Bt1AkSvq.cjs`);var n=9999;function r({data:e,error:t},n){if(t){let e=t.value,r=e&&typeof e==`object`&&e&&`message`in e?String(e.message):n;throw Error(r||n)}if(!e||typeof e==`object`&&`error`in e)throw Error(n);return e}var i=function(e){return e.Draft=`draft`,e.Published=`published`,e}({}),a=[`not-reviewed`,`card-updated`,`demand-rejected`,`card-removed`],o=function(e){return e.Draft=`draft`,e.Review=`to_review`,e.Published=`published`,e.Archived=`archived`,e}({}),s=[`matemática`,`geografia`,`física`,`biologia`,`história`,`literatura`,`gramática`,`sociologia`,`química`,`filosofia`,`redação`,`artes`,`inglês`],c=function(e){return e.Admin=`admin`,e.Moderator=`moderator`,e.User=`user`,e}({}),l=function(e){return e.Owner=`owner`,e.Admin=`admin`,e.Member=`member`,e}({}),u=function(e){return e.Premium=`premium`,e}({}),d=function(e){return e.Active=`active`,e.Canceled=`canceled`,e.Pending=`pending`,e.Expired=`expired`,e}({}),f=function(e){return e.Fixed=`FIXED`,e.Seasonal=`SEASONAL`,e}({}),p={APP:{ACCESS:`app:access`},DECK:{CREATE_OWN:`deck:create:own`,CREATE_PUBLIC:`deck:create:public`,READ_OWN:`deck:read:own`,READ_OTHERS:`deck:read:others`,READ_UNPUBLISHED:`deck:read:unpublished`,READ_FREE:`deck:read:free`,READ_PREMIUM:`deck:read:premium`,READ_PRIVATE:`deck:read:private`,UPDATE_OWN:`deck:update:own`,UPDATE_PUBLIC:`deck:update:public`,DELETE_OWN:`deck:delete:own`,DELETE_PUBLIC:`deck:delete:public`},CARD_DEMAND:{READ_ALL:`card-demand:read:*`,CREATE:`card-demand:create`,ACTION:`card-demand:action`},USER:{UPDATE_OWN:`user:update:own`,UPDATE_ALL:`user:update:*`,DELETE_OWN:`user:delete:own`,DELETE_ALL:`user:delete:*`,READ_OWN:`user:read:own`,READ_ALL:`user:read:*`},STATS:{VIEW:`stats:view`},MEMBERSHIP:{MANAGE:`membership:manage`},PLAN:{CREATE:`plan:create`,UPDATE:`plan:update`,DELETE:`plan:delete`},BLOGPOST:{CREATE:`blogpost:create`,UPDATE:`blogpost:update`,DELETE:`blogpost:delete`},VESTY:{CHAT:`vesty:chat`,INSIGHTS:`vesty:insights`},STUDY:{READ:`study:read`,WRITE:`study:write`},LIBRARY:{READ:`library:read`,WRITE:`library:write`,WRITE_PREMIUM:`library:write:premium`},ADMIN_PANEL:{VIEW:`admin-panel:view`}},m={APP_ACCESS:p.APP.ACCESS,DECK_CREATE_OWN:p.DECK.CREATE_OWN,DECK_CREATE_PUBLIC:p.DECK.CREATE_PUBLIC,DECK_READ_OWN:p.DECK.READ_OWN,DECK_READ_OTHERS:p.DECK.READ_OTHERS,DECK_READ_UNPUBLISHED:p.DECK.READ_UNPUBLISHED,DECK_READ_FREE:p.DECK.READ_FREE,DECK_READ_PREMIUM:p.DECK.READ_PREMIUM,DECK_READ_PRIVATE:p.DECK.READ_PRIVATE,DECK_UPDATE_OWN:p.DECK.UPDATE_OWN,DECK_UPDATE_PUBLIC:p.DECK.UPDATE_PUBLIC,DECK_DELETE_OWN:p.DECK.DELETE_OWN,DECK_DELETE_PUBLIC:p.DECK.DELETE_PUBLIC,CARD_DEMAND_READ_ALL:p.CARD_DEMAND.READ_ALL,CARD_DEMAND_CREATE:p.CARD_DEMAND.CREATE,CARD_DEMAND_ACTION:p.CARD_DEMAND.ACTION,USER_UPDATE_OWN:p.USER.UPDATE_OWN,USER_UPDATE_ALL:p.USER.UPDATE_ALL,USER_DELETE_OWN:p.USER.DELETE_OWN,USER_DELETE_ALL:p.USER.DELETE_ALL,USER_READ_OWN:p.USER.READ_OWN,USER_READ_ALL:p.USER.READ_ALL,STATS_VIEW:p.STATS.VIEW,MEMBERSHIP_MANAGE:p.MEMBERSHIP.MANAGE,PLAN_CREATE:p.PLAN.CREATE,PLAN_UPDATE:p.PLAN.UPDATE,PLAN_DELETE:p.PLAN.DELETE,BLOGPOST_CREATE:p.BLOGPOST.CREATE,BLOGPOST_UPDATE:p.BLOGPOST.UPDATE,BLOGPOST_DELETE:p.BLOGPOST.DELETE,VESTY_CHAT:p.VESTY.CHAT,VESTY_INSIGHTS:p.VESTY.INSIGHTS,STUDY_READ:p.STUDY.READ,STUDY_WRITE:p.STUDY.WRITE,LIBRARY_READ:p.LIBRARY.READ,LIBRARY_WRITE:p.LIBRARY.WRITE,LIBRARY_WRITE_PREMIUM:p.LIBRARY.WRITE_PREMIUM,ADMIN_PANEL_VIEW:p.ADMIN_PANEL.VIEW},h=Object.values(p).flatMap(e=>Object.values(e)),g={[c.User]:[`deck:read:free`,`deck:read:own`,`deck:delete:own`,`study:read`,`study:write`,`library:read`,`library:write`,`card-demand:create`,`user:update:own`,`user:delete:own`,`user:read:own`],[c.Moderator]:[`app:access`,`deck:read:free`,`deck:read:own`,`deck:read:premium`,`deck:read:private`,`deck:read:unpublished`,`deck:delete:own`,`card-demand:read:*`,`card-demand:create`,`card-demand:action`,`study:read`,`study:write`,`library:read`,`library:write`,`library:write:premium`,`user:update:own`,`user:delete:own`,`user:read:own`,`admin-panel:view`],[c.Admin]:h},_={[u.Premium]:[`app:access`,`deck:create:own`,`deck:update:own`,`deck:read:premium`,`stats:view`,`vesty:chat`,`vesty:insights`,`library:write:premium`]},v=(e,t,n)=>{if(!t)return!1;if(g[t].includes(e))return!0;for(let t of n??[])if((_[t]??[]).includes(e))return!0;return!1},y=function(e){return e.Published=`published`,e.Draft=`draft`,e.Archived=`archived`,e}({}),b={história:`quaternary`,geografia:`tertiary`,matemática:`secondary`,biologia:`primary`,física:`quinary`,gramática:`tertiary`,literatura:`secondary`,química:`primary`,filosofia:`quaternary`,sociologia:`quinary`,redação:`secondary`,artes:`tertiary`,inglês:`quinary`,default:`default`},x={matemática:`radical`,gramática:`spell-check`,literatura:`book-open`,biologia:`dna`,química:`test-tube-diagonal`,física:`atom`,história:`scroll`,geografia:`earth`,filosofia:`brain`,sociologia:`users-round`,redação:`notebook-pen`,artes:`palette`,inglês:`languages`,default:`graduation-cap`},S=e=>x[e]||x.default,C=e=>b[e]||b.default,w=e=>{let n=C(e);return t.i[n===`default`?`gray`:n].DEFAULT};exports.ALL_PERMISSIONS=h,exports.BlogPostStatus=i,exports.DeckStatus=o,exports.ENTITLEMENT_PERMISSIONS=_,exports.Entitlement=u,exports.EntranceExamProgramStatus=y,exports.MembershipStatus=d,exports.OrganizationRole=l,exports.PERMISSIONS=p,exports.Permission=m,exports.PlanType=f,exports.ROLE_PERMISSIONS=g,exports.ReviewRating=e.t,exports.ReviewState=e.n,exports.SUBJECTS=s,exports.SUBJECT_COLORS=b,exports.SUBJECT_ICONS=x,exports.UNPAGINATED_SIZE=n,exports.UserRole=c,exports.cardDemandStatus=a,exports.getSubjectCSSColor=w,exports.getSubjectColor=C,exports.getSubjectIcon=S,exports.hasPermission=v,exports.reviewRatings=e.r,exports.reviewStates=e.i,exports.unwrapApiResponse=r;
|
package/dist/index.d.ts
CHANGED
|
@@ -204,6 +204,30 @@ export declare interface IStudyStats {
|
|
|
204
204
|
total: number;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
+
export declare interface IUserProfile {
|
|
208
|
+
id: string;
|
|
209
|
+
name: string;
|
|
210
|
+
surname: string;
|
|
211
|
+
email: string;
|
|
212
|
+
image: string | null;
|
|
213
|
+
role: UserScopeRole;
|
|
214
|
+
goal: string | null;
|
|
215
|
+
learnDailyLimit: number | null;
|
|
216
|
+
newCardsPerDeckDailyLimit: number | null;
|
|
217
|
+
universityId: number | null;
|
|
218
|
+
universityName: string | null;
|
|
219
|
+
courseId: number | null;
|
|
220
|
+
courseName: string | null;
|
|
221
|
+
authProviders: string[];
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export declare interface IVestyChatRelatedDeck {
|
|
225
|
+
id: string;
|
|
226
|
+
title: string;
|
|
227
|
+
subject: Subject;
|
|
228
|
+
topicName: string;
|
|
229
|
+
}
|
|
230
|
+
|
|
207
231
|
export declare enum MembershipStatus {
|
|
208
232
|
Active = "active",
|
|
209
233
|
Canceled = "canceled",
|
|
@@ -255,6 +279,7 @@ export declare const Permission: {
|
|
|
255
279
|
readonly BLOGPOST_UPDATE: "blogpost:update";
|
|
256
280
|
readonly BLOGPOST_DELETE: "blogpost:delete";
|
|
257
281
|
readonly VESTY_CHAT: "vesty:chat";
|
|
282
|
+
readonly VESTY_INSIGHTS: "vesty:insights";
|
|
258
283
|
readonly STUDY_READ: "study:read";
|
|
259
284
|
readonly STUDY_WRITE: "study:write";
|
|
260
285
|
readonly LIBRARY_READ: "library:read";
|
|
@@ -312,6 +337,7 @@ export declare const PERMISSIONS: {
|
|
|
312
337
|
};
|
|
313
338
|
readonly VESTY: {
|
|
314
339
|
readonly CHAT: "vesty:chat";
|
|
340
|
+
readonly INSIGHTS: "vesty:insights";
|
|
315
341
|
};
|
|
316
342
|
readonly STUDY: {
|
|
317
343
|
readonly READ: "study:read";
|
|
@@ -327,6 +353,11 @@ export declare const PERMISSIONS: {
|
|
|
327
353
|
};
|
|
328
354
|
};
|
|
329
355
|
|
|
356
|
+
export declare enum PlanType {
|
|
357
|
+
Fixed = "FIXED",
|
|
358
|
+
Seasonal = "SEASONAL"
|
|
359
|
+
}
|
|
360
|
+
|
|
330
361
|
export declare const ReviewRating: {
|
|
331
362
|
readonly Manual: "Manual";
|
|
332
363
|
readonly Again: "Again";
|
package/dist/index.js
CHANGED
|
@@ -43,7 +43,9 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
43
43
|
return e.Premium = "premium", e;
|
|
44
44
|
}({}), m = /* @__PURE__ */ function(e) {
|
|
45
45
|
return e.Active = "active", e.Canceled = "canceled", e.Pending = "pending", e.Expired = "expired", e;
|
|
46
|
-
}({}), h = {
|
|
46
|
+
}({}), h = /* @__PURE__ */ function(e) {
|
|
47
|
+
return e.Fixed = "FIXED", e.Seasonal = "SEASONAL", e;
|
|
48
|
+
}({}), g = {
|
|
47
49
|
APP: { ACCESS: "app:access" },
|
|
48
50
|
DECK: {
|
|
49
51
|
CREATE_OWN: "deck:create:own",
|
|
@@ -84,7 +86,10 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
84
86
|
UPDATE: "blogpost:update",
|
|
85
87
|
DELETE: "blogpost:delete"
|
|
86
88
|
},
|
|
87
|
-
VESTY: {
|
|
89
|
+
VESTY: {
|
|
90
|
+
CHAT: "vesty:chat",
|
|
91
|
+
INSIGHTS: "vesty:insights"
|
|
92
|
+
},
|
|
88
93
|
STUDY: {
|
|
89
94
|
READ: "study:read",
|
|
90
95
|
WRITE: "study:write"
|
|
@@ -95,45 +100,46 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
95
100
|
WRITE_PREMIUM: "library:write:premium"
|
|
96
101
|
},
|
|
97
102
|
ADMIN_PANEL: { VIEW: "admin-panel:view" }
|
|
98
|
-
},
|
|
99
|
-
APP_ACCESS:
|
|
100
|
-
DECK_CREATE_OWN:
|
|
101
|
-
DECK_CREATE_PUBLIC:
|
|
102
|
-
DECK_READ_OWN:
|
|
103
|
-
DECK_READ_OTHERS:
|
|
104
|
-
DECK_READ_UNPUBLISHED:
|
|
105
|
-
DECK_READ_FREE:
|
|
106
|
-
DECK_READ_PREMIUM:
|
|
107
|
-
DECK_READ_PRIVATE:
|
|
108
|
-
DECK_UPDATE_OWN:
|
|
109
|
-
DECK_UPDATE_PUBLIC:
|
|
110
|
-
DECK_DELETE_OWN:
|
|
111
|
-
DECK_DELETE_PUBLIC:
|
|
112
|
-
CARD_DEMAND_READ_ALL:
|
|
113
|
-
CARD_DEMAND_CREATE:
|
|
114
|
-
CARD_DEMAND_ACTION:
|
|
115
|
-
USER_UPDATE_OWN:
|
|
116
|
-
USER_UPDATE_ALL:
|
|
117
|
-
USER_DELETE_OWN:
|
|
118
|
-
USER_DELETE_ALL:
|
|
119
|
-
USER_READ_OWN:
|
|
120
|
-
USER_READ_ALL:
|
|
121
|
-
STATS_VIEW:
|
|
122
|
-
MEMBERSHIP_MANAGE:
|
|
123
|
-
PLAN_CREATE:
|
|
124
|
-
PLAN_UPDATE:
|
|
125
|
-
PLAN_DELETE:
|
|
126
|
-
BLOGPOST_CREATE:
|
|
127
|
-
BLOGPOST_UPDATE:
|
|
128
|
-
BLOGPOST_DELETE:
|
|
129
|
-
VESTY_CHAT:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
103
|
+
}, _ = {
|
|
104
|
+
APP_ACCESS: g.APP.ACCESS,
|
|
105
|
+
DECK_CREATE_OWN: g.DECK.CREATE_OWN,
|
|
106
|
+
DECK_CREATE_PUBLIC: g.DECK.CREATE_PUBLIC,
|
|
107
|
+
DECK_READ_OWN: g.DECK.READ_OWN,
|
|
108
|
+
DECK_READ_OTHERS: g.DECK.READ_OTHERS,
|
|
109
|
+
DECK_READ_UNPUBLISHED: g.DECK.READ_UNPUBLISHED,
|
|
110
|
+
DECK_READ_FREE: g.DECK.READ_FREE,
|
|
111
|
+
DECK_READ_PREMIUM: g.DECK.READ_PREMIUM,
|
|
112
|
+
DECK_READ_PRIVATE: g.DECK.READ_PRIVATE,
|
|
113
|
+
DECK_UPDATE_OWN: g.DECK.UPDATE_OWN,
|
|
114
|
+
DECK_UPDATE_PUBLIC: g.DECK.UPDATE_PUBLIC,
|
|
115
|
+
DECK_DELETE_OWN: g.DECK.DELETE_OWN,
|
|
116
|
+
DECK_DELETE_PUBLIC: g.DECK.DELETE_PUBLIC,
|
|
117
|
+
CARD_DEMAND_READ_ALL: g.CARD_DEMAND.READ_ALL,
|
|
118
|
+
CARD_DEMAND_CREATE: g.CARD_DEMAND.CREATE,
|
|
119
|
+
CARD_DEMAND_ACTION: g.CARD_DEMAND.ACTION,
|
|
120
|
+
USER_UPDATE_OWN: g.USER.UPDATE_OWN,
|
|
121
|
+
USER_UPDATE_ALL: g.USER.UPDATE_ALL,
|
|
122
|
+
USER_DELETE_OWN: g.USER.DELETE_OWN,
|
|
123
|
+
USER_DELETE_ALL: g.USER.DELETE_ALL,
|
|
124
|
+
USER_READ_OWN: g.USER.READ_OWN,
|
|
125
|
+
USER_READ_ALL: g.USER.READ_ALL,
|
|
126
|
+
STATS_VIEW: g.STATS.VIEW,
|
|
127
|
+
MEMBERSHIP_MANAGE: g.MEMBERSHIP.MANAGE,
|
|
128
|
+
PLAN_CREATE: g.PLAN.CREATE,
|
|
129
|
+
PLAN_UPDATE: g.PLAN.UPDATE,
|
|
130
|
+
PLAN_DELETE: g.PLAN.DELETE,
|
|
131
|
+
BLOGPOST_CREATE: g.BLOGPOST.CREATE,
|
|
132
|
+
BLOGPOST_UPDATE: g.BLOGPOST.UPDATE,
|
|
133
|
+
BLOGPOST_DELETE: g.BLOGPOST.DELETE,
|
|
134
|
+
VESTY_CHAT: g.VESTY.CHAT,
|
|
135
|
+
VESTY_INSIGHTS: g.VESTY.INSIGHTS,
|
|
136
|
+
STUDY_READ: g.STUDY.READ,
|
|
137
|
+
STUDY_WRITE: g.STUDY.WRITE,
|
|
138
|
+
LIBRARY_READ: g.LIBRARY.READ,
|
|
139
|
+
LIBRARY_WRITE: g.LIBRARY.WRITE,
|
|
140
|
+
LIBRARY_WRITE_PREMIUM: g.LIBRARY.WRITE_PREMIUM,
|
|
141
|
+
ADMIN_PANEL_VIEW: g.ADMIN_PANEL.VIEW
|
|
142
|
+
}, v = Object.values(g).flatMap((e) => Object.values(e)), y = {
|
|
137
143
|
[d.User]: [
|
|
138
144
|
"deck:read:free",
|
|
139
145
|
"deck:read:own",
|
|
@@ -168,23 +174,24 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
168
174
|
"user:read:own",
|
|
169
175
|
"admin-panel:view"
|
|
170
176
|
],
|
|
171
|
-
[d.Admin]:
|
|
172
|
-
},
|
|
177
|
+
[d.Admin]: v
|
|
178
|
+
}, b = { [p.Premium]: [
|
|
173
179
|
"app:access",
|
|
174
180
|
"deck:create:own",
|
|
175
181
|
"deck:update:own",
|
|
176
182
|
"deck:read:premium",
|
|
177
183
|
"stats:view",
|
|
178
184
|
"vesty:chat",
|
|
185
|
+
"vesty:insights",
|
|
179
186
|
"library:write:premium"
|
|
180
|
-
] },
|
|
187
|
+
] }, x = (e, t, n) => {
|
|
181
188
|
if (!t) return !1;
|
|
182
|
-
if (
|
|
183
|
-
for (let t of n ?? []) if ((
|
|
189
|
+
if (y[t].includes(e)) return !0;
|
|
190
|
+
for (let t of n ?? []) if ((b[t] ?? []).includes(e)) return !0;
|
|
184
191
|
return !1;
|
|
185
|
-
},
|
|
192
|
+
}, S = /* @__PURE__ */ function(e) {
|
|
186
193
|
return e.Published = "published", e.Draft = "draft", e.Archived = "archived", e;
|
|
187
|
-
}({}),
|
|
194
|
+
}({}), C = {
|
|
188
195
|
história: "quaternary",
|
|
189
196
|
geografia: "tertiary",
|
|
190
197
|
matemática: "secondary",
|
|
@@ -199,7 +206,7 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
199
206
|
artes: "tertiary",
|
|
200
207
|
inglês: "quinary",
|
|
201
208
|
default: "default"
|
|
202
|
-
},
|
|
209
|
+
}, w = {
|
|
203
210
|
matemática: "radical",
|
|
204
211
|
gramática: "spell-check",
|
|
205
212
|
literatura: "book-open",
|
|
@@ -214,9 +221,9 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
214
221
|
artes: "palette",
|
|
215
222
|
inglês: "languages",
|
|
216
223
|
default: "graduation-cap"
|
|
217
|
-
},
|
|
218
|
-
let t =
|
|
224
|
+
}, T = (e) => w[e] || w.default, E = (e) => C[e] || C.default, D = (e) => {
|
|
225
|
+
let t = E(e);
|
|
219
226
|
return i[t === "default" ? "gray" : t].DEFAULT;
|
|
220
227
|
};
|
|
221
228
|
//#endregion
|
|
222
|
-
export {
|
|
229
|
+
export { v as ALL_PERMISSIONS, s as BlogPostStatus, l as DeckStatus, b as ENTITLEMENT_PERMISSIONS, p as Entitlement, S as EntranceExamProgramStatus, m as MembershipStatus, f as OrganizationRole, g as PERMISSIONS, _ as Permission, h as PlanType, y as ROLE_PERMISSIONS, r as ReviewRating, t as ReviewState, u as SUBJECTS, C as SUBJECT_COLORS, w as SUBJECT_ICONS, a as UNPAGINATED_SIZE, d as UserRole, c as cardDemandStatus, D as getSubjectCSSColor, E as getSubjectColor, T as getSubjectIcon, x as hasPermission, n as reviewRatings, e as reviewStates, o as unwrapApiResponse };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./fsrs-DO2rNRTM.cjs`),t=require(`./date-DoLsSDIb.cjs`);var n=.9,r=50,i=200,a=10,o=10,s=(e=>(e[e.New=0]=`New`,e[e.Learning=1]=`Learning`,e[e.Review=2]=`Review`,e[e.Relearning=3]=`Relearning`,e))(s||{}),c=(e=>(e[e.Manual=0]=`Manual`,e[e.Again=1]=`Again`,e[e.Hard=2]=`Hard`,e[e.Good=3]=`Good`,e[e.Easy=4]=`Easy`,e))(c||{}),l=class e{static card(t){return{...t,state:e.state(t.state),due:e.time(t.due),last_review:t.last_review?e.time(t.last_review):void 0}}static rating(e){if(typeof e==`string`){let t=c[`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`];if(t===void 0)throw Error(`Invalid rating:[${e}]`);return t}else if(typeof e==`number`)return e;throw Error(`Invalid rating:[${e}]`)}static state(e){if(typeof e==`string`){let t=s[`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`];if(t===void 0)throw Error(`Invalid state:[${e}]`);return t}else if(typeof e==`number`)return e;throw Error(`Invalid state:[${e}]`)}static time(e){if(typeof e==`object`&&e instanceof Date)return e;if(typeof e==`string`){let t=Date.parse(e);if(isNaN(t))throw Error(`Invalid date:[${e}]`);return new Date(t)}else if(typeof e==`number`)return new Date(e);throw Error(`Invalid date:[${e}]`)}static review_log(t){return{...t,due:e.time(t.due),rating:e.rating(t.rating),state:e.state(t.state),review:e.time(t.review)}}},u=`4.7.1`;Date.prototype.scheduler=function(e,t){return d(this,e,t)},Date.prototype.diff=function(e,t){return f(this,e,t)},Date.prototype.format=function(){return p(this)},Date.prototype.dueFormat=function(e,t,n){return ee(this,e,t,n)};function d(e,t,n){return new Date(n?l.time(e).getTime()+t*24*60*60*1e3:l.time(e).getTime()+t*60*1e3)}function f(e,t,n){if(!e||!t)throw Error(`Invalid date`);let r=l.time(e).getTime()-l.time(t).getTime(),i=0;switch(n){case`days`:i=Math.floor(r/(1440*60*1e3));break;case`minutes`:i=Math.floor(r/(60*1e3));break}return i}function p(e){let t=l.time(e),n=t.getFullYear(),r=t.getMonth()+1,i=t.getDate(),a=t.getHours(),o=t.getMinutes(),s=t.getSeconds();return`${n}-${m(r)}-${m(i)} ${m(a)}:${m(o)}:${m(s)}`}function m(e){return e<10?`0${e}`:`${e}`}var h=[60,60,24,31,12],g=[`second`,`min`,`hour`,`day`,`month`,`year`];function ee(e,t,n,r=g){e=l.time(e),t=l.time(t),r.length!==g.length&&(r=g);let i=e.getTime()-t.getTime(),a;for(i/=1e3,a=0;a<h.length&&!(i<h[a]);a++)i/=h[a];return`${Math.floor(i)}${n?r[a]:``}`}var te=Object.freeze([c.Again,c.Hard,c.Good,c.Easy]),ne=[{start:2.5,end:7,factor:.15},{start:7,end:20,factor:.1},{start:20,end:1/0,factor:.05}];function re(e,t,n){let r=1;for(let t of ne)r+=t.factor*Math.max(Math.min(e,t.end)-t.start,0);e=Math.min(e,n);let i=Math.max(2,Math.round(e-r)),a=Math.min(Math.round(e+r),n);return e>t&&(i=Math.max(i,t+1)),i=Math.min(i,a),{min_ivl:i,max_ivl:a}}function _(e,t,n){return Math.min(Math.max(e,t),n)}function ie(e,t){let n=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),r=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return Math.floor((r-n)/864e5)}var ae=Object.freeze([.40255,1.18385,3.173,15.69105,7.1949,.5345,1.4604,.0046,1.54575,.1192,1.01925,1.9395,.11,.29605,2.2698,.2315,2.9898,.51655,.6621]);`${u}`;var v=.01,oe=Object.freeze([Object.freeze([v,100]),Object.freeze([v,100]),Object.freeze([v,100]),Object.freeze([v,100]),Object.freeze([1,10]),Object.freeze([.001,4]),Object.freeze([.001,4]),Object.freeze([.001,.75]),Object.freeze([0,4.5]),Object.freeze([0,.8]),Object.freeze([.001,3.5]),Object.freeze([.001,5]),Object.freeze([.001,.25]),Object.freeze([.001,.9]),Object.freeze([0,4]),Object.freeze([0,1]),Object.freeze([1,6]),Object.freeze([0,2]),Object.freeze([0,2])]),y=e=>{let t=[...ae];return e?.w&&(e.w.length===19?t=[...e.w]:e.w.length===17&&(t=e?.w.concat([0,0]),t[4]=+(t[5]*2+t[4]).toFixed(8),t[5]=+(Math.log(t[5]*3+1)/3).toFixed(8),t[6]=+(t[6]+.5).toFixed(8),console.debug(`[FSRS V5]auto fill w to 19 length`))),t=t.map((e,t)=>_(e,oe[t][0],oe[t][1])),{request_retention:e?.request_retention||.9,maximum_interval:e?.maximum_interval||36500,w:t,enable_fuzz:e?.enable_fuzz??!1,enable_short_term:e?.enable_short_term??!0}};function b(e,t){let n={due:e?l.time(e):new Date,stability:0,difficulty:0,elapsed_days:0,scheduled_days:0,reps:0,lapses:0,state:s.New,last_review:void 0};return t&&typeof t==`function`?t(n):n}var se=class{c;s0;s1;s2;constructor(e){let t=ce();this.c=1,this.s0=t(` `),this.s1=t(` `),this.s2=t(` `),e??=+new Date,this.s0-=t(e),this.s0<0&&(this.s0+=1),this.s1-=t(e),this.s1<0&&(this.s1+=1),this.s2-=t(e),this.s2<0&&(this.s2+=1)}next(){let e=2091639*this.s0+this.c*23283064365386963e-26;return this.s0=this.s1,this.s1=this.s2,this.s2=e-(this.c=e|0),this.s2}set state(e){this.c=e.c,this.s0=e.s0,this.s1=e.s1,this.s2=e.s2}get state(){return{c:this.c,s0:this.s0,s1:this.s1,s2:this.s2}}};function ce(){let e=4022871197;return function(t){t=String(t);for(let n=0;n<t.length;n++){e+=t.charCodeAt(n);let r=.02519603282416938*e;e=r>>>0,r-=e,r*=e,e=r>>>0,r-=e,e+=r*4294967296}return(e>>>0)*23283064365386963e-26}}function le(e){let t=new se(e),n=()=>t.next();return n.int32=()=>t.next()*4294967296|0,n.double=()=>n()+(n()*2097152|0)*11102230246251565e-32,n.state=()=>t.state,n.importState=e=>(t.state=e,n),n}var ue=-.5,de=19/81;function fe(e,t){return+((1+de*e/t)**+ue).toFixed(8)}var pe=class{param;intervalModifier;_seed;constructor(e){this.param=new Proxy(y(e),this.params_handler_proxy()),this.intervalModifier=this.calculate_interval_modifier(this.param.request_retention)}get interval_modifier(){return this.intervalModifier}set seed(e){this._seed=e}calculate_interval_modifier(e){if(e<=0||e>1)throw Error(`Requested retention rate should be in the range (0,1]`);return+((e**(1/ue)-1)/de).toFixed(8)}get parameters(){return this.param}set parameters(e){this.update_parameters(e)}params_handler_proxy(){let e=this;return{set:function(t,n,r){return n===`request_retention`&&Number.isFinite(r)&&(e.intervalModifier=e.calculate_interval_modifier(Number(r))),Reflect.set(t,n,r),!0}}}update_parameters(e){let t=y(e);for(let e in t)if(e in this.param){let n=e;this.param[n]=t[n]}}init_stability(e){return Math.max(this.param.w[e-1],.1)}init_difficulty(e){return this.constrain_difficulty(this.param.w[4]-Math.exp((e-1)*this.param.w[5])+1)}apply_fuzz(e,t){if(!this.param.enable_fuzz||e<2.5)return Math.round(e);let n=le(this._seed)(),{min_ivl:r,max_ivl:i}=re(e,t,this.param.maximum_interval);return Math.floor(n*(i-r+1)+r)}next_interval(e,t){let n=Math.min(Math.max(1,Math.round(e*this.intervalModifier)),this.param.maximum_interval);return this.apply_fuzz(n,t)}linear_damping(e,t){return+(e*(10-t)/9).toFixed(8)}next_difficulty(e,t){let n=-this.param.w[6]*(t-3),r=e+this.linear_damping(n,e);return this.constrain_difficulty(this.mean_reversion(this.init_difficulty(c.Easy),r))}constrain_difficulty(e){return Math.min(Math.max(+e.toFixed(8),1),10)}mean_reversion(e,t){return+(this.param.w[7]*e+(1-this.param.w[7])*t).toFixed(8)}next_recall_stability(e,t,n,r){let i=c.Hard===r?this.param.w[15]:1,a=c.Easy===r?this.param.w[16]:1;return+_(t*(1+Math.exp(this.param.w[8])*(11-e)*t**+-this.param.w[9]*(Math.exp((1-n)*this.param.w[10])-1)*i*a),v,36500).toFixed(8)}next_forget_stability(e,t,n){return+_(this.param.w[11]*e**+-this.param.w[12]*((t+1)**+this.param.w[13]-1)*Math.exp((1-n)*this.param.w[14]),v,36500).toFixed(8)}next_short_term_stability(e,t){return+_(e*Math.exp(this.param.w[17]*(t-3+this.param.w[18])),v,36500).toFixed(8)}forgetting_curve=fe;next_state(e,t,n){let{difficulty:r,stability:i}=e??{difficulty:0,stability:0};if(t<0)throw Error(`Invalid delta_t "${t}"`);if(n<0||n>4)throw Error(`Invalid grade "${n}"`);if(r===0&&i===0)return{difficulty:this.init_difficulty(n),stability:this.init_stability(n)};if(n===0)return{difficulty:r,stability:i};if(r<1||i<.01)throw Error(`Invalid memory state { difficulty: ${r}, stability: ${i} }`);let a=this.forgetting_curve(t,i),o=this.next_recall_stability(r,i,a,n),s=this.next_forget_stability(r,i,a),c=this.next_short_term_stability(i,n),l=o;if(n===1){let[e,t]=[0,0];this.param.enable_short_term&&(e=this.param.w[17],t=this.param.w[18]),l=_(+(i/Math.exp(e*t)).toFixed(8),v,s)}return t===0&&this.param.enable_short_term&&(l=c),{difficulty:this.next_difficulty(r,n),stability:l}}};function me(){return`${this.review_time.getTime()}_${this.current.reps}_${this.current.difficulty*this.current.stability}`}var x=(e=>(e.SCHEDULER=`Scheduler`,e.SEED=`Seed`,e))(x||{}),he=class{last;current;review_time;next=new Map;algorithm;initSeedStrategy;constructor(e,t,n,r={seed:me}){this.algorithm=n,this.initSeedStrategy=r.seed.bind(this),this.last=l.card(e),this.current=l.card(e),this.review_time=l.time(t),this.init()}init(){let{state:e,last_review:t}=this.current,n=0;e!==s.New&&t&&(n=ie(t,this.review_time)),this.current.last_review=this.review_time,this.current.elapsed_days=n,this.current.reps+=1,this.algorithm.seed=this.initSeedStrategy()}preview(){return{[c.Again]:this.review(c.Again),[c.Hard]:this.review(c.Hard),[c.Good]:this.review(c.Good),[c.Easy]:this.review(c.Easy),[Symbol.iterator]:this.previewIterator.bind(this)}}*previewIterator(){for(let e of te)yield this.review(e)}review(e){let{state:t}=this.last,n;switch(t){case s.New:n=this.newState(e);break;case s.Learning:case s.Relearning:n=this.learningState(e);break;case s.Review:n=this.reviewState(e);break}if(n)return n;throw Error(`Invalid grade`)}buildLog(e){let{last_review:t,due:n,elapsed_days:r}=this.last;return{rating:e,state:this.current.state,due:t||n,stability:this.current.stability,difficulty:this.current.difficulty,elapsed_days:this.current.elapsed_days,last_elapsed_days:r,scheduled_days:this.current.scheduled_days,review:this.review_time}}},ge=class extends he{newState(e){let t=this.next.get(e);if(t)return t;let n=l.card(this.current);switch(n.difficulty=this.algorithm.init_difficulty(e),n.stability=this.algorithm.init_stability(e),e){case c.Again:n.scheduled_days=0,n.due=this.review_time.scheduler(1),n.state=s.Learning;break;case c.Hard:n.scheduled_days=0,n.due=this.review_time.scheduler(5),n.state=s.Learning;break;case c.Good:n.scheduled_days=0,n.due=this.review_time.scheduler(10),n.state=s.Learning;break;case c.Easy:{let e=this.algorithm.next_interval(n.stability,this.current.elapsed_days);n.scheduled_days=e,n.due=this.review_time.scheduler(e,!0),n.state=s.Review;break}default:throw Error(`Invalid grade`)}let r={card:n,log:this.buildLog(e)};return this.next.set(e,r),r}learningState(e){let t=this.next.get(e);if(t)return t;let{state:n,difficulty:r,stability:i}=this.last,a=l.card(this.current),o=this.current.elapsed_days;switch(a.difficulty=this.algorithm.next_difficulty(r,e),a.stability=this.algorithm.next_short_term_stability(i,e),e){case c.Again:a.scheduled_days=0,a.due=this.review_time.scheduler(5,!1),a.state=n;break;case c.Hard:a.scheduled_days=0,a.due=this.review_time.scheduler(10),a.state=n;break;case c.Good:{let e=this.algorithm.next_interval(a.stability,o);a.scheduled_days=e,a.due=this.review_time.scheduler(e,!0),a.state=s.Review;break}case c.Easy:{let e=this.algorithm.next_short_term_stability(i,c.Good),t=this.algorithm.next_interval(e,o),n=Math.max(this.algorithm.next_interval(a.stability,o),t+1);a.scheduled_days=n,a.due=this.review_time.scheduler(n,!0),a.state=s.Review;break}default:throw Error(`Invalid grade`)}let u={card:a,log:this.buildLog(e)};return this.next.set(e,u),u}reviewState(e){let t=this.next.get(e);if(t)return t;let n=this.current.elapsed_days,{difficulty:r,stability:i}=this.last,a=this.algorithm.forgetting_curve(n,i),o=l.card(this.current),s=l.card(this.current),u=l.card(this.current),d=l.card(this.current);this.next_ds(o,s,u,d,r,i,a),this.next_interval(o,s,u,d,n),this.next_state(o,s,u,d),o.lapses+=1;let f={card:o,log:this.buildLog(c.Again)},p={card:s,log:super.buildLog(c.Hard)},m={card:u,log:super.buildLog(c.Good)},h={card:d,log:super.buildLog(c.Easy)};return this.next.set(c.Again,f),this.next.set(c.Hard,p),this.next.set(c.Good,m),this.next.set(c.Easy,h),this.next.get(e)}next_ds(e,t,n,r,i,a,o){e.difficulty=this.algorithm.next_difficulty(i,c.Again);let s=a/Math.exp(this.algorithm.parameters.w[17]*this.algorithm.parameters.w[18]),l=this.algorithm.next_forget_stability(i,a,o);e.stability=_(+s.toFixed(8),v,l),t.difficulty=this.algorithm.next_difficulty(i,c.Hard),t.stability=this.algorithm.next_recall_stability(i,a,o,c.Hard),n.difficulty=this.algorithm.next_difficulty(i,c.Good),n.stability=this.algorithm.next_recall_stability(i,a,o,c.Good),r.difficulty=this.algorithm.next_difficulty(i,c.Easy),r.stability=this.algorithm.next_recall_stability(i,a,o,c.Easy)}next_interval(e,t,n,r,i){let a,o;a=this.algorithm.next_interval(t.stability,i),o=this.algorithm.next_interval(n.stability,i),a=Math.min(a,o),o=Math.max(o,a+1);let s=Math.max(this.algorithm.next_interval(r.stability,i),o+1);e.scheduled_days=0,e.due=this.review_time.scheduler(5),t.scheduled_days=a,t.due=this.review_time.scheduler(a,!0),n.scheduled_days=o,n.due=this.review_time.scheduler(o,!0),r.scheduled_days=s,r.due=this.review_time.scheduler(s,!0)}next_state(e,t,n,r){e.state=s.Relearning,t.state=s.Review,n.state=s.Review,r.state=s.Review}},_e=class extends he{newState(e){let t=this.next.get(e);if(t)return t;this.current.scheduled_days=0,this.current.elapsed_days=0;let n=l.card(this.current),r=l.card(this.current),i=l.card(this.current),a=l.card(this.current);return this.init_ds(n,r,i,a),this.next_interval(n,r,i,a,0),this.next_state(n,r,i,a),this.update_next(n,r,i,a),this.next.get(e)}init_ds(e,t,n,r){e.difficulty=this.algorithm.init_difficulty(c.Again),e.stability=this.algorithm.init_stability(c.Again),t.difficulty=this.algorithm.init_difficulty(c.Hard),t.stability=this.algorithm.init_stability(c.Hard),n.difficulty=this.algorithm.init_difficulty(c.Good),n.stability=this.algorithm.init_stability(c.Good),r.difficulty=this.algorithm.init_difficulty(c.Easy),r.stability=this.algorithm.init_stability(c.Easy)}learningState(e){return this.reviewState(e)}reviewState(e){let t=this.next.get(e);if(t)return t;let n=this.current.elapsed_days,{difficulty:r,stability:i}=this.last,a=this.algorithm.forgetting_curve(n,i),o=l.card(this.current),s=l.card(this.current),c=l.card(this.current),u=l.card(this.current);return this.next_ds(o,s,c,u,r,i,a),this.next_interval(o,s,c,u,n),this.next_state(o,s,c,u),o.lapses+=1,this.update_next(o,s,c,u),this.next.get(e)}next_ds(e,t,n,r,i,a,o){e.difficulty=this.algorithm.next_difficulty(i,c.Again),e.stability=_(a,v,this.algorithm.next_forget_stability(i,a,o)),t.difficulty=this.algorithm.next_difficulty(i,c.Hard),t.stability=this.algorithm.next_recall_stability(i,a,o,c.Hard),n.difficulty=this.algorithm.next_difficulty(i,c.Good),n.stability=this.algorithm.next_recall_stability(i,a,o,c.Good),r.difficulty=this.algorithm.next_difficulty(i,c.Easy),r.stability=this.algorithm.next_recall_stability(i,a,o,c.Easy)}next_interval(e,t,n,r,i){let a,o,s,c;a=this.algorithm.next_interval(e.stability,i),o=this.algorithm.next_interval(t.stability,i),s=this.algorithm.next_interval(n.stability,i),c=this.algorithm.next_interval(r.stability,i),a=Math.min(a,o),o=Math.max(o,a+1),s=Math.max(s,o+1),c=Math.max(c,s+1),e.scheduled_days=a,e.due=this.review_time.scheduler(a,!0),t.scheduled_days=o,t.due=this.review_time.scheduler(o,!0),n.scheduled_days=s,n.due=this.review_time.scheduler(s,!0),r.scheduled_days=c,r.due=this.review_time.scheduler(c,!0)}next_state(e,t,n,r){e.state=s.Review,t.state=s.Review,n.state=s.Review,r.state=s.Review}update_next(e,t,n,r){let i={card:e,log:this.buildLog(c.Again)},a={card:t,log:super.buildLog(c.Hard)},o={card:n,log:super.buildLog(c.Good)},s={card:r,log:super.buildLog(c.Easy)};this.next.set(c.Again,i),this.next.set(c.Hard,a),this.next.set(c.Good,o),this.next.set(c.Easy,s)}},ve=class{fsrs;constructor(e){this.fsrs=e}replay(e,t,n){return this.fsrs.next(e,t,n)}handleManualRating(e,t,n,r,i,a,o){if(typeof t>`u`)throw Error(`reschedule: state is required for manual rating`);let l,u;if(t===s.New)l={rating:c.Manual,state:t,due:o??n,stability:e.stability,difficulty:e.difficulty,elapsed_days:r,last_elapsed_days:e.elapsed_days,scheduled_days:e.scheduled_days,review:n},u=b(n),u.last_review=n;else{if(typeof o>`u`)throw Error(`reschedule: due is required for manual rating`);let s=o.diff(n,`days`);l={rating:c.Manual,state:e.state,due:e.last_review||e.due,stability:e.stability,difficulty:e.difficulty,elapsed_days:r,last_elapsed_days:e.elapsed_days,scheduled_days:e.scheduled_days,review:n},u={...e,state:t,due:o,last_review:n,stability:i||e.stability,difficulty:a||e.difficulty,elapsed_days:r,scheduled_days:s,reps:e.reps+1}}return{card:u,log:l}}reschedule(e,t){let n=[],r=b(e.due);for(let e of t){let t;if(e.review=l.time(e.review),e.rating===c.Manual){let n=0;r.state!==s.New&&r.last_review&&(n=e.review.diff(r.last_review,`days`)),t=this.handleManualRating(r,e.state,e.review,n,e.stability,e.difficulty,e.due?l.time(e.due):void 0)}else t=this.replay(r,e.review,e.rating);n.push(t),r=t.card}return n}calculateManualRecord(e,t,n,r){if(!n)return null;let{card:i,log:a}=n,o=l.card(e);return o.due.getTime()===i.due.getTime()?null:(o.scheduled_days=i.due.diff(o.due,`days`),this.handleManualRating(o,i.state,l.time(t),a.elapsed_days,r?i.stability:void 0,r?i.difficulty:void 0,i.due))}},ye=class extends pe{strategyHandler=new Map;Scheduler;constructor(e){super(e);let{enable_short_term:t}=this.parameters;this.Scheduler=t?ge:_e}params_handler_proxy(){let e=this;return{set:function(t,n,r){return n===`request_retention`&&Number.isFinite(r)?e.intervalModifier=e.calculate_interval_modifier(Number(r)):n===`enable_short_term`&&(e.Scheduler=r===!0?ge:_e),Reflect.set(t,n,r),!0}}}useStrategy(e,t){return this.strategyHandler.set(e,t),this}clearStrategy(e){return e?this.strategyHandler.delete(e):this.strategyHandler.clear(),this}getScheduler(e,t){let n=this.strategyHandler.get(x.SEED);return new((this.strategyHandler.get(x.SCHEDULER))||this.Scheduler)(e,t,this,{seed:n||me})}repeat(e,t,n){let r=this.getScheduler(e,t).preview();return n&&typeof n==`function`?n(r):r}next(e,t,n,r){let i=this.getScheduler(e,t),a=l.rating(n);if(a===c.Manual)throw Error(`Cannot review a manual rating`);let o=i.review(a);return r&&typeof r==`function`?r(o):o}get_retrievability(e,t,n=!0){let r=l.card(e);t=t?l.time(t):new Date;let i=r.state===s.New?0:Math.max(t.diff(r.last_review,`days`),0),a=r.state===s.New?0:this.forgetting_curve(i,+r.stability.toFixed(8));return n?`${(a*100).toFixed(2)}%`:a}rollback(e,t,n){let r=l.card(e),i=l.review_log(t);if(i.rating===c.Manual)throw Error(`Cannot rollback a manual rating`);let a,o,u;switch(i.state){case s.New:a=i.due,o=void 0,u=0;break;case s.Learning:case s.Relearning:case s.Review:a=i.review,o=i.due,u=r.lapses-+(i.rating===c.Again&&i.state===s.Review);break}let d={...r,due:a,stability:i.stability,difficulty:i.difficulty,elapsed_days:i.last_elapsed_days,scheduled_days:i.scheduled_days,reps:Math.max(0,r.reps-1),lapses:Math.max(0,u),state:i.state,last_review:o};return n&&typeof n==`function`?n(d):d}forget(e,t,n=!1,r){let i=l.card(e);t=l.time(t);let a=i.state===s.New?0:t.diff(i.last_review,`days`),o={rating:c.Manual,state:i.state,due:i.due,stability:i.stability,difficulty:i.difficulty,elapsed_days:0,last_elapsed_days:i.elapsed_days,scheduled_days:a,review:t},u={card:{...i,due:t,stability:0,difficulty:0,elapsed_days:0,scheduled_days:0,reps:n?0:i.reps,lapses:n?0:i.lapses,state:s.New,last_review:i.last_review},log:o};return r&&typeof r==`function`?r(u):u}reschedule(e,t=[],n={}){let{recordLogHandler:r,reviewsOrderBy:i,skipManual:a=!0,now:o=new Date,update_memory_state:s=!1}=n;i&&typeof i==`function`&&t.sort(i),a&&(t=t.filter(e=>e.rating!==c.Manual));let u=new ve(this),d=u.reschedule(n.first_card||b(),t),f=d.length,p=l.card(e),m=u.calculateManualRecord(p,o,f?d[f-1]:void 0,s);return r&&typeof r==`function`?{collections:d.map(r),reschedule_item:m?r(m):null}:{collections:d,reschedule_item:m}}},be=(e=>new ye(e||{}))(y({request_retention:n,enable_fuzz:!0,maximum_interval:100})),xe=e=>e.due?e:{...e,due:new Date},Se=t=>e.i.indexOf(t),Ce=e=>({due:e.due,stability:e.stability,difficulty:e.difficulty,elapsed_days:e.elapsedDays,scheduled_days:e.scheduledDays,reps:e.reps,lapses:e.lapses,state:Se(e.state),last_review:e.lastReview}),we=(e,t,n)=>{let r=new Date,i=Ce(xe(e));return be.repeat(i,r,r=>{let i=r[ke(t)],a=Oe(i.card,e),o=i.log;return{nextCard:a,reviewLog:{id:0,cardReviewId:e.id,grade:t,state:De(o.state),due:o.due,stability:o.stability,difficulty:o.difficulty,elapsedDays:o.elapsed_days,lastElapsedDays:o.last_elapsed_days,scheduledDays:o.scheduled_days,review:o.review,duration:n}}})};function Te(t){let n=new Date,r=Ce(xe(t)),i=be.repeat(r,n),a=Object.fromEntries(e.r.map(e=>[e,new Date]));for(let e of te){let t=i[e].card.due,n=Ee(e);a[n]=t}return a}function Ee(t){return e.r[t]}function De(t){return e.i[t]}function Oe(e,t){return{...t,due:e.due,stability:e.stability,difficulty:e.difficulty,elapsedDays:e.elapsed_days,scheduledDays:e.scheduled_days,reps:e.reps,lapses:e.lapses,state:De(e.state),lastReview:e.last_review??null}}function ke(t){let n=e.r.indexOf(t);if(n===-1)throw Error(`Invalid rating: ${t}`);return n}function Ae(t,n){let r=b();return{id:``,due:null,stability:r.stability,difficulty:r.difficulty,elapsedDays:r.elapsed_days,scheduledDays:r.scheduled_days,reps:r.reps,lapses:r.lapses,state:e.n.New,lastReview:r.last_review??null,userDeckStudyId:t,cardId:n}}var S=Symbol.for(`immer-nothing`),C=Symbol.for(`immer-draftable`),w=Symbol.for(`immer-state`),je=process.env.NODE_ENV===`production`?[]:[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function T(e,...t){if(process.env.NODE_ENV!==`production`){let n=je[e],r=typeof n==`function`?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var E=Object.getPrototypeOf;function D(e){return!!e&&!!e[w]}function O(e){return e?Pe(e)||Array.isArray(e)||!!e[C]||!!e.constructor?.[C]||M(e)||N(e):!1}var Me=Object.prototype.constructor.toString(),Ne=new WeakMap;function Pe(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;if(n===Object)return!0;if(typeof n!=`function`)return!1;let r=Ne.get(n);return r===void 0&&(r=Function.toString.call(n),Ne.set(n,r)),r===Me}function k(e,t,n=!0){A(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function A(e){let t=e[w];return t?t.type_:Array.isArray(e)?1:M(e)?2:N(e)?3:0}function j(e,t){return A(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Fe(e,t,n){let r=A(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function Ie(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}function M(e){return e instanceof Map}function N(e){return e instanceof Set}function P(e){return e.copy_||e.base_}function F(e,t){if(M(e))return new Map(e);if(N(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=Pe(e);if(t===!0||t===`class_only`&&!n){let t=Object.getOwnPropertyDescriptors(e);delete t[w];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a.writable===!1&&(a.writable=!0,a.configurable=!0),(a.get||a.set)&&(t[i]={configurable:!0,writable:!0,enumerable:a.enumerable,value:e[i]})}return Object.create(E(e),t)}else{let t=E(e);return t!==null&&n?{...e}:Object.assign(Object.create(t),e)}}function I(e,t=!1){return R(e)||D(e)||!O(e)?e:(A(e)>1&&Object.defineProperties(e,{set:L,add:L,clear:L,delete:L}),Object.freeze(e),t&&Object.values(e).forEach(e=>I(e,!0)),e)}function Le(){T(2)}var L={value:Le};function R(e){return typeof e!=`object`||!e?!0:Object.isFrozen(e)}var Re={};function z(e){let t=Re[e];return t||T(0,e),t}var B;function ze(){return B}function Be(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Ve(e,t){t&&(z(`Patches`),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function V(e){H(e),e.drafts_.forEach(Ue),e.drafts_=null}function H(e){e===B&&(B=e.parent_)}function He(e){return B=Be(B,e)}function Ue(e){let t=e[w];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function We(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[w].modified_&&(V(t),T(4)),O(e)&&(e=U(t,e),t.parent_||W(t,e)),t.patches_&&z(`Patches`).generateReplacementPatches_(n[w].base_,e,t.patches_,t.inversePatches_)):e=U(t,n,[]),V(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===S?void 0:e}function U(e,t,n){if(R(t))return t;let r=e.immer_.shouldUseStrictIteration(),i=t[w];if(!i)return k(t,(r,a)=>Ge(e,i,t,r,a,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return W(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;let t=i.copy_,a=t,o=!1;i.type_===3&&(a=new Set(t),t.clear(),o=!0),k(a,(r,a)=>Ge(e,i,t,r,a,n,o),r),W(e,t,!1),n&&e.patches_&&z(`Patches`).generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}function Ge(e,t,n,r,i,a,o){if(i==null||typeof i!=`object`&&!o)return;let s=R(i);if(!(s&&!o)){if(process.env.NODE_ENV!==`production`&&i===n&&T(5),D(i)){let o=U(e,i,a&&t&&t.type_!==3&&!j(t.assigned_,r)?a.concat(r):void 0);if(Fe(n,r,o),D(o))e.canAutoFreeze_=!1;else return}else o&&n.add(i);if(O(i)&&!s){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[r]===i&&s)return;U(e,i),(!t||!t.scope_.parent_)&&typeof r!=`symbol`&&(M(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))&&W(e,i)}}}function W(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&I(t,n)}function Ke(e,t){let n=Array.isArray(e),r={type_:+!!n,scope_:t?t.scope_:ze(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},i=r,a=G;n&&(i=[r],a=K);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,s}var G={get(e,t){if(t===w)return e;let n=P(e);if(!j(n,t))return qe(e,n,t);let r=n[t];return e.finalized_||!O(r)?r:r===q(e.base_,t)?(Y(e),e.copy_[t]=X(r,e)):r},has(e,t){return t in P(e)},ownKeys(e){return Reflect.ownKeys(P(e))},set(e,t,n){let r=Je(P(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=q(P(e),t),i=r?.[w];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(Ie(n,r)&&(n!==void 0||j(e.base_,t)))return!0;Y(e),J(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_[t]=!0,!0)},deleteProperty(e,t){return q(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,Y(e),J(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=P(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.type_!==1||t!==`length`,enumerable:r.enumerable,value:n[t]}},defineProperty(){T(11)},getPrototypeOf(e){return E(e.base_)},setPrototypeOf(){T(12)}},K={};k(G,(e,t)=>{K[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),K.deleteProperty=function(e,t){return process.env.NODE_ENV!==`production`&&isNaN(parseInt(t))&&T(13),K.set.call(this,e,t,void 0)},K.set=function(e,t,n){return process.env.NODE_ENV!==`production`&&t!==`length`&&isNaN(parseInt(t))&&T(14),G.set.call(this,e[0],t,n,e[0])};function q(e,t){let n=e[w];return(n?P(n):e)[t]}function qe(e,t,n){let r=Je(t,n);return r?`value`in r?r.value:r.get?.call(e.draft_):void 0}function Je(e,t){if(!(t in e))return;let n=E(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=E(n)}}function J(e){e.modified_||(e.modified_=!0,e.parent_&&J(e.parent_))}function Y(e){e.copy_||=F(e.base_,e.scope_.immer_.useStrictShallowCopy_)}var Ye=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,n)=>{if(typeof e==`function`&&typeof t!=`function`){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}typeof t!=`function`&&T(6),n!==void 0&&typeof n!=`function`&&T(7);let r;if(O(e)){let i=He(this),a=X(e,void 0),o=!0;try{r=t(a),o=!1}finally{o?V(i):H(i)}return Ve(i,n),We(r,i)}else if(!e||typeof e!=`object`){if(r=t(e),r===void 0&&(r=e),r===S&&(r=void 0),this.autoFreeze_&&I(r,!0),n){let t=[],i=[];z(`Patches`).generateReplacementPatches_(e,r,t,i),n(t,i)}return r}else T(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e==`function`)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},typeof e?.autoFreeze==`boolean`&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy==`boolean`&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration==`boolean`&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){O(e)||T(8),D(e)&&(e=Xe(e));let t=He(this),n=X(e,void 0);return n[w].isManual_=!0,H(t),n}finishDraft(e,t){let n=e&&e[w];(!n||!n.isManual_)&&T(9);let{scope_:r}=n;return Ve(r,t),We(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=z(`Patches`).applyPatches_;return D(e)?r(e,t):this.produce(e,e=>r(e,t))}};function X(e,t){let n=M(e)?z(`MapSet`).proxyMap_(e,t):N(e)?z(`MapSet`).proxySet_(e,t):Ke(e,t);return(t?t.scope_:ze()).drafts_.push(n),n}function Xe(e){return D(e)||T(10,e),Z(e)}function Z(e){if(!O(e)||R(e))return e;let t=e[w],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=F(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=F(e,!0);return k(n,(e,t)=>{Fe(n,e,Z(t))},r),t&&(t.finalized_=!1),n}var Ze=new Ye().produce;function Qe(e,t){let n=e+t,r=0;for(let e=0;e<n.length;e++){let t=n.charCodeAt(e);r=(r<<5)-r+t,r|=0}return r}function $e(e,t){return(Qe(e,t)>>>0)/4294967295}function et(e,t=new Set){if(e.reviewCards.length===0&&e.newCards.length===0)return;if(e.reviewCards.length===0)return Q(e.newCards,t)??e.newCards[0];if(e.newCards.length===0)return Q(e.reviewCards,t)??e.reviewCards[0];let n=Q(e.newCards,t),r=Q(e.reviewCards,t);if(!n)return r??e.newCards[0];if(!r)return n??e.reviewCards[0];let i=e.newCards.length,a=(.33+i/(i+e.reviewCards.length))/2;return $e(n.card.id,r.card.id)<a?n:r}function Q(e,t){return e.find(e=>!t.has(e.card.id))}function tt(e,t){let n=$(e,t);return n?Ze(e,e=>{rt(e,n)}):e}function nt(e,n,r){let i=$(n,r);if(!i)return n;let{nextCard:a}=we(i.cardReview,e,30),o=a.due&&(0,t.t.isSameDay)(a.due,new Date);return Ze(n,e=>{rt(e,i),o&&it(e,{...i,cardReview:a})})}function rt(e,t){t.cardReview.state===`New`?e.newCards=e.newCards.filter(e=>e.card.id!==t.card.id):e.reviewCards=e.reviewCards.filter(e=>e.card.id!==t.card.id),at(e,t.cardReview.state,`decrease`)}function it(e,t){if(t.cardReview.state===`New`){let n=e.newCards.findIndex(e=>e.cardReview.due&&t.cardReview.due&&e.cardReview.due>=t.cardReview.due||e.cardReview.difficulty>=t.cardReview.difficulty);n===-1?e.newCards.push(t):e.newCards.splice(n,0,t)}else{let n=ot(e,e.reviewCards);e.reviewCards.splice(n,0,t)}at(e,t.cardReview.state,`increase`)}function at(e,t,n){let r=n===`increase`?1:-1;switch(t){case`New`:e.stats.new+=r;break;case`Learning`:case`Relearning`:e.stats.learning+=r;break;case`Review`:e.stats.review+=r;break;default:e.stats.new+=r;break}e.stats.total+=r}function $(e,t){return e.newCards.find(e=>e.card.id===t)??e.reviewCards.find(e=>e.card.id===t)}function ot(e,t){if(t.length===0)return 0;let n=Math.max(4,Math.floor(t.length/3));return Math.min(n,t.length)}var st=5,ct={newCards:[],reviewCards:[],stats:{new:0,learning:0,review:0,total:0}},lt=class{recentlyReviewed=new Set;_reviewsCompleted=0;_correctGrades=0;getProgress(){return{reviewsCompleted:this._reviewsCompleted,correctGrades:this._correctGrades}}nextCard(e){return et(e,this.recentlyReviewed)}onRate(e,t){return this.recentlyReviewed.add(e),this.recentlyReviewed.size>5&&this.recentlyReviewed.delete(this.recentlyReviewed.values().next().value),this._reviewsCompleted++,(t===`Good`||t===`Easy`)&&this._correctGrades++,this.getProgress()}};exports.FSRS_RETENTION=n,exports.FlashcardSessionManager=lt,exports.MAX_CARDS_TO_FETCH=r,exports.MAX_LEARN_PER_DAY=i,exports.MAX_NEW_PER_DECK_DAY=a,exports.RECENTLY_REVIEWED_SET_SIZE=st,exports.THRESHOLD_CARDS_FOR_REFETCH=o,exports.defaultSessionData=ct,exports.getNextCardFromSession=et,exports.getReviewDateForEachRating=Te,exports.getSessionCard=$,exports.gradeCard=we,exports.mergeFsrsCard=Oe,exports.newCardReview=Ae,exports.removeCardFromSessionData=nt,exports.skipCardFromSessionData=tt;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./fsrs-DO2rNRTM.cjs`),t=require(`./date-Bn1ahM0R.cjs`);var n=.9,r=.1542,i=n**(-1/r)-1,a=50,o={learnDailyLimit:{recommended:200,min:100,max:500,step:50},newCardsPerDeckDailyLimit:{recommended:10,min:1,max:50,step:5}},s=10,c=(e,t)=>e===o.learnDailyLimit.recommended&&t===o.newCardsPerDeckDailyLimit.recommended,l=(e=>(e[e.New=0]=`New`,e[e.Learning=1]=`Learning`,e[e.Review=2]=`Review`,e[e.Relearning=3]=`Relearning`,e))(l||{}),u=(e=>(e[e.Manual=0]=`Manual`,e[e.Again=1]=`Again`,e[e.Hard=2]=`Hard`,e[e.Good=3]=`Good`,e[e.Easy=4]=`Easy`,e))(u||{}),d=class e{static card(t){return{...t,state:e.state(t.state),due:e.time(t.due),last_review:t.last_review?e.time(t.last_review):void 0}}static rating(e){if(typeof e==`string`){let t=u[`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`];if(t===void 0)throw Error(`Invalid rating:[${e}]`);return t}else if(typeof e==`number`)return e;throw Error(`Invalid rating:[${e}]`)}static state(e){if(typeof e==`string`){let t=l[`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`];if(t===void 0)throw Error(`Invalid state:[${e}]`);return t}else if(typeof e==`number`)return e;throw Error(`Invalid state:[${e}]`)}static time(e){if(typeof e==`object`&&e instanceof Date)return e;if(typeof e==`string`){let t=Date.parse(e);if(isNaN(t))throw Error(`Invalid date:[${e}]`);return new Date(t)}else if(typeof e==`number`)return new Date(e);throw Error(`Invalid date:[${e}]`)}static review_log(t){return{...t,due:e.time(t.due),rating:e.rating(t.rating),state:e.state(t.state),review:e.time(t.review)}}},f=`4.7.1`;Date.prototype.scheduler=function(e,t){return p(this,e,t)},Date.prototype.diff=function(e,t){return m(this,e,t)},Date.prototype.format=function(){return ee(this)},Date.prototype.dueFormat=function(e,t,n){return te(this,e,t,n)};function p(e,t,n){return new Date(n?d.time(e).getTime()+t*24*60*60*1e3:d.time(e).getTime()+t*60*1e3)}function m(e,t,n){if(!e||!t)throw Error(`Invalid date`);let r=d.time(e).getTime()-d.time(t).getTime(),i=0;switch(n){case`days`:i=Math.floor(r/(1440*60*1e3));break;case`minutes`:i=Math.floor(r/(60*1e3));break}return i}function ee(e){let t=d.time(e),n=t.getFullYear(),r=t.getMonth()+1,i=t.getDate(),a=t.getHours(),o=t.getMinutes(),s=t.getSeconds();return`${n}-${h(r)}-${h(i)} ${h(a)}:${h(o)}:${h(s)}`}function h(e){return e<10?`0${e}`:`${e}`}var g=[60,60,24,31,12],_=[`second`,`min`,`hour`,`day`,`month`,`year`];function te(e,t,n,r=_){e=d.time(e),t=d.time(t),r.length!==_.length&&(r=_);let i=e.getTime()-t.getTime(),a;for(i/=1e3,a=0;a<g.length&&!(i<g[a]);a++)i/=g[a];return`${Math.floor(i)}${n?r[a]:``}`}var ne=Object.freeze([u.Again,u.Hard,u.Good,u.Easy]),re=[{start:2.5,end:7,factor:.15},{start:7,end:20,factor:.1},{start:20,end:1/0,factor:.05}];function ie(e,t,n){let r=1;for(let t of re)r+=t.factor*Math.max(Math.min(e,t.end)-t.start,0);e=Math.min(e,n);let i=Math.max(2,Math.round(e-r)),a=Math.min(Math.round(e+r),n);return e>t&&(i=Math.max(i,t+1)),i=Math.min(i,a),{min_ivl:i,max_ivl:a}}function v(e,t,n){return Math.min(Math.max(e,t),n)}function ae(e,t){let n=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),r=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return Math.floor((r-n)/864e5)}var oe=Object.freeze([.40255,1.18385,3.173,15.69105,7.1949,.5345,1.4604,.0046,1.54575,.1192,1.01925,1.9395,.11,.29605,2.2698,.2315,2.9898,.51655,.6621]);`${f}`;var y=.01,se=Object.freeze([Object.freeze([y,100]),Object.freeze([y,100]),Object.freeze([y,100]),Object.freeze([y,100]),Object.freeze([1,10]),Object.freeze([.001,4]),Object.freeze([.001,4]),Object.freeze([.001,.75]),Object.freeze([0,4.5]),Object.freeze([0,.8]),Object.freeze([.001,3.5]),Object.freeze([.001,5]),Object.freeze([.001,.25]),Object.freeze([.001,.9]),Object.freeze([0,4]),Object.freeze([0,1]),Object.freeze([1,6]),Object.freeze([0,2]),Object.freeze([0,2])]),b=e=>{let t=[...oe];return e?.w&&(e.w.length===19?t=[...e.w]:e.w.length===17&&(t=e?.w.concat([0,0]),t[4]=+(t[5]*2+t[4]).toFixed(8),t[5]=+(Math.log(t[5]*3+1)/3).toFixed(8),t[6]=+(t[6]+.5).toFixed(8),console.debug(`[FSRS V5]auto fill w to 19 length`))),t=t.map((e,t)=>v(e,se[t][0],se[t][1])),{request_retention:e?.request_retention||.9,maximum_interval:e?.maximum_interval||36500,w:t,enable_fuzz:e?.enable_fuzz??!1,enable_short_term:e?.enable_short_term??!0}};function x(e,t){let n={due:e?d.time(e):new Date,stability:0,difficulty:0,elapsed_days:0,scheduled_days:0,reps:0,lapses:0,state:l.New,last_review:void 0};return t&&typeof t==`function`?t(n):n}var ce=class{c;s0;s1;s2;constructor(e){let t=le();this.c=1,this.s0=t(` `),this.s1=t(` `),this.s2=t(` `),e??=+new Date,this.s0-=t(e),this.s0<0&&(this.s0+=1),this.s1-=t(e),this.s1<0&&(this.s1+=1),this.s2-=t(e),this.s2<0&&(this.s2+=1)}next(){let e=2091639*this.s0+this.c*23283064365386963e-26;return this.s0=this.s1,this.s1=this.s2,this.s2=e-(this.c=e|0),this.s2}set state(e){this.c=e.c,this.s0=e.s0,this.s1=e.s1,this.s2=e.s2}get state(){return{c:this.c,s0:this.s0,s1:this.s1,s2:this.s2}}};function le(){let e=4022871197;return function(t){t=String(t);for(let n=0;n<t.length;n++){e+=t.charCodeAt(n);let r=.02519603282416938*e;e=r>>>0,r-=e,r*=e,e=r>>>0,r-=e,e+=r*4294967296}return(e>>>0)*23283064365386963e-26}}function ue(e){let t=new ce(e),n=()=>t.next();return n.int32=()=>t.next()*4294967296|0,n.double=()=>n()+(n()*2097152|0)*11102230246251565e-32,n.state=()=>t.state,n.importState=e=>(t.state=e,n),n}var de=-.5,fe=19/81;function pe(e,t){return+((1+fe*e/t)**+de).toFixed(8)}var me=class{param;intervalModifier;_seed;constructor(e){this.param=new Proxy(b(e),this.params_handler_proxy()),this.intervalModifier=this.calculate_interval_modifier(this.param.request_retention)}get interval_modifier(){return this.intervalModifier}set seed(e){this._seed=e}calculate_interval_modifier(e){if(e<=0||e>1)throw Error(`Requested retention rate should be in the range (0,1]`);return+((e**(1/de)-1)/fe).toFixed(8)}get parameters(){return this.param}set parameters(e){this.update_parameters(e)}params_handler_proxy(){let e=this;return{set:function(t,n,r){return n===`request_retention`&&Number.isFinite(r)&&(e.intervalModifier=e.calculate_interval_modifier(Number(r))),Reflect.set(t,n,r),!0}}}update_parameters(e){let t=b(e);for(let e in t)if(e in this.param){let n=e;this.param[n]=t[n]}}init_stability(e){return Math.max(this.param.w[e-1],.1)}init_difficulty(e){return this.constrain_difficulty(this.param.w[4]-Math.exp((e-1)*this.param.w[5])+1)}apply_fuzz(e,t){if(!this.param.enable_fuzz||e<2.5)return Math.round(e);let n=ue(this._seed)(),{min_ivl:r,max_ivl:i}=ie(e,t,this.param.maximum_interval);return Math.floor(n*(i-r+1)+r)}next_interval(e,t){let n=Math.min(Math.max(1,Math.round(e*this.intervalModifier)),this.param.maximum_interval);return this.apply_fuzz(n,t)}linear_damping(e,t){return+(e*(10-t)/9).toFixed(8)}next_difficulty(e,t){let n=-this.param.w[6]*(t-3),r=e+this.linear_damping(n,e);return this.constrain_difficulty(this.mean_reversion(this.init_difficulty(u.Easy),r))}constrain_difficulty(e){return Math.min(Math.max(+e.toFixed(8),1),10)}mean_reversion(e,t){return+(this.param.w[7]*e+(1-this.param.w[7])*t).toFixed(8)}next_recall_stability(e,t,n,r){let i=u.Hard===r?this.param.w[15]:1,a=u.Easy===r?this.param.w[16]:1;return+v(t*(1+Math.exp(this.param.w[8])*(11-e)*t**+-this.param.w[9]*(Math.exp((1-n)*this.param.w[10])-1)*i*a),y,36500).toFixed(8)}next_forget_stability(e,t,n){return+v(this.param.w[11]*e**+-this.param.w[12]*((t+1)**+this.param.w[13]-1)*Math.exp((1-n)*this.param.w[14]),y,36500).toFixed(8)}next_short_term_stability(e,t){return+v(e*Math.exp(this.param.w[17]*(t-3+this.param.w[18])),y,36500).toFixed(8)}forgetting_curve=pe;next_state(e,t,n){let{difficulty:r,stability:i}=e??{difficulty:0,stability:0};if(t<0)throw Error(`Invalid delta_t "${t}"`);if(n<0||n>4)throw Error(`Invalid grade "${n}"`);if(r===0&&i===0)return{difficulty:this.init_difficulty(n),stability:this.init_stability(n)};if(n===0)return{difficulty:r,stability:i};if(r<1||i<.01)throw Error(`Invalid memory state { difficulty: ${r}, stability: ${i} }`);let a=this.forgetting_curve(t,i),o=this.next_recall_stability(r,i,a,n),s=this.next_forget_stability(r,i,a),c=this.next_short_term_stability(i,n),l=o;if(n===1){let[e,t]=[0,0];this.param.enable_short_term&&(e=this.param.w[17],t=this.param.w[18]),l=v(+(i/Math.exp(e*t)).toFixed(8),y,s)}return t===0&&this.param.enable_short_term&&(l=c),{difficulty:this.next_difficulty(r,n),stability:l}}};function he(){return`${this.review_time.getTime()}_${this.current.reps}_${this.current.difficulty*this.current.stability}`}var S=(e=>(e.SCHEDULER=`Scheduler`,e.SEED=`Seed`,e))(S||{}),ge=class{last;current;review_time;next=new Map;algorithm;initSeedStrategy;constructor(e,t,n,r={seed:he}){this.algorithm=n,this.initSeedStrategy=r.seed.bind(this),this.last=d.card(e),this.current=d.card(e),this.review_time=d.time(t),this.init()}init(){let{state:e,last_review:t}=this.current,n=0;e!==l.New&&t&&(n=ae(t,this.review_time)),this.current.last_review=this.review_time,this.current.elapsed_days=n,this.current.reps+=1,this.algorithm.seed=this.initSeedStrategy()}preview(){return{[u.Again]:this.review(u.Again),[u.Hard]:this.review(u.Hard),[u.Good]:this.review(u.Good),[u.Easy]:this.review(u.Easy),[Symbol.iterator]:this.previewIterator.bind(this)}}*previewIterator(){for(let e of ne)yield this.review(e)}review(e){let{state:t}=this.last,n;switch(t){case l.New:n=this.newState(e);break;case l.Learning:case l.Relearning:n=this.learningState(e);break;case l.Review:n=this.reviewState(e);break}if(n)return n;throw Error(`Invalid grade`)}buildLog(e){let{last_review:t,due:n,elapsed_days:r}=this.last;return{rating:e,state:this.current.state,due:t||n,stability:this.current.stability,difficulty:this.current.difficulty,elapsed_days:this.current.elapsed_days,last_elapsed_days:r,scheduled_days:this.current.scheduled_days,review:this.review_time}}},_e=class extends ge{newState(e){let t=this.next.get(e);if(t)return t;let n=d.card(this.current);switch(n.difficulty=this.algorithm.init_difficulty(e),n.stability=this.algorithm.init_stability(e),e){case u.Again:n.scheduled_days=0,n.due=this.review_time.scheduler(1),n.state=l.Learning;break;case u.Hard:n.scheduled_days=0,n.due=this.review_time.scheduler(5),n.state=l.Learning;break;case u.Good:n.scheduled_days=0,n.due=this.review_time.scheduler(10),n.state=l.Learning;break;case u.Easy:{let e=this.algorithm.next_interval(n.stability,this.current.elapsed_days);n.scheduled_days=e,n.due=this.review_time.scheduler(e,!0),n.state=l.Review;break}default:throw Error(`Invalid grade`)}let r={card:n,log:this.buildLog(e)};return this.next.set(e,r),r}learningState(e){let t=this.next.get(e);if(t)return t;let{state:n,difficulty:r,stability:i}=this.last,a=d.card(this.current),o=this.current.elapsed_days;switch(a.difficulty=this.algorithm.next_difficulty(r,e),a.stability=this.algorithm.next_short_term_stability(i,e),e){case u.Again:a.scheduled_days=0,a.due=this.review_time.scheduler(5,!1),a.state=n;break;case u.Hard:a.scheduled_days=0,a.due=this.review_time.scheduler(10),a.state=n;break;case u.Good:{let e=this.algorithm.next_interval(a.stability,o);a.scheduled_days=e,a.due=this.review_time.scheduler(e,!0),a.state=l.Review;break}case u.Easy:{let e=this.algorithm.next_short_term_stability(i,u.Good),t=this.algorithm.next_interval(e,o),n=Math.max(this.algorithm.next_interval(a.stability,o),t+1);a.scheduled_days=n,a.due=this.review_time.scheduler(n,!0),a.state=l.Review;break}default:throw Error(`Invalid grade`)}let s={card:a,log:this.buildLog(e)};return this.next.set(e,s),s}reviewState(e){let t=this.next.get(e);if(t)return t;let n=this.current.elapsed_days,{difficulty:r,stability:i}=this.last,a=this.algorithm.forgetting_curve(n,i),o=d.card(this.current),s=d.card(this.current),c=d.card(this.current),l=d.card(this.current);this.next_ds(o,s,c,l,r,i,a),this.next_interval(o,s,c,l,n),this.next_state(o,s,c,l),o.lapses+=1;let f={card:o,log:this.buildLog(u.Again)},p={card:s,log:super.buildLog(u.Hard)},m={card:c,log:super.buildLog(u.Good)},ee={card:l,log:super.buildLog(u.Easy)};return this.next.set(u.Again,f),this.next.set(u.Hard,p),this.next.set(u.Good,m),this.next.set(u.Easy,ee),this.next.get(e)}next_ds(e,t,n,r,i,a,o){e.difficulty=this.algorithm.next_difficulty(i,u.Again);let s=a/Math.exp(this.algorithm.parameters.w[17]*this.algorithm.parameters.w[18]),c=this.algorithm.next_forget_stability(i,a,o);e.stability=v(+s.toFixed(8),y,c),t.difficulty=this.algorithm.next_difficulty(i,u.Hard),t.stability=this.algorithm.next_recall_stability(i,a,o,u.Hard),n.difficulty=this.algorithm.next_difficulty(i,u.Good),n.stability=this.algorithm.next_recall_stability(i,a,o,u.Good),r.difficulty=this.algorithm.next_difficulty(i,u.Easy),r.stability=this.algorithm.next_recall_stability(i,a,o,u.Easy)}next_interval(e,t,n,r,i){let a,o;a=this.algorithm.next_interval(t.stability,i),o=this.algorithm.next_interval(n.stability,i),a=Math.min(a,o),o=Math.max(o,a+1);let s=Math.max(this.algorithm.next_interval(r.stability,i),o+1);e.scheduled_days=0,e.due=this.review_time.scheduler(5),t.scheduled_days=a,t.due=this.review_time.scheduler(a,!0),n.scheduled_days=o,n.due=this.review_time.scheduler(o,!0),r.scheduled_days=s,r.due=this.review_time.scheduler(s,!0)}next_state(e,t,n,r){e.state=l.Relearning,t.state=l.Review,n.state=l.Review,r.state=l.Review}},ve=class extends ge{newState(e){let t=this.next.get(e);if(t)return t;this.current.scheduled_days=0,this.current.elapsed_days=0;let n=d.card(this.current),r=d.card(this.current),i=d.card(this.current),a=d.card(this.current);return this.init_ds(n,r,i,a),this.next_interval(n,r,i,a,0),this.next_state(n,r,i,a),this.update_next(n,r,i,a),this.next.get(e)}init_ds(e,t,n,r){e.difficulty=this.algorithm.init_difficulty(u.Again),e.stability=this.algorithm.init_stability(u.Again),t.difficulty=this.algorithm.init_difficulty(u.Hard),t.stability=this.algorithm.init_stability(u.Hard),n.difficulty=this.algorithm.init_difficulty(u.Good),n.stability=this.algorithm.init_stability(u.Good),r.difficulty=this.algorithm.init_difficulty(u.Easy),r.stability=this.algorithm.init_stability(u.Easy)}learningState(e){return this.reviewState(e)}reviewState(e){let t=this.next.get(e);if(t)return t;let n=this.current.elapsed_days,{difficulty:r,stability:i}=this.last,a=this.algorithm.forgetting_curve(n,i),o=d.card(this.current),s=d.card(this.current),c=d.card(this.current),l=d.card(this.current);return this.next_ds(o,s,c,l,r,i,a),this.next_interval(o,s,c,l,n),this.next_state(o,s,c,l),o.lapses+=1,this.update_next(o,s,c,l),this.next.get(e)}next_ds(e,t,n,r,i,a,o){e.difficulty=this.algorithm.next_difficulty(i,u.Again),e.stability=v(a,y,this.algorithm.next_forget_stability(i,a,o)),t.difficulty=this.algorithm.next_difficulty(i,u.Hard),t.stability=this.algorithm.next_recall_stability(i,a,o,u.Hard),n.difficulty=this.algorithm.next_difficulty(i,u.Good),n.stability=this.algorithm.next_recall_stability(i,a,o,u.Good),r.difficulty=this.algorithm.next_difficulty(i,u.Easy),r.stability=this.algorithm.next_recall_stability(i,a,o,u.Easy)}next_interval(e,t,n,r,i){let a,o,s,c;a=this.algorithm.next_interval(e.stability,i),o=this.algorithm.next_interval(t.stability,i),s=this.algorithm.next_interval(n.stability,i),c=this.algorithm.next_interval(r.stability,i),a=Math.min(a,o),o=Math.max(o,a+1),s=Math.max(s,o+1),c=Math.max(c,s+1),e.scheduled_days=a,e.due=this.review_time.scheduler(a,!0),t.scheduled_days=o,t.due=this.review_time.scheduler(o,!0),n.scheduled_days=s,n.due=this.review_time.scheduler(s,!0),r.scheduled_days=c,r.due=this.review_time.scheduler(c,!0)}next_state(e,t,n,r){e.state=l.Review,t.state=l.Review,n.state=l.Review,r.state=l.Review}update_next(e,t,n,r){let i={card:e,log:this.buildLog(u.Again)},a={card:t,log:super.buildLog(u.Hard)},o={card:n,log:super.buildLog(u.Good)},s={card:r,log:super.buildLog(u.Easy)};this.next.set(u.Again,i),this.next.set(u.Hard,a),this.next.set(u.Good,o),this.next.set(u.Easy,s)}},ye=class{fsrs;constructor(e){this.fsrs=e}replay(e,t,n){return this.fsrs.next(e,t,n)}handleManualRating(e,t,n,r,i,a,o){if(typeof t>`u`)throw Error(`reschedule: state is required for manual rating`);let s,c;if(t===l.New)s={rating:u.Manual,state:t,due:o??n,stability:e.stability,difficulty:e.difficulty,elapsed_days:r,last_elapsed_days:e.elapsed_days,scheduled_days:e.scheduled_days,review:n},c=x(n),c.last_review=n;else{if(typeof o>`u`)throw Error(`reschedule: due is required for manual rating`);let l=o.diff(n,`days`);s={rating:u.Manual,state:e.state,due:e.last_review||e.due,stability:e.stability,difficulty:e.difficulty,elapsed_days:r,last_elapsed_days:e.elapsed_days,scheduled_days:e.scheduled_days,review:n},c={...e,state:t,due:o,last_review:n,stability:i||e.stability,difficulty:a||e.difficulty,elapsed_days:r,scheduled_days:l,reps:e.reps+1}}return{card:c,log:s}}reschedule(e,t){let n=[],r=x(e.due);for(let e of t){let t;if(e.review=d.time(e.review),e.rating===u.Manual){let n=0;r.state!==l.New&&r.last_review&&(n=e.review.diff(r.last_review,`days`)),t=this.handleManualRating(r,e.state,e.review,n,e.stability,e.difficulty,e.due?d.time(e.due):void 0)}else t=this.replay(r,e.review,e.rating);n.push(t),r=t.card}return n}calculateManualRecord(e,t,n,r){if(!n)return null;let{card:i,log:a}=n,o=d.card(e);return o.due.getTime()===i.due.getTime()?null:(o.scheduled_days=i.due.diff(o.due,`days`),this.handleManualRating(o,i.state,d.time(t),a.elapsed_days,r?i.stability:void 0,r?i.difficulty:void 0,i.due))}},be=class extends me{strategyHandler=new Map;Scheduler;constructor(e){super(e);let{enable_short_term:t}=this.parameters;this.Scheduler=t?_e:ve}params_handler_proxy(){let e=this;return{set:function(t,n,r){return n===`request_retention`&&Number.isFinite(r)?e.intervalModifier=e.calculate_interval_modifier(Number(r)):n===`enable_short_term`&&(e.Scheduler=r===!0?_e:ve),Reflect.set(t,n,r),!0}}}useStrategy(e,t){return this.strategyHandler.set(e,t),this}clearStrategy(e){return e?this.strategyHandler.delete(e):this.strategyHandler.clear(),this}getScheduler(e,t){let n=this.strategyHandler.get(S.SEED);return new((this.strategyHandler.get(S.SCHEDULER))||this.Scheduler)(e,t,this,{seed:n||he})}repeat(e,t,n){let r=this.getScheduler(e,t).preview();return n&&typeof n==`function`?n(r):r}next(e,t,n,r){let i=this.getScheduler(e,t),a=d.rating(n);if(a===u.Manual)throw Error(`Cannot review a manual rating`);let o=i.review(a);return r&&typeof r==`function`?r(o):o}get_retrievability(e,t,n=!0){let r=d.card(e);t=t?d.time(t):new Date;let i=r.state===l.New?0:Math.max(t.diff(r.last_review,`days`),0),a=r.state===l.New?0:this.forgetting_curve(i,+r.stability.toFixed(8));return n?`${(a*100).toFixed(2)}%`:a}rollback(e,t,n){let r=d.card(e),i=d.review_log(t);if(i.rating===u.Manual)throw Error(`Cannot rollback a manual rating`);let a,o,s;switch(i.state){case l.New:a=i.due,o=void 0,s=0;break;case l.Learning:case l.Relearning:case l.Review:a=i.review,o=i.due,s=r.lapses-+(i.rating===u.Again&&i.state===l.Review);break}let c={...r,due:a,stability:i.stability,difficulty:i.difficulty,elapsed_days:i.last_elapsed_days,scheduled_days:i.scheduled_days,reps:Math.max(0,r.reps-1),lapses:Math.max(0,s),state:i.state,last_review:o};return n&&typeof n==`function`?n(c):c}forget(e,t,n=!1,r){let i=d.card(e);t=d.time(t);let a=i.state===l.New?0:t.diff(i.last_review,`days`),o={rating:u.Manual,state:i.state,due:i.due,stability:i.stability,difficulty:i.difficulty,elapsed_days:0,last_elapsed_days:i.elapsed_days,scheduled_days:a,review:t},s={card:{...i,due:t,stability:0,difficulty:0,elapsed_days:0,scheduled_days:0,reps:n?0:i.reps,lapses:n?0:i.lapses,state:l.New,last_review:i.last_review},log:o};return r&&typeof r==`function`?r(s):s}reschedule(e,t=[],n={}){let{recordLogHandler:r,reviewsOrderBy:i,skipManual:a=!0,now:o=new Date,update_memory_state:s=!1}=n;i&&typeof i==`function`&&t.sort(i),a&&(t=t.filter(e=>e.rating!==u.Manual));let c=new ye(this),l=c.reschedule(n.first_card||x(),t),f=l.length,p=d.card(e),m=c.calculateManualRecord(p,o,f?l[f-1]:void 0,s);return r&&typeof r==`function`?{collections:l.map(r),reschedule_item:m?r(m):null}:{collections:l,reschedule_item:m}}},xe=(e=>new be(e||{}))(b({request_retention:n,enable_fuzz:!0,maximum_interval:100})),Se=e=>e.due?e:{...e,due:new Date},Ce=t=>e.i.indexOf(t),we=e=>({due:e.due,stability:e.stability,difficulty:e.difficulty,elapsed_days:e.elapsedDays,scheduled_days:e.scheduledDays,reps:e.reps,lapses:e.lapses,state:Ce(e.state),last_review:e.lastReview}),Te=(e,t,n)=>{let r=new Date,i=we(Se(e));return xe.repeat(i,r,r=>{let i=r[ke(t)],a=C(i.card,e),o=i.log;return{nextCard:a,reviewLog:{id:0,cardReviewId:e.id,grade:t,state:Oe(o.state),due:o.due,stability:o.stability,difficulty:o.difficulty,elapsedDays:o.elapsed_days,lastElapsedDays:o.last_elapsed_days,scheduledDays:o.scheduled_days,review:o.review,duration:n}}})};function Ee(t){let n=new Date,r=we(Se(t)),i=xe.repeat(r,n),a=Object.fromEntries(e.r.map(e=>[e,new Date]));for(let e of ne){let t=i[e].card.due,n=De(e);a[n]=t}return a}function De(t){return e.r[t]}function Oe(t){return e.i[t]}function C(e,t){return{...t,due:e.due,stability:e.stability,difficulty:e.difficulty,elapsedDays:e.elapsed_days,scheduledDays:e.scheduled_days,reps:e.reps,lapses:e.lapses,state:Oe(e.state),lastReview:e.last_review??null}}function ke(t){let n=e.r.indexOf(t);if(n===-1)throw Error(`Invalid rating: ${t}`);return n}function Ae(t,n){let r=x();return{id:``,due:null,stability:r.stability,difficulty:r.difficulty,elapsedDays:r.elapsed_days,scheduledDays:r.scheduled_days,reps:r.reps,lapses:r.lapses,state:e.n.New,lastReview:r.last_review??null,userDeckStudyId:t,cardId:n}}function je(e,t){return t<=0?0:(1+i*e/t)**-r}function Me(e,t){return je(e,t)*100}var Ne=Symbol.for(`immer-nothing`),Pe=Symbol.for(`immer-draftable`),w=Symbol.for(`immer-state`),Fe=process.env.NODE_ENV===`production`?[]:[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function T(e,...t){if(process.env.NODE_ENV!==`production`){let n=Fe[e],r=typeof n==`function`?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var E=Object.getPrototypeOf;function D(e){return!!e&&!!e[w]}function O(e){return e?k(e)||Array.isArray(e)||!!e[Pe]||!!e.constructor?.[Pe]||N(e)||P(e):!1}var Ie=Object.prototype.constructor.toString(),Le=new WeakMap;function k(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;if(n===Object)return!0;if(typeof n!=`function`)return!1;let r=Le.get(n);return r===void 0&&(r=Function.toString.call(n),Le.set(n,r)),r===Ie}function A(e,t,n=!0){j(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function j(e){let t=e[w];return t?t.type_:Array.isArray(e)?1:N(e)?2:P(e)?3:0}function M(e,t){return j(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Re(e,t,n){let r=j(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function ze(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}function N(e){return e instanceof Map}function P(e){return e instanceof Set}function F(e){return e.copy_||e.base_}function I(e,t){if(N(e))return new Map(e);if(P(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=k(e);if(t===!0||t===`class_only`&&!n){let t=Object.getOwnPropertyDescriptors(e);delete t[w];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a.writable===!1&&(a.writable=!0,a.configurable=!0),(a.get||a.set)&&(t[i]={configurable:!0,writable:!0,enumerable:a.enumerable,value:e[i]})}return Object.create(E(e),t)}else{let t=E(e);return t!==null&&n?{...e}:Object.assign(Object.create(t),e)}}function L(e,t=!1){return z(e)||D(e)||!O(e)?e:(j(e)>1&&Object.defineProperties(e,{set:R,add:R,clear:R,delete:R}),Object.freeze(e),t&&Object.values(e).forEach(e=>L(e,!0)),e)}function Be(){T(2)}var R={value:Be};function z(e){return typeof e!=`object`||!e?!0:Object.isFrozen(e)}var Ve={};function B(e){let t=Ve[e];return t||T(0,e),t}var V;function He(){return V}function Ue(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function We(e,t){t&&(B(`Patches`),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function H(e){U(e),e.drafts_.forEach(Ke),e.drafts_=null}function U(e){e===V&&(V=e.parent_)}function Ge(e){return V=Ue(V,e)}function Ke(e){let t=e[w];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function qe(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[w].modified_&&(H(t),T(4)),O(e)&&(e=W(t,e),t.parent_||G(t,e)),t.patches_&&B(`Patches`).generateReplacementPatches_(n[w].base_,e,t.patches_,t.inversePatches_)):e=W(t,n,[]),H(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===Ne?void 0:e}function W(e,t,n){if(z(t))return t;let r=e.immer_.shouldUseStrictIteration(),i=t[w];if(!i)return A(t,(r,a)=>Je(e,i,t,r,a,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return G(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;let t=i.copy_,a=t,o=!1;i.type_===3&&(a=new Set(t),t.clear(),o=!0),A(a,(r,a)=>Je(e,i,t,r,a,n,o),r),G(e,t,!1),n&&e.patches_&&B(`Patches`).generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}function Je(e,t,n,r,i,a,o){if(i==null||typeof i!=`object`&&!o)return;let s=z(i);if(!(s&&!o)){if(process.env.NODE_ENV!==`production`&&i===n&&T(5),D(i)){let o=W(e,i,a&&t&&t.type_!==3&&!M(t.assigned_,r)?a.concat(r):void 0);if(Re(n,r,o),D(o))e.canAutoFreeze_=!1;else return}else o&&n.add(i);if(O(i)&&!s){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[r]===i&&s)return;W(e,i),(!t||!t.scope_.parent_)&&typeof r!=`symbol`&&(N(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))&&G(e,i)}}}function G(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&L(t,n)}function Ye(e,t){let n=Array.isArray(e),r={type_:+!!n,scope_:t?t.scope_:He(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},i=r,a=K;n&&(i=[r],a=q);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,s}var K={get(e,t){if(t===w)return e;let n=F(e);if(!M(n,t))return Xe(e,n,t);let r=n[t];return e.finalized_||!O(r)?r:r===J(e.base_,t)?(X(e),e.copy_[t]=Z(r,e)):r},has(e,t){return t in F(e)},ownKeys(e){return Reflect.ownKeys(F(e))},set(e,t,n){let r=Ze(F(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=J(F(e),t),i=r?.[w];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(ze(n,r)&&(n!==void 0||M(e.base_,t)))return!0;X(e),Y(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_[t]=!0,!0)},deleteProperty(e,t){return J(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,X(e),Y(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=F(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.type_!==1||t!==`length`,enumerable:r.enumerable,value:n[t]}},defineProperty(){T(11)},getPrototypeOf(e){return E(e.base_)},setPrototypeOf(){T(12)}},q={};A(K,(e,t)=>{q[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),q.deleteProperty=function(e,t){return process.env.NODE_ENV!==`production`&&isNaN(parseInt(t))&&T(13),q.set.call(this,e,t,void 0)},q.set=function(e,t,n){return process.env.NODE_ENV!==`production`&&t!==`length`&&isNaN(parseInt(t))&&T(14),K.set.call(this,e[0],t,n,e[0])};function J(e,t){let n=e[w];return(n?F(n):e)[t]}function Xe(e,t,n){let r=Ze(t,n);return r?`value`in r?r.value:r.get?.call(e.draft_):void 0}function Ze(e,t){if(!(t in e))return;let n=E(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=E(n)}}function Y(e){e.modified_||(e.modified_=!0,e.parent_&&Y(e.parent_))}function X(e){e.copy_||=I(e.base_,e.scope_.immer_.useStrictShallowCopy_)}var Qe=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,n)=>{if(typeof e==`function`&&typeof t!=`function`){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}typeof t!=`function`&&T(6),n!==void 0&&typeof n!=`function`&&T(7);let r;if(O(e)){let i=Ge(this),a=Z(e,void 0),o=!0;try{r=t(a),o=!1}finally{o?H(i):U(i)}return We(i,n),qe(r,i)}else if(!e||typeof e!=`object`){if(r=t(e),r===void 0&&(r=e),r===Ne&&(r=void 0),this.autoFreeze_&&L(r,!0),n){let t=[],i=[];B(`Patches`).generateReplacementPatches_(e,r,t,i),n(t,i)}return r}else T(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e==`function`)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},typeof e?.autoFreeze==`boolean`&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy==`boolean`&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration==`boolean`&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){O(e)||T(8),D(e)&&(e=$e(e));let t=Ge(this),n=Z(e,void 0);return n[w].isManual_=!0,U(t),n}finishDraft(e,t){let n=e&&e[w];(!n||!n.isManual_)&&T(9);let{scope_:r}=n;return We(r,t),qe(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=B(`Patches`).applyPatches_;return D(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Z(e,t){let n=N(e)?B(`MapSet`).proxyMap_(e,t):P(e)?B(`MapSet`).proxySet_(e,t):Ye(e,t);return(t?t.scope_:He()).drafts_.push(n),n}function $e(e){return D(e)||T(10,e),et(e)}function et(e){if(!O(e)||z(e))return e;let t=e[w],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=I(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=I(e,!0);return A(n,(e,t)=>{Re(n,e,et(t))},r),t&&(t.finalized_=!1),n}var tt=new Qe().produce;function nt(e,t){let n=e+t,r=0;for(let e=0;e<n.length;e++){let t=n.charCodeAt(e);r=(r<<5)-r+t,r|=0}return r}function rt(e,t){return(nt(e,t)>>>0)/4294967295}function it(e,t=new Set){if(e.reviewCards.length===0&&e.newCards.length===0)return;if(e.reviewCards.length===0)return Q(e.newCards,t)??e.newCards[0];if(e.newCards.length===0)return Q(e.reviewCards,t)??e.reviewCards[0];let n=Q(e.newCards,t),r=Q(e.reviewCards,t);if(!n)return r??e.newCards[0];if(!r)return n??e.reviewCards[0];let i=e.newCards.length,a=(.33+i/(i+e.reviewCards.length))/2;return rt(n.card.id,r.card.id)<a?n:r}function Q(e,t){return e.find(e=>!t.has(e.card.id))}function at(e,t){let n=$(e,t);return n?tt(e,e=>{st(e,n)}):e}function ot(e,n,r){let i=$(n,r);if(!i)return n;let{nextCard:a}=Te(i.cardReview,e,30),o=a.due&&(0,t.t.isSameDay)(a.due,new Date);return tt(n,e=>{st(e,i),o&&ct(e,{...i,cardReview:a})})}function st(e,t){t.cardReview.state===`New`?e.newCards=e.newCards.filter(e=>e.card.id!==t.card.id):e.reviewCards=e.reviewCards.filter(e=>e.card.id!==t.card.id),lt(e,t.cardReview.state,`decrease`)}function ct(e,t){if(t.cardReview.state===`New`){let n=e.newCards.findIndex(e=>e.cardReview.due&&t.cardReview.due&&e.cardReview.due>=t.cardReview.due||e.cardReview.difficulty>=t.cardReview.difficulty);n===-1?e.newCards.push(t):e.newCards.splice(n,0,t)}else{let n=ut(e,e.reviewCards);e.reviewCards.splice(n,0,t)}lt(e,t.cardReview.state,`increase`)}function lt(e,t,n){let r=n===`increase`?1:-1;switch(t){case`New`:e.stats.new+=r;break;case`Learning`:case`Relearning`:e.stats.learning+=r;break;case`Review`:e.stats.review+=r;break;default:e.stats.new+=r;break}e.stats.total+=r}function $(e,t){return e.newCards.find(e=>e.card.id===t)??e.reviewCards.find(e=>e.card.id===t)}function ut(e,t){if(t.length===0)return 0;let n=Math.max(4,Math.floor(t.length/3));return Math.min(n,t.length)}var dt=5,ft={newCards:[],reviewCards:[],stats:{new:0,learning:0,review:0,total:0}},pt=class{recentlyReviewed=new Set;_reviewsCompleted=0;_correctGrades=0;getProgress(){return{reviewsCompleted:this._reviewsCompleted,correctGrades:this._correctGrades}}nextCard(e){return it(e,this.recentlyReviewed)}onRate(e,t){return this.recentlyReviewed.add(e),this.recentlyReviewed.size>5&&this.recentlyReviewed.delete(this.recentlyReviewed.values().next().value),this._reviewsCompleted++,(t===`Good`||t===`Easy`)&&this._correctGrades++,this.getProgress()}};exports.FSRS_RETENTION=n,exports.FSRS_RETENTION_FACTOR=i,exports.FSRS_RETRIEVABILITY_DECAY=r,exports.FlashcardSessionManager=pt,exports.LEARNING_SETTINGS_LIMITS=o,exports.MAX_CARDS_TO_FETCH=a,exports.RECENTLY_REVIEWED_SET_SIZE=dt,exports.THRESHOLD_CARDS_FOR_REFETCH=s,exports.calculateRetentionPercentage=Me,exports.calculateRetrievability=je,exports.defaultSessionData=ft,exports.getNextCardFromSession=it,exports.getReviewDateForEachRating=Ee,exports.getSessionCard=$,exports.gradeCard=Te,exports.isRecommendedLearningSettings=c,exports.mergeFsrsCard=C,exports.newCardReview=Ae,exports.removeCardFromSessionData=ot,exports.skipCardFromSessionData=at;
|