@creopse/react 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-B7GqfDTJ.js → content-CM9eJ2st.js} +353 -9
- package/dist/{index-C3UpNpqk.cjs → content-WeAhwlM_.cjs} +348 -4
- package/dist/hooks/index.cjs +7 -392
- package/dist/hooks/index.mjs +7 -392
- package/dist/index.cjs +206 -46
- package/dist/index.mjs +185 -25
- package/package.json +4 -2
- package/types/components/RootContainer/RootContainer.d.ts +1 -8
- package/types/components/RootContainer/index.d.ts +1 -1
- package/types/core/contexts.d.ts +1 -1
- package/types/core/props-manager.d.ts +7 -6
- package/types/hooks/content.d.ts +1 -8
- package/types/hooks/props.d.ts +3 -2
- package/types/hooks/setup.d.ts +7 -0
- package/types/index.d.ts +1 -1
- package/types/types/plugin.d.ts +7 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { usePage, router } from "@inertiajs/react";
|
|
2
|
-
import React__default, { createContext, useContext, useMemo, useCallback } from "react";
|
|
2
|
+
import React__default, { createContext, useContext, useMemo, useCallback, useState, useEffect } from "react";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
5
5
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
@@ -6933,6 +6933,28 @@ const useApi = () => {
|
|
|
6933
6933
|
handleError
|
|
6934
6934
|
};
|
|
6935
6935
|
};
|
|
6936
|
+
const useProps = () => {
|
|
6937
|
+
const manager = useContext(PropsContext);
|
|
6938
|
+
const page = usePage();
|
|
6939
|
+
const [props, setProps] = useState(
|
|
6940
|
+
manager ? manager.getState().props : {}
|
|
6941
|
+
);
|
|
6942
|
+
useEffect(() => {
|
|
6943
|
+
if (!manager) return;
|
|
6944
|
+
setProps(manager.getState().props);
|
|
6945
|
+
const unsubscribe = manager.subscribe((newProps) => {
|
|
6946
|
+
setProps(newProps);
|
|
6947
|
+
});
|
|
6948
|
+
return unsubscribe;
|
|
6949
|
+
}, [manager]);
|
|
6950
|
+
if (!manager) {
|
|
6951
|
+
console.warn(
|
|
6952
|
+
"[@creopse/react] Using native Inertia props - live preview disabled"
|
|
6953
|
+
);
|
|
6954
|
+
return page.props;
|
|
6955
|
+
}
|
|
6956
|
+
return props;
|
|
6957
|
+
};
|
|
6936
6958
|
const useMediaQuery = (query) => {
|
|
6937
6959
|
const [matches, setMatches] = React__default.useState(false);
|
|
6938
6960
|
React__default.useEffect(() => {
|
|
@@ -6947,6 +6969,7 @@ const useMediaQuery = (query) => {
|
|
|
6947
6969
|
return matches;
|
|
6948
6970
|
};
|
|
6949
6971
|
const useHelper = () => {
|
|
6972
|
+
const props = useProps();
|
|
6950
6973
|
const page = usePage();
|
|
6951
6974
|
const { request } = useApi();
|
|
6952
6975
|
const { apiBaseUrl, langKey } = useConfig();
|
|
@@ -7081,15 +7104,15 @@ const useHelper = () => {
|
|
|
7081
7104
|
const updateLang = useCallback(
|
|
7082
7105
|
async (val, reload = true, updateUserPrefs = true) => {
|
|
7083
7106
|
localStorage.setItem(langKey, val);
|
|
7084
|
-
if (
|
|
7085
|
-
const userPrefs =
|
|
7107
|
+
if (props.isUserLoggedIn && updateUserPrefs) {
|
|
7108
|
+
const userPrefs = props.userData?.preferences || {
|
|
7086
7109
|
inAppNotifEnabled: Bool.TRUE,
|
|
7087
7110
|
emailNotifEnabled: Bool.TRUE,
|
|
7088
7111
|
locale: val
|
|
7089
7112
|
};
|
|
7090
7113
|
userPrefs.locale = val;
|
|
7091
7114
|
await request({
|
|
7092
|
-
url: `/users/self/${
|
|
7115
|
+
url: `/users/self/${props.userData?.id}`,
|
|
7093
7116
|
method: "put",
|
|
7094
7117
|
data: {
|
|
7095
7118
|
preferences: userPrefs
|
|
@@ -7098,7 +7121,7 @@ const useHelper = () => {
|
|
|
7098
7121
|
}
|
|
7099
7122
|
if (reload) location.reload();
|
|
7100
7123
|
},
|
|
7101
|
-
[langKey,
|
|
7124
|
+
[langKey, props, request]
|
|
7102
7125
|
);
|
|
7103
7126
|
const displayFormErrors = useCallback(
|
|
7104
7127
|
(errors, displayError) => {
|
|
@@ -7780,15 +7803,336 @@ function requireLodash_clonedeep() {
|
|
|
7780
7803
|
}
|
|
7781
7804
|
var lodash_clonedeepExports = requireLodash_clonedeep();
|
|
7782
7805
|
const cloneDeep = /* @__PURE__ */ getDefaultExportFromCjs(lodash_clonedeepExports);
|
|
7806
|
+
const useContent = () => {
|
|
7807
|
+
const { request } = useApi();
|
|
7808
|
+
const { fileUrl } = useHelper();
|
|
7809
|
+
const props = useProps();
|
|
7810
|
+
const page = usePage();
|
|
7811
|
+
const pageData = useMemo(
|
|
7812
|
+
() => props.pageData,
|
|
7813
|
+
[props.pageData]
|
|
7814
|
+
);
|
|
7815
|
+
const newsArticle = useMemo(
|
|
7816
|
+
() => props.article,
|
|
7817
|
+
[props.article]
|
|
7818
|
+
);
|
|
7819
|
+
const newsCategory = useMemo(
|
|
7820
|
+
() => props.category,
|
|
7821
|
+
[props.category]
|
|
7822
|
+
);
|
|
7823
|
+
const newsTag = useMemo(
|
|
7824
|
+
() => props.tag,
|
|
7825
|
+
[props.tag]
|
|
7826
|
+
);
|
|
7827
|
+
const contentModelItem = useMemo(
|
|
7828
|
+
() => props.contentModelItem,
|
|
7829
|
+
[props.contentModelItem]
|
|
7830
|
+
);
|
|
7831
|
+
const getSectionData = useCallback(
|
|
7832
|
+
(key) => {
|
|
7833
|
+
if (!key) return null;
|
|
7834
|
+
const keyParts = key.split("__");
|
|
7835
|
+
const slug = keyParts.length ? keyParts[0] : "";
|
|
7836
|
+
const linkId = keyParts.length > 1 ? keyParts[1] : "";
|
|
7837
|
+
return props.pageData?.sections?.find(
|
|
7838
|
+
(section) => section.slug === slug && section.pivot?.linkId === linkId
|
|
7839
|
+
)?.pivot?.data || null;
|
|
7840
|
+
},
|
|
7841
|
+
[props.pageData?.sections]
|
|
7842
|
+
);
|
|
7843
|
+
const getSectionRootData = useCallback(
|
|
7844
|
+
(key) => getSectionData(key)?.index,
|
|
7845
|
+
[getSectionData]
|
|
7846
|
+
);
|
|
7847
|
+
const getSectionSettings = useCallback(
|
|
7848
|
+
(key) => {
|
|
7849
|
+
if (!key) return null;
|
|
7850
|
+
const keyParts = key.split("__");
|
|
7851
|
+
const slug = keyParts.length ? keyParts[0] : "";
|
|
7852
|
+
const linkId = keyParts.length > 1 ? keyParts[1] : "";
|
|
7853
|
+
return props.pageData?.sections?.find(
|
|
7854
|
+
(section) => section.slug === slug && section.pivot?.linkId === linkId
|
|
7855
|
+
)?.pivot?.settings || null;
|
|
7856
|
+
},
|
|
7857
|
+
[props.pageData?.sections]
|
|
7858
|
+
);
|
|
7859
|
+
const getSectionSettingsGroup = useCallback(
|
|
7860
|
+
(key, group) => {
|
|
7861
|
+
const settings = getSectionSettings(key);
|
|
7862
|
+
return settings?.[group];
|
|
7863
|
+
},
|
|
7864
|
+
[getSectionSettings]
|
|
7865
|
+
);
|
|
7866
|
+
const getSectionSetting = useCallback(
|
|
7867
|
+
(key, group, name) => {
|
|
7868
|
+
const settings = getSectionSettingsGroup(key, group);
|
|
7869
|
+
return settings?.[name];
|
|
7870
|
+
},
|
|
7871
|
+
[getSectionSettingsGroup]
|
|
7872
|
+
);
|
|
7873
|
+
const getAnySectionData = useCallback(
|
|
7874
|
+
async (sectionSlug, pageSlug, linkId = "default") => {
|
|
7875
|
+
const task = await request({
|
|
7876
|
+
url: `section-data/${sectionSlug}/source/${pageSlug}/link/${linkId}`
|
|
7877
|
+
});
|
|
7878
|
+
if (task.success && task.result) {
|
|
7879
|
+
return task.result.data;
|
|
7880
|
+
}
|
|
7881
|
+
return null;
|
|
7882
|
+
},
|
|
7883
|
+
[request]
|
|
7884
|
+
);
|
|
7885
|
+
const getContentModel = useCallback(
|
|
7886
|
+
(name) => {
|
|
7887
|
+
return props?.contentModels?.find(
|
|
7888
|
+
(contentModel) => contentModel.name === name
|
|
7889
|
+
);
|
|
7890
|
+
},
|
|
7891
|
+
[props?.contentModels]
|
|
7892
|
+
);
|
|
7893
|
+
const formatContentModelItemData = useCallback(
|
|
7894
|
+
(item) => {
|
|
7895
|
+
const { index: _, ...rest } = item.contentModelData;
|
|
7896
|
+
return {
|
|
7897
|
+
...item,
|
|
7898
|
+
data: {
|
|
7899
|
+
...item.contentModelData?.index,
|
|
7900
|
+
...rest
|
|
7901
|
+
}
|
|
7902
|
+
};
|
|
7903
|
+
},
|
|
7904
|
+
[]
|
|
7905
|
+
);
|
|
7906
|
+
const getContentModelItems = useCallback(
|
|
7907
|
+
async (name, filterByIsActive = true) => {
|
|
7908
|
+
const task = await request({
|
|
7909
|
+
url: `content-model/items?contentModelName=${name}${filterByIsActive ? "&isActive=true" : ""}`
|
|
7910
|
+
});
|
|
7911
|
+
if (task.success && task.result) {
|
|
7912
|
+
return (task.result.data || []).map(
|
|
7913
|
+
(item) => formatContentModelItemData(item)
|
|
7914
|
+
);
|
|
7915
|
+
}
|
|
7916
|
+
return [];
|
|
7917
|
+
},
|
|
7918
|
+
[request, formatContentModelItemData]
|
|
7919
|
+
);
|
|
7920
|
+
const getPaginatedContentModelItems = useCallback(
|
|
7921
|
+
async (name, pageSize, filterByIsActive = true) => {
|
|
7922
|
+
const task = await request({
|
|
7923
|
+
url: `content-model/items?pageSize=${pageSize}&contentModelName=${name}${filterByIsActive ? "&isActive=true" : ""}`
|
|
7924
|
+
});
|
|
7925
|
+
if (task.success && task.result) {
|
|
7926
|
+
const items = (task.result.data?.items || []).map(
|
|
7927
|
+
(item) => formatContentModelItemData(item)
|
|
7928
|
+
);
|
|
7929
|
+
const total = task.result.data?.meta?.total || 0;
|
|
7930
|
+
const currentPage = task.result.data?.meta?.currentPage || 1;
|
|
7931
|
+
return {
|
|
7932
|
+
items,
|
|
7933
|
+
total,
|
|
7934
|
+
currentPage
|
|
7935
|
+
};
|
|
7936
|
+
}
|
|
7937
|
+
return {
|
|
7938
|
+
items: [],
|
|
7939
|
+
total: 0,
|
|
7940
|
+
currentPage: 1
|
|
7941
|
+
};
|
|
7942
|
+
},
|
|
7943
|
+
[request, formatContentModelItemData]
|
|
7944
|
+
);
|
|
7945
|
+
const getMenu = useCallback(
|
|
7946
|
+
(name, filterByIsActive = true) => {
|
|
7947
|
+
const menu = props?.menus?.find((menu2) => menu2.name === name);
|
|
7948
|
+
if (menu) {
|
|
7949
|
+
menu.items = cloneDeep(
|
|
7950
|
+
menu.items?.filter((item) => !filterByIsActive || item.isActive)?.sort((a, b) => a.position - b.position)
|
|
7951
|
+
);
|
|
7952
|
+
}
|
|
7953
|
+
return menu;
|
|
7954
|
+
},
|
|
7955
|
+
[props?.menus]
|
|
7956
|
+
);
|
|
7957
|
+
const getMenuByLocation = useCallback(
|
|
7958
|
+
(name, filterByIsActive = true) => {
|
|
7959
|
+
const menu = props?.menus?.find((menu2) => menu2.location?.name === name);
|
|
7960
|
+
if (menu) {
|
|
7961
|
+
menu.items = cloneDeep(
|
|
7962
|
+
menu.items?.filter((item) => !filterByIsActive || item.isActive)?.sort((a, b) => a.position - b.position)
|
|
7963
|
+
);
|
|
7964
|
+
}
|
|
7965
|
+
return menu;
|
|
7966
|
+
},
|
|
7967
|
+
[props?.menus]
|
|
7968
|
+
);
|
|
7969
|
+
const getMenuItems = useCallback(
|
|
7970
|
+
(name, filterByIsVisible = true) => {
|
|
7971
|
+
return getMenu(name)?.items?.filter((item) => !filterByIsVisible || item.isVisible)?.sort((a, b) => a.position - b.position);
|
|
7972
|
+
},
|
|
7973
|
+
[getMenu]
|
|
7974
|
+
);
|
|
7975
|
+
const getMenuItemById = useCallback(
|
|
7976
|
+
(id) => {
|
|
7977
|
+
const menuItems = [];
|
|
7978
|
+
const menus = props?.menus || [];
|
|
7979
|
+
menus.forEach((menu) => {
|
|
7980
|
+
if (Array.isArray(menu.items)) menuItems.push(...menu.items);
|
|
7981
|
+
});
|
|
7982
|
+
return menuItems.find((item) => item.id === id);
|
|
7983
|
+
},
|
|
7984
|
+
[props?.menus]
|
|
7985
|
+
);
|
|
7986
|
+
const getMenuItemsByLocation = useCallback(
|
|
7987
|
+
(name, filterByIsVisible = true) => {
|
|
7988
|
+
return getMenuByLocation(name)?.items?.filter((item) => !filterByIsVisible || item.isVisible)?.sort((a, b) => a.position - b.position);
|
|
7989
|
+
},
|
|
7990
|
+
[getMenuByLocation]
|
|
7991
|
+
);
|
|
7992
|
+
const getMenuGroups = useCallback(
|
|
7993
|
+
(name, byLocation = false, filterByIsVisible = true) => {
|
|
7994
|
+
const groups = [];
|
|
7995
|
+
const items = byLocation ? getMenuItemsByLocation(name, filterByIsVisible) : getMenuItems(name, filterByIsVisible);
|
|
7996
|
+
if (items) {
|
|
7997
|
+
for (const item of items) {
|
|
7998
|
+
const groupAlreadyExists = groups.find(
|
|
7999
|
+
(group) => group.id === item.menuItemGroupId
|
|
8000
|
+
);
|
|
8001
|
+
if (!groupAlreadyExists) {
|
|
8002
|
+
const group = props?.menuItemGroups?.find(
|
|
8003
|
+
(group2) => group2.id === item.menuItemGroupId
|
|
8004
|
+
);
|
|
8005
|
+
if (group) groups.push(group);
|
|
8006
|
+
}
|
|
8007
|
+
}
|
|
8008
|
+
}
|
|
8009
|
+
return groups;
|
|
8010
|
+
},
|
|
8011
|
+
[getMenuItems, getMenuItemsByLocation, props?.menuItemGroups]
|
|
8012
|
+
);
|
|
8013
|
+
const getMenuItemsByGroup = useCallback(
|
|
8014
|
+
(name, groupId, byLocation = false, filterByIsVisible = true) => {
|
|
8015
|
+
const items = byLocation ? getMenuItemsByLocation(name, filterByIsVisible) : getMenuItems(name, filterByIsVisible);
|
|
8016
|
+
return items?.filter((item) => item.menuItemGroupId === groupId);
|
|
8017
|
+
},
|
|
8018
|
+
[getMenuItems, getMenuItemsByLocation]
|
|
8019
|
+
);
|
|
8020
|
+
const getMenuGroupedItems = useCallback(
|
|
8021
|
+
(name, byLocation = false, filterByIsVisible = true) => {
|
|
8022
|
+
const groups = getMenuGroups(name, byLocation);
|
|
8023
|
+
return groups.map((group) => ({
|
|
8024
|
+
group,
|
|
8025
|
+
items: getMenuItemsByGroup(
|
|
8026
|
+
name,
|
|
8027
|
+
group.id || 0,
|
|
8028
|
+
byLocation,
|
|
8029
|
+
filterByIsVisible
|
|
8030
|
+
)
|
|
8031
|
+
}));
|
|
8032
|
+
},
|
|
8033
|
+
[getMenuGroups, getMenuItemsByGroup]
|
|
8034
|
+
);
|
|
8035
|
+
const getMenuUngroupedItems = useCallback(
|
|
8036
|
+
(name, byLocation = false, filterByIsVisible = true) => {
|
|
8037
|
+
const items = byLocation ? getMenuItemsByLocation(name, filterByIsVisible) : getMenuItems(name, filterByIsVisible);
|
|
8038
|
+
return items?.filter((item) => !item.menuItemGroupId);
|
|
8039
|
+
},
|
|
8040
|
+
[getMenuItems, getMenuItemsByLocation]
|
|
8041
|
+
);
|
|
8042
|
+
const getAppInformationValue = useCallback(
|
|
8043
|
+
(key, type = "string") => {
|
|
8044
|
+
const appInformation = props.appInformation;
|
|
8045
|
+
const setting = appInformation.find((s) => s.key === key);
|
|
8046
|
+
let value = "";
|
|
8047
|
+
switch (type) {
|
|
8048
|
+
case "number":
|
|
8049
|
+
value = setting && parseInt(setting.value) && !isNaN(parseInt(setting.value)) ? parseInt(setting.value) : 0;
|
|
8050
|
+
break;
|
|
8051
|
+
case "boolean":
|
|
8052
|
+
value = setting && !isNaN(parseInt(setting.value)) && parseInt(setting.value) > 0;
|
|
8053
|
+
break;
|
|
8054
|
+
case "object":
|
|
8055
|
+
value = setting && setting.value ? JSON.parse(setting.value) : {};
|
|
8056
|
+
break;
|
|
8057
|
+
case "array":
|
|
8058
|
+
value = setting && setting.value ? JSON.parse(setting.value) : [];
|
|
8059
|
+
break;
|
|
8060
|
+
default:
|
|
8061
|
+
value = setting && setting.value ? setting.value : "";
|
|
8062
|
+
break;
|
|
8063
|
+
}
|
|
8064
|
+
return value;
|
|
8065
|
+
},
|
|
8066
|
+
[props.appInformation]
|
|
8067
|
+
);
|
|
8068
|
+
const appPrimaryColor = useMemo(() => {
|
|
8069
|
+
const primaryColor = getAppInformationValue(
|
|
8070
|
+
"primaryColor"
|
|
8071
|
+
);
|
|
8072
|
+
return primaryColor || "#005B97";
|
|
8073
|
+
}, [getAppInformationValue]);
|
|
8074
|
+
const appSecondaryColor = useMemo(() => {
|
|
8075
|
+
const secondaryColor = getAppInformationValue(
|
|
8076
|
+
"secondaryColor"
|
|
8077
|
+
);
|
|
8078
|
+
return secondaryColor || "#1E9CD7";
|
|
8079
|
+
}, [getAppInformationValue]);
|
|
8080
|
+
const appAccentColor = useMemo(() => {
|
|
8081
|
+
const accentColor = getAppInformationValue("accentColor");
|
|
8082
|
+
return accentColor || "#FF6501";
|
|
8083
|
+
}, [getAppInformationValue]);
|
|
8084
|
+
const icon = useMemo(() => {
|
|
8085
|
+
const icon2 = getAppInformationValue("icon");
|
|
8086
|
+
return fileUrl(icon2) || "";
|
|
8087
|
+
}, [getAppInformationValue, fileUrl]);
|
|
8088
|
+
const logo = useMemo(() => {
|
|
8089
|
+
const logo2 = getAppInformationValue("logo");
|
|
8090
|
+
return fileUrl(logo2) || "";
|
|
8091
|
+
}, [getAppInformationValue, fileUrl]);
|
|
8092
|
+
return {
|
|
8093
|
+
logo,
|
|
8094
|
+
icon,
|
|
8095
|
+
page,
|
|
8096
|
+
pageData,
|
|
8097
|
+
newsArticle,
|
|
8098
|
+
newsCategory,
|
|
8099
|
+
newsTag,
|
|
8100
|
+
contentModelItem,
|
|
8101
|
+
getMenu,
|
|
8102
|
+
getMenuByLocation,
|
|
8103
|
+
getMenuItems,
|
|
8104
|
+
getMenuItemById,
|
|
8105
|
+
getMenuItemsByLocation,
|
|
8106
|
+
getMenuGroups,
|
|
8107
|
+
getMenuItemsByGroup,
|
|
8108
|
+
getMenuGroupedItems,
|
|
8109
|
+
getMenuUngroupedItems,
|
|
8110
|
+
getSectionData,
|
|
8111
|
+
getSectionSettings,
|
|
8112
|
+
getSectionSettingsGroup,
|
|
8113
|
+
getSectionSetting,
|
|
8114
|
+
getAnySectionData,
|
|
8115
|
+
getSectionRootData,
|
|
8116
|
+
getContentModel,
|
|
8117
|
+
getContentModelItems,
|
|
8118
|
+
getPaginatedContentModelItems,
|
|
8119
|
+
getAppInformationValue,
|
|
8120
|
+
appAccentColor,
|
|
8121
|
+
appPrimaryColor,
|
|
8122
|
+
appSecondaryColor
|
|
8123
|
+
};
|
|
8124
|
+
};
|
|
7783
8125
|
export {
|
|
7784
8126
|
ConfigContext as C,
|
|
7785
8127
|
EditorMessageType as E,
|
|
7786
8128
|
PropsContext as P,
|
|
7787
|
-
|
|
7788
|
-
|
|
7789
|
-
|
|
8129
|
+
ResolveSectionsContext as R,
|
|
8130
|
+
useContent as a,
|
|
8131
|
+
useProps as b,
|
|
7790
8132
|
cloneDeep as c,
|
|
7791
|
-
|
|
8133
|
+
RouterContext as d,
|
|
8134
|
+
useApi as e,
|
|
8135
|
+
useConfig as f,
|
|
7792
8136
|
slideToId as s,
|
|
7793
8137
|
useHelper as u
|
|
7794
8138
|
};
|