@vestcards/shared 1.4.0 → 1.5.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/index.cjs +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.js +70 -66
- package/dist/spaced-repetition.cjs +1 -1
- package/dist/spaced-repetition.d.ts +3 -0
- package/dist/spaced-repetition.js +23 -1
- package/package.json +5 -3
- package/src/styles/blog.css +245 -0
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
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./fsrs-DO2rNRTM.cjs`),t=require(`./theme-Bt1AkSvq.cjs`);var n=`vestcards`,r=`vestcards`,i=9999;function a({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 o=function(e){return e.Draft=`draft`,e.Published=`published`,e}({}),s=[`not-reviewed`,`card-updated`,`demand-rejected`,`card-removed`],c=function(e){return e.Draft=`draft`,e.Review=`to_review`,e.Published=`published`,e.Archived=`archived`,e}({}),l=[`matemática`,`geografia`,`física`,`biologia`,`história`,`literatura`,`gramática`,`sociologia`,`química`,`filosofia`,`redação`,`artes`,`inglês`],u=function(e){return e.Admin=`admin`,e.Moderator=`moderator`,e.User=`user`,e}({}),d=function(e){return e.Owner=`owner`,e.Admin=`admin`,e.Member=`member`,e}({}),f=function(e){return e.Premium=`premium`,e}({}),p=function(e){return e.Active=`active`,e.Canceled=`canceled`,e.Pending=`pending`,e.Expired=`expired`,e}({}),m=function(e){return e.Fixed=`FIXED`,e.Seasonal=`SEASONAL`,e}({}),h={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`},EXAM:{READ:`exam:read`},LIBRARY:{READ:`library:read`,WRITE:`library:write`,WRITE_PREMIUM:`library:write:premium`},ADMIN_PANEL:{VIEW:`admin-panel:view`}},g={APP_ACCESS:h.APP.ACCESS,DECK_CREATE_OWN:h.DECK.CREATE_OWN,DECK_CREATE_PUBLIC:h.DECK.CREATE_PUBLIC,DECK_READ_OWN:h.DECK.READ_OWN,DECK_READ_OTHERS:h.DECK.READ_OTHERS,DECK_READ_UNPUBLISHED:h.DECK.READ_UNPUBLISHED,DECK_READ_FREE:h.DECK.READ_FREE,DECK_READ_PREMIUM:h.DECK.READ_PREMIUM,DECK_READ_PRIVATE:h.DECK.READ_PRIVATE,DECK_UPDATE_OWN:h.DECK.UPDATE_OWN,DECK_UPDATE_PUBLIC:h.DECK.UPDATE_PUBLIC,DECK_DELETE_OWN:h.DECK.DELETE_OWN,DECK_DELETE_PUBLIC:h.DECK.DELETE_PUBLIC,CARD_DEMAND_READ_ALL:h.CARD_DEMAND.READ_ALL,CARD_DEMAND_CREATE:h.CARD_DEMAND.CREATE,CARD_DEMAND_ACTION:h.CARD_DEMAND.ACTION,USER_UPDATE_OWN:h.USER.UPDATE_OWN,USER_UPDATE_ALL:h.USER.UPDATE_ALL,USER_DELETE_OWN:h.USER.DELETE_OWN,USER_DELETE_ALL:h.USER.DELETE_ALL,USER_READ_OWN:h.USER.READ_OWN,USER_READ_ALL:h.USER.READ_ALL,STATS_VIEW:h.STATS.VIEW,MEMBERSHIP_MANAGE:h.MEMBERSHIP.MANAGE,PLAN_CREATE:h.PLAN.CREATE,PLAN_UPDATE:h.PLAN.UPDATE,PLAN_DELETE:h.PLAN.DELETE,BLOGPOST_CREATE:h.BLOGPOST.CREATE,BLOGPOST_UPDATE:h.BLOGPOST.UPDATE,BLOGPOST_DELETE:h.BLOGPOST.DELETE,VESTY_CHAT:h.VESTY.CHAT,VESTY_INSIGHTS:h.VESTY.INSIGHTS,STUDY_READ:h.STUDY.READ,STUDY_WRITE:h.STUDY.WRITE,EXAM_READ:h.EXAM.READ,LIBRARY_READ:h.LIBRARY.READ,LIBRARY_WRITE:h.LIBRARY.WRITE,LIBRARY_WRITE_PREMIUM:h.LIBRARY.WRITE_PREMIUM,ADMIN_PANEL_VIEW:h.ADMIN_PANEL.VIEW},_=Object.values(h).flatMap(e=>Object.values(e)),v={[u.User]:[`deck:read:free`,`deck:read:own`,`deck:delete:own`,`study:read`,`study:write`,`exam:read`,`library:read`,`library:write`,`card-demand:create`,`user:update:own`,`user:delete:own`,`user:read:own`],[u.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`,`exam:read`,`library:read`,`library:write`,`library:write:premium`,`user:update:own`,`user:delete:own`,`user:read:own`,`admin-panel:view`],[u.Admin]:_},y={[f.Premium]:[`app:access`,`deck:create:own`,`deck:update:own`,`deck:read:premium`,`stats:view`,`vesty:chat`,`vesty:insights`,`library:write:premium`]},b=(e,t,n)=>{if(!t)return!1;if(v[t].includes(e))return!0;for(let t of n??[])if((y[t]??[]).includes(e))return!0;return!1},x=function(e){return e.Published=`published`,e.Draft=`draft`,e.Archived=`archived`,e}({}),S={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`},C={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`},w=e=>C[e]||C.default,T=e=>S[e]||S.default,E=e=>{let n=T(e);return t.i[n===`default`?`gray`:n].DEFAULT};exports.ALL_PERMISSIONS=_,exports.BlogPostStatus=o,exports.DeckStatus=c,exports.ENTITLEMENT_PERMISSIONS=y,exports.Entitlement=f,exports.EntranceExamProgramStatus=x,exports.MembershipStatus=p,exports.OrganizationRole=d,exports.PERMISSIONS=h,exports.Permission=g,exports.PlanType=m,exports.ROLE_PERMISSIONS=v,exports.ReviewRating=e.t,exports.ReviewState=e.n,exports.SUBJECTS=l,exports.SUBJECT_COLORS=S,exports.SUBJECT_ICONS=C,exports.UNPAGINATED_SIZE=i,exports.UserRole=u,exports.VESTCARDS_ORGANIZATION_ID=r,exports.VESTCARDS_OWNER_ID=n,exports.cardDemandStatus=s,exports.getSubjectCSSColor=E,exports.getSubjectColor=T,exports.getSubjectIcon=w,exports.hasPermission=b,exports.reviewRatings=e.r,exports.reviewStates=e.i,exports.unwrapApiResponse=a;
|
package/dist/index.d.ts
CHANGED
|
@@ -282,6 +282,7 @@ export declare const Permission: {
|
|
|
282
282
|
readonly VESTY_INSIGHTS: "vesty:insights";
|
|
283
283
|
readonly STUDY_READ: "study:read";
|
|
284
284
|
readonly STUDY_WRITE: "study:write";
|
|
285
|
+
readonly EXAM_READ: "exam:read";
|
|
285
286
|
readonly LIBRARY_READ: "library:read";
|
|
286
287
|
readonly LIBRARY_WRITE: "library:write";
|
|
287
288
|
readonly LIBRARY_WRITE_PREMIUM: "library:write:premium";
|
|
@@ -343,6 +344,9 @@ export declare const PERMISSIONS: {
|
|
|
343
344
|
readonly READ: "study:read";
|
|
344
345
|
readonly WRITE: "study:write";
|
|
345
346
|
};
|
|
347
|
+
readonly EXAM: {
|
|
348
|
+
readonly READ: "exam:read";
|
|
349
|
+
};
|
|
346
350
|
readonly LIBRARY: {
|
|
347
351
|
readonly READ: "library:read";
|
|
348
352
|
readonly WRITE: "library:write";
|
|
@@ -451,4 +455,8 @@ export declare type UserScopeRole = (typeof UserRole)[keyof typeof UserRole];
|
|
|
451
455
|
|
|
452
456
|
declare type ValueOf<T> = T[keyof T];
|
|
453
457
|
|
|
458
|
+
export declare const VESTCARDS_ORGANIZATION_ID = "vestcards";
|
|
459
|
+
|
|
460
|
+
export declare const VESTCARDS_OWNER_ID = "vestcards";
|
|
461
|
+
|
|
454
462
|
export { }
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { i as e, n as t, r as n, t as r } from "./fsrs-D2XsH28s.js";
|
|
2
2
|
import { i } from "./theme-DfRHdgzh.js";
|
|
3
|
-
//#region src/
|
|
4
|
-
var a = 9999;
|
|
5
|
-
function
|
|
3
|
+
//#region src/constants.ts
|
|
4
|
+
var a = "vestcards", o = "vestcards", s = 9999;
|
|
5
|
+
function c({ data: e, error: t }, n) {
|
|
6
6
|
if (t) {
|
|
7
7
|
let e = t.value, r = e && typeof e == "object" && e && "message" in e ? String(e.message) : n;
|
|
8
8
|
throw Error(r || n);
|
|
@@ -12,16 +12,16 @@ function o({ data: e, error: t }, n) {
|
|
|
12
12
|
}
|
|
13
13
|
//#endregion
|
|
14
14
|
//#region src/types/blog.ts
|
|
15
|
-
var
|
|
15
|
+
var l = /* @__PURE__ */ function(e) {
|
|
16
16
|
return e.Draft = "draft", e.Published = "published", e;
|
|
17
|
-
}({}),
|
|
17
|
+
}({}), u = [
|
|
18
18
|
"not-reviewed",
|
|
19
19
|
"card-updated",
|
|
20
20
|
"demand-rejected",
|
|
21
21
|
"card-removed"
|
|
22
|
-
],
|
|
22
|
+
], d = /* @__PURE__ */ function(e) {
|
|
23
23
|
return e.Draft = "draft", e.Review = "to_review", e.Published = "published", e.Archived = "archived", e;
|
|
24
|
-
}({}),
|
|
24
|
+
}({}), f = [
|
|
25
25
|
"matemática",
|
|
26
26
|
"geografia",
|
|
27
27
|
"física",
|
|
@@ -35,17 +35,17 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
35
35
|
"redação",
|
|
36
36
|
"artes",
|
|
37
37
|
"inglês"
|
|
38
|
-
],
|
|
38
|
+
], p = /* @__PURE__ */ function(e) {
|
|
39
39
|
return e.Admin = "admin", e.Moderator = "moderator", e.User = "user", e;
|
|
40
|
-
}({}),
|
|
40
|
+
}({}), m = /* @__PURE__ */ function(e) {
|
|
41
41
|
return e.Owner = "owner", e.Admin = "admin", e.Member = "member", e;
|
|
42
|
-
}({}),
|
|
42
|
+
}({}), h = /* @__PURE__ */ function(e) {
|
|
43
43
|
return e.Premium = "premium", e;
|
|
44
|
-
}({}),
|
|
44
|
+
}({}), g = /* @__PURE__ */ function(e) {
|
|
45
45
|
return e.Active = "active", e.Canceled = "canceled", e.Pending = "pending", e.Expired = "expired", e;
|
|
46
|
-
}({}),
|
|
46
|
+
}({}), _ = /* @__PURE__ */ function(e) {
|
|
47
47
|
return e.Fixed = "FIXED", e.Seasonal = "SEASONAL", e;
|
|
48
|
-
}({}),
|
|
48
|
+
}({}), v = {
|
|
49
49
|
APP: { ACCESS: "app:access" },
|
|
50
50
|
DECK: {
|
|
51
51
|
CREATE_OWN: "deck:create:own",
|
|
@@ -94,58 +94,61 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
94
94
|
READ: "study:read",
|
|
95
95
|
WRITE: "study:write"
|
|
96
96
|
},
|
|
97
|
+
EXAM: { READ: "exam:read" },
|
|
97
98
|
LIBRARY: {
|
|
98
99
|
READ: "library:read",
|
|
99
100
|
WRITE: "library:write",
|
|
100
101
|
WRITE_PREMIUM: "library:write:premium"
|
|
101
102
|
},
|
|
102
103
|
ADMIN_PANEL: { VIEW: "admin-panel:view" }
|
|
103
|
-
},
|
|
104
|
-
APP_ACCESS:
|
|
105
|
-
DECK_CREATE_OWN:
|
|
106
|
-
DECK_CREATE_PUBLIC:
|
|
107
|
-
DECK_READ_OWN:
|
|
108
|
-
DECK_READ_OTHERS:
|
|
109
|
-
DECK_READ_UNPUBLISHED:
|
|
110
|
-
DECK_READ_FREE:
|
|
111
|
-
DECK_READ_PREMIUM:
|
|
112
|
-
DECK_READ_PRIVATE:
|
|
113
|
-
DECK_UPDATE_OWN:
|
|
114
|
-
DECK_UPDATE_PUBLIC:
|
|
115
|
-
DECK_DELETE_OWN:
|
|
116
|
-
DECK_DELETE_PUBLIC:
|
|
117
|
-
CARD_DEMAND_READ_ALL:
|
|
118
|
-
CARD_DEMAND_CREATE:
|
|
119
|
-
CARD_DEMAND_ACTION:
|
|
120
|
-
USER_UPDATE_OWN:
|
|
121
|
-
USER_UPDATE_ALL:
|
|
122
|
-
USER_DELETE_OWN:
|
|
123
|
-
USER_DELETE_ALL:
|
|
124
|
-
USER_READ_OWN:
|
|
125
|
-
USER_READ_ALL:
|
|
126
|
-
STATS_VIEW:
|
|
127
|
-
MEMBERSHIP_MANAGE:
|
|
128
|
-
PLAN_CREATE:
|
|
129
|
-
PLAN_UPDATE:
|
|
130
|
-
PLAN_DELETE:
|
|
131
|
-
BLOGPOST_CREATE:
|
|
132
|
-
BLOGPOST_UPDATE:
|
|
133
|
-
BLOGPOST_DELETE:
|
|
134
|
-
VESTY_CHAT:
|
|
135
|
-
VESTY_INSIGHTS:
|
|
136
|
-
STUDY_READ:
|
|
137
|
-
STUDY_WRITE:
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
104
|
+
}, y = {
|
|
105
|
+
APP_ACCESS: v.APP.ACCESS,
|
|
106
|
+
DECK_CREATE_OWN: v.DECK.CREATE_OWN,
|
|
107
|
+
DECK_CREATE_PUBLIC: v.DECK.CREATE_PUBLIC,
|
|
108
|
+
DECK_READ_OWN: v.DECK.READ_OWN,
|
|
109
|
+
DECK_READ_OTHERS: v.DECK.READ_OTHERS,
|
|
110
|
+
DECK_READ_UNPUBLISHED: v.DECK.READ_UNPUBLISHED,
|
|
111
|
+
DECK_READ_FREE: v.DECK.READ_FREE,
|
|
112
|
+
DECK_READ_PREMIUM: v.DECK.READ_PREMIUM,
|
|
113
|
+
DECK_READ_PRIVATE: v.DECK.READ_PRIVATE,
|
|
114
|
+
DECK_UPDATE_OWN: v.DECK.UPDATE_OWN,
|
|
115
|
+
DECK_UPDATE_PUBLIC: v.DECK.UPDATE_PUBLIC,
|
|
116
|
+
DECK_DELETE_OWN: v.DECK.DELETE_OWN,
|
|
117
|
+
DECK_DELETE_PUBLIC: v.DECK.DELETE_PUBLIC,
|
|
118
|
+
CARD_DEMAND_READ_ALL: v.CARD_DEMAND.READ_ALL,
|
|
119
|
+
CARD_DEMAND_CREATE: v.CARD_DEMAND.CREATE,
|
|
120
|
+
CARD_DEMAND_ACTION: v.CARD_DEMAND.ACTION,
|
|
121
|
+
USER_UPDATE_OWN: v.USER.UPDATE_OWN,
|
|
122
|
+
USER_UPDATE_ALL: v.USER.UPDATE_ALL,
|
|
123
|
+
USER_DELETE_OWN: v.USER.DELETE_OWN,
|
|
124
|
+
USER_DELETE_ALL: v.USER.DELETE_ALL,
|
|
125
|
+
USER_READ_OWN: v.USER.READ_OWN,
|
|
126
|
+
USER_READ_ALL: v.USER.READ_ALL,
|
|
127
|
+
STATS_VIEW: v.STATS.VIEW,
|
|
128
|
+
MEMBERSHIP_MANAGE: v.MEMBERSHIP.MANAGE,
|
|
129
|
+
PLAN_CREATE: v.PLAN.CREATE,
|
|
130
|
+
PLAN_UPDATE: v.PLAN.UPDATE,
|
|
131
|
+
PLAN_DELETE: v.PLAN.DELETE,
|
|
132
|
+
BLOGPOST_CREATE: v.BLOGPOST.CREATE,
|
|
133
|
+
BLOGPOST_UPDATE: v.BLOGPOST.UPDATE,
|
|
134
|
+
BLOGPOST_DELETE: v.BLOGPOST.DELETE,
|
|
135
|
+
VESTY_CHAT: v.VESTY.CHAT,
|
|
136
|
+
VESTY_INSIGHTS: v.VESTY.INSIGHTS,
|
|
137
|
+
STUDY_READ: v.STUDY.READ,
|
|
138
|
+
STUDY_WRITE: v.STUDY.WRITE,
|
|
139
|
+
EXAM_READ: v.EXAM.READ,
|
|
140
|
+
LIBRARY_READ: v.LIBRARY.READ,
|
|
141
|
+
LIBRARY_WRITE: v.LIBRARY.WRITE,
|
|
142
|
+
LIBRARY_WRITE_PREMIUM: v.LIBRARY.WRITE_PREMIUM,
|
|
143
|
+
ADMIN_PANEL_VIEW: v.ADMIN_PANEL.VIEW
|
|
144
|
+
}, b = Object.values(v).flatMap((e) => Object.values(e)), x = {
|
|
145
|
+
[p.User]: [
|
|
144
146
|
"deck:read:free",
|
|
145
147
|
"deck:read:own",
|
|
146
148
|
"deck:delete:own",
|
|
147
149
|
"study:read",
|
|
148
150
|
"study:write",
|
|
151
|
+
"exam:read",
|
|
149
152
|
"library:read",
|
|
150
153
|
"library:write",
|
|
151
154
|
"card-demand:create",
|
|
@@ -153,7 +156,7 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
153
156
|
"user:delete:own",
|
|
154
157
|
"user:read:own"
|
|
155
158
|
],
|
|
156
|
-
[
|
|
159
|
+
[p.Moderator]: [
|
|
157
160
|
"app:access",
|
|
158
161
|
"deck:read:free",
|
|
159
162
|
"deck:read:own",
|
|
@@ -166,6 +169,7 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
166
169
|
"card-demand:action",
|
|
167
170
|
"study:read",
|
|
168
171
|
"study:write",
|
|
172
|
+
"exam:read",
|
|
169
173
|
"library:read",
|
|
170
174
|
"library:write",
|
|
171
175
|
"library:write:premium",
|
|
@@ -174,8 +178,8 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
174
178
|
"user:read:own",
|
|
175
179
|
"admin-panel:view"
|
|
176
180
|
],
|
|
177
|
-
[
|
|
178
|
-
},
|
|
181
|
+
[p.Admin]: b
|
|
182
|
+
}, S = { [h.Premium]: [
|
|
179
183
|
"app:access",
|
|
180
184
|
"deck:create:own",
|
|
181
185
|
"deck:update:own",
|
|
@@ -184,14 +188,14 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
184
188
|
"vesty:chat",
|
|
185
189
|
"vesty:insights",
|
|
186
190
|
"library:write:premium"
|
|
187
|
-
] },
|
|
191
|
+
] }, C = (e, t, n) => {
|
|
188
192
|
if (!t) return !1;
|
|
189
|
-
if (
|
|
190
|
-
for (let t of n ?? []) if ((
|
|
193
|
+
if (x[t].includes(e)) return !0;
|
|
194
|
+
for (let t of n ?? []) if ((S[t] ?? []).includes(e)) return !0;
|
|
191
195
|
return !1;
|
|
192
|
-
},
|
|
196
|
+
}, w = /* @__PURE__ */ function(e) {
|
|
193
197
|
return e.Published = "published", e.Draft = "draft", e.Archived = "archived", e;
|
|
194
|
-
}({}),
|
|
198
|
+
}({}), T = {
|
|
195
199
|
história: "quaternary",
|
|
196
200
|
geografia: "tertiary",
|
|
197
201
|
matemática: "secondary",
|
|
@@ -206,7 +210,7 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
206
210
|
artes: "tertiary",
|
|
207
211
|
inglês: "quinary",
|
|
208
212
|
default: "default"
|
|
209
|
-
},
|
|
213
|
+
}, E = {
|
|
210
214
|
matemática: "radical",
|
|
211
215
|
gramática: "spell-check",
|
|
212
216
|
literatura: "book-open",
|
|
@@ -221,9 +225,9 @@ var s = /* @__PURE__ */ function(e) {
|
|
|
221
225
|
artes: "palette",
|
|
222
226
|
inglês: "languages",
|
|
223
227
|
default: "graduation-cap"
|
|
224
|
-
},
|
|
225
|
-
let t =
|
|
228
|
+
}, D = (e) => E[e] || E.default, O = (e) => T[e] || T.default, k = (e) => {
|
|
229
|
+
let t = O(e);
|
|
226
230
|
return i[t === "default" ? "gray" : t].DEFAULT;
|
|
227
231
|
};
|
|
228
232
|
//#endregion
|
|
229
|
-
export {
|
|
233
|
+
export { b as ALL_PERMISSIONS, l as BlogPostStatus, d as DeckStatus, S as ENTITLEMENT_PERMISSIONS, h as Entitlement, w as EntranceExamProgramStatus, g as MembershipStatus, m as OrganizationRole, v as PERMISSIONS, y as Permission, _ as PlanType, x as ROLE_PERMISSIONS, r as ReviewRating, t as ReviewState, f as SUBJECTS, T as SUBJECT_COLORS, E as SUBJECT_ICONS, s as UNPAGINATED_SIZE, p as UserRole, o as VESTCARDS_ORGANIZATION_ID, a as VESTCARDS_OWNER_ID, u as cardDemandStatus, k as getSubjectCSSColor, O as getSubjectColor, D as getSubjectIcon, C as hasPermission, n as reviewRatings, e as reviewStates, c as unwrapApiResponse };
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;reviewHistory=[];_reviewsCompleted=0;_correctGrades=0;getProgress(){return{reviewsCompleted:this._reviewsCompleted,correctGrades:this._correctGrades}}nextCard(e){return it(e,this.recentlyReviewed)}onRate(e,t){if(this.reviewHistory.push({cardId:e,rating:t}),this.recentlyReviewed.add(e),this.recentlyReviewed.size>5){let e=this.recentlyReviewed.values().next().value;typeof e==`string`&&this.recentlyReviewed.delete(e)}return this._reviewsCompleted++,(t===`Good`||t===`Easy`)&&this._correctGrades++,this.getProgress()}undoRate(e,t){let n=this.reviewHistory.at(-1);return!n||n.cardId!==e||n.rating!==t?this.getProgress():(this.reviewHistory=this.reviewHistory.slice(0,-1),this.rebuildStateFromHistory(),this.getProgress())}rebuildStateFromHistory(){this.recentlyReviewed=new Set,this._reviewsCompleted=0,this._correctGrades=0;for(let e of this.reviewHistory){if(this.recentlyReviewed.add(e.cardId),this.recentlyReviewed.size>5){let e=this.recentlyReviewed.values().next().value;typeof e==`string`&&this.recentlyReviewed.delete(e)}this._reviewsCompleted++,(e.rating===`Good`||e.rating===`Easy`)&&this._correctGrades++}}};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;
|
|
@@ -17,11 +17,14 @@ export declare const defaultSessionData: ISessionData;
|
|
|
17
17
|
*/
|
|
18
18
|
export declare class FlashcardSessionManager {
|
|
19
19
|
private recentlyReviewed;
|
|
20
|
+
private reviewHistory;
|
|
20
21
|
private _reviewsCompleted;
|
|
21
22
|
private _correctGrades;
|
|
22
23
|
getProgress(): SessionProgress;
|
|
23
24
|
nextCard(data: ISessionData): ISessionCard | undefined;
|
|
24
25
|
onRate(cardId: string, rating: ReviewRating): SessionProgress;
|
|
26
|
+
undoRate(cardId: string, rating: ReviewRating): SessionProgress;
|
|
27
|
+
private rebuildStateFromHistory;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
export declare const FSRS_RETENTION = 0.9;
|
|
@@ -1317,6 +1317,7 @@ var pt = 5, mt = {
|
|
|
1317
1317
|
}
|
|
1318
1318
|
}, ht = class {
|
|
1319
1319
|
recentlyReviewed = /* @__PURE__ */ new Set();
|
|
1320
|
+
reviewHistory = [];
|
|
1320
1321
|
_reviewsCompleted = 0;
|
|
1321
1322
|
_correctGrades = 0;
|
|
1322
1323
|
getProgress() {
|
|
@@ -1329,7 +1330,28 @@ var pt = 5, mt = {
|
|
|
1329
1330
|
return ot(e, this.recentlyReviewed);
|
|
1330
1331
|
}
|
|
1331
1332
|
onRate(e, t) {
|
|
1332
|
-
|
|
1333
|
+
if (this.reviewHistory.push({
|
|
1334
|
+
cardId: e,
|
|
1335
|
+
rating: t
|
|
1336
|
+
}), this.recentlyReviewed.add(e), this.recentlyReviewed.size > 5) {
|
|
1337
|
+
let e = this.recentlyReviewed.values().next().value;
|
|
1338
|
+
typeof e == "string" && this.recentlyReviewed.delete(e);
|
|
1339
|
+
}
|
|
1340
|
+
return this._reviewsCompleted++, (t === "Good" || t === "Easy") && this._correctGrades++, this.getProgress();
|
|
1341
|
+
}
|
|
1342
|
+
undoRate(e, t) {
|
|
1343
|
+
let n = this.reviewHistory.at(-1);
|
|
1344
|
+
return !n || n.cardId !== e || n.rating !== t ? this.getProgress() : (this.reviewHistory = this.reviewHistory.slice(0, -1), this.rebuildStateFromHistory(), this.getProgress());
|
|
1345
|
+
}
|
|
1346
|
+
rebuildStateFromHistory() {
|
|
1347
|
+
this.recentlyReviewed = /* @__PURE__ */ new Set(), this._reviewsCompleted = 0, this._correctGrades = 0;
|
|
1348
|
+
for (let e of this.reviewHistory) {
|
|
1349
|
+
if (this.recentlyReviewed.add(e.cardId), this.recentlyReviewed.size > 5) {
|
|
1350
|
+
let e = this.recentlyReviewed.values().next().value;
|
|
1351
|
+
typeof e == "string" && this.recentlyReviewed.delete(e);
|
|
1352
|
+
}
|
|
1353
|
+
this._reviewsCompleted++, (e.rating === "Good" || e.rating === "Easy") && this._correctGrades++;
|
|
1354
|
+
}
|
|
1333
1355
|
}
|
|
1334
1356
|
};
|
|
1335
1357
|
//#endregion
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vestcards/shared",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -33,10 +33,12 @@
|
|
|
33
33
|
"types": "./dist/utils.d.ts",
|
|
34
34
|
"import": "./dist/utils.js",
|
|
35
35
|
"require": "./dist/utils.cjs"
|
|
36
|
-
}
|
|
36
|
+
},
|
|
37
|
+
"./styles/blog.css": "./src/styles/blog.css"
|
|
37
38
|
},
|
|
38
39
|
"files": [
|
|
39
|
-
"dist"
|
|
40
|
+
"dist",
|
|
41
|
+
"src/styles"
|
|
40
42
|
],
|
|
41
43
|
"scripts": {
|
|
42
44
|
"build": "vite build",
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
.base-formatting {
|
|
2
|
+
a {
|
|
3
|
+
color: var(--blue-11);
|
|
4
|
+
font-weight: 600;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
a:hover {
|
|
8
|
+
text-decoration: underline;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
blockquote {
|
|
12
|
+
font-style: italic;
|
|
13
|
+
background-color: var(--sand-3);
|
|
14
|
+
border-left: 4px solid var(--sand-7);
|
|
15
|
+
padding: 1rem 1.5rem;
|
|
16
|
+
margin: 1.5rem 0;
|
|
17
|
+
border-radius: 4px;
|
|
18
|
+
color: var(--sand-11);
|
|
19
|
+
position: relative;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
blockquote::before {
|
|
23
|
+
content: "“";
|
|
24
|
+
font-size: 4rem;
|
|
25
|
+
line-height: 1;
|
|
26
|
+
position: absolute;
|
|
27
|
+
top: -10px;
|
|
28
|
+
left: 10px;
|
|
29
|
+
color: var(--sand-7);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
blockquote p:last-child {
|
|
33
|
+
margin-bottom: 0;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Table styles */
|
|
37
|
+
table {
|
|
38
|
+
display: block;
|
|
39
|
+
overflow-x: auto;
|
|
40
|
+
white-space: nowrap;
|
|
41
|
+
max-width: 100%;
|
|
42
|
+
width: fit-content;
|
|
43
|
+
min-width: 300px;
|
|
44
|
+
border-collapse: separate;
|
|
45
|
+
border-spacing: 0;
|
|
46
|
+
font-size: 0.95rem;
|
|
47
|
+
line-height: 1.5;
|
|
48
|
+
border: 1px solid var(--sand-6);
|
|
49
|
+
border-radius: 10px;
|
|
50
|
+
margin-bottom: 1.5rem;
|
|
51
|
+
background-color: var(--sand-1);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
th,
|
|
55
|
+
td {
|
|
56
|
+
border-bottom: 1px solid var(--sand-6);
|
|
57
|
+
padding: 0.75rem 1rem;
|
|
58
|
+
text-align: left;
|
|
59
|
+
background-color: var(--sand-2);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
th {
|
|
63
|
+
background-color: var(--sand-3);
|
|
64
|
+
font-weight: 600;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
caption {
|
|
68
|
+
caption-side: bottom;
|
|
69
|
+
text-align: center;
|
|
70
|
+
font-size: 0.85rem;
|
|
71
|
+
color: var(--sand-11);
|
|
72
|
+
margin-top: 0.5rem;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* Nested list indentation */
|
|
76
|
+
ul ul,
|
|
77
|
+
ol ul,
|
|
78
|
+
ul ol,
|
|
79
|
+
ol ol {
|
|
80
|
+
margin-left: 2rem;
|
|
81
|
+
list-style-position: outside;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Bullet styles for deeper levels */
|
|
85
|
+
ul ul {
|
|
86
|
+
list-style-type: circle;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
ul ul ul {
|
|
90
|
+
list-style-type: square;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.blog-post-content {
|
|
95
|
+
font-size: 17px;
|
|
96
|
+
line-height: 1.65;
|
|
97
|
+
color: var(--sand-12);
|
|
98
|
+
|
|
99
|
+
p {
|
|
100
|
+
margin-bottom: 1rem;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
strong {
|
|
104
|
+
font-weight: 600;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
h1,
|
|
108
|
+
h2,
|
|
109
|
+
h3,
|
|
110
|
+
h4,
|
|
111
|
+
h5,
|
|
112
|
+
h6 {
|
|
113
|
+
color: var(--sand-12);
|
|
114
|
+
font-weight: 700;
|
|
115
|
+
letter-spacing: 0;
|
|
116
|
+
line-height: 1.18;
|
|
117
|
+
margin-bottom: 0.85rem;
|
|
118
|
+
scroll-margin-top: 6rem;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
h1 + p,
|
|
122
|
+
h2 + p,
|
|
123
|
+
h3 + p {
|
|
124
|
+
margin-top: 0;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
h1 {
|
|
128
|
+
font-size: 2.4rem;
|
|
129
|
+
line-height: 1.1;
|
|
130
|
+
margin-top: 3.2rem;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
h2 {
|
|
134
|
+
font-size: 1.85rem;
|
|
135
|
+
line-height: 1.16;
|
|
136
|
+
margin-top: 2.8rem;
|
|
137
|
+
padding-bottom: 0.45rem;
|
|
138
|
+
border-bottom: 1px solid var(--sand-6);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
h3 {
|
|
142
|
+
font-size: 1.45rem;
|
|
143
|
+
margin-top: 2.3rem;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
h4 {
|
|
147
|
+
font-size: 1.2rem;
|
|
148
|
+
margin-top: 2rem;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
h5 {
|
|
152
|
+
font-size: 1.05rem;
|
|
153
|
+
margin-top: 1.8rem;
|
|
154
|
+
color: var(--sand-11);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
h6 {
|
|
158
|
+
font-size: 0.95rem;
|
|
159
|
+
margin-top: 1.6rem;
|
|
160
|
+
color: var(--sand-11);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
a {
|
|
164
|
+
color: var(--blue-11);
|
|
165
|
+
text-decoration: none;
|
|
166
|
+
font-weight: 700;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
a:hover {
|
|
170
|
+
color: var(--blue-12);
|
|
171
|
+
text-decoration: underline;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
ul {
|
|
175
|
+
list-style: disc;
|
|
176
|
+
margin-left: 2rem;
|
|
177
|
+
margin-bottom: 1rem;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
ol {
|
|
181
|
+
list-style: decimal;
|
|
182
|
+
margin-left: 2rem;
|
|
183
|
+
margin-bottom: 1rem;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
li {
|
|
187
|
+
font-weight: 400;
|
|
188
|
+
margin-bottom: 0.5rem;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
hr {
|
|
192
|
+
border: 0;
|
|
193
|
+
height: 0.1px;
|
|
194
|
+
background: #777;
|
|
195
|
+
margin-top: 1rem;
|
|
196
|
+
margin-bottom: 2rem;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
figure {
|
|
200
|
+
width: 100%;
|
|
201
|
+
flex: auto;
|
|
202
|
+
margin-bottom: 1rem;
|
|
203
|
+
margin-top: 0.2rem;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
figure,
|
|
207
|
+
img:not(figure > img) {
|
|
208
|
+
margin-top: 1rem;
|
|
209
|
+
margin-bottom: 1rem;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
img {
|
|
213
|
+
height: auto;
|
|
214
|
+
max-height: 450px;
|
|
215
|
+
object-fit: cover;
|
|
216
|
+
margin: 0 auto;
|
|
217
|
+
border-radius: 10px;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
figcaption {
|
|
221
|
+
text-align: center;
|
|
222
|
+
font-size: 0.8rem;
|
|
223
|
+
margin-top: 0.8rem;
|
|
224
|
+
color: var(--sand-11);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
@media (max-width: 640px) {
|
|
229
|
+
.blog-post-content {
|
|
230
|
+
h1 {
|
|
231
|
+
font-size: 2rem;
|
|
232
|
+
margin-top: 2.6rem;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
h2 {
|
|
236
|
+
font-size: 1.65rem;
|
|
237
|
+
margin-top: 2.3rem;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
h3 {
|
|
241
|
+
font-size: 1.3rem;
|
|
242
|
+
margin-top: 1.9rem;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|