update files
All checks were successful
Build and Deploy Next.js + Nginx Docker Image / build-and-deploy (push) Successful in 57s
Build and Deploy Next.js + Nginx Docker Image / deploy (push) Successful in 8s

This commit is contained in:
Mohamadzadeh 2026-07-13 14:30:42 +03:30
parent 2ae702a8b3
commit 0719d095eb
6 changed files with 387 additions and 266 deletions

18
dist/chunks/client-COlxxEJZ.js vendored Normal file
View File

@ -0,0 +1,18 @@
import _ from "react-dom";
var r, t = _;
if (process.env.NODE_ENV === "production")
r = t.createRoot, t.hydrateRoot;
else {
var e = t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
r = function(o, n) {
e.usingClientEntryPoint = !0;
try {
return t.createRoot(o, n);
} finally {
e.usingClientEntryPoint = !1;
}
};
}
export {
r as c
};

23
dist/core.d.ts vendored
View File

@ -23,3 +23,26 @@ export function createApi(config: CreateApiConfig): {
useItem: any; useItem: any;
useAction: any; useAction: any;
}; };
// ----- BiProvider -----
export type BiProviderProps = {
children?: any;
apiBaseUrl?: string;
keycloakClientId?: string;
permissionClientId?: string;
loading?: any;
updateChecker?: boolean;
updateCheckerProps?: Record<string, any>;
keycloakUrl?: string;
keycloakRealm?: string;
permissionUrl?: string;
keycloakEnabled?: boolean;
permissionEnabled?: boolean;
theme?: any;
remoteUiEnabled?: boolean;
remoteUiUrl?: string;
remoteUiChakraProviderProps?: Record<string, any>;
};
export function BiProvider(props: BiProviderProps): any;

453
dist/core.js vendored

File diff suppressed because one or more lines are too long

88
dist/remote-ui.js vendored
View File

@ -1,92 +1,78 @@
import { jsx as h } from "react/jsx-runtime"; import { jsx as _ } from "react/jsx-runtime";
import v, { useRef as d, useEffect as R } from "react"; import g, { useRef as u, useEffect as m } from "react";
import P from "react-dom"; import { c as h } from "./chunks/client-COlxxEJZ.js";
import { Badge as y, ChakraProvider as O } from "@chakra-ui/react"; import { Badge as E, ChakraProvider as P } from "@chakra-ui/react";
var s, i = P; const p = "https://uikit.d.aiengines.ir/GBadge.js", d = "__UIKIT_REMOTE_DEPS__", s = "__UIKIT_REMOTE_CONFIG__", i = /* @__PURE__ */ new Map();
if (process.env.NODE_ENV === "production")
s = i.createRoot, i.hydrateRoot;
else {
var p = i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
s = function(e, r) {
p.usingClientEntryPoint = !0;
try {
return i.createRoot(e, r);
} finally {
p.usingClientEntryPoint = !1;
}
};
}
const E = "https://uikit.d.aiengines.ir/GBadge.js", f = "__UIKIT_REMOTE_DEPS__", l = "__UIKIT_REMOTE_CONFIG__", a = /* @__PURE__ */ new Map();
function w(e = {}) { function w(e = {}) {
if (typeof window > "u") return; if (typeof window > "u") return;
const r = window[f] || {}, o = window[l] || {}; const r = window[d] || {}, o = window[s] || {};
window[f] = { window[d] = {
...r, ...r,
React: e.React || r.React || v, React: e.React || r.React || g,
createRoot: e.createRoot || r.createRoot || s, createRoot: e.createRoot || r.createRoot || h,
ChakraProvider: e.ChakraProvider || r.ChakraProvider || O, ChakraProvider: e.ChakraProvider || r.ChakraProvider || P,
Badge: e.Badge || r.Badge || y, Badge: e.Badge || r.Badge || E,
theme: Object.prototype.hasOwnProperty.call(e, "theme") ? e.theme : r.theme, theme: Object.prototype.hasOwnProperty.call(e, "theme") ? e.theme : r.theme,
chakraProviderProps: { chakraProviderProps: {
...r.chakraProviderProps || {}, ...r.chakraProviderProps || {},
...e.chakraProviderProps || {} ...e.chakraProviderProps || {}
} }
}, window[l] = { }, window[s] = {
...o, ...o,
...e.remoteUrl ? { GBadgeUrl: e.remoteUrl } : {} ...e.remoteUrl ? { GBadgeUrl: e.remoteUrl } : {}
}; };
} }
function C() { function v() {
typeof window > "u" || window[f] || w(); typeof window > "u" || window[d] || w();
} }
function k() { function k() {
var e; var e;
return typeof window > "u" ? E : ((e = window[l]) == null ? void 0 : e.GBadgeUrl) || E; return typeof window > "u" ? p : ((e = window[s]) == null ? void 0 : e.GBadgeUrl) || p;
} }
function B() { function y() {
const e = k(); const e = k();
return a.has(e) || a.set( return i.has(e) || i.set(
e, e,
import( import(
/* webpackIgnore: true */ /* webpackIgnore: true */
/* @vite-ignore */ /* @vite-ignore */
e e
).catch((r) => { ).catch((r) => {
throw a.delete(e), r; throw i.delete(e), r;
}) })
), a.get(e); ), i.get(e);
} }
function T(e) { function B(e) {
if (typeof e == "string" || typeof e == "number") if (typeof e == "string" || typeof e == "number")
return e; return e;
e != null && console.warn( e != null && console.warn(
"[uikit/remote/ui] GBadge only accepts text/number children across the remote boundary." "[uikit/remote/ui] GBadge only accepts text/number children across the remote boundary."
); );
} }
const N = ({ children: e, remoteUrl: r, theme: o, chakraProviderProps: m, ...g }) => { const T = ({ children: e, remoteUrl: r, theme: o, chakraProviderProps: f, ...R }) => {
const u = d(null), t = d(null), c = d(null); const c = u(null), t = u(null), a = u(null);
return c.current = { return a.current = {
...g, ...R,
children: T(e), children: B(e),
...o !== void 0 ? { theme: o } : {}, ...o !== void 0 ? { theme: o } : {},
...m ? { chakraProviderProps: m } : {} ...f ? { chakraProviderProps: f } : {}
}, R(() => { }, m(() => {
let _ = !0; let l = !0;
return C(), r && w({ remoteUrl: r }), B().then(() => { return v(), r && w({ remoteUrl: r }), y().then(() => {
if (!_ || !u.current) return; if (!l || !c.current) return;
const n = document.createElement("uikit-g-badge"); const n = document.createElement("uikit-g-badge");
n.componentProps = c.current, u.current.appendChild(n), t.current = n; n.componentProps = a.current, c.current.appendChild(n), t.current = n;
}).catch((n) => { }).catch((n) => {
console.error("[uikit/remote/ui] Failed to load GBadge:", n); console.error("[uikit/remote/ui] Failed to load GBadge:", n);
}), () => { }), () => {
_ = !1, t.current && (t.current.remove(), t.current = null); l = !1, t.current && (t.current.remove(), t.current = null);
}; };
}, [r]), R(() => { }, [r]), m(() => {
t.current && (t.current.componentProps = c.current); t.current && (t.current.componentProps = a.current);
}), /* @__PURE__ */ h( }), /* @__PURE__ */ _(
"span", "span",
{ {
ref: u, ref: c,
style: { style: {
display: "contents" display: "contents"
} }
@ -94,6 +80,6 @@ const N = ({ children: e, remoteUrl: r, theme: o, chakraProviderProps: m, ...g }
); );
}; };
export { export {
N as GBadge, T as GBadge,
w as setupUikitRemoteDeps w as setupUikitRemoteDeps
}; };

View File

@ -1,12 +1,41 @@
import { useEffect, useMemo, useState } from "react"; import React, { useEffect, useMemo, useState } from "react";
import { ChakraProvider, Spinner } from "@chakra-ui/react"; import { createRoot } from "react-dom/client";
import { Badge, ChakraProvider, Spinner } from "@chakra-ui/react";
import { QueryClientProvider } from "@tanstack/react-query"; import { QueryClientProvider } from "@tanstack/react-query";
import { KeycloakProvider } from "./keycloak.jsx"; import { KeycloakProvider } from "./keycloak.jsx";
import { PermissionProvider } from "./permission.jsx"; import { PermissionProvider } from "./permission.jsx";
import { UpdateChecker } from "./UpdateChecker.jsx"; import { UpdateChecker } from "./UpdateChecker.jsx";
import { configureApi } from "./api.js"; import { configureApi } from "./api.js";
import { queryClient } from "./query.js"; import { queryClient } from "./query.js";
import { Fonts, theme } from "./style.jsx"; import { Fonts, theme as defaultTheme } from "./style.jsx";
const REMOTE_DEPS_KEY = "__UIKIT_REMOTE_DEPS__";
const REMOTE_CONFIG_KEY = "__UIKIT_REMOTE_CONFIG__";
function setupBiRemoteUiDeps({ theme, remoteUiUrl, chakraProviderProps } = {}) {
if (typeof window === "undefined") return;
const previousDeps = window[REMOTE_DEPS_KEY] || {};
const previousConfig = window[REMOTE_CONFIG_KEY] || {};
window[REMOTE_DEPS_KEY] = {
...previousDeps,
React: previousDeps.React || React,
createRoot: previousDeps.createRoot || createRoot,
ChakraProvider: previousDeps.ChakraProvider || ChakraProvider,
Badge: previousDeps.Badge || Badge,
theme: theme ?? previousDeps.theme,
chakraProviderProps: {
...(previousDeps.chakraProviderProps || {}),
...(chakraProviderProps || {}),
},
};
window[REMOTE_CONFIG_KEY] = {
...previousConfig,
...(remoteUiUrl ? { GBadgeUrl: remoteUiUrl } : {}),
};
}
export function BiProvider({ export function BiProvider({
children, children,
@ -27,6 +56,11 @@ export function BiProvider({
keycloakEnabled, keycloakEnabled,
permissionEnabled, permissionEnabled,
theme = defaultTheme,
remoteUiEnabled = true,
remoteUiUrl,
remoteUiChakraProviderProps,
}) { }) {
const [mounted, setMounted] = useState(false); const [mounted, setMounted] = useState(false);
@ -80,6 +114,14 @@ export function BiProvider({
return null; return null;
} }
if (remoteUiEnabled) {
setupBiRemoteUiDeps({
theme,
remoteUiUrl,
chakraProviderProps: remoteUiChakraProviderProps,
});
}
let content = children; let content = children;
if (shouldUsePermission) { if (shouldUsePermission) {

23
src/core/index.d.ts vendored
View File

@ -23,3 +23,26 @@ export function createApi(config: CreateApiConfig): {
useItem: any; useItem: any;
useAction: any; useAction: any;
}; };
// ----- BiProvider -----
export type BiProviderProps = {
children?: any;
apiBaseUrl?: string;
keycloakClientId?: string;
permissionClientId?: string;
loading?: any;
updateChecker?: boolean;
updateCheckerProps?: Record<string, any>;
keycloakUrl?: string;
keycloakRealm?: string;
permissionUrl?: string;
keycloakEnabled?: boolean;
permissionEnabled?: boolean;
theme?: any;
remoteUiEnabled?: boolean;
remoteUiUrl?: string;
remoteUiChakraProviderProps?: Record<string, any>;
};
export function BiProvider(props: BiProviderProps): any;