@cuemath/leap 3.3.15-as1 → 3.3.15-beta-0.2
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/features/auth/comps/animated-avatar-message/animated-avatar-message-styled.js +4 -4
- package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message-styled.js.map +1 -1
- package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message.js +5 -5
- package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +42 -40
- package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +70 -64
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/hooks/use-catalog-helpers.js +36 -25
- package/dist/features/milestone/create/comps/add-custom-chapter/hooks/use-catalog-helpers.js.map +1 -1
- package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-container.js +48 -28
- package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-container.js.map +1 -1
- package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +79 -76
- package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
- package/dist/features/milestone/create/comps/chapters-selection-step/utils.js +96 -93
- package/dist/features/milestone/create/comps/chapters-selection-step/utils.js.map +1 -1
- package/dist/features/milestone/create/comps/class-details-step/class-details-step.js +154 -138
- package/dist/features/milestone/create/comps/class-details-step/class-details-step.js.map +1 -1
- package/dist/features/milestone/create/comps/class-details-step/class-details-utils.js +22 -12
- package/dist/features/milestone/create/comps/class-details-step/class-details-utils.js.map +1 -1
- package/dist/features/milestone/create/comps/test-type-step/test-type-step.js +64 -59
- package/dist/features/milestone/create/comps/test-type-step/test-type-step.js.map +1 -1
- package/dist/features/milestone/create/milestone-create-container.js +17 -15
- package/dist/features/milestone/create/milestone-create-container.js.map +1 -1
- package/dist/features/milestone/create/milestone-create-helpers.js +156 -139
- package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
- package/dist/features/milestone/create/milestone-create-styled.js +1 -1
- package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
- package/dist/features/milestone/create/milestone-create.js +19 -17
- package/dist/features/milestone/create/milestone-create.js.map +1 -1
- package/dist/features/ui/constants/z-index.js +2 -5
- package/dist/features/ui/constants/z-index.js.map +1 -1
- package/dist/features/utils/utils.js +18 -18
- package/dist/features/utils/utils.js.map +1 -1
- package/dist/index.d.ts +1 -57
- package/dist/index.js +522 -532
- package/dist/index.js.map +1 -1
- package/dist/node_modules/decode-uri-component/index.js.map +1 -0
- package/dist/node_modules/query-string/base.js +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
- package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
- package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
- package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
- package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
- package/package.json +1 -1
- package/dist/features/hooks/use-visibility-change.js +0 -12
- package/dist/features/hooks/use-visibility-change.js.map +0 -1
- package/dist/features/ui/timers/class-time/animate.js +0 -100
- package/dist/features/ui/timers/class-time/animate.js.map +0 -1
- package/dist/features/ui/timers/class-time/animations/open-close.js +0 -93
- package/dist/features/ui/timers/class-time/animations/open-close.js.map +0 -1
- package/dist/features/ui/timers/class-time/animations/ripple.js +0 -44
- package/dist/features/ui/timers/class-time/animations/ripple.js.map +0 -1
- package/dist/features/ui/timers/class-time/class-time.js +0 -140
- package/dist/features/ui/timers/class-time/class-time.js.map +0 -1
- package/dist/features/ui/timers/class-time/constants.js +0 -31
- package/dist/features/ui/timers/class-time/constants.js.map +0 -1
- package/dist/features/ui/timers/clock/clock.js +0 -25
- package/dist/features/ui/timers/clock/clock.js.map +0 -1
- package/dist/features/ui/timers/timer/timer.js +0 -63
- package/dist/features/ui/timers/timer/timer.js.map +0 -1
- package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +0 -1
- package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
- package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
- package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
- package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
- /package/dist/node_modules/{query-string/node_modules/decode-uri-component → decode-uri-component}/index.js +0 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/decode-uri-component/index.js"],"sourcesContent":["const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n"],"names":["token","singleMatcher","multiMatcher","decodeComponents","components","split","left","right","decode","input","tokens","i","customDecodeURIComponent","replaceMap","match","result","entries","key","decodeUriComponent","encodedURI"],"mappings":"AAAA,MAAMA,IAAQ,gBACRC,IAAgB,IAAI,OAAO,MAAMD,IAAQ,cAAc,IAAI,GAC3DE,IAAe,IAAI,OAAO,MAAMF,IAAQ,MAAM,IAAI;AAExD,SAASG,EAAiBC,GAAYC,GAAO;AAC5C,MAAI;AAEH,WAAO,CAAC,mBAAmBD,EAAW,KAAK,EAAE,CAAC,CAAC;AAAA,EACjD,QAAS;AAAA,EAEP;AAED,MAAIA,EAAW,WAAW;AACzB,WAAOA;AAGR,EAAAC,IAAQA,KAAS;AAGjB,QAAMC,IAAOF,EAAW,MAAM,GAAGC,CAAK,GAChCE,IAAQH,EAAW,MAAMC,CAAK;AAEpC,SAAO,MAAM,UAAU,OAAO,KAAK,CAAA,GAAIF,EAAiBG,CAAI,GAAGH,EAAiBI,CAAK,CAAC;AACvF;AAEA,SAASC,EAAOC,GAAO;AACtB,MAAI;AACH,WAAO,mBAAmBA,CAAK;AAAA,EACjC,QAAS;AACP,QAAIC,IAASD,EAAM,MAAMR,CAAa,KAAK,CAAA;AAE3C,aAASU,IAAI,GAAGA,IAAID,EAAO,QAAQC;AAClC,MAAAF,IAAQN,EAAiBO,GAAQC,CAAC,EAAE,KAAK,EAAE,GAE3CD,IAASD,EAAM,MAAMR,CAAa,KAAK,CAAA;AAGxC,WAAOQ;AAAA,EACP;AACF;AAEA,SAASG,EAAyBH,GAAO;AAExC,QAAMI,IAAa;AAAA,IAClB,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AAEC,MAAIC,IAAQZ,EAAa,KAAKO,CAAK;AACnC,SAAOK,KAAO;AACb,QAAI;AAEH,MAAAD,EAAWC,EAAM,CAAC,CAAC,IAAI,mBAAmBA,EAAM,CAAC,CAAC;AAAA,IACrD,QAAU;AACP,YAAMC,IAASP,EAAOM,EAAM,CAAC,CAAC;AAE9B,MAAIC,MAAWD,EAAM,CAAC,MACrBD,EAAWC,EAAM,CAAC,CAAC,IAAIC;AAAA,IAExB;AAED,IAAAD,IAAQZ,EAAa,KAAKO,CAAK;AAAA,EAC/B;AAGD,EAAAI,EAAW,KAAK,IAAI;AAEpB,QAAMG,IAAU,OAAO,KAAKH,CAAU;AAEtC,aAAWI,KAAOD;AAEjB,IAAAP,IAAQA,EAAM,QAAQ,IAAI,OAAOQ,GAAK,GAAG,GAAGJ,EAAWI,CAAG,CAAC;AAG5D,SAAOR;AACR;AAEe,SAASS,EAAmBC,GAAY;AACtD,MAAI,OAAOA,KAAe;AACzB,UAAM,IAAI,UAAU,wDAAwD,OAAOA,IAAa,GAAG;AAGpG,MAAI;AAEH,WAAO,mBAAmBA,CAAU;AAAA,EACtC,QAAS;AAEP,WAAOP,EAAyBO,CAAU;AAAA,EAC1C;AACF;","x_google_ignoreList":[0]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import b from "
|
|
1
|
+
import b from "../decode-uri-component/index.js";
|
|
2
2
|
import l from "../split-on-first/index.js";
|
|
3
3
|
import { includeKeys as N } from "../filter-obj/index.js";
|
|
4
4
|
const j = (r) => r == null, A = (r) => encodeURIComponent(r).replace(/[!'()*]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}`), u = Symbol("encodeFragmentIdentifier");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sources":["../../../../../node_modules/uuid/dist/esm-browser/native.js"],"sourcesContent":["const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};"],"names":["randomUUID","native"],"mappings":"AAAA,MAAMA,IAAa,OAAO,SAAW,OAAe,OAAO,cAAc,OAAO,WAAW,KAAK,MAAM,GACvFC,IAAA;AAAA,EACb,YAAAD;AACF;","x_google_ignoreList":[0]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
let t;
|
|
2
|
+
const e = new Uint8Array(16);
|
|
2
3
|
function o() {
|
|
3
|
-
if (!t && (t = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)
|
|
4
|
+
if (!t && (t = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !t))
|
|
4
5
|
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
5
6
|
return t(e);
|
|
6
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rng.js","sources":["../../../../../node_modules/uuid/dist/esm-browser/rng.js"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\
|
|
1
|
+
{"version":3,"file":"rng.js","sources":["../../../../../node_modules/uuid/dist/esm-browser/rng.js"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}"],"names":["getRandomValues","rnds8","rng"],"mappings":"AAGA,IAAIA;AACJ,MAAMC,IAAQ,IAAI,WAAW,EAAE;AAChB,SAASC,IAAM;AAE5B,MAAI,CAACF,MAEHA,IAAkB,OAAO,SAAW,OAAe,OAAO,mBAAmB,OAAO,gBAAgB,KAAK,MAAM,GAE3G,CAACA;AACH,UAAM,IAAI,MAAM,0GAA0G;AAI9H,SAAOA,EAAgBC,CAAK;AAC9B;","x_google_ignoreList":[0]}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var i = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, o = (t[e[i + 0]] + t[e[i + 1]] + t[e[i + 2]] + t[e[i + 3]] + "-" + t[e[i + 4]] + t[e[i + 5]] + "-" + t[e[i + 6]] + t[e[i + 7]] + "-" + t[e[i + 8]] + t[e[i + 9]] + "-" + t[e[i + 10]] + t[e[i + 11]] + t[e[i + 12]] + t[e[i + 13]] + t[e[i + 14]] + t[e[i + 15]]).toLowerCase();
|
|
7
|
-
if (!s(o))
|
|
8
|
-
throw TypeError("Stringified UUID is invalid");
|
|
9
|
-
return o;
|
|
1
|
+
const i = [];
|
|
2
|
+
for (let n = 0; n < 256; ++n)
|
|
3
|
+
i.push((n + 256).toString(16).slice(1));
|
|
4
|
+
function c(n, u = 0) {
|
|
5
|
+
return (i[n[u + 0]] + i[n[u + 1]] + i[n[u + 2]] + i[n[u + 3]] + "-" + i[n[u + 4]] + i[n[u + 5]] + "-" + i[n[u + 6]] + i[n[u + 7]] + "-" + i[n[u + 8]] + i[n[u + 9]] + "-" + i[n[u + 10]] + i[n[u + 11]] + i[n[u + 12]] + i[n[u + 13]] + i[n[u + 14]] + i[n[u + 15]]).toLowerCase();
|
|
10
6
|
}
|
|
11
7
|
export {
|
|
12
|
-
|
|
8
|
+
c as unsafeStringify
|
|
13
9
|
};
|
|
14
10
|
//# sourceMappingURL=stringify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stringify.js","sources":["../../../../../node_modules/uuid/dist/esm-browser/stringify.js"],"sourcesContent":["import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\
|
|
1
|
+
{"version":3,"file":"stringify.js","sources":["../../../../../node_modules/uuid/dist/esm-browser/stringify.js"],"sourcesContent":["import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;"],"names":["byteToHex","i","unsafeStringify","arr","offset"],"mappings":"AAMA,MAAMA,IAAY,CAAA;AAElB,SAASC,IAAI,GAAGA,IAAI,KAAK,EAAEA;AACzB,EAAAD,EAAU,MAAMC,IAAI,KAAO,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAG3C,SAASC,EAAgBC,GAAKC,IAAS,GAAG;AAG/C,UAAQJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAI,MAAMJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAI,MAAMJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAI,MAAMJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAI,MAAMJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,GAAG;AACvf;","x_google_ignoreList":[0]}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import e from "./native.js";
|
|
2
|
+
import i from "./rng.js";
|
|
3
|
+
import { unsafeStringify as d } from "./stringify.js";
|
|
4
|
+
function g(n, m, t) {
|
|
5
|
+
if (e.randomUUID && !m && !n)
|
|
6
|
+
return e.randomUUID();
|
|
4
7
|
n = n || {};
|
|
5
|
-
|
|
8
|
+
const r = n.random || (n.rng || i)();
|
|
6
9
|
if (r[6] = r[6] & 15 | 64, r[8] = r[8] & 63 | 128, m) {
|
|
7
|
-
|
|
8
|
-
for (
|
|
9
|
-
m[
|
|
10
|
+
t = t || 0;
|
|
11
|
+
for (let a = 0; a < 16; ++a)
|
|
12
|
+
m[t + a] = r[a];
|
|
10
13
|
return m;
|
|
11
14
|
}
|
|
12
|
-
return
|
|
15
|
+
return d(r);
|
|
13
16
|
}
|
|
14
17
|
export {
|
|
15
|
-
|
|
18
|
+
g as default
|
|
16
19
|
};
|
|
17
20
|
//# sourceMappingURL=v4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v4.js","sources":["../../../../../node_modules/uuid/dist/esm-browser/v4.js"],"sourcesContent":["import rng from './rng.js';\nimport
|
|
1
|
+
{"version":3,"file":"v4.js","sources":["../../../../../node_modules/uuid/dist/esm-browser/v4.js"],"sourcesContent":["import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;"],"names":["v4","options","buf","offset","native","rnds","rng","i","unsafeStringify"],"mappings":";;;AAIA,SAASA,EAAGC,GAASC,GAAKC,GAAQ;AAChC,MAAIC,EAAO,cAAc,CAACF,KAAO,CAACD;AAChC,WAAOG,EAAO;AAGhB,EAAAH,IAAUA,KAAW;AACrB,QAAMI,IAAOJ,EAAQ,WAAWA,EAAQ,OAAOK;AAK/C,MAHAD,EAAK,CAAC,IAAIA,EAAK,CAAC,IAAI,KAAO,IAC3BA,EAAK,CAAC,IAAIA,EAAK,CAAC,IAAI,KAAO,KAEvBH,GAAK;AACP,IAAAC,IAASA,KAAU;AAEnB,aAASI,IAAI,GAAGA,IAAI,IAAI,EAAEA;AACxB,MAAAL,EAAIC,IAASI,CAAC,IAAIF,EAAKE,CAAC;AAG1B,WAAOL;AAAA,EACR;AAED,SAAOM,EAAgBH,CAAI;AAC7B;","x_google_ignoreList":[0]}
|
package/package.json
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { useState as n, useCallback as l, useEffect as a } from "react";
|
|
2
|
-
const o = () => {
|
|
3
|
-
const [t, e] = n(document.visibilityState === "visible"), i = l(() => {
|
|
4
|
-
const s = document.visibilityState === "visible";
|
|
5
|
-
e(s);
|
|
6
|
-
}, [e]);
|
|
7
|
-
return a(() => (document.addEventListener("visibilitychange", i), () => document.removeEventListener("visibilitychange", i)), [i]), t;
|
|
8
|
-
}, c = o;
|
|
9
|
-
export {
|
|
10
|
-
c as default
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=use-visibility-change.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-visibility-change.js","sources":["../../../src/features/hooks/use-visibility-change.tsx"],"sourcesContent":["import { useEffect, useState, useCallback } from 'react';\n\n/**\n * Custom hook to detect visibility change of the document.\n * Returns true if the document is visible, false otherwise.\n */\nconst useVisibilityChange = () => {\n const [isVisible, setIsVisible] = useState(document.visibilityState === 'visible');\n\n const onVisibilityChange = useCallback(() => {\n const isVisibleState = document.visibilityState === 'visible';\n\n setIsVisible(isVisibleState);\n }, [setIsVisible]);\n\n useEffect(() => {\n document.addEventListener('visibilitychange', onVisibilityChange);\n\n return () => document.removeEventListener('visibilitychange', onVisibilityChange);\n }, [onVisibilityChange]);\n\n return isVisible;\n};\n\nexport default useVisibilityChange;\n"],"names":["useVisibilityChange","isVisible","setIsVisible","useState","onVisibilityChange","useCallback","isVisibleState","useEffect","useVisibilityChange$1"],"mappings":";AAMA,MAAMA,IAAsB,MAAM;AAChC,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,SAAS,oBAAoB,SAAS,GAE3EC,IAAqBC,EAAY,MAAM;AACrC,UAAAC,IAAiB,SAAS,oBAAoB;AAEpD,IAAAJ,EAAaI,CAAc;AAAA,EAAA,GAC1B,CAACJ,CAAY,CAAC;AAEjB,SAAAK,EAAU,OACC,SAAA,iBAAiB,oBAAoBH,CAAkB,GAEzD,MAAM,SAAS,oBAAoB,oBAAoBA,CAAkB,IAC/E,CAACA,CAAkB,CAAC,GAEhBH;AACT,GAEAO,IAAeR;"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { jsxs as u, Fragment as g, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { memo as N, useState as k, useRef as w, useCallback as c, useEffect as f } from "react";
|
|
3
|
-
import r from "styled-components";
|
|
4
|
-
import O from "../../../../assets/line-icons/icons/plus.js";
|
|
5
|
-
import D from "../../../hooks/use-audio-player.js";
|
|
6
|
-
import R from "../../../hooks/use-previous.js";
|
|
7
|
-
import X from "../../buttons/clickable/clickable.js";
|
|
8
|
-
import a from "../../layout/flex-view.js";
|
|
9
|
-
import m from "../../text/text.js";
|
|
10
|
-
import I from "./animations/open-close.js";
|
|
11
|
-
import { ANIMATION_TIME as i, TIME_LEFT_IDLE as F, LAST_FIVE as M, START_TIMER as y, EXTEND_IDLE as z, ALERT_AUDIO_LIST as V } from "./constants.js";
|
|
12
|
-
const W = r(a)`
|
|
13
|
-
position: absolute;
|
|
14
|
-
top: -8px;
|
|
15
|
-
right: 8px;
|
|
16
|
-
z-index: ${({ theme: o }) => o.zIndex.EXTEND_CLASS_ANIMATION_3};
|
|
17
|
-
`, v = r(m)`
|
|
18
|
-
padding-left: 4px;
|
|
19
|
-
padding-right: 8px;
|
|
20
|
-
`, j = r(a)`
|
|
21
|
-
flex-flow: nowrap;
|
|
22
|
-
z-index: ${({ theme: o }) => o.zIndex.EXTEND_CLASS_ANIMATION_2};
|
|
23
|
-
`, P = r(a)`
|
|
24
|
-
position: fixed;
|
|
25
|
-
top: 0;
|
|
26
|
-
bottom: 0;
|
|
27
|
-
left: 0;
|
|
28
|
-
right: 0;
|
|
29
|
-
background: rgba(0, 0, 0, 0.4);
|
|
30
|
-
z-index: ${({ theme: o }) => o.zIndex.EXTEND_CLASS_ANIMATION_1};
|
|
31
|
-
`, B = (o) => {
|
|
32
|
-
const {
|
|
33
|
-
animateClock: t,
|
|
34
|
-
classStartedTime: E,
|
|
35
|
-
duration: x,
|
|
36
|
-
onExtendClass: _ = () => {
|
|
37
|
-
},
|
|
38
|
-
setAnimateClock: d,
|
|
39
|
-
setStartTimer: p,
|
|
40
|
-
showExtendIcon: C = !1
|
|
41
|
-
} = o, [$, s] = k(!1), l = w(null), A = R(t), T = D(V), n = Math.floor(x - (+/* @__PURE__ */ new Date() - E) / 1e3), h = C && n <= i.LAST_FIVE, L = c(() => {
|
|
42
|
-
d(!1);
|
|
43
|
-
}, [d]), b = c(() => {
|
|
44
|
-
p(!0), T("ALERT");
|
|
45
|
-
}, [T, p]), S = c(() => {
|
|
46
|
-
s(!1);
|
|
47
|
-
}, [s]);
|
|
48
|
-
return f(() => {
|
|
49
|
-
t && !A && (l.current = setTimeout(() => {
|
|
50
|
-
s(!0);
|
|
51
|
-
}, 1e3));
|
|
52
|
-
}, [t, A]), f(() => () => {
|
|
53
|
-
l.current && clearTimeout(l.current);
|
|
54
|
-
}, []), /* @__PURE__ */ u(g, { children: [
|
|
55
|
-
n <= i.LAST_FIVE && t && /* @__PURE__ */ e(P, {}),
|
|
56
|
-
/* @__PURE__ */ e(
|
|
57
|
-
I,
|
|
58
|
-
{
|
|
59
|
-
background: n <= i.LAST_FIVE ? "ORANGE_4" : "YELLOW_3",
|
|
60
|
-
onAnimationComplete: L,
|
|
61
|
-
onOpenAnimationComplete: b,
|
|
62
|
-
visible: t,
|
|
63
|
-
idleTime: F,
|
|
64
|
-
children: /* @__PURE__ */ u(
|
|
65
|
-
j,
|
|
66
|
-
{
|
|
67
|
-
$flexDirection: "row",
|
|
68
|
-
$alignItems: "center",
|
|
69
|
-
$width: "100%",
|
|
70
|
-
$justifyContent: "space-around",
|
|
71
|
-
$borderRadiusX: 1.25,
|
|
72
|
-
$gutterX: 0.35,
|
|
73
|
-
$gapX: 0.35,
|
|
74
|
-
$flexGapX: 0.25,
|
|
75
|
-
children: [
|
|
76
|
-
/* @__PURE__ */ e(m, { $renderAs: "ac3-black", children: n <= i.LAST_FIVE ? `0${M / 60}:00` : `${y / 60}:00` }),
|
|
77
|
-
/* @__PURE__ */ e(m, { $renderAs: "ac3-black", children: "Left" })
|
|
78
|
-
]
|
|
79
|
-
}
|
|
80
|
-
)
|
|
81
|
-
}
|
|
82
|
-
),
|
|
83
|
-
h && /* @__PURE__ */ e(W, { children: /* @__PURE__ */ e(
|
|
84
|
-
I,
|
|
85
|
-
{
|
|
86
|
-
onAnimationComplete: S,
|
|
87
|
-
background: "BLACK",
|
|
88
|
-
Icon: /* @__PURE__ */ e(X, { label: "Extend Class", onClick: _, children: /* @__PURE__ */ e(a, { $background: "WHITE", $borderRadiusX: 1.25, $borderColor: "BLACK_3", children: /* @__PURE__ */ e(O, { width: 16, height: 16 }) }) }),
|
|
89
|
-
size: 24,
|
|
90
|
-
visible: $,
|
|
91
|
-
idleTime: z,
|
|
92
|
-
children: /* @__PURE__ */ e(v, { $color: "WHITE", $renderAs: "body3", children: "Extend Class" })
|
|
93
|
-
}
|
|
94
|
-
) })
|
|
95
|
-
] });
|
|
96
|
-
}, te = N(B);
|
|
97
|
-
export {
|
|
98
|
-
te as default
|
|
99
|
-
};
|
|
100
|
-
//# sourceMappingURL=animate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"animate.js","sources":["../../../../../src/features/ui/timers/class-time/animate.tsx"],"sourcesContent":["import { useState, useCallback, useEffect, useRef, memo } from 'react';\nimport styled from 'styled-components';\n\nimport PlusIcon from '../../../../assets/line-icons/icons/plus';\nimport useAudioPlayer from '../../../hooks/use-audio-player';\nimport usePrevious from '../../../hooks/use-previous';\nimport Clickable from '../../buttons/clickable/clickable';\nimport FlexView from '../../layout/flex-view';\nimport Text from '../../text/text';\nimport OpenCloseAnimation from './animations/open-close';\nimport {\n ALERT_AUDIO_LIST,\n ANIMATION_TIME,\n EXTEND_IDLE,\n LAST_FIVE,\n START_TIMER,\n TIME_LEFT_IDLE,\n} from './constants';\n\nconst IconWrapper = styled(FlexView)`\n position: absolute;\n top: -8px;\n right: 8px;\n z-index: ${({ theme }) => theme.zIndex.EXTEND_CLASS_ANIMATION_3};\n`;\n\nconst StyledText = styled(Text)`\n padding-left: 4px;\n padding-right: 8px;\n`;\n\nconst NoWrapRow = styled(FlexView)`\n flex-flow: nowrap;\n z-index: ${({ theme }) => theme.zIndex.EXTEND_CLASS_ANIMATION_2};\n`;\n\nconst OpacityWrapper = styled(FlexView)`\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: ${({ theme }) => theme.zIndex.EXTEND_CLASS_ANIMATION_1};\n`;\n\ninterface AnimateProps {\n animateClock: boolean;\n classStartedTime: number;\n duration: number;\n onExtendClass?: () => void;\n setAnimateClock: (value: boolean) => void;\n setStartTimer: (value: boolean) => void;\n showExtendIcon?: boolean;\n}\n\nconst Animate = (props: AnimateProps) => {\n const {\n animateClock,\n classStartedTime,\n duration,\n onExtendClass = () => {},\n setAnimateClock,\n setStartTimer,\n showExtendIcon = false,\n } = props;\n const [animateTip, setAnimateTip] = useState(false);\n const timer = useRef<NodeJS.Timeout | null>(null);\n\n const previousAnimateClock = usePrevious(animateClock);\n const playNotifSound = useAudioPlayer(ALERT_AUDIO_LIST);\n\n const remainingTime = Math.floor(duration - (+new Date() - classStartedTime) / 1000); // in seconds\n const showIcon = showExtendIcon && remainingTime <= ANIMATION_TIME.LAST_FIVE;\n\n const onClockAnimationComplete = useCallback(() => {\n setAnimateClock(false);\n }, [setAnimateClock]);\n\n const onOpenAnimationComplete = useCallback(() => {\n setStartTimer(true);\n playNotifSound('ALERT');\n }, [playNotifSound, setStartTimer]);\n\n const onAnimateComplete = useCallback(() => {\n setAnimateTip(false);\n }, [setAnimateTip]);\n\n useEffect(() => {\n if (animateClock && !previousAnimateClock) {\n timer.current = setTimeout(() => {\n setAnimateTip(true);\n }, 1000);\n }\n }, [animateClock, previousAnimateClock]);\n\n useEffect(() => {\n return () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n };\n }, []);\n\n return (\n <>\n {remainingTime <= ANIMATION_TIME.LAST_FIVE && animateClock && <OpacityWrapper />}\n <OpenCloseAnimation\n background={remainingTime <= ANIMATION_TIME.LAST_FIVE ? 'ORANGE_4' : 'YELLOW_3'}\n onAnimationComplete={onClockAnimationComplete}\n onOpenAnimationComplete={onOpenAnimationComplete}\n visible={animateClock}\n idleTime={TIME_LEFT_IDLE}\n >\n <NoWrapRow\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $justifyContent=\"space-around\"\n $borderRadiusX={1.25}\n $gutterX={0.35}\n $gapX={0.35}\n $flexGapX={0.25}\n >\n <Text $renderAs=\"ac3-black\">\n {remainingTime <= ANIMATION_TIME.LAST_FIVE\n ? `0${LAST_FIVE / 60}:00`\n : `${START_TIMER / 60}:00`}\n </Text>\n <Text $renderAs=\"ac3-black\">Left</Text>\n </NoWrapRow>\n </OpenCloseAnimation>\n {showIcon && (\n <IconWrapper>\n <OpenCloseAnimation\n onAnimationComplete={onAnimateComplete}\n background=\"BLACK\"\n Icon={\n <Clickable label=\"Extend Class\" onClick={onExtendClass}>\n <FlexView $background=\"WHITE\" $borderRadiusX={1.25} $borderColor=\"BLACK_3\">\n <PlusIcon width={16} height={16} />\n </FlexView>\n </Clickable>\n }\n size={24}\n visible={animateTip}\n idleTime={EXTEND_IDLE}\n >\n <StyledText $color=\"WHITE\" $renderAs=\"body3\">\n Extend Class\n </StyledText>\n </OpenCloseAnimation>\n </IconWrapper>\n )}\n </>\n );\n};\n\nexport default memo(Animate);\n"],"names":["IconWrapper","styled","FlexView","theme","StyledText","Text","NoWrapRow","OpacityWrapper","Animate","props","animateClock","classStartedTime","duration","onExtendClass","setAnimateClock","setStartTimer","showExtendIcon","animateTip","setAnimateTip","useState","timer","useRef","previousAnimateClock","usePrevious","playNotifSound","useAudioPlayer","ALERT_AUDIO_LIST","remainingTime","showIcon","ANIMATION_TIME","onClockAnimationComplete","useCallback","onOpenAnimationComplete","onAnimateComplete","useEffect","jsxs","Fragment","jsx","OpenCloseAnimation","TIME_LEFT_IDLE","LAST_FIVE","START_TIMER","Clickable","PlusIcon","EXTEND_IDLE","Animate$1","memo"],"mappings":"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"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { jsxs as I, jsx as $ } from "react/jsx-runtime";
|
|
2
|
-
import { memo as g, useState as p, useRef as y, useEffect as f } from "react";
|
|
3
|
-
import d, { keyframes as w, css as h } from "styled-components";
|
|
4
|
-
import x from "../../../layout/flex-view.js";
|
|
5
|
-
const E = w`
|
|
6
|
-
0% {
|
|
7
|
-
transform: translateX(-100%);
|
|
8
|
-
}
|
|
9
|
-
100% {
|
|
10
|
-
transform: translateX(0%);
|
|
11
|
-
}
|
|
12
|
-
`, R = w`
|
|
13
|
-
0% {
|
|
14
|
-
transform: translateX(0%);
|
|
15
|
-
}
|
|
16
|
-
100% {
|
|
17
|
-
transform: translateX(-100%);
|
|
18
|
-
}
|
|
19
|
-
`, u = 1 * 1e3, X = 1.5 * 1e3, b = d(x)`
|
|
20
|
-
position: absolute;
|
|
21
|
-
z-index: 10;
|
|
22
|
-
overflow: hidden;
|
|
23
|
-
`, z = d.div`
|
|
24
|
-
position: absolute;
|
|
25
|
-
cursor: pointer;
|
|
26
|
-
z-index: 1;
|
|
27
|
-
`, M = d(x)`
|
|
28
|
-
animation-name: ${({ $animate: t }) => t ? E : R};
|
|
29
|
-
max-width: fit-content;
|
|
30
|
-
animation-duration: ${u / 1e3}s;
|
|
31
|
-
animation-timing-function: ease-in-out;
|
|
32
|
-
animation-fill-mode: forwards;
|
|
33
|
-
overflow: hidden;
|
|
34
|
-
white-space: nowrap;
|
|
35
|
-
height: 100%;
|
|
36
|
-
${({ $isIcon: t, $size: i }) => t && h`
|
|
37
|
-
padding-left: ${i}px;
|
|
38
|
-
`};
|
|
39
|
-
${({ $isVisible: t }) => !t && h`
|
|
40
|
-
visibility: hidden;
|
|
41
|
-
`};
|
|
42
|
-
`, j = ({
|
|
43
|
-
background: t,
|
|
44
|
-
children: i,
|
|
45
|
-
Icon: n = null,
|
|
46
|
-
onAnimationComplete: s,
|
|
47
|
-
onOpenAnimationComplete: a,
|
|
48
|
-
size: T = null,
|
|
49
|
-
visible: r,
|
|
50
|
-
idleTime: l = X
|
|
51
|
-
}) => {
|
|
52
|
-
const [e, m] = p(!1), o = y(!1);
|
|
53
|
-
return f(() => {
|
|
54
|
-
r && (o.current = !1, m(!0));
|
|
55
|
-
}, [r]), f(() => {
|
|
56
|
-
if (e) {
|
|
57
|
-
const c = setTimeout(() => {
|
|
58
|
-
o.current = !0, m(!1), a == null || a();
|
|
59
|
-
}, u + l);
|
|
60
|
-
return () => {
|
|
61
|
-
clearTimeout(c);
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}, [e, a, l]), f(() => {
|
|
65
|
-
if (r && !e && o.current) {
|
|
66
|
-
const c = setTimeout(() => {
|
|
67
|
-
s == null || s();
|
|
68
|
-
}, u);
|
|
69
|
-
return () => {
|
|
70
|
-
clearTimeout(c);
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
}, [r, e, s]), /* @__PURE__ */ I(b, { $flexDirection: "row", $alignItems: "center", $borderRadius: 16, children: [
|
|
74
|
-
n && /* @__PURE__ */ $(z, { children: n }),
|
|
75
|
-
/* @__PURE__ */ $(
|
|
76
|
-
M,
|
|
77
|
-
{
|
|
78
|
-
$alignItems: "center",
|
|
79
|
-
$animate: e,
|
|
80
|
-
$background: t,
|
|
81
|
-
$borderRadius: 16,
|
|
82
|
-
$isIcon: !!n,
|
|
83
|
-
$isVisible: r,
|
|
84
|
-
$size: T,
|
|
85
|
-
children: i
|
|
86
|
-
}
|
|
87
|
-
)
|
|
88
|
-
] });
|
|
89
|
-
}, S = g(j);
|
|
90
|
-
export {
|
|
91
|
-
S as default
|
|
92
|
-
};
|
|
93
|
-
//# sourceMappingURL=open-close.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"open-close.js","sources":["../../../../../../src/features/ui/timers/class-time/animations/open-close.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, memo } from 'react';\nimport styled, { css, keyframes } from 'styled-components';\n\nimport FlexView from '../../../layout/flex-view';\n\nconst FillAnimation = keyframes`\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(0%);\n }\n`;\n\nconst EmptyAnimation = keyframes`\n 0% {\n transform: translateX(0%);\n }\n 100% {\n transform: translateX(-100%);\n }\n`;\n\nconst ANIMATION_TIME = 1 * 1000; // 1 seconds\nconst IDLE_TIME = 1.5 * 1000;\n\nconst StyledRow = styled(FlexView)`\n position: absolute;\n z-index: 10;\n overflow: hidden;\n`;\n\nconst IconWrapper = styled.div`\n position: absolute;\n cursor: pointer;\n z-index: 1;\n`;\n\nconst Wrapper = styled(FlexView)<{\n $animate: boolean;\n $isIcon: boolean;\n $isVisible: boolean;\n $size: number | null;\n}>`\n animation-name: ${({ $animate }) => ($animate ? FillAnimation : EmptyAnimation)};\n max-width: fit-content;\n animation-duration: ${ANIMATION_TIME / 1000}s;\n animation-timing-function: ease-in-out;\n animation-fill-mode: forwards;\n overflow: hidden;\n white-space: nowrap;\n height: 100%;\n ${({ $isIcon, $size }) =>\n $isIcon &&\n css`\n padding-left: ${$size}px;\n `};\n ${({ $isVisible }) =>\n !$isVisible &&\n css`\n visibility: hidden;\n `};\n`;\n\ninterface OpenCloseAnimationProps {\n background: 'ORANGE_4' | 'YELLOW_3' | 'BLACK';\n children: React.ReactNode;\n visible: boolean;\n idleTime?: number;\n Icon?: React.ReactNode;\n onAnimationComplete?: () => void;\n onOpenAnimationComplete?: () => void;\n size?: number | null;\n}\n\nconst OpenCloseAnimation: React.FC<OpenCloseAnimationProps> = ({\n background,\n children,\n Icon = null,\n onAnimationComplete,\n onOpenAnimationComplete,\n size = null,\n visible,\n idleTime = IDLE_TIME,\n}) => {\n const [animate, setAnimate] = useState(false);\n const prevAnimate = useRef(false);\n\n useEffect(() => {\n if (visible) {\n prevAnimate.current = false;\n setAnimate(true);\n }\n }, [visible]);\n\n useEffect(() => {\n if (animate) {\n const animateTimer = setTimeout(() => {\n prevAnimate.current = true;\n setAnimate(false);\n onOpenAnimationComplete?.();\n }, ANIMATION_TIME + idleTime);\n\n return () => {\n clearTimeout(animateTimer);\n };\n }\n }, [animate, onOpenAnimationComplete, idleTime]);\n\n useEffect(() => {\n if (visible && !animate && prevAnimate.current) {\n const hideTimer = setTimeout(() => {\n onAnimationComplete?.();\n }, ANIMATION_TIME);\n\n return () => {\n clearTimeout(hideTimer);\n };\n }\n }, [visible, animate, onAnimationComplete]);\n\n return (\n <StyledRow $flexDirection=\"row\" $alignItems=\"center\" $borderRadius={16}>\n {Icon && <IconWrapper>{Icon}</IconWrapper>}\n <Wrapper\n $alignItems=\"center\"\n $animate={animate}\n $background={background}\n $borderRadius={16}\n $isIcon={!!Icon}\n $isVisible={visible}\n $size={size}\n >\n {children}\n </Wrapper>\n </StyledRow>\n );\n};\n\nexport default memo(OpenCloseAnimation);\n"],"names":["FillAnimation","keyframes","EmptyAnimation","ANIMATION_TIME","IDLE_TIME","StyledRow","styled","FlexView","IconWrapper","Wrapper","$animate","$isIcon","$size","css","$isVisible","OpenCloseAnimation","background","children","Icon","onAnimationComplete","onOpenAnimationComplete","size","visible","idleTime","animate","setAnimate","useState","prevAnimate","useRef","useEffect","animateTimer","hideTimer","jsx","OpenCloseAnimation$1","memo"],"mappings":";;;;AAKA,MAAMA,IAAgBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAShBC,IAAiBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASjBE,IAAiB,IAAI,KACrBC,IAAY,MAAM,KAElBC,IAAYC,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA,GAM3BC,IAAcF,EAAO;AAAA;AAAA;AAAA;AAAA,GAMrBG,IAAUH,EAAOC,CAAQ;AAAA,oBAMX,CAAC,EAAE,UAAAG,EAAA,MAAgBA,IAAWV,IAAgBE,CAAe;AAAA;AAAA,wBAEzDC,IAAiB,GAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMzC,CAAC,EAAE,SAAAQ,GAAS,OAAAC,EAAA,MACZD,KACAE;AAAA,sBACkBD,CAAK;AAAA,KACtB;AAAA,IACD,CAAC,EAAE,YAAAE,EAAW,MACd,CAACA,KACDD;AAAA;AAAA,KAEC;AAAA,GAcCE,IAAwD,CAAC;AAAA,EAC7D,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,qBAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,SAAAC;AAAA,EACA,UAAAC,IAAWnB;AACb,MAAM;AACJ,QAAM,CAACoB,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtCC,IAAcC,EAAO,EAAK;AAEhC,SAAAC,EAAU,MAAM;AACd,IAAIP,MACFK,EAAY,UAAU,IACtBF,EAAW,EAAI;AAAA,EACjB,GACC,CAACH,CAAO,CAAC,GAEZO,EAAU,MAAM;AACd,QAAIL,GAAS;AACL,YAAAM,IAAe,WAAW,MAAM;AACpC,QAAAH,EAAY,UAAU,IACtBF,EAAW,EAAK,GACUL,KAAA,QAAAA;AAAA,MAAA,GACzBjB,IAAiBoB,CAAQ;AAE5B,aAAO,MAAM;AACX,qBAAaO,CAAY;AAAA,MAAA;AAAA,IAE7B;AAAA,EACC,GAAA,CAACN,GAASJ,GAAyBG,CAAQ,CAAC,GAE/CM,EAAU,MAAM;AACd,QAAIP,KAAW,CAACE,KAAWG,EAAY,SAAS;AACxC,YAAAI,IAAY,WAAW,MAAM;AACX,QAAAZ,KAAA,QAAAA;AAAA,SACrBhB,CAAc;AAEjB,aAAO,MAAM;AACX,qBAAa4B,CAAS;AAAA,MAAA;AAAA,IAE1B;AAAA,EACC,GAAA,CAACT,GAASE,GAASL,CAAmB,CAAC,qBAGvCd,GAAU,EAAA,gBAAe,OAAM,aAAY,UAAS,eAAe,IACjE,UAAA;AAAA,IAAQa,KAAA,gBAAAc,EAACxB,KAAa,UAAKU,EAAA,CAAA;AAAA,IAC5B,gBAAAc;AAAA,MAACvB;AAAA,MAAA;AAAA,QACC,aAAY;AAAA,QACZ,UAAUe;AAAA,QACV,aAAaR;AAAA,QACb,eAAe;AAAA,QACf,SAAS,CAAC,CAACE;AAAA,QACX,YAAYI;AAAA,QACZ,OAAOD;AAAA,QAEN,UAAAJ;AAAA,MAAA;AAAA,IACH;AAAA,EACF,EAAA,CAAA;AAEJ,GAEegB,IAAAC,EAAKnB,CAAkB;"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import { memo as a } from "react";
|
|
3
|
-
import p, { css as $, keyframes as m } from "styled-components";
|
|
4
|
-
import x from "../../../layout/flex-view.js";
|
|
5
|
-
import { getTheme as d } from "../../../theme/get-theme.js";
|
|
6
|
-
const f = d(), { colors: l } = f, u = (e) => {
|
|
7
|
-
const t = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);
|
|
8
|
-
return t && t[1] && t[2] && t[3] ? [parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16)] : null;
|
|
9
|
-
}, s = (e, t) => {
|
|
10
|
-
const n = u(e);
|
|
11
|
-
return n ? `rgba(${n.join(", ")}, ${t})` : null;
|
|
12
|
-
}, c = (e) => m`
|
|
13
|
-
0% {
|
|
14
|
-
box-shadow:
|
|
15
|
-
0 2px 5px ${e},
|
|
16
|
-
0 0 0 0 ${e},
|
|
17
|
-
0 0 0 2px ${s(e, 0.5)},
|
|
18
|
-
0 0 0 5px ${s(e, 0.5)};
|
|
19
|
-
}
|
|
20
|
-
100% {
|
|
21
|
-
box-shadow:
|
|
22
|
-
0 2px 5px ${s(e, 0.5)},
|
|
23
|
-
0 0 0 2px ${s(e, 0.5)},
|
|
24
|
-
0 0 0 5px ${s(e, 0.5)},
|
|
25
|
-
0 0 0 10px ${s(e, 0)};
|
|
26
|
-
}
|
|
27
|
-
`, b = p.div`
|
|
28
|
-
${({ $visible: e, $borderRadius: t, $color: n }) => e && $`
|
|
29
|
-
animation: ${c(n)} 1s linear infinite;
|
|
30
|
-
background: transparent;
|
|
31
|
-
border-radius: ${t}px;
|
|
32
|
-
z-index: 1;
|
|
33
|
-
`};
|
|
34
|
-
`, g = ({
|
|
35
|
-
children: e,
|
|
36
|
-
visible: t = !1,
|
|
37
|
-
color: n = "YELLOW_1",
|
|
38
|
-
borderRadius: i = 24,
|
|
39
|
-
...o
|
|
40
|
-
}) => /* @__PURE__ */ r(x, { $position: "relative", $alignItems: "center", $justifyContent: "center", children: /* @__PURE__ */ r(b, { $visible: t, $color: l[n], $borderRadius: i, ...o, children: e }) }), w = a(g);
|
|
41
|
-
export {
|
|
42
|
-
w as default
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=ripple.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ripple.js","sources":["../../../../../../src/features/ui/timers/class-time/animations/ripple.tsx"],"sourcesContent":["import type { TColorNames } from '../../../types';\n\nimport { memo, type ReactNode } from 'react';\nimport styled, { keyframes, css } from 'styled-components';\n\nimport FlexView from '../../../layout/flex-view';\nimport { getTheme } from '../../../theme/get-theme';\n\nconst theme = getTheme();\nconst { colors: COLORS } = theme;\n\nconst toRGB = (hex: string): number[] | null => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n return result && result[1] && result[2] && result[3]\n ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]\n : null;\n};\n\nconst toRGBA = (hex: string, alpha: number): string | null => {\n const rgb = toRGB(hex);\n\n return rgb ? `rgba(${rgb.join(', ')}, ${alpha})` : null;\n};\n\nconst pulse = (color: string) => keyframes`\n 0% {\n box-shadow: \n 0 2px 5px ${color},\n 0 0 0 0 ${color},\n 0 0 0 2px ${toRGBA(color, 0.5)},\n 0 0 0 5px ${toRGBA(color, 0.5)};\n }\n 100% {\n box-shadow:\n 0 2px 5px ${toRGBA(color, 0.5)},\n 0 0 0 2px ${toRGBA(color, 0.5)},\n 0 0 0 5px ${toRGBA(color, 0.5)},\n 0 0 0 10px ${toRGBA(color, 0)};\n }\n`;\n\ninterface PulseProps {\n $visible: boolean;\n $borderRadius: number;\n $color: string;\n}\n\nconst Pulse = styled.div<PulseProps>`\n ${({ $visible, $borderRadius, $color }) =>\n $visible &&\n css`\n animation: ${pulse($color)} 1s linear infinite;\n background: transparent;\n border-radius: ${$borderRadius}px;\n z-index: 1;\n `};\n`;\n\ninterface PulsatingProps {\n children: ReactNode;\n visible?: boolean;\n color?: TColorNames;\n borderRadius?: number;\n}\n\nconst Pulsating = ({\n children,\n visible = false,\n color = 'YELLOW_1',\n borderRadius = 24,\n ...other\n}: PulsatingProps) => (\n <FlexView $position=\"relative\" $alignItems=\"center\" $justifyContent=\"center\">\n <Pulse $visible={visible} $color={COLORS[color]} $borderRadius={borderRadius} {...other}>\n {children}\n </Pulse>\n </FlexView>\n);\n\nexport default memo(Pulsating);\n"],"names":["theme","getTheme","COLORS","toRGB","hex","result","toRGBA","alpha","rgb","pulse","color","keyframes","Pulse","styled","$visible","$borderRadius","$color","css","Pulsating","children","visible","borderRadius","other","jsx","FlexView","Ripple","memo"],"mappings":";;;;;AAQA,MAAMA,IAAQC,EAAS,GACjB,EAAE,QAAQC,EAAW,IAAAF,GAErBG,IAAQ,CAACC,MAAiC;AACxC,QAAAC,IAAS,4CAA4C,KAAKD,CAAG;AAEnE,SAAOC,KAAUA,EAAO,CAAC,KAAKA,EAAO,CAAC,KAAKA,EAAO,CAAC,IAC/C,CAAC,SAASA,EAAO,CAAC,GAAG,EAAE,GAAG,SAASA,EAAO,CAAC,GAAG,EAAE,GAAG,SAASA,EAAO,CAAC,GAAG,EAAE,CAAC,IAC1E;AACN,GAEMC,IAAS,CAACF,GAAaG,MAAiC;AACtD,QAAAC,IAAML,EAAMC,CAAG;AAEd,SAAAI,IAAM,QAAQA,EAAI,KAAK,IAAI,CAAC,KAAKD,CAAK,MAAM;AACrD,GAEME,IAAQ,CAACC,MAAkBC;AAAA;AAAA;AAAA,kBAGfD,CAAK;AAAA,gBACPA,CAAK;AAAA,kBACHJ,EAAOI,GAAO,GAAG,CAAC;AAAA,kBAClBJ,EAAOI,GAAO,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA,kBAIlBJ,EAAOI,GAAO,GAAG,CAAC;AAAA,kBAClBJ,EAAOI,GAAO,GAAG,CAAC;AAAA,kBAClBJ,EAAOI,GAAO,GAAG,CAAC;AAAA,mBACjBJ,EAAOI,GAAO,CAAC,CAAC;AAAA;AAAA,GAU7BE,IAAQC,EAAO;AAAA,IACjB,CAAC,EAAE,UAAAC,GAAU,eAAAC,GAAe,QAAAC,QAC5BF,KACAG;AAAA,mBACeR,EAAMO,CAAM,CAAC;AAAA;AAAA,uBAETD,CAAa;AAAA;AAAA,KAE/B;AAAA,GAUCG,IAAY,CAAC;AAAA,EACjB,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAV,IAAQ;AAAA,EACR,cAAAW,IAAe;AAAA,EACf,GAAGC;AACL,MACE,gBAAAC,EAACC,KAAS,WAAU,YAAW,aAAY,UAAS,iBAAgB,UAClE,UAAC,gBAAAD,EAAAX,GAAA,EAAM,UAAUQ,GAAS,QAAQlB,EAAOQ,CAAK,GAAG,eAAeW,GAAe,GAAGC,GAC/E,UAAAH,EACH,CAAA,EACF,CAAA,GAGaM,IAAAC,EAAKR,CAAS;"}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { jsx as l, jsxs as F } from "react/jsx-runtime";
|
|
2
|
-
import { memo as Y, useMemo as f, useState as E, useCallback as $, useEffect as S, useRef as q } from "react";
|
|
3
|
-
import z from "../../../../assets/line-icons/icons/clock2.js";
|
|
4
|
-
import B from "../../../hooks/use-visibility-change.js";
|
|
5
|
-
import I from "../../layout/flex-view.js";
|
|
6
|
-
import H from "../clock/clock.js";
|
|
7
|
-
import J from "../timer/timer.js";
|
|
8
|
-
import K from "./animate.js";
|
|
9
|
-
import P from "./animations/ripple.js";
|
|
10
|
-
import { START_TIMER as Q, getClockColor as U, ANIMATION_TIME as A, LAST_FIVE as Z, IconWrapper as ee } from "./constants.js";
|
|
11
|
-
const te = (N) => {
|
|
12
|
-
const {
|
|
13
|
-
classDuration: e,
|
|
14
|
-
classStartedTime: i,
|
|
15
|
-
extendedTime: t,
|
|
16
|
-
ongoing: v,
|
|
17
|
-
onComplete: o,
|
|
18
|
-
onExtendClass: O,
|
|
19
|
-
onExtendedTimeStart: h,
|
|
20
|
-
showExtendIcon: V = !1,
|
|
21
|
-
updateWithExtendedTime: c = !1
|
|
22
|
-
} = N, d = (+/* @__PURE__ */ new Date() - +i) / 1e3, m = B(), k = f(() => t ? Math.floor(e - d) <= t * 60 : !1, [e, t, d]), [a, X] = E(k), u = f(() => {
|
|
23
|
-
const n = (+/* @__PURE__ */ new Date() - +i) / 1e3, p = Math.floor(e - n);
|
|
24
|
-
return c || !t || p <= t * 60 ? e : e - t * 60;
|
|
25
|
-
}, [e, t, i, c]), [s, R] = E(u), w = f(() => s + +i / 1e3, [s, i]), C = f(() => !!(d >= s - Q || a || c && t), [d, s, a, c, t]), [b, D] = E(!1), T = Math.floor(s - d), [_, M] = E(C), G = U({
|
|
26
|
-
remainingTime: T,
|
|
27
|
-
updateWithExtendedTime: c,
|
|
28
|
-
extendedTime: t || 0,
|
|
29
|
-
extendedTimeStarted: a
|
|
30
|
-
}), g = $(() => {
|
|
31
|
-
X(!0), R(u), h == null || h();
|
|
32
|
-
}, [u, h]), x = $(() => {
|
|
33
|
-
D(!0);
|
|
34
|
-
}, []), y = f(
|
|
35
|
-
() => [
|
|
36
|
-
{
|
|
37
|
-
at: A.LAST_TEN,
|
|
38
|
-
callback: x,
|
|
39
|
-
id: "rem-10min"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
at: A.LAST_FIVE,
|
|
43
|
-
callback: x,
|
|
44
|
-
id: "rem-5min"
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
[x]
|
|
48
|
-
), W = $(() => {
|
|
49
|
-
if (t && !a && !c) {
|
|
50
|
-
g();
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
o == null || o();
|
|
54
|
-
}, [
|
|
55
|
-
t,
|
|
56
|
-
a,
|
|
57
|
-
o,
|
|
58
|
-
g,
|
|
59
|
-
c
|
|
60
|
-
]);
|
|
61
|
-
S(() => {
|
|
62
|
-
const n = +/* @__PURE__ */ new Date() / 1e3 >= +i / 1e3 + e && e;
|
|
63
|
-
m && n && (o == null || o());
|
|
64
|
-
}, [e, i, m, o]), S(() => {
|
|
65
|
-
e && R(u);
|
|
66
|
-
}, [e, u]), S(() => {
|
|
67
|
-
m && k && !a && g();
|
|
68
|
-
}, [m, g, a, k]), S(() => {
|
|
69
|
-
s && i && m && M(C);
|
|
70
|
-
}, [i, s, C, m]);
|
|
71
|
-
const L = q(/* @__PURE__ */ new Set()), r = f(
|
|
72
|
-
() => y.filter((n) => {
|
|
73
|
-
const p = n.id || `multi-reminder-${n.at}`;
|
|
74
|
-
return !L.current.has(p) && T >= n.at;
|
|
75
|
-
}).sort((n, p) => p.at - n.at)[0],
|
|
76
|
-
[y, T]
|
|
77
|
-
), j = $(() => {
|
|
78
|
-
if (!r) return;
|
|
79
|
-
const n = r.id || `multi-reminder-${r.at}`;
|
|
80
|
-
L.current.add(n), typeof r.callback == "function" && r.callback();
|
|
81
|
-
}, [r]);
|
|
82
|
-
return !v || d >= 0 && T <= 0 ? null : /* @__PURE__ */ l(I, { $flexDirection: "row", $alignItems: "center", children: /* @__PURE__ */ F(I, { $position: "relative", $flexDirection: "row", $alignItems: "center", children: [
|
|
83
|
-
/* @__PURE__ */ l(
|
|
84
|
-
K,
|
|
85
|
-
{
|
|
86
|
-
animateClock: b,
|
|
87
|
-
classStartedTime: +i,
|
|
88
|
-
duration: s,
|
|
89
|
-
onExtendClass: O,
|
|
90
|
-
setAnimateClock: D,
|
|
91
|
-
setStartTimer: M,
|
|
92
|
-
showExtendIcon: !a && V
|
|
93
|
-
}
|
|
94
|
-
),
|
|
95
|
-
/* @__PURE__ */ l(
|
|
96
|
-
P,
|
|
97
|
-
{
|
|
98
|
-
color: T <= Z ? "ORANGE_3" : "YELLOW_3",
|
|
99
|
-
visible: !b && _,
|
|
100
|
-
children: /* @__PURE__ */ F(
|
|
101
|
-
I,
|
|
102
|
-
{
|
|
103
|
-
$flexDirection: "row",
|
|
104
|
-
$alignItems: "center",
|
|
105
|
-
$background: "GREY_1",
|
|
106
|
-
$borderRadiusX: 1.25,
|
|
107
|
-
$gutterX: 0.5,
|
|
108
|
-
$gapX: 0.25,
|
|
109
|
-
$flexGapX: 0.25,
|
|
110
|
-
$position: "relative",
|
|
111
|
-
children: [
|
|
112
|
-
/* @__PURE__ */ l(ee, { $iconColor: G, children: /* @__PURE__ */ l(z, {}) }),
|
|
113
|
-
m && (_ ? /* @__PURE__ */ l(
|
|
114
|
-
J,
|
|
115
|
-
{
|
|
116
|
-
endTime: w,
|
|
117
|
-
onComplete: W,
|
|
118
|
-
reminder: r == null ? void 0 : r.at,
|
|
119
|
-
onReminder: j
|
|
120
|
-
},
|
|
121
|
-
w
|
|
122
|
-
) : /* @__PURE__ */ l(
|
|
123
|
-
H,
|
|
124
|
-
{
|
|
125
|
-
completionTime: e - A.LAST_TEN,
|
|
126
|
-
onComplete: x,
|
|
127
|
-
startedOn: new Date(i)
|
|
128
|
-
}
|
|
129
|
-
))
|
|
130
|
-
]
|
|
131
|
-
}
|
|
132
|
-
)
|
|
133
|
-
}
|
|
134
|
-
)
|
|
135
|
-
] }) });
|
|
136
|
-
}, ue = Y(te);
|
|
137
|
-
export {
|
|
138
|
-
ue as default
|
|
139
|
-
};
|
|
140
|
-
//# sourceMappingURL=class-time.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"class-time.js","sources":["../../../../../src/features/ui/timers/class-time/class-time.tsx"],"sourcesContent":["import type { IClassTimeProps } from './class-time-types';\n\nimport { useState, useCallback, useEffect, useMemo, useRef, memo } from 'react';\n\nimport Clock2Icon from '../../../../assets/line-icons/icons/clock2';\nimport useVisibilityChange from '../../../hooks/use-visibility-change';\nimport FlexView from '../../layout/flex-view';\nimport Clock from '../clock/clock';\nimport Timer from '../timer/timer';\nimport Animate from './animate';\nimport Ripple from './animations/ripple';\nimport { ANIMATION_TIME, getClockColor, IconWrapper, LAST_FIVE, START_TIMER } from './constants';\n\nconst ClassTime = (props: IClassTimeProps) => {\n const {\n classDuration,\n classStartedTime,\n extendedTime,\n ongoing,\n onComplete,\n onExtendClass,\n onExtendedTimeStart,\n showExtendIcon = false,\n updateWithExtendedTime = false,\n } = props;\n\n const elapsedTime = (+new Date() - +classStartedTime) / 1000;\n const isTabActive = useVisibilityChange();\n\n const hasExtendedTimeStarted = useMemo(() => {\n if (!extendedTime) return false;\n\n const orgRemainingTime = Math.floor(classDuration - elapsedTime);\n\n return orgRemainingTime <= extendedTime * 60;\n }, [classDuration, extendedTime, elapsedTime]);\n\n const [extendedTimeStarted, setExtendedTimeStarted] = useState(hasExtendedTimeStarted);\n\n const computedDuration = useMemo(() => {\n const elapsedT = (+new Date() - +classStartedTime) / 1000;\n const remainingT = Math.floor(classDuration - elapsedT);\n\n if (updateWithExtendedTime || !extendedTime || remainingT <= extendedTime * 60)\n return classDuration;\n\n return classDuration - extendedTime * 60;\n }, [classDuration, extendedTime, classStartedTime, updateWithExtendedTime]);\n\n const [duration, setDuration] = useState(computedDuration);\n const endTime = useMemo(() => duration + +classStartedTime / 1000, [duration, classStartedTime]);\n\n const canStartTimer = useMemo(() => {\n return !!(\n elapsedTime >= duration - START_TIMER ||\n extendedTimeStarted ||\n (updateWithExtendedTime && extendedTime)\n );\n }, [elapsedTime, duration, extendedTimeStarted, updateWithExtendedTime, extendedTime]);\n\n const [animateClock, setAnimateClock] = useState(false);\n const remainingTime = Math.floor(duration - elapsedTime); // in seconds\n const [startTimer, setStartTimer] = useState(canStartTimer);\n const clockColor = getClockColor({\n remainingTime,\n updateWithExtendedTime,\n extendedTime: extendedTime || 0,\n extendedTimeStarted,\n });\n\n const handleStartExtendedTime = useCallback(() => {\n setExtendedTimeStarted(true);\n setDuration(computedDuration);\n onExtendedTimeStart?.();\n }, [computedDuration, onExtendedTimeStart]);\n\n const handleStartAnimation = useCallback(() => {\n setAnimateClock(true);\n }, []);\n\n const animationReminders = useMemo(\n () => [\n {\n at: ANIMATION_TIME.LAST_TEN,\n callback: handleStartAnimation,\n id: 'rem-10min',\n },\n\n {\n at: ANIMATION_TIME.LAST_FIVE,\n callback: handleStartAnimation,\n id: 'rem-5min',\n },\n ],\n [handleStartAnimation],\n );\n\n const handleTimerComplete = useCallback(() => {\n if (extendedTime && !extendedTimeStarted && !updateWithExtendedTime) {\n handleStartExtendedTime();\n\n return;\n }\n onComplete?.();\n }, [\n extendedTime,\n extendedTimeStarted,\n onComplete,\n handleStartExtendedTime,\n updateWithExtendedTime,\n ]);\n\n useEffect(() => {\n const isClassCompleted =\n +new Date() / 1000 >= +classStartedTime / 1000 + classDuration && classDuration;\n\n if (isTabActive && isClassCompleted) {\n onComplete?.();\n }\n }, [classDuration, classStartedTime, isTabActive, onComplete]);\n\n useEffect(() => {\n if (classDuration) {\n setDuration(computedDuration);\n }\n }, [classDuration, computedDuration]);\n\n useEffect(() => {\n if (isTabActive && hasExtendedTimeStarted && !extendedTimeStarted) {\n handleStartExtendedTime();\n }\n }, [isTabActive, handleStartExtendedTime, extendedTimeStarted, hasExtendedTimeStarted]);\n\n useEffect(() => {\n if (duration && classStartedTime && isTabActive) {\n setStartTimer(canStartTimer);\n }\n }, [classStartedTime, duration, canStartTimer, isTabActive]);\n\n const firedReminders = useRef<Set<string>>(new Set());\n const nextReminder = useMemo(\n () =>\n animationReminders\n .filter((r: (typeof animationReminders)[number]) => {\n const key = r.id || `multi-reminder-${r.at}`;\n const alreadyFired = firedReminders.current.has(key);\n\n return !alreadyFired && remainingTime >= r.at;\n })\n .sort((a: { at: number }, b: { at: number }) => b.at - a.at)[0],\n [animationReminders, remainingTime],\n );\n\n const handleMultiReminder = useCallback(() => {\n if (!nextReminder) return;\n\n const key = nextReminder.id || `multi-reminder-${nextReminder.at}`;\n\n firedReminders.current.add(key);\n\n if (typeof nextReminder.callback === 'function') {\n nextReminder.callback();\n }\n }, [nextReminder]);\n\n if (!ongoing || (elapsedTime >= 0 && remainingTime <= 0)) {\n return null;\n }\n\n return (\n <FlexView $flexDirection=\"row\" $alignItems=\"center\">\n <FlexView $position=\"relative\" $flexDirection=\"row\" $alignItems=\"center\">\n <Animate\n animateClock={animateClock}\n classStartedTime={+classStartedTime}\n duration={duration}\n onExtendClass={onExtendClass}\n setAnimateClock={setAnimateClock}\n setStartTimer={setStartTimer}\n showExtendIcon={!extendedTimeStarted && showExtendIcon}\n />\n <Ripple\n color={remainingTime <= LAST_FIVE ? 'ORANGE_3' : 'YELLOW_3'}\n visible={!animateClock && startTimer}\n >\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $background=\"GREY_1\"\n $borderRadiusX={1.25}\n $gutterX={0.5}\n $gapX={0.25}\n $flexGapX={0.25}\n $position=\"relative\"\n >\n <IconWrapper $iconColor={clockColor}>\n <Clock2Icon />\n </IconWrapper>\n {isTabActive &&\n (startTimer ? (\n <Timer\n endTime={endTime}\n key={endTime}\n onComplete={handleTimerComplete}\n reminder={nextReminder?.at}\n onReminder={handleMultiReminder}\n />\n ) : (\n <Clock\n completionTime={classDuration - ANIMATION_TIME.LAST_TEN}\n onComplete={handleStartAnimation}\n startedOn={new Date(classStartedTime)}\n />\n ))}\n </FlexView>\n </Ripple>\n </FlexView>\n </FlexView>\n );\n};\n\nexport default memo(ClassTime);\n"],"names":["ClassTime","props","classDuration","classStartedTime","extendedTime","ongoing","onComplete","onExtendClass","onExtendedTimeStart","showExtendIcon","updateWithExtendedTime","elapsedTime","isTabActive","useVisibilityChange","hasExtendedTimeStarted","useMemo","extendedTimeStarted","setExtendedTimeStarted","useState","computedDuration","elapsedT","remainingT","duration","setDuration","endTime","canStartTimer","START_TIMER","animateClock","setAnimateClock","remainingTime","startTimer","setStartTimer","clockColor","getClockColor","handleStartExtendedTime","useCallback","handleStartAnimation","animationReminders","ANIMATION_TIME","handleTimerComplete","useEffect","isClassCompleted","firedReminders","useRef","nextReminder","r","key","a","b","handleMultiReminder","jsx","FlexView","jsxs","Animate","Ripple","LAST_FIVE","IconWrapper","Clock2Icon","Timer","Clock","classTime","memo"],"mappings":"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"}
|