@kcuf-ui/backdrop-headless 0.0.1

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.
Files changed (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/const/index.js +7 -0
  4. package/dist/cjs/context/index.js +8 -0
  5. package/dist/cjs/enum/index.js +14 -0
  6. package/dist/cjs/hook/_use-model-context.js +12 -0
  7. package/dist/cjs/hook/_use-model-dispatch.js +11 -0
  8. package/dist/cjs/hook/_use-model-props.js +11 -0
  9. package/dist/cjs/hook/_use-model-state.js +11 -0
  10. package/dist/cjs/hook/index.js +27 -0
  11. package/dist/cjs/hook/use-dispatch-refresh-visible.js +19 -0
  12. package/dist/cjs/hook/use-effect-singleton.js +31 -0
  13. package/dist/cjs/hook/use-effects.js +11 -0
  14. package/dist/cjs/hook/use-handle-click.js +20 -0
  15. package/dist/cjs/hook/use-z-index.js +18 -0
  16. package/dist/cjs/index.js +26 -0
  17. package/dist/cjs/lifecycle/index.js +12 -0
  18. package/dist/cjs/provider/index.js +39 -0
  19. package/dist/cjs/reducer/index.js +19 -0
  20. package/dist/cjs/reducer/reduce-refresh-visible.js +13 -0
  21. package/dist/cjs/types/action.js +5 -0
  22. package/dist/cjs/types/common.js +5 -0
  23. package/dist/cjs/types/context.js +5 -0
  24. package/dist/cjs/types/index.js +60 -0
  25. package/dist/cjs/types/props.js +5 -0
  26. package/dist/cjs/types/state.js +5 -0
  27. package/dist/cjs/util/create-initial-state.js +11 -0
  28. package/dist/cjs/util/index.js +41 -0
  29. package/dist/cjs/util/message-emit-refresh.js +12 -0
  30. package/dist/cjs/util/singleton-get-visible-item.js +26 -0
  31. package/dist/cjs/util/singleton-global.js +13 -0
  32. package/dist/cjs/util/singleton-is-visible.js +12 -0
  33. package/dist/cjs/util/singleton-pull.js +28 -0
  34. package/dist/cjs/util/singleton-push.js +34 -0
  35. package/dist/cjs/util/singleton-update.js +21 -0
  36. package/dist/cjs/util/toggle-scrollbar.js +21 -0
  37. package/dist/esm/const/index.js +2 -0
  38. package/dist/esm/const/index.js.map +1 -0
  39. package/dist/esm/context/index.js +3 -0
  40. package/dist/esm/context/index.js.map +1 -0
  41. package/dist/esm/enum/index.js +9 -0
  42. package/dist/esm/enum/index.js.map +1 -0
  43. package/dist/esm/hook/_use-model-context.js +6 -0
  44. package/dist/esm/hook/_use-model-context.js.map +1 -0
  45. package/dist/esm/hook/_use-model-dispatch.js +5 -0
  46. package/dist/esm/hook/_use-model-dispatch.js.map +1 -0
  47. package/dist/esm/hook/_use-model-props.js +5 -0
  48. package/dist/esm/hook/_use-model-props.js.map +1 -0
  49. package/dist/esm/hook/_use-model-state.js +5 -0
  50. package/dist/esm/hook/_use-model-state.js.map +1 -0
  51. package/dist/esm/hook/index.js +8 -0
  52. package/dist/esm/hook/index.js.map +1 -0
  53. package/dist/esm/hook/use-dispatch-refresh-visible.js +13 -0
  54. package/dist/esm/hook/use-dispatch-refresh-visible.js.map +1 -0
  55. package/dist/esm/hook/use-effect-singleton.js +25 -0
  56. package/dist/esm/hook/use-effect-singleton.js.map +1 -0
  57. package/dist/esm/hook/use-effects.js +5 -0
  58. package/dist/esm/hook/use-effects.js.map +1 -0
  59. package/dist/esm/hook/use-handle-click.js +14 -0
  60. package/dist/esm/hook/use-handle-click.js.map +1 -0
  61. package/dist/esm/hook/use-z-index.js +12 -0
  62. package/dist/esm/hook/use-z-index.js.map +1 -0
  63. package/dist/esm/index.js +3 -0
  64. package/dist/esm/index.js.map +1 -0
  65. package/dist/esm/lifecycle/index.js +6 -0
  66. package/dist/esm/lifecycle/index.js.map +1 -0
  67. package/dist/esm/provider/index.js +33 -0
  68. package/dist/esm/provider/index.js.map +1 -0
  69. package/dist/esm/reducer/index.js +13 -0
  70. package/dist/esm/reducer/index.js.map +1 -0
  71. package/dist/esm/reducer/reduce-refresh-visible.js +8 -0
  72. package/dist/esm/reducer/reduce-refresh-visible.js.map +1 -0
  73. package/dist/esm/types/action.js +2 -0
  74. package/dist/esm/types/action.js.map +1 -0
  75. package/dist/esm/types/common.js +2 -0
  76. package/dist/esm/types/common.js.map +1 -0
  77. package/dist/esm/types/context.js +2 -0
  78. package/dist/esm/types/context.js.map +1 -0
  79. package/dist/esm/types/index.js +6 -0
  80. package/dist/esm/types/index.js.map +1 -0
  81. package/dist/esm/types/props.js +2 -0
  82. package/dist/esm/types/props.js.map +1 -0
  83. package/dist/esm/types/state.js +2 -0
  84. package/dist/esm/types/state.js.map +1 -0
  85. package/dist/esm/util/create-initial-state.js +6 -0
  86. package/dist/esm/util/create-initial-state.js.map +1 -0
  87. package/dist/esm/util/index.js +6 -0
  88. package/dist/esm/util/index.js.map +1 -0
  89. package/dist/esm/util/message-emit-refresh.js +6 -0
  90. package/dist/esm/util/message-emit-refresh.js.map +1 -0
  91. package/dist/esm/util/singleton-get-visible-item.js +21 -0
  92. package/dist/esm/util/singleton-get-visible-item.js.map +1 -0
  93. package/dist/esm/util/singleton-global.js +8 -0
  94. package/dist/esm/util/singleton-global.js.map +1 -0
  95. package/dist/esm/util/singleton-is-visible.js +6 -0
  96. package/dist/esm/util/singleton-is-visible.js.map +1 -0
  97. package/dist/esm/util/singleton-pull.js +22 -0
  98. package/dist/esm/util/singleton-pull.js.map +1 -0
  99. package/dist/esm/util/singleton-push.js +28 -0
  100. package/dist/esm/util/singleton-push.js.map +1 -0
  101. package/dist/esm/util/singleton-update.js +15 -0
  102. package/dist/esm/util/singleton-update.js.map +1 -0
  103. package/dist/esm/util/toggle-scrollbar.js +17 -0
  104. package/dist/esm/util/toggle-scrollbar.js.map +1 -0
  105. package/dist/types/const/index.d.ts +1 -0
  106. package/dist/types/context/index.d.ts +3 -0
  107. package/dist/types/enum/index.d.ts +6 -0
  108. package/dist/types/hook/_use-model-context.d.ts +2 -0
  109. package/dist/types/hook/_use-model-dispatch.d.ts +2 -0
  110. package/dist/types/hook/_use-model-props.d.ts +2 -0
  111. package/dist/types/hook/_use-model-state.d.ts +2 -0
  112. package/dist/types/hook/index.d.ts +3 -0
  113. package/dist/types/hook/use-dispatch-refresh-visible.d.ts +1 -0
  114. package/dist/types/hook/use-effect-singleton.d.ts +1 -0
  115. package/dist/types/hook/use-effects.d.ts +1 -0
  116. package/dist/types/hook/use-handle-click.d.ts +1 -0
  117. package/dist/types/hook/use-z-index.d.ts +1 -0
  118. package/dist/types/index.d.ts +3 -0
  119. package/dist/types/lifecycle/index.d.ts +1 -0
  120. package/dist/types/provider/index.d.ts +3 -0
  121. package/dist/types/reducer/index.d.ts +2 -0
  122. package/dist/types/reducer/reduce-refresh-visible.d.ts +2 -0
  123. package/dist/types/types/action.d.ts +7 -0
  124. package/dist/types/types/common.d.ts +16 -0
  125. package/dist/types/types/context.d.ts +12 -0
  126. package/dist/types/types/index.d.ts +5 -0
  127. package/dist/types/types/props.d.ts +14 -0
  128. package/dist/types/types/state.d.ts +3 -0
  129. package/dist/types/util/create-initial-state.d.ts +2 -0
  130. package/dist/types/util/index.d.ts +5 -0
  131. package/dist/types/util/message-emit-refresh.d.ts +1 -0
  132. package/dist/types/util/singleton-get-visible-item.d.ts +5 -0
  133. package/dist/types/util/singleton-global.d.ts +2 -0
  134. package/dist/types/util/singleton-is-visible.d.ts +1 -0
  135. package/dist/types/util/singleton-pull.d.ts +1 -0
  136. package/dist/types/util/singleton-push.d.ts +1 -0
  137. package/dist/types/util/singleton-update.d.ts +1 -0
  138. package/dist/types/util/toggle-scrollbar.d.ts +4 -0
  139. package/package.json +57 -0
@@ -0,0 +1 @@
1
+ export declare const DEFAULT_Z_INDEX = 100;
@@ -0,0 +1,3 @@
1
+ import { IModelContext } from '../types';
2
+ declare const _default: import("react").Context<IModelContext | null>;
3
+ export default _default;
@@ -0,0 +1,6 @@
1
+ export declare enum EAction {
2
+ REFRESH_VISIBLE = 0
3
+ }
4
+ export declare enum EMessageType {
5
+ REFRESH = "kcuf-ui-backdrop:refresh"
6
+ }
@@ -0,0 +1,2 @@
1
+ import { IModelContext } from '../types';
2
+ export default function useModelContext(): IModelContext;
@@ -0,0 +1,2 @@
1
+ import { TModelDispatch } from '../types';
2
+ export default function useModelDispatch(): TModelDispatch;
@@ -0,0 +1,2 @@
1
+ import { IModelProps } from '../types';
2
+ export default function useModelProps(): IModelProps;
@@ -0,0 +1,2 @@
1
+ import { IModelState } from '../types';
2
+ export default function useModelState(): IModelState;
@@ -0,0 +1,3 @@
1
+ export { default as useProps } from './_use-model-props';
2
+ export { default as useZIndex } from './use-z-index';
3
+ export { default as useHandleClick } from './use-handle-click';
@@ -0,0 +1 @@
1
+ export default function useDispatchRefreshVisible(): (payload: number) => void;
@@ -0,0 +1 @@
1
+ export default function useEffectSingleton(): void;
@@ -0,0 +1 @@
1
+ export default function useEffects(): void;
@@ -0,0 +1 @@
1
+ export default function useHandleClick(): () => void;
@@ -0,0 +1 @@
1
+ export default function useZIndex(): number;
@@ -0,0 +1,3 @@
1
+ export { default } from './provider';
2
+ export * from './hook';
3
+ export type { IModelProps as BackdropProps } from './types';
@@ -0,0 +1 @@
1
+ export default function Lifecycle(): null;
@@ -0,0 +1,3 @@
1
+ import { ReactElement } from 'react';
2
+ import { IModelProviderProps } from '../types';
3
+ export default function Provider({ children, ...props }: IModelProviderProps): ReactElement;
@@ -0,0 +1,2 @@
1
+ import { IModelState, TModelAction } from '../types';
2
+ export default function reducer(state: IModelState, action: TModelAction): IModelState;
@@ -0,0 +1,2 @@
1
+ import { IModelState } from '../types';
2
+ export default function reduceRefreshVisible(state: IModelState, payload: number): IModelState;
@@ -0,0 +1,7 @@
1
+ import { Dispatch } from 'react';
2
+ import { EAction } from '../enum';
3
+ export type TModelAction = {
4
+ type: EAction.REFRESH_VISIBLE;
5
+ payload: number;
6
+ };
7
+ export type TModelDispatch = Dispatch<TModelAction>;
@@ -0,0 +1,16 @@
1
+ export interface IBackdropSingletonItem {
2
+ n: number;
3
+ zIndex: number;
4
+ }
5
+ export interface IBackdropGlobal {
6
+ n?: number;
7
+ items?: IBackdropSingletonItem[];
8
+ }
9
+ export interface IBackdropWindow {
10
+ __backdrop_singleton__?: IBackdropGlobal;
11
+ }
12
+ export interface IMessageData<T = void> {
13
+ source: string;
14
+ type: string;
15
+ payload: T;
16
+ }
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ import { IModelProps } from './props';
3
+ import { IModelState } from './state';
4
+ import { TModelDispatch } from './action';
5
+ export interface IModelContext {
6
+ props: IModelProps;
7
+ state: IModelState;
8
+ dispatch: TModelDispatch;
9
+ }
10
+ export interface IModelProviderProps extends IModelProps {
11
+ children: ReactNode;
12
+ }
@@ -0,0 +1,5 @@
1
+ export * from './common';
2
+ export * from './props';
3
+ export * from './state';
4
+ export * from './action';
5
+ export * from './context';
@@ -0,0 +1,14 @@
1
+ export interface IModelProps {
2
+ /**
3
+ * z-index 默认 100
4
+ */
5
+ zIndex?: number;
6
+ /**
7
+ * 是否点击关闭
8
+ */
9
+ closable?: boolean;
10
+ /**
11
+ * 点击关闭的回调,必须 `closable: true`
12
+ */
13
+ onClose?(): void;
14
+ }
@@ -0,0 +1,3 @@
1
+ export interface IModelState {
2
+ visible: boolean;
3
+ }
@@ -0,0 +1,2 @@
1
+ import { IModelState } from '../types';
2
+ export default function createInitialState(): IModelState;
@@ -0,0 +1,5 @@
1
+ export { default as createInitialState } from './create-initial-state';
2
+ export { default as singletonPush } from './singleton-push';
3
+ export { default as singletonPull } from './singleton-pull';
4
+ export { default as singletonUpdate } from './singleton-update';
5
+ export { default as singletonIsVisible } from './singleton-is-visible';
@@ -0,0 +1 @@
1
+ export default function messageEmitRefresh(n: number): void;
@@ -0,0 +1,5 @@
1
+ import { IBackdropSingletonItem } from '../types';
2
+ /**
3
+ * 获取展示的 item,即 z-index 最高的那个(如果 z-index 一样,则后入者高)
4
+ */
5
+ export default function singletonGetVisibleItem(): IBackdropSingletonItem | undefined;
@@ -0,0 +1,2 @@
1
+ import { IBackdropGlobal } from '../types';
2
+ export default function singletonGlobal(): IBackdropGlobal;
@@ -0,0 +1 @@
1
+ export default function singletonIsVisible(n: number): boolean;
@@ -0,0 +1 @@
1
+ export default function singletonPull(n: number): void;
@@ -0,0 +1 @@
1
+ export default function singletonPush(zIndex?: number): number;
@@ -0,0 +1 @@
1
+ export default function singletonUpdate(n: number, zIndex?: number): void;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 不用 effect,不好处理
3
+ */
4
+ export default function toggleScrollbar(visible: boolean): void;
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@kcuf-ui/backdrop-headless",
3
+ "version": "0.0.1",
4
+ "description": "A headless backdrop component which enables singleton power of backdrop.",
5
+ "keywords": [],
6
+ "license": "MIT",
7
+ "sideEffects": false,
8
+ "main": "dist/cjs/index.js",
9
+ "module": "dist/esm/index.js",
10
+ "types": "dist/types/index.d.ts",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/justnewbee/kcuf.git"
14
+ },
15
+ "homepage": "https://github.com/justnewbee/kcuf/tree/main/packages-ui/backdrop-headless",
16
+ "bugs": "https://github.com/justnewbee/kcuf/issues",
17
+ "author": {
18
+ "name": "Jianchun Wang",
19
+ "email": "justnewbee@gmail.com"
20
+ },
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "devDependencies": {
25
+ "@babel/cli": "^7.28.6",
26
+ "@babel/core": "^7.29.0",
27
+ "@babel/plugin-transform-react-jsx": "^7.28.6",
28
+ "@babel/plugin-transform-runtime": "^7.29.0",
29
+ "@babel/preset-env": "^7.29.5",
30
+ "@babel/preset-react": "^7.28.5",
31
+ "@babel/preset-typescript": "^7.28.5",
32
+ "@types/react": "^19.2.14",
33
+ "react": "^19.2.6",
34
+ "rimraf": "^6.1.3",
35
+ "typescript": "^6.0.3",
36
+ "@kcuf/ts-config": "^0.2.0"
37
+ },
38
+ "peerDependencies": {
39
+ "@babel/runtime": ">=7.0.0",
40
+ "react": ">=19.0.0"
41
+ },
42
+ "dependencies": {
43
+ "immer": "^11.1.8",
44
+ "@kcuf-hook/use-is-unmounted": "^0.1.0",
45
+ "@kcuf/mere-dom": "^0.0.4",
46
+ "@kcuf/messenger": "^0.0.2",
47
+ "@kcuf/sandbox-escape": "^0.0.1"
48
+ },
49
+ "scripts": {
50
+ "build:clean": "rimraf dist",
51
+ "build:esm": "ESM=1 babel src -d dist/esm --extensions .ts,.tsx --source-maps",
52
+ "build:cjs": "ESM=0 babel src -d dist/cjs --extensions .ts,.tsx",
53
+ "build:types": "tsc -rootDir src --outDir dist/types --declaration --noEmit false --emitDeclarationOnly --isolatedModules false",
54
+ "build": "pnpm build:esm && pnpm build:cjs && pnpm build:types",
55
+ "watch": "pnpm build:esm -w"
56
+ }
57
+ }