analytica-frontend-lib 1.1.93 → 1.1.94
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/BreadcrumbMenu/breadcrumbStore/index.d.mts +77 -0
- package/dist/BreadcrumbMenu/breadcrumbStore/index.d.ts +77 -0
- package/dist/BreadcrumbMenu/breadcrumbStore/index.js +146 -0
- package/dist/BreadcrumbMenu/breadcrumbStore/index.js.map +1 -0
- package/dist/BreadcrumbMenu/breadcrumbStore/index.mjs +120 -0
- package/dist/BreadcrumbMenu/breadcrumbStore/index.mjs.map +1 -0
- package/dist/BreadcrumbMenu/index.d.mts +31 -0
- package/dist/BreadcrumbMenu/index.d.ts +31 -0
- package/dist/BreadcrumbMenu/index.js +308 -0
- package/dist/BreadcrumbMenu/index.js.map +1 -0
- package/dist/BreadcrumbMenu/index.mjs +289 -0
- package/dist/BreadcrumbMenu/index.mjs.map +1 -0
- package/dist/BreadcrumbMenu/useBreadcrumbBuilder/index.d.mts +48 -0
- package/dist/BreadcrumbMenu/useBreadcrumbBuilder/index.d.ts +48 -0
- package/dist/BreadcrumbMenu/useBreadcrumbBuilder/index.js +189 -0
- package/dist/BreadcrumbMenu/useBreadcrumbBuilder/index.js.map +1 -0
- package/dist/BreadcrumbMenu/useBreadcrumbBuilder/index.mjs +164 -0
- package/dist/BreadcrumbMenu/useBreadcrumbBuilder/index.mjs.map +1 -0
- package/dist/BreadcrumbMenu/useUrlParams/index.d.mts +28 -0
- package/dist/BreadcrumbMenu/useUrlParams/index.d.ts +28 -0
- package/dist/BreadcrumbMenu/useUrlParams/index.js +43 -0
- package/dist/BreadcrumbMenu/useUrlParams/index.js.map +1 -0
- package/dist/BreadcrumbMenu/useUrlParams/index.mjs +18 -0
- package/dist/BreadcrumbMenu/useUrlParams/index.mjs.map +1 -0
- package/dist/index.css +3 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +244 -18
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +236 -14
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +3 -0
- package/dist/styles.css.map +1 -1
- package/package.json +2 -1
package/dist/index.mjs
CHANGED
|
@@ -12486,16 +12486,234 @@ var QuizListResultByMateria = ({
|
|
|
12486
12486
|
] });
|
|
12487
12487
|
};
|
|
12488
12488
|
|
|
12489
|
-
// src/
|
|
12489
|
+
// src/components/BreadcrumbMenu/BreadcrumbMenu.tsx
|
|
12490
|
+
import { useNavigate } from "react-router-dom";
|
|
12491
|
+
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
12492
|
+
var BreadcrumbMenu = ({
|
|
12493
|
+
breadcrumbs,
|
|
12494
|
+
onBreadcrumbClick,
|
|
12495
|
+
className = "!px-0 py-4 flex-wrap w-full"
|
|
12496
|
+
}) => {
|
|
12497
|
+
const navigate = useNavigate();
|
|
12498
|
+
const handleClick = (breadcrumb, index) => {
|
|
12499
|
+
if (onBreadcrumbClick) {
|
|
12500
|
+
onBreadcrumbClick(breadcrumb, index);
|
|
12501
|
+
}
|
|
12502
|
+
navigate(breadcrumb.url);
|
|
12503
|
+
};
|
|
12504
|
+
return /* @__PURE__ */ jsx53(
|
|
12505
|
+
Menu,
|
|
12506
|
+
{
|
|
12507
|
+
value: `breadcrumb-${breadcrumbs.length - 1}`,
|
|
12508
|
+
defaultValue: "breadcrumb-0",
|
|
12509
|
+
variant: "breadcrumb",
|
|
12510
|
+
className,
|
|
12511
|
+
children: /* @__PURE__ */ jsx53(MenuContent, { className: "w-full flex flex-row flex-wrap gap-2 !px-0", children: breadcrumbs.map((breadcrumb, index) => {
|
|
12512
|
+
const isLast = index === breadcrumbs.length - 1;
|
|
12513
|
+
const hasSeparator = !isLast;
|
|
12514
|
+
return /* @__PURE__ */ jsx53(
|
|
12515
|
+
MenuItem,
|
|
12516
|
+
{
|
|
12517
|
+
variant: "breadcrumb",
|
|
12518
|
+
value: `breadcrumb-${index}`,
|
|
12519
|
+
className: "!p-0 whitespace-nowrap",
|
|
12520
|
+
onClick: () => handleClick(breadcrumb, index),
|
|
12521
|
+
separator: hasSeparator,
|
|
12522
|
+
children: breadcrumb.name
|
|
12523
|
+
},
|
|
12524
|
+
breadcrumb.id
|
|
12525
|
+
);
|
|
12526
|
+
}) })
|
|
12527
|
+
}
|
|
12528
|
+
);
|
|
12529
|
+
};
|
|
12530
|
+
|
|
12531
|
+
// src/components/BreadcrumbMenu/useBreadcrumbBuilder.ts
|
|
12532
|
+
import { useEffect as useEffect22 } from "react";
|
|
12533
|
+
|
|
12534
|
+
// src/components/BreadcrumbMenu/breadcrumbStore.ts
|
|
12535
|
+
import { create as create10 } from "zustand";
|
|
12536
|
+
var useBreadcrumbStore = create10((set, get) => ({
|
|
12537
|
+
breadcrumbs: {},
|
|
12538
|
+
setBreadcrumbs: (namespace, items) => {
|
|
12539
|
+
set((state) => ({
|
|
12540
|
+
breadcrumbs: {
|
|
12541
|
+
...state.breadcrumbs,
|
|
12542
|
+
[namespace]: items
|
|
12543
|
+
}
|
|
12544
|
+
}));
|
|
12545
|
+
},
|
|
12546
|
+
addBreadcrumb: (namespace, item) => {
|
|
12547
|
+
set((state) => {
|
|
12548
|
+
const current = state.breadcrumbs[namespace] || [];
|
|
12549
|
+
return {
|
|
12550
|
+
breadcrumbs: {
|
|
12551
|
+
...state.breadcrumbs,
|
|
12552
|
+
[namespace]: [...current, item]
|
|
12553
|
+
}
|
|
12554
|
+
};
|
|
12555
|
+
});
|
|
12556
|
+
},
|
|
12557
|
+
updateBreadcrumb: (namespace, itemId, updates) => {
|
|
12558
|
+
set((state) => {
|
|
12559
|
+
const current = state.breadcrumbs[namespace] || [];
|
|
12560
|
+
return {
|
|
12561
|
+
breadcrumbs: {
|
|
12562
|
+
...state.breadcrumbs,
|
|
12563
|
+
[namespace]: current.map(
|
|
12564
|
+
(item) => item.id === itemId ? { ...item, ...updates } : item
|
|
12565
|
+
)
|
|
12566
|
+
}
|
|
12567
|
+
};
|
|
12568
|
+
});
|
|
12569
|
+
},
|
|
12570
|
+
removeBreadcrumbFrom: (namespace, itemId) => {
|
|
12571
|
+
set((state) => {
|
|
12572
|
+
const current = state.breadcrumbs[namespace] || [];
|
|
12573
|
+
const index = current.findIndex((item) => item.id === itemId);
|
|
12574
|
+
if (index === -1) return state;
|
|
12575
|
+
return {
|
|
12576
|
+
breadcrumbs: {
|
|
12577
|
+
...state.breadcrumbs,
|
|
12578
|
+
[namespace]: current.slice(0, index)
|
|
12579
|
+
}
|
|
12580
|
+
};
|
|
12581
|
+
});
|
|
12582
|
+
},
|
|
12583
|
+
sliceBreadcrumbs: (namespace, index) => {
|
|
12584
|
+
set((state) => {
|
|
12585
|
+
const current = state.breadcrumbs[namespace] || [];
|
|
12586
|
+
return {
|
|
12587
|
+
breadcrumbs: {
|
|
12588
|
+
...state.breadcrumbs,
|
|
12589
|
+
[namespace]: current.slice(0, index + 1)
|
|
12590
|
+
}
|
|
12591
|
+
};
|
|
12592
|
+
});
|
|
12593
|
+
},
|
|
12594
|
+
clearBreadcrumbs: (namespace) => {
|
|
12595
|
+
set((state) => {
|
|
12596
|
+
const { [namespace]: _, ...rest } = state.breadcrumbs;
|
|
12597
|
+
return {
|
|
12598
|
+
breadcrumbs: rest
|
|
12599
|
+
};
|
|
12600
|
+
});
|
|
12601
|
+
},
|
|
12602
|
+
getBreadcrumbs: (namespace) => {
|
|
12603
|
+
return get().breadcrumbs[namespace] || [];
|
|
12604
|
+
}
|
|
12605
|
+
}));
|
|
12606
|
+
var useBreadcrumb = (namespace) => {
|
|
12607
|
+
const store = useBreadcrumbStore();
|
|
12608
|
+
const breadcrumbs = store.breadcrumbs[namespace] || [];
|
|
12609
|
+
return {
|
|
12610
|
+
breadcrumbs,
|
|
12611
|
+
/**
|
|
12612
|
+
* Define todos os breadcrumbs de uma vez
|
|
12613
|
+
*/
|
|
12614
|
+
setBreadcrumbs: (items) => {
|
|
12615
|
+
store.setBreadcrumbs(namespace, items);
|
|
12616
|
+
},
|
|
12617
|
+
/**
|
|
12618
|
+
* Adiciona um novo breadcrumb ao final
|
|
12619
|
+
*/
|
|
12620
|
+
addBreadcrumb: (item) => {
|
|
12621
|
+
store.addBreadcrumb(namespace, item);
|
|
12622
|
+
},
|
|
12623
|
+
/**
|
|
12624
|
+
* Atualiza um breadcrumb existente
|
|
12625
|
+
*/
|
|
12626
|
+
updateBreadcrumb: (itemId, updates) => {
|
|
12627
|
+
store.updateBreadcrumb(namespace, itemId, updates);
|
|
12628
|
+
},
|
|
12629
|
+
/**
|
|
12630
|
+
* Remove um breadcrumb e todos os seguintes
|
|
12631
|
+
*/
|
|
12632
|
+
removeBreadcrumbFrom: (itemId) => {
|
|
12633
|
+
store.removeBreadcrumbFrom(namespace, itemId);
|
|
12634
|
+
},
|
|
12635
|
+
/**
|
|
12636
|
+
* Mantém apenas os breadcrumbs até o índice especificado (inclusivo)
|
|
12637
|
+
*/
|
|
12638
|
+
sliceBreadcrumbs: (index) => {
|
|
12639
|
+
store.sliceBreadcrumbs(namespace, index);
|
|
12640
|
+
},
|
|
12641
|
+
/**
|
|
12642
|
+
* Limpa todos os breadcrumbs
|
|
12643
|
+
*/
|
|
12644
|
+
clearBreadcrumbs: () => {
|
|
12645
|
+
store.clearBreadcrumbs(namespace);
|
|
12646
|
+
}
|
|
12647
|
+
};
|
|
12648
|
+
};
|
|
12649
|
+
|
|
12650
|
+
// src/components/BreadcrumbMenu/useBreadcrumbBuilder.ts
|
|
12651
|
+
var isBreadcrumbWithData = (level) => {
|
|
12652
|
+
return "data" in level;
|
|
12653
|
+
};
|
|
12654
|
+
var useBreadcrumbBuilder = (config) => {
|
|
12655
|
+
const { namespace, root, levels } = config;
|
|
12656
|
+
const { breadcrumbs, setBreadcrumbs, sliceBreadcrumbs } = useBreadcrumb(namespace);
|
|
12657
|
+
const levelDependencies = levels.map(
|
|
12658
|
+
(level) => isBreadcrumbWithData(level) ? level.data : null
|
|
12659
|
+
);
|
|
12660
|
+
const levelUrlIds = levels.map((level) => level.urlId);
|
|
12661
|
+
useEffect22(() => {
|
|
12662
|
+
const newBreadcrumbs = [root];
|
|
12663
|
+
const previousIds = [];
|
|
12664
|
+
for (const level of levels) {
|
|
12665
|
+
const { urlId } = level;
|
|
12666
|
+
if (isBreadcrumbWithData(level)) {
|
|
12667
|
+
const { data, getId, getName, getUrl } = level;
|
|
12668
|
+
if (!data) break;
|
|
12669
|
+
const dataId = getId(data);
|
|
12670
|
+
if (urlId === void 0 || dataId !== urlId) break;
|
|
12671
|
+
newBreadcrumbs.push({
|
|
12672
|
+
id: dataId,
|
|
12673
|
+
name: getName(data),
|
|
12674
|
+
url: getUrl(data, previousIds)
|
|
12675
|
+
});
|
|
12676
|
+
previousIds.push(dataId);
|
|
12677
|
+
} else {
|
|
12678
|
+
const { breadcrumb } = level;
|
|
12679
|
+
if (urlId === void 0) break;
|
|
12680
|
+
newBreadcrumbs.push(breadcrumb);
|
|
12681
|
+
previousIds.push(breadcrumb.id);
|
|
12682
|
+
}
|
|
12683
|
+
}
|
|
12684
|
+
setBreadcrumbs(newBreadcrumbs);
|
|
12685
|
+
}, [namespace, ...levelDependencies, ...levelUrlIds, root.id]);
|
|
12686
|
+
return {
|
|
12687
|
+
breadcrumbs,
|
|
12688
|
+
sliceBreadcrumbs
|
|
12689
|
+
};
|
|
12690
|
+
};
|
|
12691
|
+
|
|
12692
|
+
// src/components/BreadcrumbMenu/useUrlParams.ts
|
|
12490
12693
|
import { useMemo as useMemo7 } from "react";
|
|
12694
|
+
import { useLocation as useLocation3 } from "react-router-dom";
|
|
12695
|
+
var useUrlParams = (config) => {
|
|
12696
|
+
const location = useLocation3();
|
|
12697
|
+
return useMemo7(() => {
|
|
12698
|
+
const segments = location.pathname.split("/").filter(Boolean);
|
|
12699
|
+
const params = {};
|
|
12700
|
+
for (const [key, index] of Object.entries(config)) {
|
|
12701
|
+
params[key] = segments[index];
|
|
12702
|
+
}
|
|
12703
|
+
return params;
|
|
12704
|
+
}, [location.pathname, config]);
|
|
12705
|
+
};
|
|
12706
|
+
|
|
12707
|
+
// src/hooks/useAppInitialization.ts
|
|
12708
|
+
import { useMemo as useMemo8 } from "react";
|
|
12491
12709
|
|
|
12492
12710
|
// src/hooks/useInstitution.ts
|
|
12493
|
-
import { useEffect as
|
|
12711
|
+
import { useEffect as useEffect23, useState as useState23 } from "react";
|
|
12494
12712
|
function useInstitutionId() {
|
|
12495
12713
|
const [institutionId, setInstitutionId] = useState23(() => {
|
|
12496
12714
|
return document.querySelector('meta[name="institution-id"]')?.getAttribute("content") ?? null;
|
|
12497
12715
|
});
|
|
12498
|
-
|
|
12716
|
+
useEffect23(() => {
|
|
12499
12717
|
const metaTag = document.querySelector('meta[name="institution-id"]');
|
|
12500
12718
|
if (!metaTag) return;
|
|
12501
12719
|
const observer = new MutationObserver(() => {
|
|
@@ -12512,9 +12730,9 @@ function useInstitutionId() {
|
|
|
12512
12730
|
}
|
|
12513
12731
|
|
|
12514
12732
|
// src/store/appStore.ts
|
|
12515
|
-
import { create as
|
|
12733
|
+
import { create as create11 } from "zustand";
|
|
12516
12734
|
import { createJSONStorage, persist as persist2 } from "zustand/middleware";
|
|
12517
|
-
var useAppStore =
|
|
12735
|
+
var useAppStore = create11()(
|
|
12518
12736
|
persist2(
|
|
12519
12737
|
(set, get) => ({
|
|
12520
12738
|
institutionId: null,
|
|
@@ -12558,9 +12776,9 @@ var useAppStore = create10()(
|
|
|
12558
12776
|
);
|
|
12559
12777
|
|
|
12560
12778
|
// src/store/authStore.ts
|
|
12561
|
-
import { create as
|
|
12779
|
+
import { create as create12 } from "zustand";
|
|
12562
12780
|
import { createJSONStorage as createJSONStorage2, persist as persist3 } from "zustand/middleware";
|
|
12563
|
-
var useAuthStore =
|
|
12781
|
+
var useAuthStore = create12()(
|
|
12564
12782
|
persist3(
|
|
12565
12783
|
(set, get) => ({
|
|
12566
12784
|
user: null,
|
|
@@ -12662,7 +12880,7 @@ var useAuthStore = create11()(
|
|
|
12662
12880
|
function useAppInitialization() {
|
|
12663
12881
|
const getInstitutionId = useInstitutionId();
|
|
12664
12882
|
const { initialize, initialized, institutionId } = useAppStore();
|
|
12665
|
-
const authFunctions =
|
|
12883
|
+
const authFunctions = useMemo8(
|
|
12666
12884
|
() => ({
|
|
12667
12885
|
checkAuth: async () => {
|
|
12668
12886
|
const { sessionInfo, tokens } = useAuthStore.getState();
|
|
@@ -12699,10 +12917,10 @@ function useAppInitialization() {
|
|
|
12699
12917
|
}
|
|
12700
12918
|
|
|
12701
12919
|
// src/hooks/useAppContent.ts
|
|
12702
|
-
import { useCallback as useCallback7, useEffect as
|
|
12703
|
-
import { useNavigate } from "react-router-dom";
|
|
12920
|
+
import { useCallback as useCallback7, useEffect as useEffect24, useMemo as useMemo9 } from "react";
|
|
12921
|
+
import { useNavigate as useNavigate2 } from "react-router-dom";
|
|
12704
12922
|
function useAppContent(config) {
|
|
12705
|
-
const navigate =
|
|
12923
|
+
const navigate = useNavigate2();
|
|
12706
12924
|
const { setTokens, setSessionInfo, setSelectedProfile } = useAuthStore();
|
|
12707
12925
|
const {
|
|
12708
12926
|
api,
|
|
@@ -12749,7 +12967,7 @@ function useAppContent(config) {
|
|
|
12749
12967
|
},
|
|
12750
12968
|
[navigate, onError]
|
|
12751
12969
|
);
|
|
12752
|
-
const urlAuthConfig =
|
|
12970
|
+
const urlAuthConfig = useMemo9(
|
|
12753
12971
|
() => ({
|
|
12754
12972
|
setTokens,
|
|
12755
12973
|
setSessionInfo,
|
|
@@ -12775,10 +12993,10 @@ function useAppContent(config) {
|
|
|
12775
12993
|
);
|
|
12776
12994
|
useUrlAuthentication(urlAuthConfig);
|
|
12777
12995
|
const { sessionInfo } = useAuth();
|
|
12778
|
-
const institutionIdToUse =
|
|
12996
|
+
const institutionIdToUse = useMemo9(() => {
|
|
12779
12997
|
return sessionInfo?.institutionId || getInstitutionId;
|
|
12780
12998
|
}, [sessionInfo?.institutionId, getInstitutionId]);
|
|
12781
|
-
|
|
12999
|
+
useEffect24(() => {
|
|
12782
13000
|
if (institutionIdToUse && !initialized) {
|
|
12783
13001
|
initialize(institutionIdToUse);
|
|
12784
13002
|
}
|
|
@@ -12796,6 +13014,7 @@ export {
|
|
|
12796
13014
|
AlternativesList,
|
|
12797
13015
|
AuthProvider,
|
|
12798
13016
|
Badge_default as Badge,
|
|
13017
|
+
BreadcrumbMenu,
|
|
12799
13018
|
Button_default as Button,
|
|
12800
13019
|
Calendar_default as Calendar,
|
|
12801
13020
|
CardAccordation,
|
|
@@ -12921,6 +13140,8 @@ export {
|
|
|
12921
13140
|
useAuth,
|
|
12922
13141
|
useAuthGuard,
|
|
12923
13142
|
useAuthStore,
|
|
13143
|
+
useBreadcrumb,
|
|
13144
|
+
useBreadcrumbBuilder,
|
|
12924
13145
|
useInstitutionId,
|
|
12925
13146
|
useMobile,
|
|
12926
13147
|
useQuizStore,
|
|
@@ -12929,6 +13150,7 @@ export {
|
|
|
12929
13150
|
useThemeStore,
|
|
12930
13151
|
ToastStore_default as useToastStore,
|
|
12931
13152
|
useUrlAuthentication,
|
|
13153
|
+
useUrlParams,
|
|
12932
13154
|
withAuth
|
|
12933
13155
|
};
|
|
12934
13156
|
//# sourceMappingURL=index.mjs.map
|