analytica-frontend-lib 1.2.35 → 1.2.36
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/ActivityFilters/index.d.ts +6 -19
- package/dist/ActivityFilters/index.d.ts.map +1 -1
- package/dist/ActivityFilters/index.js +566 -52
- package/dist/ActivityFilters/index.js.map +1 -1
- package/dist/ActivityFilters/index.mjs +566 -52
- package/dist/ActivityFilters/index.mjs.map +1 -1
- package/dist/hooks/useActivityFiltersData.d.ts +76 -0
- package/dist/hooks/useActivityFiltersData.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +847 -303
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +816 -275
- package/dist/index.mjs.map +1 -1
- package/dist/store/questionFiltersStore.d.ts +13 -0
- package/dist/store/questionFiltersStore.d.ts.map +1 -0
- package/dist/types/api.d.ts +22 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/notifications.d.ts +3 -13
- package/dist/types/notifications.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -172,8 +172,10 @@ __export(src_exports, {
|
|
|
172
172
|
VideoPlayer: () => VideoPlayer_default,
|
|
173
173
|
Whiteboard: () => Whiteboard_default,
|
|
174
174
|
cn: () => cn,
|
|
175
|
+
createActivityFiltersDataHook: () => createActivityFiltersDataHook,
|
|
175
176
|
createNotificationStore: () => createNotificationStore,
|
|
176
177
|
createNotificationsHook: () => createNotificationsHook,
|
|
178
|
+
createUseActivityFiltersData: () => createUseActivityFiltersData,
|
|
177
179
|
createUseNotificationStore: () => createUseNotificationStore,
|
|
178
180
|
createUseNotifications: () => createUseNotifications,
|
|
179
181
|
createZustandAuthAdapter: () => createZustandAuthAdapter,
|
|
@@ -217,6 +219,7 @@ __export(src_exports, {
|
|
|
217
219
|
useBreadcrumbBuilder: () => useBreadcrumbBuilder,
|
|
218
220
|
useInstitutionId: () => useInstitutionId,
|
|
219
221
|
useMobile: () => useMobile,
|
|
222
|
+
useQuestionFiltersStore: () => useQuestionFiltersStore,
|
|
220
223
|
useQuizStore: () => useQuizStore,
|
|
221
224
|
useRouteAuth: () => useRouteAuth,
|
|
222
225
|
useTableFilter: () => useTableFilter,
|
|
@@ -11321,6 +11324,503 @@ var questionTypeLabels = {
|
|
|
11321
11324
|
["PREENCHER" /* PREENCHER */]: "Preencher Lacunas"
|
|
11322
11325
|
};
|
|
11323
11326
|
|
|
11327
|
+
// src/hooks/useActivityFiltersData.ts
|
|
11328
|
+
var import_react35 = require("react");
|
|
11329
|
+
var mapQuestionTypeToEnum = (type) => {
|
|
11330
|
+
const upperType = type.toUpperCase();
|
|
11331
|
+
const typeMap = {
|
|
11332
|
+
ALTERNATIVA: "ALTERNATIVA" /* ALTERNATIVA */,
|
|
11333
|
+
DISSERTATIVA: "DISSERTATIVA" /* DISSERTATIVA */,
|
|
11334
|
+
MULTIPLA_ESCOLHA: "MULTIPLA_ESCOLHA" /* MULTIPLA_ESCOLHA */,
|
|
11335
|
+
VERDADEIRO_FALSO: "VERDADEIRO_FALSO" /* VERDADEIRO_FALSO */,
|
|
11336
|
+
IMAGEM: "IMAGEM" /* IMAGEM */,
|
|
11337
|
+
LIGAR_PONTOS: "LIGAR_PONTOS" /* LIGAR_PONTOS */,
|
|
11338
|
+
PREENCHER: "PREENCHER" /* PREENCHER */
|
|
11339
|
+
};
|
|
11340
|
+
return typeMap[upperType] || null;
|
|
11341
|
+
};
|
|
11342
|
+
var areCategoriesSame = (prev, current) => {
|
|
11343
|
+
if (prev.length !== current.length) return false;
|
|
11344
|
+
return current.every((category) => {
|
|
11345
|
+
const prevCategory = prev.find((c) => c.key === category.key);
|
|
11346
|
+
if (!prevCategory) return false;
|
|
11347
|
+
const prevIds = (prevCategory.itens || []).map(
|
|
11348
|
+
(item) => item.id
|
|
11349
|
+
);
|
|
11350
|
+
const currentIds = (category.itens || []).map(
|
|
11351
|
+
(item) => item.id
|
|
11352
|
+
);
|
|
11353
|
+
if (prevIds.length !== currentIds.length) return false;
|
|
11354
|
+
return currentIds.every((id) => prevIds.includes(id));
|
|
11355
|
+
});
|
|
11356
|
+
};
|
|
11357
|
+
var mergeCategoriesWithSelection = (prev, current) => {
|
|
11358
|
+
return current.map((category) => {
|
|
11359
|
+
const prevCategory = prev.find((c) => c.key === category.key);
|
|
11360
|
+
if (!prevCategory) {
|
|
11361
|
+
return category;
|
|
11362
|
+
}
|
|
11363
|
+
const validSelectedIds = (prevCategory.selectedIds || []).filter(
|
|
11364
|
+
(id) => category.itens?.some((item) => item.id === id)
|
|
11365
|
+
);
|
|
11366
|
+
return {
|
|
11367
|
+
...category,
|
|
11368
|
+
selectedIds: validSelectedIds
|
|
11369
|
+
};
|
|
11370
|
+
});
|
|
11371
|
+
};
|
|
11372
|
+
var mapSelectedNames = (ids, items) => {
|
|
11373
|
+
return ids.map((id) => {
|
|
11374
|
+
const item = items.find((t) => t.id === id);
|
|
11375
|
+
return item ? item.name : null;
|
|
11376
|
+
}).filter((name) => name !== null);
|
|
11377
|
+
};
|
|
11378
|
+
var useActivityFiltersDataImpl = (apiClient, options) => {
|
|
11379
|
+
const { selectedSubjects, institutionId } = options;
|
|
11380
|
+
const [banksState, setBanksState] = (0, import_react35.useState)({
|
|
11381
|
+
banks: [],
|
|
11382
|
+
bankYears: [],
|
|
11383
|
+
loading: false,
|
|
11384
|
+
error: null
|
|
11385
|
+
});
|
|
11386
|
+
const loadBanks = (0, import_react35.useCallback)(async () => {
|
|
11387
|
+
setBanksState((prev) => ({ ...prev, loading: true, error: null }));
|
|
11388
|
+
try {
|
|
11389
|
+
const response = await apiClient.get(
|
|
11390
|
+
"/questions/exam-institutions"
|
|
11391
|
+
);
|
|
11392
|
+
const banksMap = /* @__PURE__ */ new Map();
|
|
11393
|
+
const bankYearsArray = [];
|
|
11394
|
+
for (const item of response.data.data) {
|
|
11395
|
+
if (!item.questionBankName) continue;
|
|
11396
|
+
const existingBank = banksMap.get(item.questionBankName);
|
|
11397
|
+
if (existingBank) {
|
|
11398
|
+
if (!existingBank.years.includes(item.year)) {
|
|
11399
|
+
existingBank.years.push(item.year);
|
|
11400
|
+
}
|
|
11401
|
+
existingBank.questionsCount += item.questionsCount;
|
|
11402
|
+
} else {
|
|
11403
|
+
banksMap.set(item.questionBankName, {
|
|
11404
|
+
id: item.questionBankName,
|
|
11405
|
+
name: item.questionBankName,
|
|
11406
|
+
examInstitution: item.questionBankName,
|
|
11407
|
+
years: [item.year],
|
|
11408
|
+
questionsCount: item.questionsCount
|
|
11409
|
+
});
|
|
11410
|
+
}
|
|
11411
|
+
bankYearsArray.push({
|
|
11412
|
+
id: `${item.questionBankYearId}-${item.questionBankName}`,
|
|
11413
|
+
name: item.year,
|
|
11414
|
+
bankId: item.questionBankName
|
|
11415
|
+
});
|
|
11416
|
+
}
|
|
11417
|
+
const banks = Array.from(banksMap.values()).map((bank) => ({
|
|
11418
|
+
id: bank.id,
|
|
11419
|
+
name: bank.name,
|
|
11420
|
+
examInstitution: bank.examInstitution
|
|
11421
|
+
}));
|
|
11422
|
+
setBanksState({
|
|
11423
|
+
banks,
|
|
11424
|
+
bankYears: bankYearsArray,
|
|
11425
|
+
loading: false,
|
|
11426
|
+
error: null
|
|
11427
|
+
});
|
|
11428
|
+
} catch (error) {
|
|
11429
|
+
console.error("Erro ao carregar bancas de vestibular:", error);
|
|
11430
|
+
setBanksState((prev) => ({
|
|
11431
|
+
...prev,
|
|
11432
|
+
loading: false,
|
|
11433
|
+
error: "Erro ao carregar bancas de vestibular"
|
|
11434
|
+
}));
|
|
11435
|
+
}
|
|
11436
|
+
}, [apiClient]);
|
|
11437
|
+
const [areasState, setAreasState] = (0, import_react35.useState)({
|
|
11438
|
+
knowledgeAreas: [],
|
|
11439
|
+
loading: false,
|
|
11440
|
+
error: null
|
|
11441
|
+
});
|
|
11442
|
+
const loadKnowledgeAreas = (0, import_react35.useCallback)(async () => {
|
|
11443
|
+
setAreasState((prev) => ({ ...prev, loading: true, error: null }));
|
|
11444
|
+
try {
|
|
11445
|
+
const response = await apiClient.get(
|
|
11446
|
+
"/knowledge/subjects"
|
|
11447
|
+
);
|
|
11448
|
+
setAreasState({
|
|
11449
|
+
knowledgeAreas: response.data.data,
|
|
11450
|
+
loading: false,
|
|
11451
|
+
error: null
|
|
11452
|
+
});
|
|
11453
|
+
} catch (error) {
|
|
11454
|
+
console.error("Erro ao carregar \xE1reas de conhecimento:", error);
|
|
11455
|
+
setAreasState((prev) => ({
|
|
11456
|
+
...prev,
|
|
11457
|
+
loading: false,
|
|
11458
|
+
error: "Erro ao carregar \xE1reas de conhecimento"
|
|
11459
|
+
}));
|
|
11460
|
+
}
|
|
11461
|
+
}, [apiClient]);
|
|
11462
|
+
const [questionTypesState, setQuestionTypesState] = (0, import_react35.useState)({
|
|
11463
|
+
questionTypes: [],
|
|
11464
|
+
loading: false,
|
|
11465
|
+
error: null
|
|
11466
|
+
});
|
|
11467
|
+
const loadQuestionTypes = (0, import_react35.useCallback)(async () => {
|
|
11468
|
+
if (!institutionId) {
|
|
11469
|
+
setQuestionTypesState((prev) => ({
|
|
11470
|
+
...prev,
|
|
11471
|
+
questionTypes: [],
|
|
11472
|
+
loading: false,
|
|
11473
|
+
error: null
|
|
11474
|
+
}));
|
|
11475
|
+
return;
|
|
11476
|
+
}
|
|
11477
|
+
setQuestionTypesState((prev) => ({
|
|
11478
|
+
...prev,
|
|
11479
|
+
loading: true,
|
|
11480
|
+
error: null
|
|
11481
|
+
}));
|
|
11482
|
+
try {
|
|
11483
|
+
const response = await apiClient.get(
|
|
11484
|
+
`/institutions/${institutionId}/question-types`
|
|
11485
|
+
);
|
|
11486
|
+
const mappedTypes = response.data.data.questionTypes.map(mapQuestionTypeToEnum).filter((type) => type !== null);
|
|
11487
|
+
setQuestionTypesState({
|
|
11488
|
+
questionTypes: mappedTypes,
|
|
11489
|
+
loading: false,
|
|
11490
|
+
error: null
|
|
11491
|
+
});
|
|
11492
|
+
} catch (error) {
|
|
11493
|
+
console.error("Erro ao carregar tipos de quest\xF5es:", error);
|
|
11494
|
+
setQuestionTypesState((prev) => ({
|
|
11495
|
+
...prev,
|
|
11496
|
+
loading: false,
|
|
11497
|
+
error: "Erro ao carregar tipos de quest\xF5es"
|
|
11498
|
+
}));
|
|
11499
|
+
}
|
|
11500
|
+
}, [apiClient, institutionId]);
|
|
11501
|
+
const [knowledgeStructure, setKnowledgeStructure] = (0, import_react35.useState)({
|
|
11502
|
+
topics: [],
|
|
11503
|
+
subtopics: [],
|
|
11504
|
+
contents: [],
|
|
11505
|
+
loading: false,
|
|
11506
|
+
error: null
|
|
11507
|
+
});
|
|
11508
|
+
const [knowledgeCategories, setKnowledgeCategories] = (0, import_react35.useState)([]);
|
|
11509
|
+
const previousSubjectsRef = (0, import_react35.useRef)(null);
|
|
11510
|
+
const loadTopics = (0, import_react35.useCallback)(
|
|
11511
|
+
async (subjectIds) => {
|
|
11512
|
+
if (subjectIds.length === 0) {
|
|
11513
|
+
setKnowledgeStructure({
|
|
11514
|
+
topics: [],
|
|
11515
|
+
subtopics: [],
|
|
11516
|
+
contents: [],
|
|
11517
|
+
loading: false,
|
|
11518
|
+
error: null
|
|
11519
|
+
});
|
|
11520
|
+
setKnowledgeCategories([]);
|
|
11521
|
+
return;
|
|
11522
|
+
}
|
|
11523
|
+
setKnowledgeStructure((prev) => ({
|
|
11524
|
+
...prev,
|
|
11525
|
+
loading: true,
|
|
11526
|
+
error: null
|
|
11527
|
+
}));
|
|
11528
|
+
try {
|
|
11529
|
+
const response = await apiClient.post(
|
|
11530
|
+
"/knowledge/topics",
|
|
11531
|
+
{ subjectIds }
|
|
11532
|
+
);
|
|
11533
|
+
const topics = response.data.data.map((topic) => ({
|
|
11534
|
+
id: topic.id,
|
|
11535
|
+
name: topic.name
|
|
11536
|
+
}));
|
|
11537
|
+
setKnowledgeStructure((prev) => ({
|
|
11538
|
+
...prev,
|
|
11539
|
+
topics,
|
|
11540
|
+
subtopics: [],
|
|
11541
|
+
contents: [],
|
|
11542
|
+
loading: false,
|
|
11543
|
+
error: null
|
|
11544
|
+
}));
|
|
11545
|
+
} catch (error) {
|
|
11546
|
+
console.error("Erro ao carregar temas:", error);
|
|
11547
|
+
setKnowledgeStructure((prev) => ({
|
|
11548
|
+
...prev,
|
|
11549
|
+
topics: [],
|
|
11550
|
+
subtopics: [],
|
|
11551
|
+
contents: [],
|
|
11552
|
+
loading: false,
|
|
11553
|
+
error: "Erro ao carregar temas"
|
|
11554
|
+
}));
|
|
11555
|
+
}
|
|
11556
|
+
},
|
|
11557
|
+
[apiClient]
|
|
11558
|
+
);
|
|
11559
|
+
const loadSubtopics = (0, import_react35.useCallback)(
|
|
11560
|
+
async (topicIds, options2 = {}) => {
|
|
11561
|
+
const { forceApi = false } = options2;
|
|
11562
|
+
if (topicIds.length === 0 && !forceApi) {
|
|
11563
|
+
setKnowledgeStructure((prev) => ({
|
|
11564
|
+
...prev,
|
|
11565
|
+
subtopics: [],
|
|
11566
|
+
contents: [],
|
|
11567
|
+
loading: false,
|
|
11568
|
+
error: null
|
|
11569
|
+
}));
|
|
11570
|
+
return;
|
|
11571
|
+
}
|
|
11572
|
+
setKnowledgeStructure((prev) => ({
|
|
11573
|
+
...prev,
|
|
11574
|
+
loading: topicIds.length > 0,
|
|
11575
|
+
error: null
|
|
11576
|
+
}));
|
|
11577
|
+
try {
|
|
11578
|
+
const response = await apiClient.post(
|
|
11579
|
+
"/knowledge/subtopics",
|
|
11580
|
+
{ topicIds }
|
|
11581
|
+
);
|
|
11582
|
+
const subtopics = response.data.data.map(
|
|
11583
|
+
(subtopic) => ({
|
|
11584
|
+
id: subtopic.id,
|
|
11585
|
+
name: subtopic.name,
|
|
11586
|
+
topicId: subtopic.topicId || topicIds[0]
|
|
11587
|
+
})
|
|
11588
|
+
);
|
|
11589
|
+
setKnowledgeStructure((prev) => ({
|
|
11590
|
+
...prev,
|
|
11591
|
+
subtopics,
|
|
11592
|
+
contents: [],
|
|
11593
|
+
loading: false,
|
|
11594
|
+
error: null
|
|
11595
|
+
}));
|
|
11596
|
+
} catch (error) {
|
|
11597
|
+
console.error("Erro ao carregar subtemas:", error);
|
|
11598
|
+
setKnowledgeStructure((prev) => ({
|
|
11599
|
+
...prev,
|
|
11600
|
+
subtopics: [],
|
|
11601
|
+
contents: [],
|
|
11602
|
+
loading: false,
|
|
11603
|
+
error: "Erro ao carregar subtemas"
|
|
11604
|
+
}));
|
|
11605
|
+
}
|
|
11606
|
+
},
|
|
11607
|
+
[apiClient]
|
|
11608
|
+
);
|
|
11609
|
+
const loadContents = (0, import_react35.useCallback)(
|
|
11610
|
+
async (subtopicIds) => {
|
|
11611
|
+
if (subtopicIds.length === 0) {
|
|
11612
|
+
setKnowledgeStructure((prev) => ({
|
|
11613
|
+
...prev,
|
|
11614
|
+
contents: [],
|
|
11615
|
+
loading: false,
|
|
11616
|
+
error: null
|
|
11617
|
+
}));
|
|
11618
|
+
return;
|
|
11619
|
+
}
|
|
11620
|
+
setKnowledgeStructure((prev) => ({
|
|
11621
|
+
...prev,
|
|
11622
|
+
loading: true,
|
|
11623
|
+
error: null
|
|
11624
|
+
}));
|
|
11625
|
+
try {
|
|
11626
|
+
const response = await apiClient.post(
|
|
11627
|
+
"/knowledge/contents",
|
|
11628
|
+
{ subtopicIds }
|
|
11629
|
+
);
|
|
11630
|
+
const contents = response.data.data.map(
|
|
11631
|
+
(content) => ({
|
|
11632
|
+
id: content.id,
|
|
11633
|
+
name: content.name,
|
|
11634
|
+
subtopicId: content.subtopicId || subtopicIds[0]
|
|
11635
|
+
})
|
|
11636
|
+
);
|
|
11637
|
+
setKnowledgeStructure((prev) => ({
|
|
11638
|
+
...prev,
|
|
11639
|
+
contents,
|
|
11640
|
+
loading: false,
|
|
11641
|
+
error: null
|
|
11642
|
+
}));
|
|
11643
|
+
} catch (error) {
|
|
11644
|
+
console.error("Erro ao carregar conte\xFAdos:", error);
|
|
11645
|
+
setKnowledgeStructure((prev) => ({
|
|
11646
|
+
...prev,
|
|
11647
|
+
contents: [],
|
|
11648
|
+
loading: false,
|
|
11649
|
+
error: "Erro ao carregar conte\xFAdos"
|
|
11650
|
+
}));
|
|
11651
|
+
}
|
|
11652
|
+
},
|
|
11653
|
+
[apiClient]
|
|
11654
|
+
);
|
|
11655
|
+
(0, import_react35.useEffect)(() => {
|
|
11656
|
+
const previousSubjects = previousSubjectsRef.current;
|
|
11657
|
+
const subjectsChanged = !previousSubjects || previousSubjects.length !== selectedSubjects.length || selectedSubjects.some((id, index) => id !== previousSubjects[index]);
|
|
11658
|
+
if (!subjectsChanged) return;
|
|
11659
|
+
previousSubjectsRef.current = selectedSubjects;
|
|
11660
|
+
if (selectedSubjects.length > 0) {
|
|
11661
|
+
loadTopics(selectedSubjects);
|
|
11662
|
+
return;
|
|
11663
|
+
}
|
|
11664
|
+
setKnowledgeStructure({
|
|
11665
|
+
topics: [],
|
|
11666
|
+
subtopics: [],
|
|
11667
|
+
contents: [],
|
|
11668
|
+
loading: false,
|
|
11669
|
+
error: null
|
|
11670
|
+
});
|
|
11671
|
+
setKnowledgeCategories([]);
|
|
11672
|
+
}, [selectedSubjects, loadTopics]);
|
|
11673
|
+
const handleCategoriesChange = (0, import_react35.useCallback)(
|
|
11674
|
+
(updatedCategories) => {
|
|
11675
|
+
const isFirstChange = knowledgeCategories.length === 0;
|
|
11676
|
+
const currentTemaCategory = knowledgeCategories.find(
|
|
11677
|
+
(c) => c.key === "tema"
|
|
11678
|
+
);
|
|
11679
|
+
const currentSubtemaCategory = knowledgeCategories.find(
|
|
11680
|
+
(c) => c.key === "subtema"
|
|
11681
|
+
);
|
|
11682
|
+
const currentSelectedTopicIds = currentTemaCategory?.selectedIds || [];
|
|
11683
|
+
const currentSelectedSubtopicIds = currentSubtemaCategory?.selectedIds || [];
|
|
11684
|
+
const temaCategory = updatedCategories.find((c) => c.key === "tema");
|
|
11685
|
+
const selectedTopicIds = temaCategory?.selectedIds || [];
|
|
11686
|
+
const subtemaCategory = updatedCategories.find(
|
|
11687
|
+
(c) => c.key === "subtema"
|
|
11688
|
+
);
|
|
11689
|
+
const selectedSubtopicIds = subtemaCategory?.selectedIds || [];
|
|
11690
|
+
setKnowledgeCategories(updatedCategories);
|
|
11691
|
+
const topicIdsChanged = isFirstChange || currentSelectedTopicIds.length !== selectedTopicIds.length || currentSelectedTopicIds.some(
|
|
11692
|
+
(id) => !selectedTopicIds.includes(id)
|
|
11693
|
+
) || selectedTopicIds.some(
|
|
11694
|
+
(id) => !currentSelectedTopicIds.includes(id)
|
|
11695
|
+
);
|
|
11696
|
+
if (topicIdsChanged) {
|
|
11697
|
+
loadSubtopics(selectedTopicIds, {
|
|
11698
|
+
forceApi: selectedTopicIds.length === 0
|
|
11699
|
+
});
|
|
11700
|
+
}
|
|
11701
|
+
const subtopicIdsChanged = isFirstChange || currentSelectedSubtopicIds.length !== selectedSubtopicIds.length || currentSelectedSubtopicIds.some(
|
|
11702
|
+
(id) => !selectedSubtopicIds.includes(id)
|
|
11703
|
+
) || selectedSubtopicIds.some(
|
|
11704
|
+
(id) => !currentSelectedSubtopicIds.includes(id)
|
|
11705
|
+
);
|
|
11706
|
+
if (subtopicIdsChanged) {
|
|
11707
|
+
if (selectedSubtopicIds.length > 0) {
|
|
11708
|
+
loadContents(selectedSubtopicIds);
|
|
11709
|
+
} else {
|
|
11710
|
+
loadContents([]);
|
|
11711
|
+
}
|
|
11712
|
+
}
|
|
11713
|
+
},
|
|
11714
|
+
[knowledgeCategories, loadSubtopics, loadContents]
|
|
11715
|
+
);
|
|
11716
|
+
(0, import_react35.useEffect)(() => {
|
|
11717
|
+
if (knowledgeStructure.topics.length === 0) {
|
|
11718
|
+
setKnowledgeCategories((prev) => {
|
|
11719
|
+
if (prev.length === 0) {
|
|
11720
|
+
return prev;
|
|
11721
|
+
}
|
|
11722
|
+
return [];
|
|
11723
|
+
});
|
|
11724
|
+
return;
|
|
11725
|
+
}
|
|
11726
|
+
const categories = [
|
|
11727
|
+
{
|
|
11728
|
+
key: "tema",
|
|
11729
|
+
label: "Tema",
|
|
11730
|
+
dependsOn: [],
|
|
11731
|
+
itens: knowledgeStructure.topics,
|
|
11732
|
+
selectedIds: []
|
|
11733
|
+
},
|
|
11734
|
+
{
|
|
11735
|
+
key: "subtema",
|
|
11736
|
+
label: "Subtema",
|
|
11737
|
+
dependsOn: ["tema"],
|
|
11738
|
+
itens: knowledgeStructure.subtopics,
|
|
11739
|
+
filteredBy: [{ key: "tema", internalField: "topicId" }],
|
|
11740
|
+
selectedIds: []
|
|
11741
|
+
},
|
|
11742
|
+
{
|
|
11743
|
+
key: "assunto",
|
|
11744
|
+
label: "Assunto",
|
|
11745
|
+
dependsOn: ["subtema"],
|
|
11746
|
+
itens: knowledgeStructure.contents,
|
|
11747
|
+
filteredBy: [{ key: "subtema", internalField: "subtopicId" }],
|
|
11748
|
+
selectedIds: []
|
|
11749
|
+
}
|
|
11750
|
+
];
|
|
11751
|
+
setKnowledgeCategories(
|
|
11752
|
+
(prev) => areCategoriesSame(prev, categories) ? prev : mergeCategoriesWithSelection(prev, categories)
|
|
11753
|
+
);
|
|
11754
|
+
}, [
|
|
11755
|
+
selectedSubjects,
|
|
11756
|
+
knowledgeStructure.topics,
|
|
11757
|
+
knowledgeStructure.subtopics,
|
|
11758
|
+
knowledgeStructure.contents
|
|
11759
|
+
]);
|
|
11760
|
+
const selectedKnowledgeSummary = (0, import_react35.useMemo)(() => {
|
|
11761
|
+
const temaCategory = knowledgeCategories.find((c) => c.key === "tema");
|
|
11762
|
+
const subtemaCategory = knowledgeCategories.find(
|
|
11763
|
+
(c) => c.key === "subtema"
|
|
11764
|
+
);
|
|
11765
|
+
const assuntoCategory = knowledgeCategories.find(
|
|
11766
|
+
(c) => c.key === "assunto"
|
|
11767
|
+
);
|
|
11768
|
+
const selectedTopics = mapSelectedNames(
|
|
11769
|
+
temaCategory?.selectedIds || [],
|
|
11770
|
+
knowledgeStructure.topics
|
|
11771
|
+
);
|
|
11772
|
+
const selectedSubtopics = mapSelectedNames(
|
|
11773
|
+
subtemaCategory?.selectedIds || [],
|
|
11774
|
+
knowledgeStructure.subtopics
|
|
11775
|
+
);
|
|
11776
|
+
const selectedContents = mapSelectedNames(
|
|
11777
|
+
assuntoCategory?.selectedIds || [],
|
|
11778
|
+
knowledgeStructure.contents
|
|
11779
|
+
);
|
|
11780
|
+
return {
|
|
11781
|
+
topics: selectedTopics,
|
|
11782
|
+
subtopics: selectedSubtopics,
|
|
11783
|
+
contents: selectedContents
|
|
11784
|
+
};
|
|
11785
|
+
}, [knowledgeCategories, knowledgeStructure]);
|
|
11786
|
+
const enableSummary = (0, import_react35.useMemo)(() => {
|
|
11787
|
+
return knowledgeStructure.topics.length === 1 || knowledgeStructure.subtopics.length === 1 || knowledgeStructure.contents.length === 1;
|
|
11788
|
+
}, [knowledgeStructure]);
|
|
11789
|
+
return {
|
|
11790
|
+
// Vestibular Banks
|
|
11791
|
+
banks: banksState.banks,
|
|
11792
|
+
bankYears: banksState.bankYears,
|
|
11793
|
+
loadingBanks: banksState.loading,
|
|
11794
|
+
banksError: banksState.error,
|
|
11795
|
+
loadBanks,
|
|
11796
|
+
// Knowledge Areas
|
|
11797
|
+
knowledgeAreas: areasState.knowledgeAreas,
|
|
11798
|
+
loadingSubjects: areasState.loading,
|
|
11799
|
+
subjectsError: areasState.error,
|
|
11800
|
+
loadKnowledgeAreas,
|
|
11801
|
+
// Knowledge Structure
|
|
11802
|
+
knowledgeStructure,
|
|
11803
|
+
knowledgeCategories,
|
|
11804
|
+
handleCategoriesChange,
|
|
11805
|
+
selectedKnowledgeSummary,
|
|
11806
|
+
enableSummary,
|
|
11807
|
+
loadTopics,
|
|
11808
|
+
loadSubtopics,
|
|
11809
|
+
loadContents,
|
|
11810
|
+
// Question Types
|
|
11811
|
+
questionTypes: questionTypesState.questionTypes,
|
|
11812
|
+
loadingQuestionTypes: questionTypesState.loading,
|
|
11813
|
+
questionTypesError: questionTypesState.error,
|
|
11814
|
+
loadQuestionTypes
|
|
11815
|
+
};
|
|
11816
|
+
};
|
|
11817
|
+
var createUseActivityFiltersData = (apiClient) => {
|
|
11818
|
+
return (options) => useActivityFiltersDataImpl(apiClient, options);
|
|
11819
|
+
};
|
|
11820
|
+
var createActivityFiltersDataHook = (apiClient) => {
|
|
11821
|
+
return createUseActivityFiltersData(apiClient);
|
|
11822
|
+
};
|
|
11823
|
+
|
|
11324
11824
|
// src/components/Filter/FilterModal.tsx
|
|
11325
11825
|
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
11326
11826
|
var FilterModal = ({
|
|
@@ -11464,10 +11964,10 @@ var FilterModal = ({
|
|
|
11464
11964
|
};
|
|
11465
11965
|
|
|
11466
11966
|
// src/components/Filter/useTableFilter.ts
|
|
11467
|
-
var
|
|
11967
|
+
var import_react36 = require("react");
|
|
11468
11968
|
var useTableFilter = (initialConfigs, options = {}) => {
|
|
11469
11969
|
const { syncWithUrl = false } = options;
|
|
11470
|
-
const getInitialState = (0,
|
|
11970
|
+
const getInitialState = (0, import_react36.useCallback)(() => {
|
|
11471
11971
|
if (!syncWithUrl || globalThis.window === void 0) {
|
|
11472
11972
|
return initialConfigs;
|
|
11473
11973
|
}
|
|
@@ -11485,8 +11985,8 @@ var useTableFilter = (initialConfigs, options = {}) => {
|
|
|
11485
11985
|
}));
|
|
11486
11986
|
return configsWithUrlState;
|
|
11487
11987
|
}, [initialConfigs, syncWithUrl]);
|
|
11488
|
-
const [filterConfigs, setFilterConfigs] = (0,
|
|
11489
|
-
const activeFilters = (0,
|
|
11988
|
+
const [filterConfigs, setFilterConfigs] = (0, import_react36.useState)(getInitialState);
|
|
11989
|
+
const activeFilters = (0, import_react36.useMemo)(() => {
|
|
11490
11990
|
const filters = {};
|
|
11491
11991
|
for (const config of filterConfigs) {
|
|
11492
11992
|
for (const category of config.categories) {
|
|
@@ -11498,10 +11998,10 @@ var useTableFilter = (initialConfigs, options = {}) => {
|
|
|
11498
11998
|
return filters;
|
|
11499
11999
|
}, [filterConfigs]);
|
|
11500
12000
|
const hasActiveFilters = Object.keys(activeFilters).length > 0;
|
|
11501
|
-
const updateFilters = (0,
|
|
12001
|
+
const updateFilters = (0, import_react36.useCallback)((configs) => {
|
|
11502
12002
|
setFilterConfigs(configs);
|
|
11503
12003
|
}, []);
|
|
11504
|
-
const applyFilters = (0,
|
|
12004
|
+
const applyFilters = (0, import_react36.useCallback)(() => {
|
|
11505
12005
|
if (!syncWithUrl || globalThis.window === void 0) {
|
|
11506
12006
|
return;
|
|
11507
12007
|
}
|
|
@@ -11519,7 +12019,7 @@ var useTableFilter = (initialConfigs, options = {}) => {
|
|
|
11519
12019
|
}
|
|
11520
12020
|
globalThis.window.history.replaceState({}, "", url.toString());
|
|
11521
12021
|
}, [filterConfigs, syncWithUrl]);
|
|
11522
|
-
const clearFilters = (0,
|
|
12022
|
+
const clearFilters = (0, import_react36.useCallback)(() => {
|
|
11523
12023
|
const clearedConfigs = filterConfigs.map((config) => ({
|
|
11524
12024
|
...config,
|
|
11525
12025
|
categories: config.categories.map((category) => ({
|
|
@@ -11539,7 +12039,7 @@ var useTableFilter = (initialConfigs, options = {}) => {
|
|
|
11539
12039
|
globalThis.window.history.replaceState({}, "", url.toString());
|
|
11540
12040
|
}
|
|
11541
12041
|
}, [filterConfigs, syncWithUrl]);
|
|
11542
|
-
(0,
|
|
12042
|
+
(0, import_react36.useEffect)(() => {
|
|
11543
12043
|
if (!syncWithUrl || globalThis.window === void 0) {
|
|
11544
12044
|
return;
|
|
11545
12045
|
}
|
|
@@ -11560,9 +12060,9 @@ var useTableFilter = (initialConfigs, options = {}) => {
|
|
|
11560
12060
|
};
|
|
11561
12061
|
|
|
11562
12062
|
// src/components/ActivityFilters/ActivityFilters.tsx
|
|
11563
|
-
var
|
|
12063
|
+
var import_react37 = require("react");
|
|
11564
12064
|
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
11565
|
-
var
|
|
12065
|
+
var questionTypesFallback = [
|
|
11566
12066
|
"ALTERNATIVA" /* ALTERNATIVA */,
|
|
11567
12067
|
"VERDADEIRO_FALSO" /* VERDADEIRO_FALSO */,
|
|
11568
12068
|
"DISSERTATIVA" /* DISSERTATIVA */,
|
|
@@ -11576,7 +12076,7 @@ var QuestionTypeFilter = ({
|
|
|
11576
12076
|
onToggleType,
|
|
11577
12077
|
allowedQuestionTypes
|
|
11578
12078
|
}) => {
|
|
11579
|
-
const availableQuestionTypes = allowedQuestionTypes ||
|
|
12079
|
+
const availableQuestionTypes = allowedQuestionTypes || questionTypesFallback;
|
|
11580
12080
|
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { children: [
|
|
11581
12081
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Text_default, { size: "sm", weight: "bold", className: "mb-3 block", children: "Tipo de quest\xE3o" }),
|
|
11582
12082
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "grid grid-cols-2 gap-2", children: availableQuestionTypes.map((questionType) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
@@ -11701,45 +12201,42 @@ var FilterActions = ({
|
|
|
11701
12201
|
] });
|
|
11702
12202
|
};
|
|
11703
12203
|
var ActivityFilters = ({
|
|
12204
|
+
apiClient,
|
|
11704
12205
|
onFiltersChange,
|
|
11705
12206
|
variant = "default",
|
|
11706
|
-
|
|
11707
|
-
banks = [],
|
|
11708
|
-
bankYears = [],
|
|
11709
|
-
knowledgeAreas = [],
|
|
11710
|
-
knowledgeStructure = {
|
|
11711
|
-
topics: [],
|
|
11712
|
-
subtopics: [],
|
|
11713
|
-
contents: [],
|
|
11714
|
-
loading: false,
|
|
11715
|
-
error: null
|
|
11716
|
-
},
|
|
11717
|
-
knowledgeCategories = [],
|
|
12207
|
+
institutionId = null,
|
|
11718
12208
|
// Question types
|
|
11719
12209
|
allowedQuestionTypes,
|
|
11720
|
-
// Loading states
|
|
11721
|
-
loadingBanks = false,
|
|
11722
|
-
loadingKnowledge: _loadingKnowledge = false,
|
|
11723
|
-
loadingSubjects = false,
|
|
11724
|
-
// Errors
|
|
11725
|
-
banksError = null,
|
|
11726
|
-
subjectsError = null,
|
|
11727
|
-
// Load functions
|
|
11728
|
-
loadBanks,
|
|
11729
|
-
loadKnowledge,
|
|
11730
|
-
loadTopics,
|
|
11731
|
-
loadSubtopics: _loadSubtopics,
|
|
11732
|
-
loadContents: _loadContents,
|
|
11733
|
-
// Handlers
|
|
11734
|
-
handleCategoriesChange,
|
|
11735
12210
|
// Action buttons
|
|
11736
12211
|
onClearFilters,
|
|
11737
12212
|
onApplyFilters
|
|
11738
12213
|
}) => {
|
|
11739
|
-
const
|
|
11740
|
-
const [
|
|
11741
|
-
const
|
|
11742
|
-
|
|
12214
|
+
const useActivityFiltersData = createUseActivityFiltersData(apiClient);
|
|
12215
|
+
const [selectedQuestionTypes, setSelectedQuestionTypes] = (0, import_react37.useState)([]);
|
|
12216
|
+
const [selectedSubject, setSelectedSubject] = (0, import_react37.useState)(null);
|
|
12217
|
+
const {
|
|
12218
|
+
banks,
|
|
12219
|
+
bankYears,
|
|
12220
|
+
loadingBanks,
|
|
12221
|
+
banksError,
|
|
12222
|
+
knowledgeAreas,
|
|
12223
|
+
loadingSubjects,
|
|
12224
|
+
subjectsError,
|
|
12225
|
+
knowledgeStructure,
|
|
12226
|
+
knowledgeCategories,
|
|
12227
|
+
handleCategoriesChange,
|
|
12228
|
+
loadBanks,
|
|
12229
|
+
loadKnowledgeAreas,
|
|
12230
|
+
loadQuestionTypes,
|
|
12231
|
+
questionTypes,
|
|
12232
|
+
loadingQuestionTypes,
|
|
12233
|
+
questionTypesError
|
|
12234
|
+
} = useActivityFiltersData({
|
|
12235
|
+
selectedSubjects: selectedSubject ? [selectedSubject] : [],
|
|
12236
|
+
institutionId
|
|
12237
|
+
});
|
|
12238
|
+
const prevAllowedQuestionTypesRef = (0, import_react37.useRef)(null);
|
|
12239
|
+
(0, import_react37.useEffect)(() => {
|
|
11743
12240
|
if (!allowedQuestionTypes || allowedQuestionTypes.length === 0) {
|
|
11744
12241
|
prevAllowedQuestionTypesRef.current = null;
|
|
11745
12242
|
return;
|
|
@@ -11772,8 +12269,8 @@ var ActivityFilters = ({
|
|
|
11772
12269
|
return prev;
|
|
11773
12270
|
});
|
|
11774
12271
|
}, [allowedQuestionTypes]);
|
|
11775
|
-
const [bankCategories, setBankCategories] = (0,
|
|
11776
|
-
const selectedSubjects = (0,
|
|
12272
|
+
const [bankCategories, setBankCategories] = (0, import_react37.useState)([]);
|
|
12273
|
+
const selectedSubjects = (0, import_react37.useMemo)(
|
|
11777
12274
|
() => selectedSubject ? [selectedSubject] : [],
|
|
11778
12275
|
[selectedSubject]
|
|
11779
12276
|
);
|
|
@@ -11786,7 +12283,7 @@ var ActivityFilters = ({
|
|
|
11786
12283
|
const handleBankCategoriesChange = (updatedCategories) => {
|
|
11787
12284
|
setBankCategories(updatedCategories);
|
|
11788
12285
|
};
|
|
11789
|
-
(0,
|
|
12286
|
+
(0, import_react37.useEffect)(() => {
|
|
11790
12287
|
setBankCategories((prevCategories) => {
|
|
11791
12288
|
const bankCategory = {
|
|
11792
12289
|
key: "banca",
|
|
@@ -11812,37 +12309,42 @@ var ActivityFilters = ({
|
|
|
11812
12309
|
return [bankCategory, yearCategory];
|
|
11813
12310
|
});
|
|
11814
12311
|
}, [banks, bankYears]);
|
|
11815
|
-
(0,
|
|
12312
|
+
(0, import_react37.useEffect)(() => {
|
|
11816
12313
|
if (loadBanks) {
|
|
11817
12314
|
loadBanks();
|
|
11818
12315
|
}
|
|
11819
|
-
if (
|
|
11820
|
-
|
|
12316
|
+
if (loadKnowledgeAreas) {
|
|
12317
|
+
loadKnowledgeAreas();
|
|
11821
12318
|
}
|
|
11822
|
-
|
|
11823
|
-
|
|
11824
|
-
|
|
11825
|
-
|
|
12319
|
+
if (loadQuestionTypes) {
|
|
12320
|
+
loadQuestionTypes();
|
|
12321
|
+
}
|
|
12322
|
+
}, [loadBanks, loadKnowledgeAreas, loadQuestionTypes, institutionId]);
|
|
12323
|
+
const availableQuestionTypes = (0, import_react37.useMemo)(() => {
|
|
12324
|
+
const source = questionTypes && questionTypes.length > 0 ? questionTypes : questionTypesFallback;
|
|
12325
|
+
if (!allowedQuestionTypes || allowedQuestionTypes.length === 0) {
|
|
12326
|
+
return source;
|
|
11826
12327
|
}
|
|
11827
|
-
|
|
11828
|
-
|
|
12328
|
+
return source.filter((type) => allowedQuestionTypes.includes(type));
|
|
12329
|
+
}, [questionTypes, allowedQuestionTypes]);
|
|
12330
|
+
const getSelectedKnowledgeIds = (0, import_react37.useCallback)(() => {
|
|
11829
12331
|
return getSelectedIdsFromCategories(knowledgeCategories, {
|
|
11830
12332
|
topicIds: "tema",
|
|
11831
12333
|
subtopicIds: "subtema",
|
|
11832
12334
|
contentIds: "assunto"
|
|
11833
12335
|
});
|
|
11834
12336
|
}, [knowledgeCategories]);
|
|
11835
|
-
const getSelectedBankIds = (0,
|
|
12337
|
+
const getSelectedBankIds = (0, import_react37.useCallback)(() => {
|
|
11836
12338
|
return getSelectedIdsFromCategories(bankCategories, {
|
|
11837
12339
|
bankIds: "banca",
|
|
11838
12340
|
yearIds: "ano"
|
|
11839
12341
|
});
|
|
11840
12342
|
}, [bankCategories]);
|
|
11841
|
-
const onFiltersChangeRef = (0,
|
|
11842
|
-
(0,
|
|
12343
|
+
const onFiltersChangeRef = (0, import_react37.useRef)(onFiltersChange);
|
|
12344
|
+
(0, import_react37.useEffect)(() => {
|
|
11843
12345
|
onFiltersChangeRef.current = onFiltersChange;
|
|
11844
12346
|
}, [onFiltersChange]);
|
|
11845
|
-
(0,
|
|
12347
|
+
(0, import_react37.useEffect)(() => {
|
|
11846
12348
|
const knowledgeIds = getSelectedKnowledgeIds();
|
|
11847
12349
|
const bankIds = getSelectedBankIds();
|
|
11848
12350
|
const filters = {
|
|
@@ -11873,7 +12375,25 @@ var ActivityFilters = ({
|
|
|
11873
12375
|
{
|
|
11874
12376
|
selectedTypes: selectedQuestionTypes,
|
|
11875
12377
|
onToggleType: toggleQuestionType,
|
|
11876
|
-
allowedQuestionTypes
|
|
12378
|
+
allowedQuestionTypes: availableQuestionTypes
|
|
12379
|
+
}
|
|
12380
|
+
),
|
|
12381
|
+
loadingQuestionTypes && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
12382
|
+
Text_default,
|
|
12383
|
+
{
|
|
12384
|
+
size: "sm",
|
|
12385
|
+
className: "text-text-600",
|
|
12386
|
+
"data-testid": "question-types-loading",
|
|
12387
|
+
children: "Carregando tipos de quest\xE3o..."
|
|
12388
|
+
}
|
|
12389
|
+
),
|
|
12390
|
+
questionTypesError && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
12391
|
+
Text_default,
|
|
12392
|
+
{
|
|
12393
|
+
size: "sm",
|
|
12394
|
+
className: "text-error-500",
|
|
12395
|
+
"data-testid": "question-types-error",
|
|
12396
|
+
children: questionTypesError
|
|
11877
12397
|
}
|
|
11878
12398
|
),
|
|
11879
12399
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { children: [
|
|
@@ -11926,7 +12446,7 @@ var ActivityFiltersPopover = ({
|
|
|
11926
12446
|
triggerLabel = "Filtro de quest\xF5es",
|
|
11927
12447
|
...activityFiltersProps
|
|
11928
12448
|
}) => {
|
|
11929
|
-
const [open, setOpen] = (0,
|
|
12449
|
+
const [open, setOpen] = (0, import_react37.useState)(false);
|
|
11930
12450
|
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(DropdownMenu_default, { open, onOpenChange: setOpen, children: [
|
|
11931
12451
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(DropdownMenuTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button_default, { variant: "outline", children: triggerLabel }) }),
|
|
11932
12452
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
@@ -11948,7 +12468,7 @@ var ActivityFiltersPopover = ({
|
|
|
11948
12468
|
};
|
|
11949
12469
|
|
|
11950
12470
|
// src/components/TableProvider/TableProvider.tsx
|
|
11951
|
-
var
|
|
12471
|
+
var import_react38 = require("react");
|
|
11952
12472
|
var import_phosphor_react26 = require("phosphor-react");
|
|
11953
12473
|
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
11954
12474
|
function TableProvider({
|
|
@@ -11972,7 +12492,7 @@ function TableProvider({
|
|
|
11972
12492
|
onRowClick,
|
|
11973
12493
|
children
|
|
11974
12494
|
}) {
|
|
11975
|
-
const [searchQuery, setSearchQuery] = (0,
|
|
12495
|
+
const [searchQuery, setSearchQuery] = (0, import_react38.useState)("");
|
|
11976
12496
|
const sortResultRaw = useTableSort(data, { syncWithUrl: true });
|
|
11977
12497
|
const sortResult = enableTableSort ? sortResultRaw : {
|
|
11978
12498
|
sortedData: data,
|
|
@@ -11983,7 +12503,7 @@ function TableProvider({
|
|
|
11983
12503
|
};
|
|
11984
12504
|
const { sortedData, sortColumn, sortDirection, handleSort } = sortResult;
|
|
11985
12505
|
const filterResultRaw = useTableFilter(initialFilters, { syncWithUrl: true });
|
|
11986
|
-
const disabledFilterResult = (0,
|
|
12506
|
+
const disabledFilterResult = (0, import_react38.useMemo)(
|
|
11987
12507
|
() => ({
|
|
11988
12508
|
filterConfigs: [],
|
|
11989
12509
|
activeFilters: {},
|
|
@@ -12013,10 +12533,10 @@ function TableProvider({
|
|
|
12013
12533
|
totalItems,
|
|
12014
12534
|
totalPages
|
|
12015
12535
|
} = paginationConfig;
|
|
12016
|
-
const [currentPage, setCurrentPage] = (0,
|
|
12017
|
-
const [itemsPerPage, setItemsPerPage] = (0,
|
|
12018
|
-
const [isFilterModalOpen, setIsFilterModalOpen] = (0,
|
|
12019
|
-
const combinedParams = (0,
|
|
12536
|
+
const [currentPage, setCurrentPage] = (0, import_react38.useState)(1);
|
|
12537
|
+
const [itemsPerPage, setItemsPerPage] = (0, import_react38.useState)(defaultItemsPerPage);
|
|
12538
|
+
const [isFilterModalOpen, setIsFilterModalOpen] = (0, import_react38.useState)(false);
|
|
12539
|
+
const combinedParams = (0, import_react38.useMemo)(() => {
|
|
12020
12540
|
const params = {
|
|
12021
12541
|
page: currentPage,
|
|
12022
12542
|
limit: itemsPerPage
|
|
@@ -12043,26 +12563,26 @@ function TableProvider({
|
|
|
12043
12563
|
enableFilters,
|
|
12044
12564
|
enableTableSort
|
|
12045
12565
|
]);
|
|
12046
|
-
(0,
|
|
12566
|
+
(0, import_react38.useEffect)(() => {
|
|
12047
12567
|
onParamsChange?.(combinedParams);
|
|
12048
12568
|
}, [combinedParams]);
|
|
12049
|
-
const handleSearchChange = (0,
|
|
12569
|
+
const handleSearchChange = (0, import_react38.useCallback)((value) => {
|
|
12050
12570
|
setSearchQuery(value);
|
|
12051
12571
|
setCurrentPage(1);
|
|
12052
12572
|
}, []);
|
|
12053
|
-
const handleFilterApply = (0,
|
|
12573
|
+
const handleFilterApply = (0, import_react38.useCallback)(() => {
|
|
12054
12574
|
applyFilters();
|
|
12055
12575
|
setIsFilterModalOpen(false);
|
|
12056
12576
|
setCurrentPage(1);
|
|
12057
12577
|
}, [applyFilters]);
|
|
12058
|
-
const handlePageChange = (0,
|
|
12578
|
+
const handlePageChange = (0, import_react38.useCallback)((page) => {
|
|
12059
12579
|
setCurrentPage(page);
|
|
12060
12580
|
}, []);
|
|
12061
|
-
const handleItemsPerPageChange = (0,
|
|
12581
|
+
const handleItemsPerPageChange = (0, import_react38.useCallback)((items) => {
|
|
12062
12582
|
setItemsPerPage(items);
|
|
12063
12583
|
setCurrentPage(1);
|
|
12064
12584
|
}, []);
|
|
12065
|
-
const handleRowClickInternal = (0,
|
|
12585
|
+
const handleRowClickInternal = (0, import_react38.useCallback)(
|
|
12066
12586
|
(row, index) => {
|
|
12067
12587
|
if (enableRowClick && onRowClick) {
|
|
12068
12588
|
onRowClick(row, index);
|
|
@@ -12070,7 +12590,7 @@ function TableProvider({
|
|
|
12070
12590
|
},
|
|
12071
12591
|
[enableRowClick, onRowClick]
|
|
12072
12592
|
);
|
|
12073
|
-
const useInternalPagination = (0,
|
|
12593
|
+
const useInternalPagination = (0, import_react38.useMemo)(
|
|
12074
12594
|
() => enablePagination && !onParamsChange && totalItems === void 0 && totalPages === void 0,
|
|
12075
12595
|
[enablePagination, onParamsChange, totalItems, totalPages]
|
|
12076
12596
|
);
|
|
@@ -12078,7 +12598,7 @@ function TableProvider({
|
|
|
12078
12598
|
(totalItems ?? (useInternalPagination ? sortedData.length : data.length)) / itemsPerPage
|
|
12079
12599
|
);
|
|
12080
12600
|
const calculatedTotalItems = totalItems ?? (useInternalPagination ? sortedData.length : data.length);
|
|
12081
|
-
const displayData = (0,
|
|
12601
|
+
const displayData = (0, import_react38.useMemo)(() => {
|
|
12082
12602
|
if (!useInternalPagination) {
|
|
12083
12603
|
return sortedData;
|
|
12084
12604
|
}
|
|
@@ -12245,7 +12765,7 @@ var TableProvider_default = TableProvider;
|
|
|
12245
12765
|
|
|
12246
12766
|
// src/components/Select/Select.tsx
|
|
12247
12767
|
var import_zustand10 = require("zustand");
|
|
12248
|
-
var
|
|
12768
|
+
var import_react39 = require("react");
|
|
12249
12769
|
var import_phosphor_react27 = require("phosphor-react");
|
|
12250
12770
|
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
12251
12771
|
var VARIANT_CLASSES4 = {
|
|
@@ -12305,13 +12825,13 @@ function getLabelAsNode(children) {
|
|
|
12305
12825
|
if (typeof children === "string" || typeof children === "number") {
|
|
12306
12826
|
return children;
|
|
12307
12827
|
}
|
|
12308
|
-
const flattened =
|
|
12828
|
+
const flattened = import_react39.Children.toArray(children);
|
|
12309
12829
|
if (flattened.length === 1) return flattened[0];
|
|
12310
12830
|
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_jsx_runtime60.Fragment, { children: flattened });
|
|
12311
12831
|
}
|
|
12312
12832
|
var injectStore5 = (children, store, size, selectId) => {
|
|
12313
|
-
return
|
|
12314
|
-
if ((0,
|
|
12833
|
+
return import_react39.Children.map(children, (child) => {
|
|
12834
|
+
if ((0, import_react39.isValidElement)(child)) {
|
|
12315
12835
|
const typedChild = child;
|
|
12316
12836
|
const newProps = {
|
|
12317
12837
|
store
|
|
@@ -12328,7 +12848,7 @@ var injectStore5 = (children, store, size, selectId) => {
|
|
|
12328
12848
|
selectId
|
|
12329
12849
|
);
|
|
12330
12850
|
}
|
|
12331
|
-
return (0,
|
|
12851
|
+
return (0, import_react39.cloneElement)(typedChild, newProps);
|
|
12332
12852
|
}
|
|
12333
12853
|
return child;
|
|
12334
12854
|
});
|
|
@@ -12345,18 +12865,18 @@ var Select = ({
|
|
|
12345
12865
|
errorMessage,
|
|
12346
12866
|
id
|
|
12347
12867
|
}) => {
|
|
12348
|
-
const storeRef = (0,
|
|
12868
|
+
const storeRef = (0, import_react39.useRef)(null);
|
|
12349
12869
|
storeRef.current ??= createSelectStore(onValueChange);
|
|
12350
12870
|
const store = storeRef.current;
|
|
12351
|
-
const selectRef = (0,
|
|
12871
|
+
const selectRef = (0, import_react39.useRef)(null);
|
|
12352
12872
|
const { open, setOpen, setValue, selectedLabel } = (0, import_zustand10.useStore)(store, (s) => s);
|
|
12353
|
-
const generatedId = (0,
|
|
12873
|
+
const generatedId = (0, import_react39.useId)();
|
|
12354
12874
|
const selectId = id ?? `select-${generatedId}`;
|
|
12355
12875
|
const findLabelForValue = (children2, targetValue) => {
|
|
12356
12876
|
let found = null;
|
|
12357
12877
|
const search = (nodes) => {
|
|
12358
|
-
|
|
12359
|
-
if (!(0,
|
|
12878
|
+
import_react39.Children.forEach(nodes, (child) => {
|
|
12879
|
+
if (!(0, import_react39.isValidElement)(child)) return;
|
|
12360
12880
|
const typedChild = child;
|
|
12361
12881
|
if (typedChild.type === SelectItem && typedChild.props.value === targetValue) {
|
|
12362
12882
|
if (typeof typedChild.props.children === "string")
|
|
@@ -12369,13 +12889,13 @@ var Select = ({
|
|
|
12369
12889
|
search(children2);
|
|
12370
12890
|
return found;
|
|
12371
12891
|
};
|
|
12372
|
-
(0,
|
|
12892
|
+
(0, import_react39.useEffect)(() => {
|
|
12373
12893
|
if (!selectedLabel && defaultValue) {
|
|
12374
12894
|
const label2 = findLabelForValue(children, defaultValue);
|
|
12375
12895
|
if (label2) store.setState({ selectedLabel: label2 });
|
|
12376
12896
|
}
|
|
12377
12897
|
}, [children, defaultValue, selectedLabel]);
|
|
12378
|
-
(0,
|
|
12898
|
+
(0, import_react39.useEffect)(() => {
|
|
12379
12899
|
const handleClickOutside = (event) => {
|
|
12380
12900
|
if (selectRef.current && !selectRef.current.contains(event.target)) {
|
|
12381
12901
|
setOpen(false);
|
|
@@ -12410,7 +12930,7 @@ var Select = ({
|
|
|
12410
12930
|
document.removeEventListener("keydown", handleArrowKeys);
|
|
12411
12931
|
};
|
|
12412
12932
|
}, [open]);
|
|
12413
|
-
(0,
|
|
12933
|
+
(0, import_react39.useEffect)(() => {
|
|
12414
12934
|
if (propValue) {
|
|
12415
12935
|
setValue(propValue);
|
|
12416
12936
|
const label2 = findLabelForValue(children, propValue);
|
|
@@ -12447,7 +12967,7 @@ var SelectValue = ({
|
|
|
12447
12967
|
const value = (0, import_zustand10.useStore)(store, (s) => s.value);
|
|
12448
12968
|
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-inherit flex gap-2 items-center", children: selectedLabel || placeholder || value });
|
|
12449
12969
|
};
|
|
12450
|
-
var SelectTrigger = (0,
|
|
12970
|
+
var SelectTrigger = (0, import_react39.forwardRef)(
|
|
12451
12971
|
({
|
|
12452
12972
|
className,
|
|
12453
12973
|
invalid = false,
|
|
@@ -12501,7 +13021,7 @@ var SelectTrigger = (0, import_react38.forwardRef)(
|
|
|
12501
13021
|
}
|
|
12502
13022
|
);
|
|
12503
13023
|
SelectTrigger.displayName = "SelectTrigger";
|
|
12504
|
-
var SelectContent = (0,
|
|
13024
|
+
var SelectContent = (0, import_react39.forwardRef)(
|
|
12505
13025
|
({
|
|
12506
13026
|
children,
|
|
12507
13027
|
className,
|
|
@@ -12531,7 +13051,7 @@ var SelectContent = (0, import_react38.forwardRef)(
|
|
|
12531
13051
|
}
|
|
12532
13052
|
);
|
|
12533
13053
|
SelectContent.displayName = "SelectContent";
|
|
12534
|
-
var SelectItem = (0,
|
|
13054
|
+
var SelectItem = (0, import_react39.forwardRef)(
|
|
12535
13055
|
({
|
|
12536
13056
|
className,
|
|
12537
13057
|
children,
|
|
@@ -12590,7 +13110,7 @@ var Select_default = Select;
|
|
|
12590
13110
|
|
|
12591
13111
|
// src/components/Menu/Menu.tsx
|
|
12592
13112
|
var import_zustand11 = require("zustand");
|
|
12593
|
-
var
|
|
13113
|
+
var import_react40 = require("react");
|
|
12594
13114
|
var import_phosphor_react28 = require("phosphor-react");
|
|
12595
13115
|
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
12596
13116
|
var createMenuStore = (onValueChange) => (0, import_zustand11.create)((set) => ({
|
|
@@ -12611,7 +13131,7 @@ var VARIANT_CLASSES5 = {
|
|
|
12611
13131
|
"menu-overflow": "",
|
|
12612
13132
|
breadcrumb: "bg-transparent shadow-none !px-0"
|
|
12613
13133
|
};
|
|
12614
|
-
var Menu = (0,
|
|
13134
|
+
var Menu = (0, import_react40.forwardRef)(
|
|
12615
13135
|
({
|
|
12616
13136
|
className,
|
|
12617
13137
|
children,
|
|
@@ -12621,11 +13141,11 @@ var Menu = (0, import_react39.forwardRef)(
|
|
|
12621
13141
|
onValueChange,
|
|
12622
13142
|
...props
|
|
12623
13143
|
}, ref) => {
|
|
12624
|
-
const storeRef = (0,
|
|
13144
|
+
const storeRef = (0, import_react40.useRef)(null);
|
|
12625
13145
|
storeRef.current ??= createMenuStore(onValueChange);
|
|
12626
13146
|
const store = storeRef.current;
|
|
12627
13147
|
const { setValue } = (0, import_zustand11.useStore)(store, (s) => s);
|
|
12628
|
-
(0,
|
|
13148
|
+
(0, import_react40.useEffect)(() => {
|
|
12629
13149
|
setValue(propValue ?? defaultValue);
|
|
12630
13150
|
}, [defaultValue, propValue, setValue]);
|
|
12631
13151
|
const baseClasses = variant === "menu-overflow" ? "w-fit py-2 flex flex-row items-center justify-center" : "w-full py-2 flex flex-row items-center justify-center";
|
|
@@ -12646,7 +13166,7 @@ var Menu = (0, import_react39.forwardRef)(
|
|
|
12646
13166
|
}
|
|
12647
13167
|
);
|
|
12648
13168
|
Menu.displayName = "Menu";
|
|
12649
|
-
var MenuContent = (0,
|
|
13169
|
+
var MenuContent = (0, import_react40.forwardRef)(
|
|
12650
13170
|
({ className, children, variant = "menu", ...props }, ref) => {
|
|
12651
13171
|
const baseClasses = "w-full flex flex-row items-center gap-2";
|
|
12652
13172
|
const variantClasses = variant === "menu2" || variant === "menu-overflow" ? "overflow-x-auto scroll-smooth" : "";
|
|
@@ -12668,7 +13188,7 @@ var MenuContent = (0, import_react39.forwardRef)(
|
|
|
12668
13188
|
}
|
|
12669
13189
|
);
|
|
12670
13190
|
MenuContent.displayName = "MenuContent";
|
|
12671
|
-
var MenuItem = (0,
|
|
13191
|
+
var MenuItem = (0, import_react40.forwardRef)(
|
|
12672
13192
|
({
|
|
12673
13193
|
className,
|
|
12674
13194
|
children,
|
|
@@ -12826,10 +13346,10 @@ var MenuOverflow = ({
|
|
|
12826
13346
|
onValueChange,
|
|
12827
13347
|
...props
|
|
12828
13348
|
}) => {
|
|
12829
|
-
const containerRef = (0,
|
|
12830
|
-
const [showLeftArrow, setShowLeftArrow] = (0,
|
|
12831
|
-
const [showRightArrow, setShowRightArrow] = (0,
|
|
12832
|
-
(0,
|
|
13349
|
+
const containerRef = (0, import_react40.useRef)(null);
|
|
13350
|
+
const [showLeftArrow, setShowLeftArrow] = (0, import_react40.useState)(false);
|
|
13351
|
+
const [showRightArrow, setShowRightArrow] = (0, import_react40.useState)(false);
|
|
13352
|
+
(0, import_react40.useEffect)(() => {
|
|
12833
13353
|
const checkScroll = () => internalCheckScroll(
|
|
12834
13354
|
containerRef.current,
|
|
12835
13355
|
setShowLeftArrow,
|
|
@@ -12889,11 +13409,11 @@ var MenuOverflow = ({
|
|
|
12889
13409
|
}
|
|
12890
13410
|
);
|
|
12891
13411
|
};
|
|
12892
|
-
var injectStore6 = (children, store) =>
|
|
12893
|
-
if (!(0,
|
|
13412
|
+
var injectStore6 = (children, store) => import_react40.Children.map(children, (child) => {
|
|
13413
|
+
if (!(0, import_react40.isValidElement)(child)) return child;
|
|
12894
13414
|
const typedChild = child;
|
|
12895
13415
|
const shouldInject = typedChild.type === MenuItem;
|
|
12896
|
-
return (0,
|
|
13416
|
+
return (0, import_react40.cloneElement)(typedChild, {
|
|
12897
13417
|
...shouldInject ? { store } : {},
|
|
12898
13418
|
...typedChild.props.children ? { children: injectStore6(typedChild.props.children, store) } : {}
|
|
12899
13419
|
});
|
|
@@ -13152,12 +13672,12 @@ var NotFound = ({
|
|
|
13152
13672
|
var NotFound_default = NotFound;
|
|
13153
13673
|
|
|
13154
13674
|
// src/components/VideoPlayer/VideoPlayer.tsx
|
|
13155
|
-
var
|
|
13675
|
+
var import_react42 = require("react");
|
|
13156
13676
|
var import_react_dom = require("react-dom");
|
|
13157
13677
|
var import_phosphor_react31 = require("phosphor-react");
|
|
13158
13678
|
|
|
13159
13679
|
// src/components/DownloadButton/DownloadButton.tsx
|
|
13160
|
-
var
|
|
13680
|
+
var import_react41 = require("react");
|
|
13161
13681
|
var import_phosphor_react30 = require("phosphor-react");
|
|
13162
13682
|
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
13163
13683
|
var getMimeType = (url) => {
|
|
@@ -13234,13 +13754,13 @@ var DownloadButton = ({
|
|
|
13234
13754
|
lessonTitle = "aula",
|
|
13235
13755
|
disabled = false
|
|
13236
13756
|
}) => {
|
|
13237
|
-
const [isDownloading, setIsDownloading] = (0,
|
|
13238
|
-
const isValidUrl = (0,
|
|
13757
|
+
const [isDownloading, setIsDownloading] = (0, import_react41.useState)(false);
|
|
13758
|
+
const isValidUrl = (0, import_react41.useCallback)((url) => {
|
|
13239
13759
|
return Boolean(
|
|
13240
13760
|
url && url.trim() !== "" && url !== "undefined" && url !== "null"
|
|
13241
13761
|
);
|
|
13242
13762
|
}, []);
|
|
13243
|
-
const getAvailableContent = (0,
|
|
13763
|
+
const getAvailableContent = (0, import_react41.useCallback)(() => {
|
|
13244
13764
|
const downloads = [];
|
|
13245
13765
|
if (isValidUrl(content.urlDoc)) {
|
|
13246
13766
|
downloads.push({
|
|
@@ -13275,7 +13795,7 @@ var DownloadButton = ({
|
|
|
13275
13795
|
}
|
|
13276
13796
|
return downloads;
|
|
13277
13797
|
}, [content, isValidUrl]);
|
|
13278
|
-
const handleDownload = (0,
|
|
13798
|
+
const handleDownload = (0, import_react41.useCallback)(async () => {
|
|
13279
13799
|
if (disabled || isDownloading) return;
|
|
13280
13800
|
const availableContent = getAvailableContent();
|
|
13281
13801
|
if (availableContent.length === 0) {
|
|
@@ -13413,9 +13933,9 @@ var SpeedMenu = ({
|
|
|
13413
13933
|
iconSize = 24,
|
|
13414
13934
|
isTinyMobile = false
|
|
13415
13935
|
}) => {
|
|
13416
|
-
const buttonRef = (0,
|
|
13417
|
-
const speedMenuContainerRef = (0,
|
|
13418
|
-
const speedMenuRef = (0,
|
|
13936
|
+
const buttonRef = (0, import_react42.useRef)(null);
|
|
13937
|
+
const speedMenuContainerRef = (0, import_react42.useRef)(null);
|
|
13938
|
+
const speedMenuRef = (0, import_react42.useRef)(null);
|
|
13419
13939
|
const getMenuPosition = () => {
|
|
13420
13940
|
if (!buttonRef.current) return { top: 0, left: 0 };
|
|
13421
13941
|
const rect = buttonRef.current.getBoundingClientRect();
|
|
@@ -13429,7 +13949,7 @@ var SpeedMenu = ({
|
|
|
13429
13949
|
};
|
|
13430
13950
|
};
|
|
13431
13951
|
const position = getMenuPosition();
|
|
13432
|
-
(0,
|
|
13952
|
+
(0, import_react42.useEffect)(() => {
|
|
13433
13953
|
const handleClickOutside = (event) => {
|
|
13434
13954
|
const target = event.target;
|
|
13435
13955
|
const isOutsideContainer = speedMenuContainerRef.current && !speedMenuContainerRef.current.contains(target);
|
|
@@ -13508,28 +14028,28 @@ var VideoPlayer = ({
|
|
|
13508
14028
|
onDownloadComplete,
|
|
13509
14029
|
onDownloadError
|
|
13510
14030
|
}) => {
|
|
13511
|
-
const videoRef = (0,
|
|
14031
|
+
const videoRef = (0, import_react42.useRef)(null);
|
|
13512
14032
|
const { isUltraSmallMobile, isTinyMobile } = useMobile();
|
|
13513
|
-
const [isPlaying, setIsPlaying] = (0,
|
|
13514
|
-
const [currentTime, setCurrentTime] = (0,
|
|
13515
|
-
const [duration, setDuration] = (0,
|
|
13516
|
-
const [isMuted, setIsMuted] = (0,
|
|
13517
|
-
const [volume, setVolume] = (0,
|
|
13518
|
-
const [isFullscreen, setIsFullscreen] = (0,
|
|
13519
|
-
const [showControls, setShowControls] = (0,
|
|
13520
|
-
const [hasCompleted, setHasCompleted] = (0,
|
|
13521
|
-
const [showCaptions, setShowCaptions] = (0,
|
|
13522
|
-
const [subtitlesValidation, setSubtitlesValidation] = (0,
|
|
13523
|
-
(0,
|
|
14033
|
+
const [isPlaying, setIsPlaying] = (0, import_react42.useState)(false);
|
|
14034
|
+
const [currentTime, setCurrentTime] = (0, import_react42.useState)(0);
|
|
14035
|
+
const [duration, setDuration] = (0, import_react42.useState)(0);
|
|
14036
|
+
const [isMuted, setIsMuted] = (0, import_react42.useState)(false);
|
|
14037
|
+
const [volume, setVolume] = (0, import_react42.useState)(1);
|
|
14038
|
+
const [isFullscreen, setIsFullscreen] = (0, import_react42.useState)(false);
|
|
14039
|
+
const [showControls, setShowControls] = (0, import_react42.useState)(true);
|
|
14040
|
+
const [hasCompleted, setHasCompleted] = (0, import_react42.useState)(false);
|
|
14041
|
+
const [showCaptions, setShowCaptions] = (0, import_react42.useState)(false);
|
|
14042
|
+
const [subtitlesValidation, setSubtitlesValidation] = (0, import_react42.useState)("idle");
|
|
14043
|
+
(0, import_react42.useEffect)(() => {
|
|
13524
14044
|
setHasCompleted(false);
|
|
13525
14045
|
}, [src]);
|
|
13526
|
-
const [playbackRate, setPlaybackRate] = (0,
|
|
13527
|
-
const [showSpeedMenu, setShowSpeedMenu] = (0,
|
|
13528
|
-
const lastSaveTimeRef = (0,
|
|
13529
|
-
const trackRef = (0,
|
|
13530
|
-
const controlsTimeoutRef = (0,
|
|
13531
|
-
const lastMousePositionRef = (0,
|
|
13532
|
-
const isUserInteracting = (0,
|
|
14046
|
+
const [playbackRate, setPlaybackRate] = (0, import_react42.useState)(1);
|
|
14047
|
+
const [showSpeedMenu, setShowSpeedMenu] = (0, import_react42.useState)(false);
|
|
14048
|
+
const lastSaveTimeRef = (0, import_react42.useRef)(0);
|
|
14049
|
+
const trackRef = (0, import_react42.useRef)(null);
|
|
14050
|
+
const controlsTimeoutRef = (0, import_react42.useRef)(null);
|
|
14051
|
+
const lastMousePositionRef = (0, import_react42.useRef)({ x: 0, y: 0 });
|
|
14052
|
+
const isUserInteracting = (0, import_react42.useCallback)(() => {
|
|
13533
14053
|
if (showSpeedMenu) {
|
|
13534
14054
|
return true;
|
|
13535
14055
|
}
|
|
@@ -13546,13 +14066,13 @@ var VideoPlayer = ({
|
|
|
13546
14066
|
}
|
|
13547
14067
|
return false;
|
|
13548
14068
|
}, [showSpeedMenu]);
|
|
13549
|
-
const clearControlsTimeout = (0,
|
|
14069
|
+
const clearControlsTimeout = (0, import_react42.useCallback)(() => {
|
|
13550
14070
|
if (controlsTimeoutRef.current) {
|
|
13551
14071
|
clearTimeout(controlsTimeoutRef.current);
|
|
13552
14072
|
controlsTimeoutRef.current = null;
|
|
13553
14073
|
}
|
|
13554
14074
|
}, []);
|
|
13555
|
-
const showControlsWithTimer = (0,
|
|
14075
|
+
const showControlsWithTimer = (0, import_react42.useCallback)(() => {
|
|
13556
14076
|
setShowControls(true);
|
|
13557
14077
|
clearControlsTimeout();
|
|
13558
14078
|
if (isFullscreen) {
|
|
@@ -13567,7 +14087,7 @@ var VideoPlayer = ({
|
|
|
13567
14087
|
}, CONTROLS_HIDE_TIMEOUT);
|
|
13568
14088
|
}
|
|
13569
14089
|
}, [isFullscreen, isPlaying, clearControlsTimeout]);
|
|
13570
|
-
const handleMouseMove = (0,
|
|
14090
|
+
const handleMouseMove = (0, import_react42.useCallback)(
|
|
13571
14091
|
(event) => {
|
|
13572
14092
|
const currentX = event.clientX;
|
|
13573
14093
|
const currentY = event.clientY;
|
|
@@ -13580,10 +14100,10 @@ var VideoPlayer = ({
|
|
|
13580
14100
|
},
|
|
13581
14101
|
[showControlsWithTimer]
|
|
13582
14102
|
);
|
|
13583
|
-
const handleMouseEnter = (0,
|
|
14103
|
+
const handleMouseEnter = (0, import_react42.useCallback)(() => {
|
|
13584
14104
|
showControlsWithTimer();
|
|
13585
14105
|
}, [showControlsWithTimer]);
|
|
13586
|
-
const handleMouseLeave = (0,
|
|
14106
|
+
const handleMouseLeave = (0, import_react42.useCallback)(() => {
|
|
13587
14107
|
const userInteracting = isUserInteracting();
|
|
13588
14108
|
clearControlsTimeout();
|
|
13589
14109
|
if (!isFullscreen && !userInteracting) {
|
|
@@ -13592,13 +14112,13 @@ var VideoPlayer = ({
|
|
|
13592
14112
|
}, LEAVE_HIDE_TIMEOUT);
|
|
13593
14113
|
}
|
|
13594
14114
|
}, [isFullscreen, clearControlsTimeout, isUserInteracting]);
|
|
13595
|
-
(0,
|
|
14115
|
+
(0, import_react42.useEffect)(() => {
|
|
13596
14116
|
if (videoRef.current) {
|
|
13597
14117
|
videoRef.current.volume = volume;
|
|
13598
14118
|
videoRef.current.muted = isMuted;
|
|
13599
14119
|
}
|
|
13600
14120
|
}, [volume, isMuted]);
|
|
13601
|
-
(0,
|
|
14121
|
+
(0, import_react42.useEffect)(() => {
|
|
13602
14122
|
const video = videoRef.current;
|
|
13603
14123
|
if (!video) return;
|
|
13604
14124
|
const onPlay = () => setIsPlaying(true);
|
|
@@ -13613,13 +14133,13 @@ var VideoPlayer = ({
|
|
|
13613
14133
|
video.removeEventListener("ended", onEnded);
|
|
13614
14134
|
};
|
|
13615
14135
|
}, []);
|
|
13616
|
-
(0,
|
|
14136
|
+
(0, import_react42.useEffect)(() => {
|
|
13617
14137
|
const video = videoRef.current;
|
|
13618
14138
|
if (!video) return;
|
|
13619
14139
|
video.setAttribute("playsinline", "");
|
|
13620
14140
|
video.setAttribute("webkit-playsinline", "");
|
|
13621
14141
|
}, []);
|
|
13622
|
-
(0,
|
|
14142
|
+
(0, import_react42.useEffect)(() => {
|
|
13623
14143
|
if (isPlaying) {
|
|
13624
14144
|
showControlsWithTimer();
|
|
13625
14145
|
} else {
|
|
@@ -13631,7 +14151,7 @@ var VideoPlayer = ({
|
|
|
13631
14151
|
}
|
|
13632
14152
|
}
|
|
13633
14153
|
}, [isPlaying, isFullscreen, showControlsWithTimer, clearControlsTimeout]);
|
|
13634
|
-
(0,
|
|
14154
|
+
(0, import_react42.useEffect)(() => {
|
|
13635
14155
|
const video = videoRef.current;
|
|
13636
14156
|
if (!video) return;
|
|
13637
14157
|
const handleFullscreenChange = () => {
|
|
@@ -13666,7 +14186,7 @@ var VideoPlayer = ({
|
|
|
13666
14186
|
);
|
|
13667
14187
|
};
|
|
13668
14188
|
}, [showControlsWithTimer]);
|
|
13669
|
-
(0,
|
|
14189
|
+
(0, import_react42.useEffect)(() => {
|
|
13670
14190
|
const init = () => {
|
|
13671
14191
|
if (!isFullscreen) {
|
|
13672
14192
|
showControlsWithTimer();
|
|
@@ -13688,7 +14208,7 @@ var VideoPlayer = ({
|
|
|
13688
14208
|
};
|
|
13689
14209
|
}
|
|
13690
14210
|
}, []);
|
|
13691
|
-
const getInitialTime = (0,
|
|
14211
|
+
const getInitialTime = (0, import_react42.useCallback)(() => {
|
|
13692
14212
|
if (!autoSave || !storageKey) {
|
|
13693
14213
|
return Number.isFinite(initialTime) && initialTime >= 0 ? initialTime : void 0;
|
|
13694
14214
|
}
|
|
@@ -13701,14 +14221,14 @@ var VideoPlayer = ({
|
|
|
13701
14221
|
if (hasValidSaved) return saved;
|
|
13702
14222
|
return void 0;
|
|
13703
14223
|
}, [autoSave, storageKey, src, initialTime]);
|
|
13704
|
-
(0,
|
|
14224
|
+
(0, import_react42.useEffect)(() => {
|
|
13705
14225
|
const start = getInitialTime();
|
|
13706
14226
|
if (start !== void 0 && videoRef.current) {
|
|
13707
14227
|
videoRef.current.currentTime = start;
|
|
13708
14228
|
setCurrentTime(start);
|
|
13709
14229
|
}
|
|
13710
14230
|
}, [getInitialTime]);
|
|
13711
|
-
const saveProgress = (0,
|
|
14231
|
+
const saveProgress = (0, import_react42.useCallback)(
|
|
13712
14232
|
(time) => {
|
|
13713
14233
|
if (!autoSave || !storageKey) return;
|
|
13714
14234
|
const now = Date.now();
|
|
@@ -13719,7 +14239,7 @@ var VideoPlayer = ({
|
|
|
13719
14239
|
},
|
|
13720
14240
|
[autoSave, storageKey, src]
|
|
13721
14241
|
);
|
|
13722
|
-
const togglePlayPause = (0,
|
|
14242
|
+
const togglePlayPause = (0, import_react42.useCallback)(async () => {
|
|
13723
14243
|
const video = videoRef.current;
|
|
13724
14244
|
if (!video) return;
|
|
13725
14245
|
if (!video.paused) {
|
|
@@ -13731,7 +14251,7 @@ var VideoPlayer = ({
|
|
|
13731
14251
|
} catch {
|
|
13732
14252
|
}
|
|
13733
14253
|
}, []);
|
|
13734
|
-
const handleVolumeChange = (0,
|
|
14254
|
+
const handleVolumeChange = (0, import_react42.useCallback)(
|
|
13735
14255
|
(newVolume) => {
|
|
13736
14256
|
const video = videoRef.current;
|
|
13737
14257
|
if (!video) return;
|
|
@@ -13750,7 +14270,7 @@ var VideoPlayer = ({
|
|
|
13750
14270
|
},
|
|
13751
14271
|
[isMuted]
|
|
13752
14272
|
);
|
|
13753
|
-
const toggleMute = (0,
|
|
14273
|
+
const toggleMute = (0, import_react42.useCallback)(() => {
|
|
13754
14274
|
const video = videoRef.current;
|
|
13755
14275
|
if (!video) return;
|
|
13756
14276
|
if (isMuted) {
|
|
@@ -13764,20 +14284,20 @@ var VideoPlayer = ({
|
|
|
13764
14284
|
setIsMuted(true);
|
|
13765
14285
|
}
|
|
13766
14286
|
}, [isMuted, volume]);
|
|
13767
|
-
const handleSeek = (0,
|
|
14287
|
+
const handleSeek = (0, import_react42.useCallback)((newTime) => {
|
|
13768
14288
|
const video = videoRef.current;
|
|
13769
14289
|
if (video) {
|
|
13770
14290
|
video.currentTime = newTime;
|
|
13771
14291
|
}
|
|
13772
14292
|
}, []);
|
|
13773
|
-
const isSafariIOS = (0,
|
|
14293
|
+
const isSafariIOS = (0, import_react42.useCallback)(() => {
|
|
13774
14294
|
const ua = navigator.userAgent;
|
|
13775
14295
|
const isIOS = /iPad|iPhone|iPod/.test(ua);
|
|
13776
14296
|
const isWebKit = /WebKit/.test(ua);
|
|
13777
14297
|
const isNotChrome = !/CriOS|Chrome/.test(ua);
|
|
13778
14298
|
return isIOS && isWebKit && isNotChrome;
|
|
13779
14299
|
}, []);
|
|
13780
|
-
const toggleFullscreen = (0,
|
|
14300
|
+
const toggleFullscreen = (0, import_react42.useCallback)(() => {
|
|
13781
14301
|
const video = videoRef.current;
|
|
13782
14302
|
const container = video?.parentElement;
|
|
13783
14303
|
if (!video || !container) return;
|
|
@@ -13794,24 +14314,24 @@ var VideoPlayer = ({
|
|
|
13794
14314
|
document.exitFullscreen();
|
|
13795
14315
|
}
|
|
13796
14316
|
}, [isFullscreen, isSafariIOS]);
|
|
13797
|
-
const handleSpeedChange = (0,
|
|
14317
|
+
const handleSpeedChange = (0, import_react42.useCallback)((speed) => {
|
|
13798
14318
|
if (videoRef.current) {
|
|
13799
14319
|
videoRef.current.playbackRate = speed;
|
|
13800
14320
|
setPlaybackRate(speed);
|
|
13801
14321
|
setShowSpeedMenu(false);
|
|
13802
14322
|
}
|
|
13803
14323
|
}, []);
|
|
13804
|
-
const toggleSpeedMenu = (0,
|
|
14324
|
+
const toggleSpeedMenu = (0, import_react42.useCallback)(() => {
|
|
13805
14325
|
setShowSpeedMenu(!showSpeedMenu);
|
|
13806
14326
|
}, [showSpeedMenu]);
|
|
13807
|
-
const toggleCaptions = (0,
|
|
14327
|
+
const toggleCaptions = (0, import_react42.useCallback)(() => {
|
|
13808
14328
|
if (!trackRef.current?.track || !subtitles || subtitlesValidation !== "valid")
|
|
13809
14329
|
return;
|
|
13810
14330
|
const newShowCaptions = !showCaptions;
|
|
13811
14331
|
setShowCaptions(newShowCaptions);
|
|
13812
14332
|
trackRef.current.track.mode = newShowCaptions ? "showing" : "hidden";
|
|
13813
14333
|
}, [showCaptions, subtitles, subtitlesValidation]);
|
|
13814
|
-
const checkVideoCompletion = (0,
|
|
14334
|
+
const checkVideoCompletion = (0, import_react42.useCallback)(
|
|
13815
14335
|
(progressPercent) => {
|
|
13816
14336
|
if (progressPercent >= 95 && !hasCompleted) {
|
|
13817
14337
|
setHasCompleted(true);
|
|
@@ -13820,7 +14340,7 @@ var VideoPlayer = ({
|
|
|
13820
14340
|
},
|
|
13821
14341
|
[hasCompleted, onVideoComplete]
|
|
13822
14342
|
);
|
|
13823
|
-
const handleTimeUpdate = (0,
|
|
14343
|
+
const handleTimeUpdate = (0, import_react42.useCallback)(() => {
|
|
13824
14344
|
const video = videoRef.current;
|
|
13825
14345
|
if (!video) return;
|
|
13826
14346
|
const current = video.currentTime;
|
|
@@ -13833,12 +14353,12 @@ var VideoPlayer = ({
|
|
|
13833
14353
|
checkVideoCompletion(progressPercent);
|
|
13834
14354
|
}
|
|
13835
14355
|
}, [duration, saveProgress, onTimeUpdate, onProgress, checkVideoCompletion]);
|
|
13836
|
-
const handleLoadedMetadata = (0,
|
|
14356
|
+
const handleLoadedMetadata = (0, import_react42.useCallback)(() => {
|
|
13837
14357
|
if (videoRef.current) {
|
|
13838
14358
|
setDuration(videoRef.current.duration);
|
|
13839
14359
|
}
|
|
13840
14360
|
}, []);
|
|
13841
|
-
(0,
|
|
14361
|
+
(0, import_react42.useEffect)(() => {
|
|
13842
14362
|
const controller = new AbortController();
|
|
13843
14363
|
const validateSubtitles = async () => {
|
|
13844
14364
|
if (!subtitles) {
|
|
@@ -13885,12 +14405,12 @@ var VideoPlayer = ({
|
|
|
13885
14405
|
controller.abort();
|
|
13886
14406
|
};
|
|
13887
14407
|
}, [subtitles]);
|
|
13888
|
-
(0,
|
|
14408
|
+
(0, import_react42.useEffect)(() => {
|
|
13889
14409
|
if (trackRef.current?.track) {
|
|
13890
14410
|
trackRef.current.track.mode = showCaptions && subtitles && subtitlesValidation === "valid" ? "showing" : "hidden";
|
|
13891
14411
|
}
|
|
13892
14412
|
}, [subtitles, showCaptions, subtitlesValidation]);
|
|
13893
|
-
(0,
|
|
14413
|
+
(0, import_react42.useEffect)(() => {
|
|
13894
14414
|
const handleVisibilityChange = () => {
|
|
13895
14415
|
if (document.hidden && isPlaying && videoRef.current) {
|
|
13896
14416
|
videoRef.current.pause();
|
|
@@ -13912,54 +14432,54 @@ var VideoPlayer = ({
|
|
|
13912
14432
|
};
|
|
13913
14433
|
}, [isPlaying, clearControlsTimeout]);
|
|
13914
14434
|
const progressPercentage = duration > 0 ? currentTime / duration * 100 : 0;
|
|
13915
|
-
const getIconSize2 = (0,
|
|
14435
|
+
const getIconSize2 = (0, import_react42.useCallback)(() => {
|
|
13916
14436
|
if (isTinyMobile) return 18;
|
|
13917
14437
|
if (isUltraSmallMobile) return 20;
|
|
13918
14438
|
return 24;
|
|
13919
14439
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
13920
|
-
const getControlsPadding = (0,
|
|
14440
|
+
const getControlsPadding = (0, import_react42.useCallback)(() => {
|
|
13921
14441
|
if (isTinyMobile) return "px-2 pb-2 pt-1";
|
|
13922
14442
|
if (isUltraSmallMobile) return "px-3 pb-3 pt-1";
|
|
13923
14443
|
return "px-4 pb-4";
|
|
13924
14444
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
13925
|
-
const getControlsGap = (0,
|
|
14445
|
+
const getControlsGap = (0, import_react42.useCallback)(() => {
|
|
13926
14446
|
if (isTinyMobile) return "gap-1";
|
|
13927
14447
|
if (isUltraSmallMobile) return "gap-2";
|
|
13928
14448
|
return "gap-4";
|
|
13929
14449
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
13930
|
-
const getProgressBarPadding = (0,
|
|
14450
|
+
const getProgressBarPadding = (0, import_react42.useCallback)(() => {
|
|
13931
14451
|
if (isTinyMobile) return "px-2 pb-1";
|
|
13932
14452
|
if (isUltraSmallMobile) return "px-3 pb-1";
|
|
13933
14453
|
return "px-4 pb-2";
|
|
13934
14454
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
13935
|
-
const getCenterPlayButtonPosition = (0,
|
|
14455
|
+
const getCenterPlayButtonPosition = (0, import_react42.useCallback)(() => {
|
|
13936
14456
|
if (isTinyMobile) return "items-center justify-center -translate-y-12";
|
|
13937
14457
|
if (isUltraSmallMobile) return "items-center justify-center -translate-y-8";
|
|
13938
14458
|
return "items-center justify-center";
|
|
13939
14459
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
13940
|
-
const getTopControlsOpacity = (0,
|
|
14460
|
+
const getTopControlsOpacity = (0, import_react42.useCallback)(() => {
|
|
13941
14461
|
return showControls ? "opacity-100" : "opacity-0";
|
|
13942
14462
|
}, [showControls]);
|
|
13943
|
-
const getBottomControlsOpacity = (0,
|
|
14463
|
+
const getBottomControlsOpacity = (0, import_react42.useCallback)(() => {
|
|
13944
14464
|
return showControls ? "opacity-100" : "opacity-0";
|
|
13945
14465
|
}, [showControls]);
|
|
13946
|
-
const seekBackward = (0,
|
|
14466
|
+
const seekBackward = (0, import_react42.useCallback)(() => {
|
|
13947
14467
|
if (videoRef.current) {
|
|
13948
14468
|
videoRef.current.currentTime -= 10;
|
|
13949
14469
|
}
|
|
13950
14470
|
}, []);
|
|
13951
|
-
const seekForward = (0,
|
|
14471
|
+
const seekForward = (0, import_react42.useCallback)(() => {
|
|
13952
14472
|
if (videoRef.current) {
|
|
13953
14473
|
videoRef.current.currentTime += 10;
|
|
13954
14474
|
}
|
|
13955
14475
|
}, []);
|
|
13956
|
-
const increaseVolume = (0,
|
|
14476
|
+
const increaseVolume = (0, import_react42.useCallback)(() => {
|
|
13957
14477
|
handleVolumeChange(Math.min(100, volume * 100 + 10));
|
|
13958
14478
|
}, [handleVolumeChange, volume]);
|
|
13959
|
-
const decreaseVolume = (0,
|
|
14479
|
+
const decreaseVolume = (0, import_react42.useCallback)(() => {
|
|
13960
14480
|
handleVolumeChange(Math.max(0, volume * 100 - 10));
|
|
13961
14481
|
}, [handleVolumeChange, volume]);
|
|
13962
|
-
const handleVideoKeyDown = (0,
|
|
14482
|
+
const handleVideoKeyDown = (0, import_react42.useCallback)(
|
|
13963
14483
|
(e) => {
|
|
13964
14484
|
if (!e.key) return;
|
|
13965
14485
|
e.stopPropagation();
|
|
@@ -14202,7 +14722,7 @@ var VideoPlayer = ({
|
|
|
14202
14722
|
var VideoPlayer_default = VideoPlayer;
|
|
14203
14723
|
|
|
14204
14724
|
// src/components/Whiteboard/Whiteboard.tsx
|
|
14205
|
-
var
|
|
14725
|
+
var import_react43 = require("react");
|
|
14206
14726
|
var import_phosphor_react32 = require("phosphor-react");
|
|
14207
14727
|
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
14208
14728
|
var IMAGE_WIDTH = 225;
|
|
@@ -14215,8 +14735,8 @@ var Whiteboard = ({
|
|
|
14215
14735
|
imagesPerRow = 2,
|
|
14216
14736
|
...rest
|
|
14217
14737
|
}) => {
|
|
14218
|
-
const [imageErrors, setImageErrors] = (0,
|
|
14219
|
-
const handleDownload = (0,
|
|
14738
|
+
const [imageErrors, setImageErrors] = (0, import_react43.useState)(/* @__PURE__ */ new Set());
|
|
14739
|
+
const handleDownload = (0, import_react43.useCallback)(
|
|
14220
14740
|
(image) => {
|
|
14221
14741
|
if (onDownload) {
|
|
14222
14742
|
onDownload(image);
|
|
@@ -14233,7 +14753,7 @@ var Whiteboard = ({
|
|
|
14233
14753
|
},
|
|
14234
14754
|
[onDownload]
|
|
14235
14755
|
);
|
|
14236
|
-
const handleImageError = (0,
|
|
14756
|
+
const handleImageError = (0, import_react43.useCallback)((imageId) => {
|
|
14237
14757
|
setImageErrors((prev) => new Set(prev).add(imageId));
|
|
14238
14758
|
}, []);
|
|
14239
14759
|
const gridColsClass = images?.length === 1 ? "grid-cols-1" : {
|
|
@@ -14320,10 +14840,10 @@ var Whiteboard = ({
|
|
|
14320
14840
|
var Whiteboard_default = Whiteboard;
|
|
14321
14841
|
|
|
14322
14842
|
// src/components/Auth/Auth.tsx
|
|
14323
|
-
var
|
|
14843
|
+
var import_react44 = require("react");
|
|
14324
14844
|
var import_react_router_dom = require("react-router-dom");
|
|
14325
14845
|
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
14326
|
-
var AuthContext = (0,
|
|
14846
|
+
var AuthContext = (0, import_react44.createContext)(void 0);
|
|
14327
14847
|
var AuthProvider = ({
|
|
14328
14848
|
children,
|
|
14329
14849
|
checkAuthFn,
|
|
@@ -14333,12 +14853,12 @@ var AuthProvider = ({
|
|
|
14333
14853
|
getSessionFn,
|
|
14334
14854
|
getTokensFn
|
|
14335
14855
|
}) => {
|
|
14336
|
-
const [authState, setAuthState] = (0,
|
|
14856
|
+
const [authState, setAuthState] = (0, import_react44.useState)({
|
|
14337
14857
|
isAuthenticated: false,
|
|
14338
14858
|
isLoading: true,
|
|
14339
14859
|
...initialAuthState
|
|
14340
14860
|
});
|
|
14341
|
-
const checkAuth = (0,
|
|
14861
|
+
const checkAuth = (0, import_react44.useCallback)(async () => {
|
|
14342
14862
|
try {
|
|
14343
14863
|
setAuthState((prev) => ({ ...prev, isLoading: true }));
|
|
14344
14864
|
if (!checkAuthFn) {
|
|
@@ -14369,7 +14889,7 @@ var AuthProvider = ({
|
|
|
14369
14889
|
return false;
|
|
14370
14890
|
}
|
|
14371
14891
|
}, [checkAuthFn, getUserFn, getSessionFn, getTokensFn]);
|
|
14372
|
-
const signOut = (0,
|
|
14892
|
+
const signOut = (0, import_react44.useCallback)(() => {
|
|
14373
14893
|
if (signOutFn) {
|
|
14374
14894
|
signOutFn();
|
|
14375
14895
|
}
|
|
@@ -14381,10 +14901,10 @@ var AuthProvider = ({
|
|
|
14381
14901
|
tokens: void 0
|
|
14382
14902
|
}));
|
|
14383
14903
|
}, [signOutFn]);
|
|
14384
|
-
(0,
|
|
14904
|
+
(0, import_react44.useEffect)(() => {
|
|
14385
14905
|
checkAuth();
|
|
14386
14906
|
}, [checkAuth]);
|
|
14387
|
-
const contextValue = (0,
|
|
14907
|
+
const contextValue = (0, import_react44.useMemo)(
|
|
14388
14908
|
() => ({
|
|
14389
14909
|
...authState,
|
|
14390
14910
|
checkAuth,
|
|
@@ -14395,7 +14915,7 @@ var AuthProvider = ({
|
|
|
14395
14915
|
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(AuthContext.Provider, { value: contextValue, children });
|
|
14396
14916
|
};
|
|
14397
14917
|
var useAuth = () => {
|
|
14398
|
-
const context = (0,
|
|
14918
|
+
const context = (0, import_react44.useContext)(AuthContext);
|
|
14399
14919
|
if (context === void 0) {
|
|
14400
14920
|
throw new Error("useAuth deve ser usado dentro de um AuthProvider");
|
|
14401
14921
|
}
|
|
@@ -14535,7 +15055,7 @@ function createZustandAuthAdapter(useAuthStore2) {
|
|
|
14535
15055
|
}
|
|
14536
15056
|
|
|
14537
15057
|
// src/components/Auth/useUrlAuthentication.ts
|
|
14538
|
-
var
|
|
15058
|
+
var import_react45 = require("react");
|
|
14539
15059
|
var import_react_router_dom2 = require("react-router-dom");
|
|
14540
15060
|
var getAuthParams = (location, extractParams) => {
|
|
14541
15061
|
const searchParams = new URLSearchParams(location.search);
|
|
@@ -14583,8 +15103,8 @@ var handleUserData = (responseData, setUser) => {
|
|
|
14583
15103
|
};
|
|
14584
15104
|
function useUrlAuthentication(options) {
|
|
14585
15105
|
const location = (0, import_react_router_dom2.useLocation)();
|
|
14586
|
-
const processedRef = (0,
|
|
14587
|
-
(0,
|
|
15106
|
+
const processedRef = (0, import_react45.useRef)(false);
|
|
15107
|
+
(0, import_react45.useEffect)(() => {
|
|
14588
15108
|
const handleAuthentication = async () => {
|
|
14589
15109
|
if (processedRef.current) {
|
|
14590
15110
|
return;
|
|
@@ -14655,9 +15175,9 @@ function useUrlAuthentication(options) {
|
|
|
14655
15175
|
}
|
|
14656
15176
|
|
|
14657
15177
|
// src/components/Auth/useApiConfig.ts
|
|
14658
|
-
var
|
|
15178
|
+
var import_react46 = require("react");
|
|
14659
15179
|
function useApiConfig(api) {
|
|
14660
|
-
return (0,
|
|
15180
|
+
return (0, import_react46.useMemo)(
|
|
14661
15181
|
() => ({
|
|
14662
15182
|
get: (endpoint, config) => api.get(endpoint, config)
|
|
14663
15183
|
}),
|
|
@@ -14667,13 +15187,13 @@ function useApiConfig(api) {
|
|
|
14667
15187
|
|
|
14668
15188
|
// src/components/Quiz/Quiz.tsx
|
|
14669
15189
|
var import_phosphor_react35 = require("phosphor-react");
|
|
14670
|
-
var
|
|
15190
|
+
var import_react49 = require("react");
|
|
14671
15191
|
|
|
14672
15192
|
// src/components/Quiz/QuizContent.tsx
|
|
14673
|
-
var
|
|
15193
|
+
var import_react48 = require("react");
|
|
14674
15194
|
|
|
14675
15195
|
// src/components/MultipleChoice/MultipleChoice.tsx
|
|
14676
|
-
var
|
|
15196
|
+
var import_react47 = require("react");
|
|
14677
15197
|
var import_phosphor_react33 = require("phosphor-react");
|
|
14678
15198
|
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
14679
15199
|
var MultipleChoiceList = ({
|
|
@@ -14685,8 +15205,8 @@ var MultipleChoiceList = ({
|
|
|
14685
15205
|
onHandleSelectedValues,
|
|
14686
15206
|
mode = "interactive"
|
|
14687
15207
|
}) => {
|
|
14688
|
-
const [actualValue, setActualValue] = (0,
|
|
14689
|
-
(0,
|
|
15208
|
+
const [actualValue, setActualValue] = (0, import_react47.useState)(selectedValues);
|
|
15209
|
+
(0, import_react47.useEffect)(() => {
|
|
14690
15210
|
setActualValue(selectedValues);
|
|
14691
15211
|
}, [selectedValues]);
|
|
14692
15212
|
const getStatusBadge2 = (status) => {
|
|
@@ -14831,12 +15351,12 @@ var getStatusStyles = (variantCorrect) => {
|
|
|
14831
15351
|
return "bg-error-background border-error-300";
|
|
14832
15352
|
}
|
|
14833
15353
|
};
|
|
14834
|
-
var QuizSubTitle = (0,
|
|
15354
|
+
var QuizSubTitle = (0, import_react48.forwardRef)(
|
|
14835
15355
|
({ subTitle, ...props }, ref) => {
|
|
14836
15356
|
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "px-4 pb-2 pt-6", ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "font-bold text-lg text-text-950", children: subTitle }) });
|
|
14837
15357
|
}
|
|
14838
15358
|
);
|
|
14839
|
-
var QuizContainer = (0,
|
|
15359
|
+
var QuizContainer = (0, import_react48.forwardRef)(({ children, className, ...props }, ref) => {
|
|
14840
15360
|
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
14841
15361
|
"div",
|
|
14842
15362
|
{
|
|
@@ -14925,15 +15445,15 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
14925
15445
|
const currentQuestionResult = getQuestionResultByQuestionId(
|
|
14926
15446
|
currentQuestion?.id || ""
|
|
14927
15447
|
);
|
|
14928
|
-
const prevSelectedValuesRef = (0,
|
|
14929
|
-
const prevQuestionIdRef = (0,
|
|
14930
|
-
const allCurrentAnswerIds = (0,
|
|
15448
|
+
const prevSelectedValuesRef = (0, import_react48.useRef)([]);
|
|
15449
|
+
const prevQuestionIdRef = (0, import_react48.useRef)("");
|
|
15450
|
+
const allCurrentAnswerIds = (0, import_react48.useMemo)(() => {
|
|
14931
15451
|
return allCurrentAnswers?.map((answer) => answer.optionId) || [];
|
|
14932
15452
|
}, [allCurrentAnswers]);
|
|
14933
|
-
const selectedValues = (0,
|
|
15453
|
+
const selectedValues = (0, import_react48.useMemo)(() => {
|
|
14934
15454
|
return allCurrentAnswerIds?.filter((id) => id !== null) || [];
|
|
14935
15455
|
}, [allCurrentAnswerIds]);
|
|
14936
|
-
const stableSelectedValues = (0,
|
|
15456
|
+
const stableSelectedValues = (0, import_react48.useMemo)(() => {
|
|
14937
15457
|
const currentQuestionId = currentQuestion?.id || "";
|
|
14938
15458
|
const hasQuestionChanged = prevQuestionIdRef.current !== currentQuestionId;
|
|
14939
15459
|
if (hasQuestionChanged) {
|
|
@@ -14957,7 +15477,7 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
14957
15477
|
variant,
|
|
14958
15478
|
currentQuestionResult?.selectedOptions
|
|
14959
15479
|
]);
|
|
14960
|
-
const handleSelectedValues = (0,
|
|
15480
|
+
const handleSelectedValues = (0, import_react48.useCallback)(
|
|
14961
15481
|
(values) => {
|
|
14962
15482
|
if (currentQuestion) {
|
|
14963
15483
|
selectMultipleAnswer(currentQuestion.id, values);
|
|
@@ -14965,7 +15485,7 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
14965
15485
|
},
|
|
14966
15486
|
[currentQuestion, selectMultipleAnswer]
|
|
14967
15487
|
);
|
|
14968
|
-
const questionKey = (0,
|
|
15488
|
+
const questionKey = (0, import_react48.useMemo)(
|
|
14969
15489
|
() => `question-${currentQuestion?.id || "1"}`,
|
|
14970
15490
|
[currentQuestion?.id]
|
|
14971
15491
|
);
|
|
@@ -15026,14 +15546,14 @@ var QuizDissertative = ({ paddingBottom }) => {
|
|
|
15026
15546
|
currentQuestion?.id || ""
|
|
15027
15547
|
);
|
|
15028
15548
|
const currentAnswer = getCurrentAnswer();
|
|
15029
|
-
const textareaRef = (0,
|
|
15549
|
+
const textareaRef = (0, import_react48.useRef)(null);
|
|
15030
15550
|
const charLimit = getDissertativeCharLimit();
|
|
15031
15551
|
const handleAnswerChange = (value) => {
|
|
15032
15552
|
if (currentQuestion) {
|
|
15033
15553
|
selectDissertativeAnswer(currentQuestion.id, value);
|
|
15034
15554
|
}
|
|
15035
15555
|
};
|
|
15036
|
-
const adjustTextareaHeight = (0,
|
|
15556
|
+
const adjustTextareaHeight = (0, import_react48.useCallback)(() => {
|
|
15037
15557
|
if (textareaRef.current) {
|
|
15038
15558
|
textareaRef.current.style.height = "auto";
|
|
15039
15559
|
const scrollHeight = textareaRef.current.scrollHeight;
|
|
@@ -15043,7 +15563,7 @@ var QuizDissertative = ({ paddingBottom }) => {
|
|
|
15043
15563
|
textareaRef.current.style.height = `${newHeight}px`;
|
|
15044
15564
|
}
|
|
15045
15565
|
}, []);
|
|
15046
|
-
(0,
|
|
15566
|
+
(0, import_react48.useEffect)(() => {
|
|
15047
15567
|
adjustTextareaHeight();
|
|
15048
15568
|
}, [currentAnswer, adjustTextareaHeight]);
|
|
15049
15569
|
if (!currentQuestion) {
|
|
@@ -15184,7 +15704,7 @@ var QuizConnectDots = ({ paddingBottom }) => {
|
|
|
15184
15704
|
isCorrect: false
|
|
15185
15705
|
}
|
|
15186
15706
|
];
|
|
15187
|
-
const [userAnswers, setUserAnswers] = (0,
|
|
15707
|
+
const [userAnswers, setUserAnswers] = (0, import_react48.useState)(() => {
|
|
15188
15708
|
if (variant === "result") {
|
|
15189
15709
|
return mockUserAnswers;
|
|
15190
15710
|
}
|
|
@@ -15303,8 +15823,8 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
15303
15823
|
isCorrect: true
|
|
15304
15824
|
}
|
|
15305
15825
|
];
|
|
15306
|
-
const [answers, setAnswers] = (0,
|
|
15307
|
-
const baseId = (0,
|
|
15826
|
+
const [answers, setAnswers] = (0, import_react48.useState)({});
|
|
15827
|
+
const baseId = (0, import_react48.useId)();
|
|
15308
15828
|
const getAvailableOptionsForSelect = (selectId) => {
|
|
15309
15829
|
const usedOptions = new Set(
|
|
15310
15830
|
Object.entries(answers).filter(([key]) => key !== selectId).map(([, value]) => value)
|
|
@@ -15443,7 +15963,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
15443
15963
|
};
|
|
15444
15964
|
const correctRadiusRelative = calculateCorrectRadiusRelative();
|
|
15445
15965
|
const mockUserAnswerRelative = { x: 0.72, y: 0.348 };
|
|
15446
|
-
const [clickPositionRelative, setClickPositionRelative] = (0,
|
|
15966
|
+
const [clickPositionRelative, setClickPositionRelative] = (0, import_react48.useState)(variant == "result" ? mockUserAnswerRelative : null);
|
|
15447
15967
|
const convertToRelativeCoordinates = (x, y, rect) => {
|
|
15448
15968
|
const safeWidth = Math.max(rect.width, 1e-3);
|
|
15449
15969
|
const safeHeight = Math.max(rect.height, 1e-3);
|
|
@@ -15609,14 +16129,14 @@ var getFinishConfirmationText = (type) => {
|
|
|
15609
16129
|
const config = getQuizTypeConfig(type);
|
|
15610
16130
|
return `Tem certeza que deseja finalizar ${config.article} ${config.label.toLowerCase()}?`;
|
|
15611
16131
|
};
|
|
15612
|
-
var Quiz = (0,
|
|
16132
|
+
var Quiz = (0, import_react49.forwardRef)(({ children, className, variant = "default", ...props }, ref) => {
|
|
15613
16133
|
const { setVariant } = useQuizStore();
|
|
15614
|
-
(0,
|
|
16134
|
+
(0, import_react49.useEffect)(() => {
|
|
15615
16135
|
setVariant(variant);
|
|
15616
16136
|
}, [variant, setVariant]);
|
|
15617
16137
|
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { ref, className: cn("flex flex-col", className), ...props, children });
|
|
15618
16138
|
});
|
|
15619
|
-
var QuizTitle = (0,
|
|
16139
|
+
var QuizTitle = (0, import_react49.forwardRef)(({ className, onBack, ...props }, ref) => {
|
|
15620
16140
|
const {
|
|
15621
16141
|
quiz,
|
|
15622
16142
|
currentQuestionIndex,
|
|
@@ -15626,7 +16146,7 @@ var QuizTitle = (0, import_react48.forwardRef)(({ className, onBack, ...props },
|
|
|
15626
16146
|
formatTime: formatTime2,
|
|
15627
16147
|
isStarted
|
|
15628
16148
|
} = useQuizStore();
|
|
15629
|
-
const [showExitConfirmation, setShowExitConfirmation] = (0,
|
|
16149
|
+
const [showExitConfirmation, setShowExitConfirmation] = (0, import_react49.useState)(false);
|
|
15630
16150
|
const totalQuestions = getTotalQuestions();
|
|
15631
16151
|
const quizTitle = getQuizTitle();
|
|
15632
16152
|
const handleBackClick = () => {
|
|
@@ -15795,7 +16315,7 @@ var QuizQuestionList = ({
|
|
|
15795
16315
|
)
|
|
15796
16316
|
] });
|
|
15797
16317
|
};
|
|
15798
|
-
var QuizFooter = (0,
|
|
16318
|
+
var QuizFooter = (0, import_react49.forwardRef)(
|
|
15799
16319
|
({
|
|
15800
16320
|
className,
|
|
15801
16321
|
onGoToSimulated,
|
|
@@ -15829,8 +16349,8 @@ var QuizFooter = (0, import_react48.forwardRef)(
|
|
|
15829
16349
|
const currentAnswer = getCurrentAnswer();
|
|
15830
16350
|
const currentQuestion = getCurrentQuestion();
|
|
15831
16351
|
const isCurrentQuestionSkipped = currentQuestion ? getQuestionStatusFromUserAnswers(currentQuestion.id) === "skipped" : false;
|
|
15832
|
-
const [activeModal, setActiveModal] = (0,
|
|
15833
|
-
const [filterType, setFilterType] = (0,
|
|
16352
|
+
const [activeModal, setActiveModal] = (0, import_react49.useState)(null);
|
|
16353
|
+
const [filterType, setFilterType] = (0, import_react49.useState)("all");
|
|
15834
16354
|
const openModal = (modalName) => setActiveModal(modalName);
|
|
15835
16355
|
const closeModal = () => setActiveModal(null);
|
|
15836
16356
|
const isModalOpen = (modalName) => activeModal === modalName;
|
|
@@ -16172,7 +16692,7 @@ var QuizFooter = (0, import_react48.forwardRef)(
|
|
|
16172
16692
|
);
|
|
16173
16693
|
|
|
16174
16694
|
// src/components/Quiz/QuizResult.tsx
|
|
16175
|
-
var
|
|
16695
|
+
var import_react50 = require("react");
|
|
16176
16696
|
var import_phosphor_react36 = require("phosphor-react");
|
|
16177
16697
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
16178
16698
|
var QuizBadge = ({
|
|
@@ -16194,15 +16714,15 @@ var QuizBadge = ({
|
|
|
16194
16714
|
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Badge_default, { variant: "solid", action: "info", "data-testid": "quiz-badge", children: subtype });
|
|
16195
16715
|
}
|
|
16196
16716
|
};
|
|
16197
|
-
var QuizHeaderResult = (0,
|
|
16717
|
+
var QuizHeaderResult = (0, import_react50.forwardRef)(
|
|
16198
16718
|
({ className, ...props }, ref) => {
|
|
16199
16719
|
const {
|
|
16200
16720
|
getQuestionResultByQuestionId,
|
|
16201
16721
|
getCurrentQuestion,
|
|
16202
16722
|
questionsResult
|
|
16203
16723
|
} = useQuizStore();
|
|
16204
|
-
const [status, setStatus] = (0,
|
|
16205
|
-
(0,
|
|
16724
|
+
const [status, setStatus] = (0, import_react50.useState)(void 0);
|
|
16725
|
+
(0, import_react50.useEffect)(() => {
|
|
16206
16726
|
const cq = getCurrentQuestion();
|
|
16207
16727
|
if (!cq) {
|
|
16208
16728
|
setStatus(void 0);
|
|
@@ -16266,7 +16786,7 @@ var QuizHeaderResult = (0, import_react49.forwardRef)(
|
|
|
16266
16786
|
);
|
|
16267
16787
|
}
|
|
16268
16788
|
);
|
|
16269
|
-
var QuizResultHeaderTitle = (0,
|
|
16789
|
+
var QuizResultHeaderTitle = (0, import_react50.forwardRef)(({ className, showBadge = true, onRepeat, canRetry, ...props }, ref) => {
|
|
16270
16790
|
const { quiz } = useQuizStore();
|
|
16271
16791
|
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
|
|
16272
16792
|
"div",
|
|
@@ -16296,7 +16816,7 @@ var QuizResultHeaderTitle = (0, import_react49.forwardRef)(({ className, showBad
|
|
|
16296
16816
|
}
|
|
16297
16817
|
);
|
|
16298
16818
|
});
|
|
16299
|
-
var QuizResultTitle = (0,
|
|
16819
|
+
var QuizResultTitle = (0, import_react50.forwardRef)(({ className, ...props }, ref) => {
|
|
16300
16820
|
const { getQuizTitle } = useQuizStore();
|
|
16301
16821
|
const quizTitle = getQuizTitle();
|
|
16302
16822
|
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
@@ -16340,7 +16860,7 @@ var calculateAnswerStatistics = (answers) => {
|
|
|
16340
16860
|
}
|
|
16341
16861
|
return stats;
|
|
16342
16862
|
};
|
|
16343
|
-
var QuizResultPerformance = (0,
|
|
16863
|
+
var QuizResultPerformance = (0, import_react50.forwardRef)(({ showDetails = true, ...props }, ref) => {
|
|
16344
16864
|
const {
|
|
16345
16865
|
getTotalQuestions,
|
|
16346
16866
|
formatTime: formatTime2,
|
|
@@ -16445,7 +16965,7 @@ var QuizResultPerformance = (0, import_react49.forwardRef)(({ showDetails = true
|
|
|
16445
16965
|
}
|
|
16446
16966
|
);
|
|
16447
16967
|
});
|
|
16448
|
-
var QuizListResult = (0,
|
|
16968
|
+
var QuizListResult = (0, import_react50.forwardRef)(({ className, onSubjectClick, ...props }, ref) => {
|
|
16449
16969
|
const { getQuestionsGroupedBySubject } = useQuizStore();
|
|
16450
16970
|
const { isDark } = useTheme();
|
|
16451
16971
|
const groupedQuestions = getQuestionsGroupedBySubject();
|
|
@@ -16575,7 +17095,7 @@ var BreadcrumbMenu = ({
|
|
|
16575
17095
|
};
|
|
16576
17096
|
|
|
16577
17097
|
// src/components/BreadcrumbMenu/useBreadcrumbBuilder.ts
|
|
16578
|
-
var
|
|
17098
|
+
var import_react51 = require("react");
|
|
16579
17099
|
|
|
16580
17100
|
// src/components/BreadcrumbMenu/breadcrumbStore.ts
|
|
16581
17101
|
var import_zustand12 = require("zustand");
|
|
@@ -16704,7 +17224,7 @@ var useBreadcrumbBuilder = (config) => {
|
|
|
16704
17224
|
(level) => isBreadcrumbWithData(level) ? level.data : null
|
|
16705
17225
|
);
|
|
16706
17226
|
const levelUrlIds = levels.map((level) => level.urlId);
|
|
16707
|
-
(0,
|
|
17227
|
+
(0, import_react51.useEffect)(() => {
|
|
16708
17228
|
const newBreadcrumbs = [root];
|
|
16709
17229
|
const previousIds = [];
|
|
16710
17230
|
for (const level of levels) {
|
|
@@ -16736,11 +17256,11 @@ var useBreadcrumbBuilder = (config) => {
|
|
|
16736
17256
|
};
|
|
16737
17257
|
|
|
16738
17258
|
// src/components/BreadcrumbMenu/useUrlParams.ts
|
|
16739
|
-
var
|
|
17259
|
+
var import_react52 = require("react");
|
|
16740
17260
|
var import_react_router_dom4 = require("react-router-dom");
|
|
16741
17261
|
var useUrlParams = (config) => {
|
|
16742
17262
|
const location = (0, import_react_router_dom4.useLocation)();
|
|
16743
|
-
return (0,
|
|
17263
|
+
return (0, import_react52.useMemo)(() => {
|
|
16744
17264
|
const segments = location.pathname.split("/").filter(Boolean);
|
|
16745
17265
|
const params = {};
|
|
16746
17266
|
for (const [key, index] of Object.entries(config)) {
|
|
@@ -16751,15 +17271,15 @@ var useUrlParams = (config) => {
|
|
|
16751
17271
|
};
|
|
16752
17272
|
|
|
16753
17273
|
// src/hooks/useAppInitialization.ts
|
|
16754
|
-
var
|
|
17274
|
+
var import_react54 = require("react");
|
|
16755
17275
|
|
|
16756
17276
|
// src/hooks/useInstitution.ts
|
|
16757
|
-
var
|
|
17277
|
+
var import_react53 = require("react");
|
|
16758
17278
|
function useInstitutionId() {
|
|
16759
|
-
const [institutionId, setInstitutionId] = (0,
|
|
17279
|
+
const [institutionId, setInstitutionId] = (0, import_react53.useState)(() => {
|
|
16760
17280
|
return document.querySelector('meta[name="institution-id"]')?.getAttribute("content") ?? null;
|
|
16761
17281
|
});
|
|
16762
|
-
(0,
|
|
17282
|
+
(0, import_react53.useEffect)(() => {
|
|
16763
17283
|
const metaTag = document.querySelector('meta[name="institution-id"]');
|
|
16764
17284
|
if (!metaTag) return;
|
|
16765
17285
|
const observer = new MutationObserver(() => {
|
|
@@ -16926,7 +17446,7 @@ var useAuthStore = (0, import_zustand14.create)()(
|
|
|
16926
17446
|
function useAppInitialization() {
|
|
16927
17447
|
const getInstitutionId = useInstitutionId();
|
|
16928
17448
|
const { initialize, initialized, institutionId } = useAppStore();
|
|
16929
|
-
const authFunctions = (0,
|
|
17449
|
+
const authFunctions = (0, import_react54.useMemo)(
|
|
16930
17450
|
() => ({
|
|
16931
17451
|
checkAuth: async () => {
|
|
16932
17452
|
const { sessionInfo, tokens } = useAuthStore.getState();
|
|
@@ -16963,7 +17483,7 @@ function useAppInitialization() {
|
|
|
16963
17483
|
}
|
|
16964
17484
|
|
|
16965
17485
|
// src/hooks/useAppContent.ts
|
|
16966
|
-
var
|
|
17486
|
+
var import_react55 = require("react");
|
|
16967
17487
|
var import_react_router_dom5 = require("react-router-dom");
|
|
16968
17488
|
function useAppContent(config) {
|
|
16969
17489
|
const navigate = (0, import_react_router_dom5.useNavigate)();
|
|
@@ -16989,20 +17509,20 @@ function useAppContent(config) {
|
|
|
16989
17509
|
navigate("/painel");
|
|
16990
17510
|
}
|
|
16991
17511
|
};
|
|
16992
|
-
const handleSetSelectedProfile = (0,
|
|
17512
|
+
const handleSetSelectedProfile = (0, import_react55.useCallback)(
|
|
16993
17513
|
(profile) => {
|
|
16994
17514
|
setSelectedProfile(profile);
|
|
16995
17515
|
},
|
|
16996
17516
|
[setSelectedProfile]
|
|
16997
17517
|
);
|
|
16998
|
-
const handleClearParamsFromURL = (0,
|
|
17518
|
+
const handleClearParamsFromURL = (0, import_react55.useCallback)(() => {
|
|
16999
17519
|
if (onClearParamsFromURL) {
|
|
17000
17520
|
onClearParamsFromURL();
|
|
17001
17521
|
} else {
|
|
17002
17522
|
globalThis.location.replace("/painel");
|
|
17003
17523
|
}
|
|
17004
17524
|
}, [onClearParamsFromURL]);
|
|
17005
|
-
const handleError = (0,
|
|
17525
|
+
const handleError = (0, import_react55.useCallback)(
|
|
17006
17526
|
(error) => {
|
|
17007
17527
|
if (onError) {
|
|
17008
17528
|
onError(error);
|
|
@@ -17013,7 +17533,7 @@ function useAppContent(config) {
|
|
|
17013
17533
|
},
|
|
17014
17534
|
[navigate, onError]
|
|
17015
17535
|
);
|
|
17016
|
-
const urlAuthConfig = (0,
|
|
17536
|
+
const urlAuthConfig = (0, import_react55.useMemo)(
|
|
17017
17537
|
() => ({
|
|
17018
17538
|
setTokens,
|
|
17019
17539
|
setSessionInfo,
|
|
@@ -17039,10 +17559,10 @@ function useAppContent(config) {
|
|
|
17039
17559
|
);
|
|
17040
17560
|
useUrlAuthentication(urlAuthConfig);
|
|
17041
17561
|
const { sessionInfo } = useAuth();
|
|
17042
|
-
const institutionIdToUse = (0,
|
|
17562
|
+
const institutionIdToUse = (0, import_react55.useMemo)(() => {
|
|
17043
17563
|
return sessionInfo?.institutionId || getInstitutionId;
|
|
17044
17564
|
}, [sessionInfo?.institutionId, getInstitutionId]);
|
|
17045
|
-
(0,
|
|
17565
|
+
(0, import_react55.useEffect)(() => {
|
|
17046
17566
|
if (institutionIdToUse && !initialized) {
|
|
17047
17567
|
initialize(institutionIdToUse);
|
|
17048
17568
|
}
|
|
@@ -17054,9 +17574,30 @@ function useAppContent(config) {
|
|
|
17054
17574
|
};
|
|
17055
17575
|
}
|
|
17056
17576
|
|
|
17577
|
+
// src/store/questionFiltersStore.ts
|
|
17578
|
+
var import_zustand15 = require("zustand");
|
|
17579
|
+
var useQuestionFiltersStore = (0, import_zustand15.create)((set) => ({
|
|
17580
|
+
draftFilters: null,
|
|
17581
|
+
appliedFilters: null,
|
|
17582
|
+
setDraftFilters: (filters) => {
|
|
17583
|
+
set({ draftFilters: filters });
|
|
17584
|
+
},
|
|
17585
|
+
applyFilters: () => {
|
|
17586
|
+
set((state) => ({
|
|
17587
|
+
appliedFilters: state.draftFilters
|
|
17588
|
+
}));
|
|
17589
|
+
},
|
|
17590
|
+
clearFilters: () => {
|
|
17591
|
+
set({
|
|
17592
|
+
draftFilters: null,
|
|
17593
|
+
appliedFilters: null
|
|
17594
|
+
});
|
|
17595
|
+
}
|
|
17596
|
+
}));
|
|
17597
|
+
|
|
17057
17598
|
// src/components/ActivityCardQuestionBanks/ActivityCardQuestionBanks.tsx
|
|
17058
17599
|
var import_phosphor_react37 = require("phosphor-react");
|
|
17059
|
-
var
|
|
17600
|
+
var import_react56 = require("react");
|
|
17060
17601
|
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
17061
17602
|
var ActivityCardQuestionBanks = ({
|
|
17062
17603
|
question,
|
|
@@ -17068,7 +17609,7 @@ var ActivityCardQuestionBanks = ({
|
|
|
17068
17609
|
assunto,
|
|
17069
17610
|
enunciado
|
|
17070
17611
|
} = {}) => {
|
|
17071
|
-
const alternatives = (0,
|
|
17612
|
+
const alternatives = (0, import_react56.useMemo)(() => {
|
|
17072
17613
|
if (!question?.options || questionType !== "ALTERNATIVA" /* ALTERNATIVA */)
|
|
17073
17614
|
return [];
|
|
17074
17615
|
const correctOptionIds2 = question.correctOptionIds || [];
|
|
@@ -17082,13 +17623,13 @@ var ActivityCardQuestionBanks = ({
|
|
|
17082
17623
|
};
|
|
17083
17624
|
});
|
|
17084
17625
|
}, [question, questionType]);
|
|
17085
|
-
const correctOptionId = (0,
|
|
17626
|
+
const correctOptionId = (0, import_react56.useMemo)(() => {
|
|
17086
17627
|
if (!question?.correctOptionIds || question.correctOptionIds.length === 0) {
|
|
17087
17628
|
return void 0;
|
|
17088
17629
|
}
|
|
17089
17630
|
return question.correctOptionIds[0];
|
|
17090
17631
|
}, [question]);
|
|
17091
|
-
const multipleChoices = (0,
|
|
17632
|
+
const multipleChoices = (0, import_react56.useMemo)(() => {
|
|
17092
17633
|
if (!question?.options || questionType !== "MULTIPLA_ESCOLHA" /* MULTIPLA_ESCOLHA */)
|
|
17093
17634
|
return [];
|
|
17094
17635
|
const correctOptionIds2 = question.correctOptionIds || [];
|
|
@@ -17102,7 +17643,7 @@ var ActivityCardQuestionBanks = ({
|
|
|
17102
17643
|
};
|
|
17103
17644
|
});
|
|
17104
17645
|
}, [question, questionType]);
|
|
17105
|
-
const correctOptionIds = (0,
|
|
17646
|
+
const correctOptionIds = (0, import_react56.useMemo)(() => {
|
|
17106
17647
|
return question?.correctOptionIds || [];
|
|
17107
17648
|
}, [question]);
|
|
17108
17649
|
const getStatusBadge2 = (status) => {
|
|
@@ -17285,7 +17826,7 @@ var formatDateToBrazilian = (dateString) => {
|
|
|
17285
17826
|
};
|
|
17286
17827
|
|
|
17287
17828
|
// src/components/ActivityDetails/ActivityDetails.tsx
|
|
17288
|
-
var
|
|
17829
|
+
var import_react57 = require("react");
|
|
17289
17830
|
var import_phosphor_react38 = require("phosphor-react");
|
|
17290
17831
|
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
17291
17832
|
var createTableColumns = (onCorrectActivity) => [
|
|
@@ -17383,20 +17924,20 @@ var ActivityDetails = ({
|
|
|
17383
17924
|
mapSubjectNameToEnum
|
|
17384
17925
|
}) => {
|
|
17385
17926
|
const { isMobile } = useMobile();
|
|
17386
|
-
const [page, setPage] = (0,
|
|
17387
|
-
const [limit, setLimit] = (0,
|
|
17388
|
-
const [sortBy, setSortBy] = (0,
|
|
17389
|
-
const [sortOrder, setSortOrder] = (0,
|
|
17927
|
+
const [page, setPage] = (0, import_react57.useState)(1);
|
|
17928
|
+
const [limit, setLimit] = (0, import_react57.useState)(10);
|
|
17929
|
+
const [sortBy, setSortBy] = (0, import_react57.useState)(void 0);
|
|
17930
|
+
const [sortOrder, setSortOrder] = (0, import_react57.useState)(
|
|
17390
17931
|
void 0
|
|
17391
17932
|
);
|
|
17392
|
-
const [data, setData] = (0,
|
|
17393
|
-
const [correctionData, setCorrectionData] = (0,
|
|
17394
|
-
const [loading, setLoading] = (0,
|
|
17395
|
-
const [error, setError] = (0,
|
|
17396
|
-
const [isModalOpen, setIsModalOpen] = (0,
|
|
17397
|
-
const [isViewOnlyModal, setIsViewOnlyModal] = (0,
|
|
17398
|
-
const [correctionError, setCorrectionError] = (0,
|
|
17399
|
-
(0,
|
|
17933
|
+
const [data, setData] = (0, import_react57.useState)(null);
|
|
17934
|
+
const [correctionData, setCorrectionData] = (0, import_react57.useState)(null);
|
|
17935
|
+
const [loading, setLoading] = (0, import_react57.useState)(true);
|
|
17936
|
+
const [error, setError] = (0, import_react57.useState)(null);
|
|
17937
|
+
const [isModalOpen, setIsModalOpen] = (0, import_react57.useState)(false);
|
|
17938
|
+
const [isViewOnlyModal, setIsViewOnlyModal] = (0, import_react57.useState)(false);
|
|
17939
|
+
const [correctionError, setCorrectionError] = (0, import_react57.useState)(null);
|
|
17940
|
+
(0, import_react57.useEffect)(() => {
|
|
17400
17941
|
const loadData = async () => {
|
|
17401
17942
|
if (!activityId) return;
|
|
17402
17943
|
setLoading(true);
|
|
@@ -17419,7 +17960,7 @@ var ActivityDetails = ({
|
|
|
17419
17960
|
};
|
|
17420
17961
|
loadData();
|
|
17421
17962
|
}, [activityId, page, limit, sortBy, sortOrder, fetchActivityDetails]);
|
|
17422
|
-
const handleCorrectActivity = (0,
|
|
17963
|
+
const handleCorrectActivity = (0, import_react57.useCallback)(
|
|
17423
17964
|
async (studentId) => {
|
|
17424
17965
|
const student = data?.students.find((s) => s.studentId === studentId);
|
|
17425
17966
|
if (!student || !activityId) return;
|
|
@@ -17439,10 +17980,10 @@ var ActivityDetails = ({
|
|
|
17439
17980
|
},
|
|
17440
17981
|
[data?.students, activityId, fetchStudentCorrection]
|
|
17441
17982
|
);
|
|
17442
|
-
const handleCloseModal = (0,
|
|
17983
|
+
const handleCloseModal = (0, import_react57.useCallback)(() => {
|
|
17443
17984
|
setIsModalOpen(false);
|
|
17444
17985
|
}, []);
|
|
17445
|
-
const handleObservationSubmit = (0,
|
|
17986
|
+
const handleObservationSubmit = (0, import_react57.useCallback)(
|
|
17446
17987
|
async (observation, files) => {
|
|
17447
17988
|
if (!activityId || !correctionData?.studentId) return;
|
|
17448
17989
|
try {
|
|
@@ -17459,7 +18000,7 @@ var ActivityDetails = ({
|
|
|
17459
18000
|
},
|
|
17460
18001
|
[activityId, correctionData?.studentId, submitObservation]
|
|
17461
18002
|
);
|
|
17462
|
-
const tableData = (0,
|
|
18003
|
+
const tableData = (0, import_react57.useMemo)(() => {
|
|
17463
18004
|
if (!data?.students) return [];
|
|
17464
18005
|
return data.students.map((student) => ({
|
|
17465
18006
|
id: student.studentId,
|
|
@@ -17471,7 +18012,7 @@ var ActivityDetails = ({
|
|
|
17471
18012
|
score: student.score
|
|
17472
18013
|
}));
|
|
17473
18014
|
}, [data?.students]);
|
|
17474
|
-
const columns = (0,
|
|
18015
|
+
const columns = (0, import_react57.useMemo)(
|
|
17475
18016
|
() => createTableColumns(handleCorrectActivity),
|
|
17476
18017
|
[handleCorrectActivity]
|
|
17477
18018
|
);
|
|
@@ -17728,10 +18269,10 @@ var ActivityDetails = ({
|
|
|
17728
18269
|
};
|
|
17729
18270
|
|
|
17730
18271
|
// src/components/Support/Support.tsx
|
|
17731
|
-
var
|
|
18272
|
+
var import_react60 = require("react");
|
|
17732
18273
|
var import_react_hook_form = require("react-hook-form");
|
|
17733
18274
|
var import_zod2 = require("@hookform/resolvers/zod");
|
|
17734
|
-
var
|
|
18275
|
+
var import_react61 = require("@phosphor-icons/react");
|
|
17735
18276
|
var import_dayjs2 = __toESM(require("dayjs"));
|
|
17736
18277
|
|
|
17737
18278
|
// src/components/Support/schema/index.ts
|
|
@@ -17754,7 +18295,7 @@ var supportSchema = import_zod.z.object({
|
|
|
17754
18295
|
});
|
|
17755
18296
|
|
|
17756
18297
|
// src/components/Support/components/TicketModal.tsx
|
|
17757
|
-
var
|
|
18298
|
+
var import_react59 = require("react");
|
|
17758
18299
|
var import_dayjs = __toESM(require("dayjs"));
|
|
17759
18300
|
var import_pt_br = require("dayjs/locale/pt-br");
|
|
17760
18301
|
|
|
@@ -17834,19 +18375,19 @@ var mapInternalStatusToApi = (internalStatus) => {
|
|
|
17834
18375
|
};
|
|
17835
18376
|
|
|
17836
18377
|
// src/components/Support/utils/supportUtils.tsx
|
|
17837
|
-
var
|
|
18378
|
+
var import_react58 = require("@phosphor-icons/react");
|
|
17838
18379
|
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
17839
18380
|
var getCategoryIcon = (category, size = 16) => {
|
|
17840
18381
|
if (!category) return null;
|
|
17841
18382
|
switch (category) {
|
|
17842
18383
|
case "acesso" /* ACESSO */:
|
|
17843
|
-
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
18384
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_react58.KeyIcon, { size });
|
|
17844
18385
|
case "tecnico" /* TECNICO */:
|
|
17845
|
-
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
18386
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_react58.BugIcon, { size });
|
|
17846
18387
|
case "outros" /* OUTROS */:
|
|
17847
|
-
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
18388
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_react58.InfoIcon, { size });
|
|
17848
18389
|
default:
|
|
17849
|
-
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
18390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_react58.InfoIcon, { size });
|
|
17850
18391
|
}
|
|
17851
18392
|
};
|
|
17852
18393
|
|
|
@@ -17876,17 +18417,17 @@ var TicketModal = ({
|
|
|
17876
18417
|
apiClient,
|
|
17877
18418
|
userId
|
|
17878
18419
|
}) => {
|
|
17879
|
-
const [showCloseConfirmation, setShowCloseConfirmation] = (0,
|
|
17880
|
-
const [responseText, setResponseText] = (0,
|
|
17881
|
-
const [answers, setAnswers] = (0,
|
|
17882
|
-
const [isSubmittingAnswer, setIsSubmittingAnswer] = (0,
|
|
17883
|
-
const [isLoadingAnswers, setIsLoadingAnswers] = (0,
|
|
18420
|
+
const [showCloseConfirmation, setShowCloseConfirmation] = (0, import_react59.useState)(false);
|
|
18421
|
+
const [responseText, setResponseText] = (0, import_react59.useState)("");
|
|
18422
|
+
const [answers, setAnswers] = (0, import_react59.useState)([]);
|
|
18423
|
+
const [isSubmittingAnswer, setIsSubmittingAnswer] = (0, import_react59.useState)(false);
|
|
18424
|
+
const [isLoadingAnswers, setIsLoadingAnswers] = (0, import_react59.useState)(false);
|
|
17884
18425
|
const handleCloseTicket = () => {
|
|
17885
18426
|
onTicketClose?.(ticket.id);
|
|
17886
18427
|
setShowCloseConfirmation(false);
|
|
17887
18428
|
onClose();
|
|
17888
18429
|
};
|
|
17889
|
-
const fetchAnswers = (0,
|
|
18430
|
+
const fetchAnswers = (0, import_react59.useCallback)(async () => {
|
|
17890
18431
|
if (!ticket.id || ticket.status !== "respondido" /* RESPONDIDO */) return;
|
|
17891
18432
|
setIsLoadingAnswers(true);
|
|
17892
18433
|
try {
|
|
@@ -17925,7 +18466,7 @@ var TicketModal = ({
|
|
|
17925
18466
|
}
|
|
17926
18467
|
};
|
|
17927
18468
|
const canCloseTicket = ticket.status !== "encerrado" /* ENCERRADO */;
|
|
17928
|
-
(0,
|
|
18469
|
+
(0, import_react59.useEffect)(() => {
|
|
17929
18470
|
if (isOpen) {
|
|
17930
18471
|
setResponseText("");
|
|
17931
18472
|
(async () => {
|
|
@@ -18263,7 +18804,7 @@ var TicketCard = ({
|
|
|
18263
18804
|
getCategoryIcon(ticket.category, 18),
|
|
18264
18805
|
getCategoryText(ticket.category)
|
|
18265
18806
|
] }),
|
|
18266
|
-
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
18807
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_react61.CaretRightIcon, { size: 24, className: "text-text-800" })
|
|
18267
18808
|
] })
|
|
18268
18809
|
]
|
|
18269
18810
|
},
|
|
@@ -18308,21 +18849,21 @@ var Support = ({
|
|
|
18308
18849
|
onTicketCreated,
|
|
18309
18850
|
onTicketClosed
|
|
18310
18851
|
}) => {
|
|
18311
|
-
const [activeTab, setActiveTab] = (0,
|
|
18312
|
-
const [selectedProblem, setSelectedProblem] = (0,
|
|
18313
|
-
const [statusFilter, setStatusFilter] = (0,
|
|
18314
|
-
const [categoryFilter, setCategoryFilter] = (0,
|
|
18315
|
-
const [selectedTicket, setSelectedTicket] = (0,
|
|
18852
|
+
const [activeTab, setActiveTab] = (0, import_react60.useState)("criar-pedido");
|
|
18853
|
+
const [selectedProblem, setSelectedProblem] = (0, import_react60.useState)(null);
|
|
18854
|
+
const [statusFilter, setStatusFilter] = (0, import_react60.useState)("todos");
|
|
18855
|
+
const [categoryFilter, setCategoryFilter] = (0, import_react60.useState)("todos");
|
|
18856
|
+
const [selectedTicket, setSelectedTicket] = (0, import_react60.useState)(
|
|
18316
18857
|
null
|
|
18317
18858
|
);
|
|
18318
|
-
const [isModalOpen, setIsModalOpen] = (0,
|
|
18319
|
-
const [submitError, setSubmitError] = (0,
|
|
18320
|
-
const [showSuccessToast, setShowSuccessToast] = (0,
|
|
18321
|
-
const [showCloseSuccessToast, setShowCloseSuccessToast] = (0,
|
|
18322
|
-
const [showCloseErrorToast, setShowCloseErrorToast] = (0,
|
|
18323
|
-
const [allTickets, setAllTickets] = (0,
|
|
18324
|
-
const [loadingTickets, setLoadingTickets] = (0,
|
|
18325
|
-
const [currentPage, setCurrentPage] = (0,
|
|
18859
|
+
const [isModalOpen, setIsModalOpen] = (0, import_react60.useState)(false);
|
|
18860
|
+
const [submitError, setSubmitError] = (0, import_react60.useState)(null);
|
|
18861
|
+
const [showSuccessToast, setShowSuccessToast] = (0, import_react60.useState)(false);
|
|
18862
|
+
const [showCloseSuccessToast, setShowCloseSuccessToast] = (0, import_react60.useState)(false);
|
|
18863
|
+
const [showCloseErrorToast, setShowCloseErrorToast] = (0, import_react60.useState)(false);
|
|
18864
|
+
const [allTickets, setAllTickets] = (0, import_react60.useState)([]);
|
|
18865
|
+
const [loadingTickets, setLoadingTickets] = (0, import_react60.useState)(false);
|
|
18866
|
+
const [currentPage, setCurrentPage] = (0, import_react60.useState)(1);
|
|
18326
18867
|
const ITEMS_PER_PAGE = 10;
|
|
18327
18868
|
const handlePrevPage = () => {
|
|
18328
18869
|
if (currentPage > 1) {
|
|
@@ -18335,13 +18876,13 @@ var Support = ({
|
|
|
18335
18876
|
setCurrentPage(currentPage + 1);
|
|
18336
18877
|
}
|
|
18337
18878
|
};
|
|
18338
|
-
(0,
|
|
18879
|
+
(0, import_react60.useEffect)(() => {
|
|
18339
18880
|
if (activeTab === "historico") {
|
|
18340
18881
|
fetchTickets(statusFilter);
|
|
18341
18882
|
setCurrentPage(1);
|
|
18342
18883
|
}
|
|
18343
18884
|
}, [activeTab, statusFilter]);
|
|
18344
|
-
(0,
|
|
18885
|
+
(0, import_react60.useEffect)(() => {
|
|
18345
18886
|
setCurrentPage(1);
|
|
18346
18887
|
}, [categoryFilter]);
|
|
18347
18888
|
const convertApiTicketToComponent = (apiTicket) => {
|
|
@@ -18471,17 +19012,17 @@ var Support = ({
|
|
|
18471
19012
|
{
|
|
18472
19013
|
id: "tecnico" /* TECNICO */,
|
|
18473
19014
|
title: "T\xE9cnico",
|
|
18474
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
19015
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_react61.BugIcon, { size: 24 })
|
|
18475
19016
|
},
|
|
18476
19017
|
{
|
|
18477
19018
|
id: "acesso" /* ACESSO */,
|
|
18478
19019
|
title: "Acesso",
|
|
18479
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
19020
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_react61.KeyIcon, { size: 24 })
|
|
18480
19021
|
},
|
|
18481
19022
|
{
|
|
18482
19023
|
id: "outros" /* OUTROS */,
|
|
18483
19024
|
title: "Outros",
|
|
18484
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
19025
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_react61.InfoIcon, { size: 24 })
|
|
18485
19026
|
}
|
|
18486
19027
|
];
|
|
18487
19028
|
const emptyImage = emptyStateImage || suporthistory_default;
|
|
@@ -18601,15 +19142,15 @@ var Support = ({
|
|
|
18601
19142
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(SelectContent, { children: [
|
|
18602
19143
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SelectItem, { value: "todos", children: "Todos" }),
|
|
18603
19144
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(SelectItem, { value: "tecnico" /* TECNICO */, children: [
|
|
18604
|
-
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
19145
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_react61.BugIcon, { size: 16 }),
|
|
18605
19146
|
" T\xE9cnico"
|
|
18606
19147
|
] }),
|
|
18607
19148
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(SelectItem, { value: "acesso" /* ACESSO */, children: [
|
|
18608
|
-
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
19149
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_react61.KeyIcon, { size: 16 }),
|
|
18609
19150
|
" Acesso"
|
|
18610
19151
|
] }),
|
|
18611
19152
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(SelectItem, { value: "outros" /* OUTROS */, children: [
|
|
18612
|
-
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
19153
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_react61.InfoIcon, { size: 16 }),
|
|
18613
19154
|
" Outros"
|
|
18614
19155
|
] })
|
|
18615
19156
|
] })
|
|
@@ -18852,8 +19393,10 @@ var Support_default = Support;
|
|
|
18852
19393
|
VideoPlayer,
|
|
18853
19394
|
Whiteboard,
|
|
18854
19395
|
cn,
|
|
19396
|
+
createActivityFiltersDataHook,
|
|
18855
19397
|
createNotificationStore,
|
|
18856
19398
|
createNotificationsHook,
|
|
19399
|
+
createUseActivityFiltersData,
|
|
18857
19400
|
createUseNotificationStore,
|
|
18858
19401
|
createUseNotifications,
|
|
18859
19402
|
createZustandAuthAdapter,
|
|
@@ -18897,6 +19440,7 @@ var Support_default = Support;
|
|
|
18897
19440
|
useBreadcrumbBuilder,
|
|
18898
19441
|
useInstitutionId,
|
|
18899
19442
|
useMobile,
|
|
19443
|
+
useQuestionFiltersStore,
|
|
18900
19444
|
useQuizStore,
|
|
18901
19445
|
useRouteAuth,
|
|
18902
19446
|
useTableFilter,
|