@omerdlw/base-framework 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +121 -52
- package/dist/atoms/index.d.ts +0 -1
- package/dist/atoms/index.d.ts.map +1 -1
- package/dist/atoms/index.js +1 -64
- package/dist/atoms/index.js.map +1 -1
- package/dist/error/index.js +22 -25
- package/dist/error/index.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -9
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +97 -540
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/types.d.ts +3 -45
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/hooks/use-controllable-state.d.ts +1 -1
- package/dist/hooks/use-controllable-state.d.ts.map +1 -1
- package/dist/hooks/use-global-event.d.ts +0 -2
- package/dist/hooks/use-global-event.d.ts.map +1 -1
- package/dist/hooks/use-hotkey.d.ts +1 -1
- package/dist/hooks/use-hotkey.d.ts.map +1 -1
- package/dist/index.js +11283 -11772
- package/dist/index.js.map +1 -1
- package/dist/kernel/adapters.d.ts.map +1 -1
- package/dist/kernel/index.d.ts +1 -0
- package/dist/kernel/index.d.ts.map +1 -1
- package/dist/kernel/index.js +10 -81
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/installed.d.ts.map +1 -1
- package/dist/kernel/page-controller.d.ts.map +1 -1
- package/dist/kernel/provider.d.ts.map +1 -1
- package/dist/modules/ambient/constants.d.ts +1 -1
- package/dist/modules/ambient/constants.d.ts.map +1 -1
- package/dist/modules/ambient/index.js +180 -326
- package/dist/modules/ambient/index.js.map +1 -1
- package/dist/modules/ambient/module.d.ts.map +1 -1
- package/dist/modules/background/constants.d.ts +4 -2
- package/dist/modules/background/constants.d.ts.map +1 -1
- package/dist/modules/background/context.d.ts +3 -0
- package/dist/modules/background/context.d.ts.map +1 -1
- package/dist/modules/background/hooks.d.ts +1 -1
- package/dist/modules/background/index.d.ts +2 -2
- package/dist/modules/background/index.d.ts.map +1 -1
- package/dist/modules/background/index.js +1172 -1270
- package/dist/modules/background/index.js.map +1 -1
- package/dist/modules/background/overlay.d.ts +1 -1
- package/dist/modules/background/overlay.d.ts.map +1 -1
- package/dist/modules/background/types.d.ts +1 -1
- package/dist/modules/background/types.d.ts.map +1 -1
- package/dist/modules/context-menu/constants.d.ts +1 -1
- package/dist/modules/context-menu/constants.d.ts.map +1 -1
- package/dist/modules/context-menu/context.d.ts.map +1 -1
- package/dist/modules/context-menu/hooks.d.ts.map +1 -1
- package/dist/modules/context-menu/index.js +133 -238
- package/dist/modules/context-menu/index.js.map +1 -1
- package/dist/modules/controls/constants.d.ts +1 -1
- package/dist/modules/controls/constants.d.ts.map +1 -1
- package/dist/modules/controls/hooks.d.ts +1 -1
- package/dist/modules/controls/index.js +28 -162
- package/dist/modules/controls/index.js.map +1 -1
- package/dist/modules/controls/types.d.ts +1 -1
- package/dist/modules/controls/types.d.ts.map +1 -1
- package/dist/modules/dock/cards.d.ts +2 -2
- package/dist/modules/dock/constants.d.ts +1 -1
- package/dist/modules/dock/constants.d.ts.map +1 -1
- package/dist/modules/dock/context.d.ts +10 -6
- package/dist/modules/dock/context.d.ts.map +1 -1
- package/dist/modules/dock/hooks.d.ts +5 -5
- package/dist/modules/dock/hooks.d.ts.map +1 -1
- package/dist/modules/dock/index.d.ts +1 -1
- package/dist/modules/dock/index.d.ts.map +1 -1
- package/dist/modules/dock/index.js +2060 -2080
- package/dist/modules/dock/index.js.map +1 -1
- package/dist/modules/dock/runtime/dock.d.ts.map +1 -1
- package/dist/modules/dock/types.d.ts +1 -1
- package/dist/modules/dock/types.d.ts.map +1 -1
- package/dist/modules/index.js +10789 -11027
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/loading/constants.d.ts +4 -2
- package/dist/modules/loading/constants.d.ts.map +1 -1
- package/dist/modules/loading/context.d.ts +3 -0
- package/dist/modules/loading/context.d.ts.map +1 -1
- package/dist/modules/loading/hooks.d.ts +1 -1
- package/dist/modules/loading/hooks.d.ts.map +1 -1
- package/dist/modules/loading/index.d.ts +2 -2
- package/dist/modules/loading/index.d.ts.map +1 -1
- package/dist/modules/loading/index.js +118 -222
- package/dist/modules/loading/index.js.map +1 -1
- package/dist/modules/loading/types.d.ts +1 -1
- package/dist/modules/loading/types.d.ts.map +1 -1
- package/dist/modules/media/constants.d.ts +2 -1
- package/dist/modules/media/constants.d.ts.map +1 -1
- package/dist/modules/media/context.d.ts +3 -0
- package/dist/modules/media/context.d.ts.map +1 -1
- package/dist/modules/media/index.d.ts +2 -2
- package/dist/modules/media/index.d.ts.map +1 -1
- package/dist/modules/media/index.js +61 -218
- package/dist/modules/media/index.js.map +1 -1
- package/dist/modules/modal/constants.d.ts +1 -1
- package/dist/modules/modal/constants.d.ts.map +1 -1
- package/dist/modules/modal/context.d.ts.map +1 -1
- package/dist/modules/modal/hooks.d.ts +2 -2
- package/dist/modules/modal/index.js +20 -366
- package/dist/modules/modal/index.js.map +1 -1
- package/dist/modules/notification/constants.d.ts +4 -2
- package/dist/modules/notification/constants.d.ts.map +1 -1
- package/dist/modules/notification/context.d.ts +4 -0
- package/dist/modules/notification/context.d.ts.map +1 -1
- package/dist/modules/notification/hooks.d.ts +1 -1
- package/dist/modules/notification/index.d.ts +2 -3
- package/dist/modules/notification/index.d.ts.map +1 -1
- package/dist/modules/notification/index.js +70 -154
- package/dist/modules/notification/index.js.map +1 -1
- package/dist/modules/notification/module.d.ts.map +1 -1
- package/dist/provider.js +255 -257
- package/dist/provider.js.map +1 -1
- package/dist/theme.d.ts +1 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +2 -2
- package/dist/theme.js.map +1 -1
- package/dist/utils/index.d.ts +5 -6
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -57
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/number.d.ts +0 -1
- package/dist/utils/number.d.ts.map +1 -1
- package/dist/utils/object.d.ts +0 -2
- package/dist/utils/object.d.ts.map +1 -1
- package/dist/utils/string.d.ts +0 -3
- package/dist/utils/string.d.ts.map +1 -1
- package/dist/utils/timing.d.ts +0 -1
- package/dist/utils/timing.d.ts.map +1 -1
- package/docs/README.md +124 -0
- package/docs/architecture-and-rules.md +129 -0
- package/docs/core-engine.md +196 -0
- package/docs/custom-modules.md +267 -0
- package/docs/getting-started.md +199 -0
- package/docs/modules/README.md +176 -0
- package/docs/modules/ambient.md +150 -0
- package/docs/modules/background.md +195 -0
- package/docs/modules/context-menu.md +248 -0
- package/docs/modules/controls.md +159 -0
- package/docs/modules/dock.md +734 -0
- package/docs/modules/error-boundary.md +160 -0
- package/docs/modules/kernel.md +266 -0
- package/docs/modules/loading.md +157 -0
- package/docs/modules/media.md +196 -0
- package/docs/modules/modal.md +229 -0
- package/docs/modules/notification.md +161 -0
- package/docs/modules/result.md +135 -0
- package/docs/testing.md +160 -0
- package/docs/theming.md +185 -0
- package/package.json +50 -2
- package/templates/AGENTS.md +165 -0
- package/dist/hooks/use-async-action.d.ts +0 -3
- package/dist/hooks/use-async-action.d.ts.map +0 -1
- package/dist/hooks/use-debounce.d.ts +0 -2
- package/dist/hooks/use-debounce.d.ts.map +0 -1
- package/dist/hooks/use-intersection-observer.d.ts +0 -4
- package/dist/hooks/use-intersection-observer.d.ts.map +0 -1
- package/dist/hooks/use-media-query.d.ts +0 -2
- package/dist/hooks/use-media-query.d.ts.map +0 -1
- package/dist/hooks/use-mounted.d.ts +0 -2
- package/dist/hooks/use-mounted.d.ts.map +0 -1
- package/dist/hooks/use-server-action.d.ts +0 -4
- package/dist/hooks/use-server-action.d.ts.map +0 -1
- package/dist/hooks/use-storage-state.d.ts +0 -5
- package/dist/hooks/use-storage-state.d.ts.map +0 -1
- package/dist/modules/theme.d.ts +0 -3
- package/dist/modules/theme.d.ts.map +0 -1
- package/dist/utils/json.d.ts +0 -3
- package/dist/utils/json.d.ts.map +0 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { type LoadingState } from "./types";
|
|
1
|
+
import { type LoadingActions, type LoadingState, type LoadingStateWithPage } from "./types";
|
|
2
2
|
export declare const DEFAULT_LOADING_STATE: LoadingState;
|
|
3
|
+
export declare const DEFAULT_LOADING_STATE_WITH_PAGE: LoadingStateWithPage;
|
|
4
|
+
export declare const INERT_LOADING_ACTIONS: LoadingActions;
|
|
3
5
|
export declare const LOADING_REGISTRY_KEY = "page-loading";
|
|
4
|
-
export declare const loadingTheme: import("
|
|
6
|
+
export declare const loadingTheme: import("@/theme").ThemeSpec<"overlay">;
|
|
5
7
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/modules/loading/constants.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/modules/loading/constants.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAE1B,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,qBAAqB,EAAE,YAMlC,CAAC;AAEH,eAAO,MAAM,+BAA+B,EAAE,oBAG5C,CAAC;AAEH,eAAO,MAAM,qBAAqB,EAAE,cAOlC,CAAC;AAEH,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,eAAO,MAAM,YAAY,wCAA+C,CAAC"}
|
|
@@ -10,4 +10,7 @@ export declare function useLoadingActions(): LoadingActions;
|
|
|
10
10
|
export declare function useLoading(config?: LoadingPageConfig | null, options?: RegistryMetadata & {
|
|
11
11
|
enabled?: boolean;
|
|
12
12
|
}): LoadingStateWithPage & LoadingActions;
|
|
13
|
+
export declare function useOptionalLoadingState(): LoadingStateWithPage;
|
|
14
|
+
export declare function useOptionalLoadingState<T>(selector: (state: LoadingStateWithPage) => T, isEqual?: (a: T, b: T) => boolean): T;
|
|
15
|
+
export declare function useOptionalLoadingActions(): LoadingActions;
|
|
13
16
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/modules/loading/context.tsx"],"names":[],"mappings":"AAeA,OAAO,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/modules/loading/context.tsx"],"names":[],"mappings":"AAeA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,UAAU,CAAC;AASlB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAExB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EAE1B,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,cAAc,qDAEmD,CAAC;AAE/E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC5C,OAAO,CAAC,EAAE,gBAAgB,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACjD,IAAI,CAEN;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,oBAAoB,+BA8IjE;AAED,wBAAgB,eAAe,IAAI,oBAAoB,CAOtD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAMlD;AAED,wBAAgB,UAAU,CACxB,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,EACjC,OAAO,CAAC,EAAE,gBAAgB,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACjD,oBAAoB,GAAG,cAAc,CAOvC;AAMD,wBAAgB,uBAAuB,IAAI,oBAAoB,CAAC;AAChE,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,CAAC,EAC5C,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAChC,CAAC,CAAC;AAaL,wBAAgB,yBAAyB,IAAI,cAAc,CAG1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/loading/hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/loading/hooks.ts"],"names":[],"mappings":"AAMA,wBAAgB,sBAAsB;;;;EAQrC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { LoadingOverlay } from "./overlay";
|
|
2
|
-
export { LoadingContext, LoadingProvider, useLoading, useLoadingActions, useLoadingRegistration, useLoadingState, } from "./context";
|
|
2
|
+
export { LoadingContext, LoadingProvider, useLoading, useLoadingActions, useLoadingRegistration, useLoadingState, useOptionalLoadingActions, useOptionalLoadingState, } from "./context";
|
|
3
3
|
export { defineLoading, loadingModule } from "./module";
|
|
4
|
-
export { DEFAULT_LOADING_STATE, LOADING_REGISTRY_KEY, loadingTheme, } from "./constants";
|
|
4
|
+
export { DEFAULT_LOADING_STATE, DEFAULT_LOADING_STATE_WITH_PAGE, INERT_LOADING_ACTIONS, LOADING_REGISTRY_KEY, loadingTheme, } from "./constants";
|
|
5
5
|
export { normalizeLoadingOptions, selectPageLoading } from "./utils";
|
|
6
6
|
export type * from "./types";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/loading/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/loading/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrE,mBAAmB,SAAS,CAAC"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Icon as Icon$1 } from '@iconify-icon/react';
|
|
3
3
|
import { jsx } from 'react/jsx-runtime';
|
|
4
|
-
import '
|
|
5
|
-
import { createContext, useState, useRef, useCallback, useEffect, useMemo, useSyncExternalStore, useLayoutEffect, use, useId, useContext, isValidElement, cloneElement, Children } from 'react';
|
|
6
|
-
import 'clsx';
|
|
7
|
-
import 'tailwind-merge';
|
|
4
|
+
import { createContext, useState, useRef, useCallback, useEffect, useMemo, useContext, useSyncExternalStore, useLayoutEffect, use, useId, isValidElement, cloneElement, Children } from 'react';
|
|
8
5
|
import { usePathname } from 'next/navigation';
|
|
9
6
|
|
|
10
7
|
function Icon({
|
|
@@ -42,95 +39,6 @@ function Spinner({ className = "", size = 15 }) {
|
|
|
42
39
|
);
|
|
43
40
|
}
|
|
44
41
|
Spinner.displayName = "Spinner";
|
|
45
|
-
var listeners = /* @__PURE__ */ new Set();
|
|
46
|
-
var activeFullscreenStateIds = /* @__PURE__ */ new Set();
|
|
47
|
-
var ACTIVE_FULLSCREEN_ROOT_SELECTOR = '[data-fullscreen-state-root="true"][data-affect-global-state="true"]';
|
|
48
|
-
var domObserver = null;
|
|
49
|
-
var lastSnapshot = false;
|
|
50
|
-
function getDomSnapshot() {
|
|
51
|
-
if (typeof document === "undefined") {
|
|
52
|
-
return activeFullscreenStateIds.size > 0;
|
|
53
|
-
}
|
|
54
|
-
return document.querySelector(ACTIVE_FULLSCREEN_ROOT_SELECTOR) !== null;
|
|
55
|
-
}
|
|
56
|
-
function emitChange() {
|
|
57
|
-
listeners.forEach((listener) => listener());
|
|
58
|
-
}
|
|
59
|
-
function emitIfSnapshotChanged() {
|
|
60
|
-
const nextSnapshot = getDomSnapshot();
|
|
61
|
-
if (nextSnapshot === lastSnapshot) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
lastSnapshot = nextSnapshot;
|
|
65
|
-
emitChange();
|
|
66
|
-
}
|
|
67
|
-
function ensureDomObserver() {
|
|
68
|
-
if (typeof document === "undefined" || domObserver || listeners.size === 0) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
domObserver = new MutationObserver(() => {
|
|
72
|
-
emitIfSnapshotChanged();
|
|
73
|
-
});
|
|
74
|
-
domObserver.observe(document.documentElement, {
|
|
75
|
-
attributes: true,
|
|
76
|
-
childList: true,
|
|
77
|
-
subtree: true,
|
|
78
|
-
attributeFilter: [
|
|
79
|
-
"data-fullscreen-state",
|
|
80
|
-
"data-fullscreen-state-root",
|
|
81
|
-
"data-affect-global-state"
|
|
82
|
-
]
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
function releaseDomObserver() {
|
|
86
|
-
if (listeners.size > 0 || !domObserver) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
domObserver.disconnect();
|
|
90
|
-
domObserver = null;
|
|
91
|
-
}
|
|
92
|
-
function subscribe(listener) {
|
|
93
|
-
listeners.add(listener);
|
|
94
|
-
ensureDomObserver();
|
|
95
|
-
emitIfSnapshotChanged();
|
|
96
|
-
return () => {
|
|
97
|
-
listeners.delete(listener);
|
|
98
|
-
releaseDomObserver();
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
function getSnapshot() {
|
|
102
|
-
return getDomSnapshot();
|
|
103
|
-
}
|
|
104
|
-
function useIsFullscreenStateActive() {
|
|
105
|
-
return useSyncExternalStore(subscribe, getSnapshot, () => false);
|
|
106
|
-
}
|
|
107
|
-
function getOrCreateGlobalContext(name, defaultValue) {
|
|
108
|
-
const sym = /* @__PURE__ */ Symbol.for(`@omerdlw/base-framework/context/${name}`);
|
|
109
|
-
const store = globalThis;
|
|
110
|
-
if (!store[sym]) {
|
|
111
|
-
store[sym] = createContext(defaultValue);
|
|
112
|
-
}
|
|
113
|
-
return store[sym];
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// src/theme.tsx
|
|
117
|
-
function defineThemeSpec(id) {
|
|
118
|
-
return Object.freeze({ id });
|
|
119
|
-
}
|
|
120
|
-
var EMPTY = /* @__PURE__ */ new Map();
|
|
121
|
-
var ThemeContext = getOrCreateGlobalContext("ThemeContext", EMPTY);
|
|
122
|
-
function useTheme(spec) {
|
|
123
|
-
const config = useContext(ThemeContext).get(spec.id);
|
|
124
|
-
if (!config) {
|
|
125
|
-
throw new Error(
|
|
126
|
-
`Theme "${spec.id}" is missing. Add its theme file to src/config/ and list it in src/config/index.ts.`
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
return {
|
|
130
|
-
slots: config.slots,
|
|
131
|
-
styles: config.styles ?? {}
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
42
|
function useRequiredContext(context, hookName, providerName) {
|
|
135
43
|
const value = use(context);
|
|
136
44
|
if (value === null) {
|
|
@@ -259,75 +167,68 @@ function createStore(initialState, { freezeSnapshots = true } = {}) {
|
|
|
259
167
|
|
|
260
168
|
// src/hooks/use-isomorphic-layout-effect.ts
|
|
261
169
|
var useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
|
|
262
|
-
var
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
const listeners2 = this.events.get(event) || /* @__PURE__ */ new Set();
|
|
271
|
-
listeners2.add(callback);
|
|
272
|
-
this.events.set(event, listeners2);
|
|
273
|
-
return () => {
|
|
274
|
-
listeners2.delete(callback);
|
|
275
|
-
if (listeners2.size === 0) this.events.delete(event);
|
|
276
|
-
};
|
|
277
|
-
}
|
|
278
|
-
emit(event, payload) {
|
|
279
|
-
const listeners2 = this.events.get(event);
|
|
280
|
-
if (!listeners2 || listeners2.size === 0) return;
|
|
281
|
-
const snapshot = Array.from(listeners2);
|
|
282
|
-
for (const callback of snapshot) {
|
|
283
|
-
try {
|
|
284
|
-
callback(payload);
|
|
285
|
-
} catch (error) {
|
|
286
|
-
report(`Event listener (${String(event)})`, error);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
emitDebounced(event, payload, waitMs = 100) {
|
|
291
|
-
const existing = this.debounceTimers.get(event);
|
|
292
|
-
if (existing) clearTimeout(existing);
|
|
293
|
-
const timer = setTimeout(() => {
|
|
294
|
-
this.debounceTimers.delete(event);
|
|
295
|
-
this.emit(event, payload);
|
|
296
|
-
}, waitMs);
|
|
297
|
-
this.debounceTimers.set(event, timer);
|
|
298
|
-
}
|
|
299
|
-
cancelDebounced(event) {
|
|
300
|
-
if (event) {
|
|
301
|
-
const timer = this.debounceTimers.get(event);
|
|
302
|
-
if (timer) {
|
|
303
|
-
clearTimeout(timer);
|
|
304
|
-
this.debounceTimers.delete(event);
|
|
305
|
-
}
|
|
306
|
-
} else {
|
|
307
|
-
for (const timer of this.debounceTimers.values()) {
|
|
308
|
-
clearTimeout(timer);
|
|
309
|
-
}
|
|
310
|
-
this.debounceTimers.clear();
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
unsubscribeAll(event) {
|
|
314
|
-
this.cancelDebounced(event);
|
|
315
|
-
if (event) this.events.delete(event);
|
|
316
|
-
else this.events.clear();
|
|
170
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
171
|
+
var activeFullscreenStateIds = /* @__PURE__ */ new Set();
|
|
172
|
+
var ACTIVE_FULLSCREEN_ROOT_SELECTOR = '[data-fullscreen-state-root="true"][data-affect-global-state="true"]';
|
|
173
|
+
var domObserver = null;
|
|
174
|
+
var lastSnapshot = false;
|
|
175
|
+
function getDomSnapshot() {
|
|
176
|
+
if (typeof document === "undefined") {
|
|
177
|
+
return activeFullscreenStateIds.size > 0;
|
|
317
178
|
}
|
|
318
|
-
|
|
319
|
-
|
|
179
|
+
return document.querySelector(ACTIVE_FULLSCREEN_ROOT_SELECTOR) !== null;
|
|
180
|
+
}
|
|
181
|
+
function emitChange() {
|
|
182
|
+
listeners.forEach((listener) => listener());
|
|
183
|
+
}
|
|
184
|
+
function emitIfSnapshotChanged() {
|
|
185
|
+
const nextSnapshot = getDomSnapshot();
|
|
186
|
+
if (nextSnapshot === lastSnapshot) {
|
|
187
|
+
return;
|
|
320
188
|
}
|
|
321
|
-
|
|
322
|
-
|
|
189
|
+
lastSnapshot = nextSnapshot;
|
|
190
|
+
emitChange();
|
|
191
|
+
}
|
|
192
|
+
function ensureDomObserver() {
|
|
193
|
+
if (typeof document === "undefined" || domObserver || listeners.size === 0) {
|
|
194
|
+
return;
|
|
323
195
|
}
|
|
324
|
-
|
|
325
|
-
|
|
196
|
+
domObserver = new MutationObserver(() => {
|
|
197
|
+
emitIfSnapshotChanged();
|
|
198
|
+
});
|
|
199
|
+
domObserver.observe(document.documentElement, {
|
|
200
|
+
attributes: true,
|
|
201
|
+
childList: true,
|
|
202
|
+
subtree: true,
|
|
203
|
+
attributeFilter: [
|
|
204
|
+
"data-fullscreen-state",
|
|
205
|
+
"data-fullscreen-state-root",
|
|
206
|
+
"data-affect-global-state"
|
|
207
|
+
]
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
function releaseDomObserver() {
|
|
211
|
+
if (listeners.size > 0 || !domObserver) {
|
|
212
|
+
return;
|
|
326
213
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
214
|
+
domObserver.disconnect();
|
|
215
|
+
domObserver = null;
|
|
216
|
+
}
|
|
217
|
+
function subscribe(listener) {
|
|
218
|
+
listeners.add(listener);
|
|
219
|
+
ensureDomObserver();
|
|
220
|
+
emitIfSnapshotChanged();
|
|
221
|
+
return () => {
|
|
222
|
+
listeners.delete(listener);
|
|
223
|
+
releaseDomObserver();
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
function getSnapshot() {
|
|
227
|
+
return getDomSnapshot();
|
|
228
|
+
}
|
|
229
|
+
function useIsFullscreenStateActive() {
|
|
230
|
+
return useSyncExternalStore(subscribe, getSnapshot, () => false);
|
|
231
|
+
}
|
|
331
232
|
|
|
332
233
|
// src/kernel/constants.ts
|
|
333
234
|
var DEFAULT_SOURCE = "dynamic";
|
|
@@ -380,6 +281,14 @@ var REGISTRY_SCOPE_KINDS = Object.freeze({
|
|
|
380
281
|
WORKSPACE: "workspace"
|
|
381
282
|
});
|
|
382
283
|
REGISTRY_SCOPE_KINDS.APP;
|
|
284
|
+
function getOrCreateGlobalContext(name, defaultValue) {
|
|
285
|
+
const sym = /* @__PURE__ */ Symbol.for(`@omerdlw/base-framework/context/${name}`);
|
|
286
|
+
const store = globalThis;
|
|
287
|
+
if (!store[sym]) {
|
|
288
|
+
store[sym] = createContext(defaultValue);
|
|
289
|
+
}
|
|
290
|
+
return store[sym];
|
|
291
|
+
}
|
|
383
292
|
|
|
384
293
|
// src/kernel/utils.ts
|
|
385
294
|
function parseFiniteNumber(value) {
|
|
@@ -479,24 +388,6 @@ function pickRegistryMetadata(options) {
|
|
|
479
388
|
)
|
|
480
389
|
);
|
|
481
390
|
}
|
|
482
|
-
function createNoopHandle(status = "rejected", reason = "unknown") {
|
|
483
|
-
const handle = Object.assign(() => false, {
|
|
484
|
-
active: false,
|
|
485
|
-
dispose: () => false,
|
|
486
|
-
instanceId: null,
|
|
487
|
-
key: "",
|
|
488
|
-
priority: 0,
|
|
489
|
-
reason,
|
|
490
|
-
source: "",
|
|
491
|
-
status,
|
|
492
|
-
type: "",
|
|
493
|
-
update: () => handle,
|
|
494
|
-
updatedAt: 0,
|
|
495
|
-
validation: "warn"
|
|
496
|
-
});
|
|
497
|
-
return handle;
|
|
498
|
-
}
|
|
499
|
-
createNoopHandle();
|
|
500
391
|
var RegistryContext = getOrCreateGlobalContext(
|
|
501
392
|
"RegistryContext",
|
|
502
393
|
null
|
|
@@ -959,56 +850,12 @@ function useRegistry(config, metadata) {
|
|
|
959
850
|
);
|
|
960
851
|
useAppliedRegistryConfig(payload, context, componentSlices);
|
|
961
852
|
}
|
|
962
|
-
function createPageControllerStore() {
|
|
963
|
-
const listeners2 = /* @__PURE__ */ new Set();
|
|
964
|
-
let stack = [];
|
|
965
|
-
const notify = () => {
|
|
966
|
-
listeners2.forEach((listener) => {
|
|
967
|
-
try {
|
|
968
|
-
listener();
|
|
969
|
-
} catch (error) {
|
|
970
|
-
report("Page controller listener", error);
|
|
971
|
-
}
|
|
972
|
-
});
|
|
973
|
-
};
|
|
974
|
-
return {
|
|
975
|
-
getSnapshot() {
|
|
976
|
-
const top = stack[stack.length - 1];
|
|
977
|
-
return top?.controllerRef?.current || null;
|
|
978
|
-
},
|
|
979
|
-
notify,
|
|
980
|
-
register(id, controllerRef) {
|
|
981
|
-
stack = stack.filter((item) => item.id !== id);
|
|
982
|
-
stack.push({ controllerRef, id });
|
|
983
|
-
notify();
|
|
984
|
-
},
|
|
985
|
-
subscribe(listener) {
|
|
986
|
-
listeners2.add(listener);
|
|
987
|
-
return () => {
|
|
988
|
-
listeners2.delete(listener);
|
|
989
|
-
};
|
|
990
|
-
},
|
|
991
|
-
unregister(id) {
|
|
992
|
-
stack = stack.filter((item) => item.id !== id);
|
|
993
|
-
notify();
|
|
994
|
-
}
|
|
995
|
-
};
|
|
996
|
-
}
|
|
997
|
-
var fallbackStandaloneStore = createPageControllerStore();
|
|
998
|
-
getOrCreateGlobalContext(
|
|
999
|
-
"PageControllerContext",
|
|
1000
|
-
null
|
|
1001
|
-
);
|
|
1002
|
-
getOrCreateGlobalContext(
|
|
1003
|
-
"PageControllerStoreContext",
|
|
1004
|
-
fallbackStandaloneStore
|
|
1005
|
-
);
|
|
1006
853
|
function defineModule(coreModule) {
|
|
1007
854
|
return Object.freeze({ ...coreModule });
|
|
1008
855
|
}
|
|
1009
856
|
createStore(void 0);
|
|
1010
857
|
|
|
1011
|
-
// src/kernel/adapters.
|
|
858
|
+
// src/kernel/adapters.ts
|
|
1012
859
|
function useModuleRegistration(id, value, options) {
|
|
1013
860
|
const coreModule = useInstalledModules().find(
|
|
1014
861
|
(candidate) => candidate.id === id
|
|
@@ -1017,6 +864,25 @@ function useModuleRegistration(id, value, options) {
|
|
|
1017
864
|
useRegistry(config, pickRegistryMetadata(options));
|
|
1018
865
|
}
|
|
1019
866
|
|
|
867
|
+
// src/theme.tsx
|
|
868
|
+
function defineThemeSpec(id) {
|
|
869
|
+
return Object.freeze({ id });
|
|
870
|
+
}
|
|
871
|
+
var EMPTY = /* @__PURE__ */ new Map();
|
|
872
|
+
var ThemeContext = getOrCreateGlobalContext("ThemeContext", EMPTY);
|
|
873
|
+
function useTheme(spec) {
|
|
874
|
+
const config = useContext(ThemeContext).get(spec.id);
|
|
875
|
+
if (!config) {
|
|
876
|
+
throw new Error(
|
|
877
|
+
`Theme "${spec.id}" is missing. Ensure its theme configuration is provided to <ThemeProvider themes={[...]}> (e.g. in src/config/ or your theme setup).`
|
|
878
|
+
);
|
|
879
|
+
}
|
|
880
|
+
return {
|
|
881
|
+
slots: config.slots,
|
|
882
|
+
styles: config.styles ?? {}
|
|
883
|
+
};
|
|
884
|
+
}
|
|
885
|
+
|
|
1020
886
|
// src/modules/loading/constants.ts
|
|
1021
887
|
var DEFAULT_LOADING_STATE = Object.freeze({
|
|
1022
888
|
isLoading: false,
|
|
@@ -1025,6 +891,21 @@ var DEFAULT_LOADING_STATE = Object.freeze({
|
|
|
1025
891
|
showOverlay: true,
|
|
1026
892
|
message: null
|
|
1027
893
|
});
|
|
894
|
+
var DEFAULT_LOADING_STATE_WITH_PAGE = Object.freeze({
|
|
895
|
+
...DEFAULT_LOADING_STATE,
|
|
896
|
+
isPageLoading: false
|
|
897
|
+
});
|
|
898
|
+
var INERT_LOADING_ACTIONS = Object.freeze({
|
|
899
|
+
setLoading: () => {
|
|
900
|
+
},
|
|
901
|
+
setSkeleton: () => {
|
|
902
|
+
},
|
|
903
|
+
startLoading: () => {
|
|
904
|
+
},
|
|
905
|
+
stopLoading: () => {
|
|
906
|
+
},
|
|
907
|
+
withLoading: async (task) => typeof task === "function" ? task() : task
|
|
908
|
+
});
|
|
1028
909
|
var LOADING_REGISTRY_KEY = "page-loading";
|
|
1029
910
|
var loadingTheme = defineThemeSpec("loading");
|
|
1030
911
|
|
|
@@ -1184,6 +1065,21 @@ function useLoading(config, options) {
|
|
|
1184
1065
|
const state = useLoadingState();
|
|
1185
1066
|
return useMemo(() => ({ ...state, ...actions }), [actions, state]);
|
|
1186
1067
|
}
|
|
1068
|
+
var NOOP_LOADING_STORE = createStore(
|
|
1069
|
+
DEFAULT_LOADING_STATE_WITH_PAGE
|
|
1070
|
+
);
|
|
1071
|
+
function useOptionalLoadingState(selector, isEqual) {
|
|
1072
|
+
const ctx = useContext(LoadingContext);
|
|
1073
|
+
return useStore(
|
|
1074
|
+
ctx?.store ?? NOOP_LOADING_STORE,
|
|
1075
|
+
selector,
|
|
1076
|
+
isEqual
|
|
1077
|
+
);
|
|
1078
|
+
}
|
|
1079
|
+
function useOptionalLoadingActions() {
|
|
1080
|
+
const ctx = useContext(LoadingContext);
|
|
1081
|
+
return ctx?.actions ?? INERT_LOADING_ACTIONS;
|
|
1082
|
+
}
|
|
1187
1083
|
|
|
1188
1084
|
// src/modules/loading/hooks.ts
|
|
1189
1085
|
function useLoadingOverlayModel() {
|
|
@@ -1251,6 +1147,6 @@ var loadingModule = defineModule({
|
|
|
1251
1147
|
}
|
|
1252
1148
|
});
|
|
1253
1149
|
|
|
1254
|
-
export { DEFAULT_LOADING_STATE, LOADING_REGISTRY_KEY, LoadingContext, LoadingOverlay, LoadingProvider, defineLoading, loadingModule, loadingTheme, normalizeLoadingOptions, selectPageLoading, useLoading, useLoadingActions, useLoadingRegistration, useLoadingState };
|
|
1150
|
+
export { DEFAULT_LOADING_STATE, DEFAULT_LOADING_STATE_WITH_PAGE, INERT_LOADING_ACTIONS, LOADING_REGISTRY_KEY, LoadingContext, LoadingOverlay, LoadingProvider, defineLoading, loadingModule, loadingTheme, normalizeLoadingOptions, selectPageLoading, useLoading, useLoadingActions, useLoadingRegistration, useLoadingState, useOptionalLoadingActions, useOptionalLoadingState };
|
|
1255
1151
|
//# sourceMappingURL=index.js.map
|
|
1256
1152
|
//# sourceMappingURL=index.js.map
|