pdyform 1.2.0 → 2.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 (113) hide show
  1. package/README.md +28 -1
  2. package/example/README.md +36 -0
  3. package/example/react-demo/index.html +12 -0
  4. package/example/react-demo/node_modules/.bin/browserslist +17 -0
  5. package/example/react-demo/node_modules/.bin/tsc +17 -0
  6. package/example/react-demo/node_modules/.bin/tsserver +17 -0
  7. package/example/react-demo/node_modules/.bin/vite +17 -0
  8. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-checkbox.js +300 -0
  9. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-checkbox.js.map +7 -0
  10. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-label.js +194 -0
  11. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-label.js.map +7 -0
  12. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-radio-group.js +530 -0
  13. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-radio-group.js.map +7 -0
  14. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-select.js +4808 -0
  15. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-select.js.map +7 -0
  16. package/example/react-demo/node_modules/.vite/deps/_metadata.json +115 -0
  17. package/example/react-demo/node_modules/.vite/deps/chunk-3D5PZ6F6.js +49 -0
  18. package/example/react-demo/node_modules/.vite/deps/chunk-3D5PZ6F6.js.map +7 -0
  19. package/example/react-demo/node_modules/.vite/deps/chunk-5Q2RBQLA.js +127 -0
  20. package/example/react-demo/node_modules/.vite/deps/chunk-5Q2RBQLA.js.map +7 -0
  21. package/example/react-demo/node_modules/.vite/deps/chunk-G3PMV62Z.js +36 -0
  22. package/example/react-demo/node_modules/.vite/deps/chunk-G3PMV62Z.js.map +7 -0
  23. package/example/react-demo/node_modules/.vite/deps/chunk-GX7YZ5KV.js +370 -0
  24. package/example/react-demo/node_modules/.vite/deps/chunk-GX7YZ5KV.js.map +7 -0
  25. package/example/react-demo/node_modules/.vite/deps/chunk-PUFJGYAC.js +928 -0
  26. package/example/react-demo/node_modules/.vite/deps/chunk-PUFJGYAC.js.map +7 -0
  27. package/example/react-demo/node_modules/.vite/deps/chunk-SIU35MPB.js +21 -0
  28. package/example/react-demo/node_modules/.vite/deps/chunk-SIU35MPB.js.map +7 -0
  29. package/example/react-demo/node_modules/.vite/deps/chunk-TOMGVNQP.js +1906 -0
  30. package/example/react-demo/node_modules/.vite/deps/chunk-TOMGVNQP.js.map +7 -0
  31. package/example/react-demo/node_modules/.vite/deps/chunk-YYN6DZAU.js +21628 -0
  32. package/example/react-demo/node_modules/.vite/deps/chunk-YYN6DZAU.js.map +7 -0
  33. package/example/react-demo/node_modules/.vite/deps/chunk-ZE5VSJFE.js +144 -0
  34. package/example/react-demo/node_modules/.vite/deps/chunk-ZE5VSJFE.js.map +7 -0
  35. package/example/react-demo/node_modules/.vite/deps/class-variance-authority.js +51 -0
  36. package/example/react-demo/node_modules/.vite/deps/class-variance-authority.js.map +7 -0
  37. package/example/react-demo/node_modules/.vite/deps/clsx.js +10 -0
  38. package/example/react-demo/node_modules/.vite/deps/clsx.js.map +7 -0
  39. package/example/react-demo/node_modules/.vite/deps/lucide-react.js +29725 -0
  40. package/example/react-demo/node_modules/.vite/deps/lucide-react.js.map +7 -0
  41. package/example/react-demo/node_modules/.vite/deps/package.json +3 -0
  42. package/example/react-demo/node_modules/.vite/deps/react-dom.js +7 -0
  43. package/example/react-demo/node_modules/.vite/deps/react-dom.js.map +7 -0
  44. package/example/react-demo/node_modules/.vite/deps/react-dom_client.js +39 -0
  45. package/example/react-demo/node_modules/.vite/deps/react-dom_client.js.map +7 -0
  46. package/example/react-demo/node_modules/.vite/deps/react.js +6 -0
  47. package/example/react-demo/node_modules/.vite/deps/react.js.map +7 -0
  48. package/example/react-demo/node_modules/.vite/deps/react_jsx-dev-runtime.js +913 -0
  49. package/example/react-demo/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
  50. package/example/react-demo/node_modules/.vite/deps/react_jsx-runtime.js +7 -0
  51. package/example/react-demo/node_modules/.vite/deps/react_jsx-runtime.js.map +7 -0
  52. package/example/react-demo/node_modules/.vite/deps/tailwind-merge.js +2534 -0
  53. package/example/react-demo/node_modules/.vite/deps/tailwind-merge.js.map +7 -0
  54. package/example/react-demo/package.json +23 -0
  55. package/example/react-demo/postcss.config.mjs +6 -0
  56. package/example/react-demo/src/App.tsx +64 -0
  57. package/example/react-demo/src/main.tsx +10 -0
  58. package/example/react-demo/src/styles.css +102 -0
  59. package/example/react-demo/tailwind.config.mjs +50 -0
  60. package/example/react-demo/tsconfig.json +16 -0
  61. package/example/react-demo/vite.config.ts +14 -0
  62. package/example/shared/defaultSchema.ts +68 -0
  63. package/example/vue-demo/index.html +12 -0
  64. package/example/vue-demo/node_modules/.bin/tsc +17 -0
  65. package/example/vue-demo/node_modules/.bin/tsserver +17 -0
  66. package/example/vue-demo/node_modules/.bin/vite +17 -0
  67. package/example/vue-demo/node_modules/.vite/deps/_metadata.json +46 -0
  68. package/example/vue-demo/node_modules/.vite/deps/chunk-PZ5AY32C.js +10 -0
  69. package/example/vue-demo/node_modules/.vite/deps/chunk-PZ5AY32C.js.map +7 -0
  70. package/example/vue-demo/node_modules/.vite/deps/chunk-TCXBSQ4M.js +12877 -0
  71. package/example/vue-demo/node_modules/.vite/deps/chunk-TCXBSQ4M.js.map +7 -0
  72. package/example/vue-demo/node_modules/.vite/deps/clsx.js +22 -0
  73. package/example/vue-demo/node_modules/.vite/deps/clsx.js.map +7 -0
  74. package/example/vue-demo/node_modules/.vite/deps/lucide-vue-next.js +29720 -0
  75. package/example/vue-demo/node_modules/.vite/deps/lucide-vue-next.js.map +7 -0
  76. package/example/vue-demo/node_modules/.vite/deps/package.json +3 -0
  77. package/example/vue-demo/node_modules/.vite/deps/radix-vue.js +24321 -0
  78. package/example/vue-demo/node_modules/.vite/deps/radix-vue.js.map +7 -0
  79. package/example/vue-demo/node_modules/.vite/deps/tailwind-merge.js +2534 -0
  80. package/example/vue-demo/node_modules/.vite/deps/tailwind-merge.js.map +7 -0
  81. package/example/vue-demo/node_modules/.vite/deps/vue.js +348 -0
  82. package/example/vue-demo/node_modules/.vite/deps/vue.js.map +7 -0
  83. package/example/vue-demo/package.json +20 -0
  84. package/example/vue-demo/postcss.config.mjs +6 -0
  85. package/example/vue-demo/src/App.vue +61 -0
  86. package/example/vue-demo/src/env.d.ts +1 -0
  87. package/example/vue-demo/src/main.ts +5 -0
  88. package/example/vue-demo/src/style.css +102 -0
  89. package/example/vue-demo/tailwind.config.mjs +50 -0
  90. package/example/vue-demo/tsconfig.json +15 -0
  91. package/example/vue-demo/vite.config.ts +14 -0
  92. package/package.json +9 -3
  93. package/packages/core/dist/{chunk-KQR3LFND.js → chunk-GQASS6PM.js} +20 -0
  94. package/packages/core/dist/index.cjs +20 -0
  95. package/packages/core/dist/index.js +1 -1
  96. package/packages/core/dist/utils.cjs +20 -0
  97. package/packages/core/dist/utils.js +1 -1
  98. package/packages/core/node_modules/.vite/vitest/results.json +1 -1
  99. package/packages/core/src/utils.ts +21 -0
  100. package/packages/core/test/utils.test.ts +6 -0
  101. package/packages/react/dist/index.cjs +22 -13
  102. package/packages/react/dist/index.js +22 -13
  103. package/packages/react/node_modules/.bin/vite +4 -4
  104. package/packages/react/node_modules/.vite/vitest/results.json +1 -1
  105. package/packages/react/src/components/InputRenderer.tsx +23 -12
  106. package/packages/react/test/FormFieldRenderer.test.tsx +10 -0
  107. package/packages/vue/dist/index.js +1 -1
  108. package/packages/vue/dist/index.mjs +9 -3
  109. package/packages/vue/node_modules/.vite/vitest/results.json +1 -1
  110. package/packages/vue/src/components/InputRenderer.vue +10 -1
  111. package/packages/vue/test/FormFieldRenderer.test.ts +11 -0
  112. package/pnpm-workspace.yaml +1 -1
  113. package/turbo.json +8 -0
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # pdyform
2
2
 
3
3
  [![npm version](https://badge.fury.io/js/pdyform.svg)](https://badge.fury.io/js/pdyform)
4
- [![Tests](https://img.shields.io/badge/tests-6%20passed%20(100%25)-brightgreen.svg)]()
4
+ [![Tests](https://img.shields.io/badge/tests-27%20passed%20(100%25)-brightgreen.svg)]()
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
 
7
7
  [English](#english) | [中文说明](#中文说明)
@@ -174,3 +174,30 @@ pnpm run build:all
174
174
  # Run all tests / 运行所有单元测试
175
175
  pnpm run test:all
176
176
  ```
177
+
178
+ ## Examples / 示例工程
179
+
180
+ 新增 `example/` 目录用于本地开发调试(实时编辑 schema,验证 React/Vue 渲染与提交结果):
181
+
182
+ - `example/react-demo`:React 渲染与 schema 调试
183
+ - `example/vue-demo`:Vue 渲染与 schema 调试
184
+ - `example/shared/defaultSchema.ts`:共享默认 schema
185
+
186
+ 在根目录运行:
187
+
188
+ ```bash
189
+ # React + Vue 同时启动(推荐)
190
+ pnpm run dev:example
191
+
192
+ # 单独启动 React demo
193
+ pnpm run dev:example:react
194
+
195
+ # 单独启动 Vue demo
196
+ pnpm run dev:example:vue
197
+
198
+ # 构建示例工程
199
+ pnpm run build:example:react
200
+ pnpm run build:example:vue
201
+ ```
202
+
203
+ 更多说明见 `example/README.md`。
@@ -0,0 +1,36 @@
1
+ # examples
2
+
3
+ 用于本地调试 schema 与渲染行为的示例工程。
4
+
5
+ ## 目录
6
+
7
+ ```text
8
+ example/
9
+ ├── shared/
10
+ │ └── defaultSchema.ts # React/Vue 共享默认 schema
11
+ ├── react-demo/ # Vite + React 示例
12
+ └── vue-demo/ # Vite + Vue 示例
13
+ ```
14
+
15
+ ## 启动
16
+
17
+ 在仓库根目录执行:
18
+
19
+ ```bash
20
+ pnpm install
21
+
22
+ # React + Vue 一起启动
23
+ pnpm run dev:example
24
+
25
+ # React demo
26
+ pnpm run dev:example:react
27
+
28
+ # Vue demo
29
+ pnpm run dev:example:vue
30
+ ```
31
+
32
+ ## 使用方式
33
+
34
+ - 左侧:可直接编辑 JSON schema(实时解析)
35
+ - 右侧:渲染动态表单并提交,观察 payload
36
+ - 修改 schema 后可立即验证字段渲染和校验逻辑是否正常
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>pdyform React Demo</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="/src/main.tsx"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/browserslist@4.28.1/node_modules/browserslist/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/browserslist@4.28.1/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/browserslist@4.28.1/node_modules/browserslist/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/browserslist@4.28.1/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/browserslist@4.28.1/node_modules/browserslist/cli.js" "$@"
15
+ else
16
+ exec node "$basedir/../../../../node_modules/.pnpm/browserslist@4.28.1/node_modules/browserslist/cli.js" "$@"
17
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
15
+ else
16
+ exec node "$basedir/../typescript/bin/tsc" "$@"
17
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
15
+ else
16
+ exec node "$basedir/../typescript/bin/tsserver" "$@"
17
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@5.4.21_@types+node@20.19.35/node_modules/vite/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@5.4.21_@types+node@20.19.35/node_modules/vite/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@5.4.21_@types+node@20.19.35/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@5.4.21_@types+node@20.19.35/node_modules/vite/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@5.4.21_@types+node@20.19.35/node_modules/vite/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@5.4.21_@types+node@20.19.35/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
15
+ else
16
+ exec node "$basedir/../vite/bin/vite.js" "$@"
17
+ fi
@@ -0,0 +1,300 @@
1
+ "use client";
2
+ import {
3
+ Presence
4
+ } from "./chunk-ZE5VSJFE.js";
5
+ import {
6
+ Primitive,
7
+ composeEventHandlers,
8
+ createContextScope,
9
+ useControllableState,
10
+ usePrevious,
11
+ useSize
12
+ } from "./chunk-GX7YZ5KV.js";
13
+ import {
14
+ useComposedRefs
15
+ } from "./chunk-3D5PZ6F6.js";
16
+ import "./chunk-YYN6DZAU.js";
17
+ import {
18
+ require_jsx_runtime
19
+ } from "./chunk-PUFJGYAC.js";
20
+ import {
21
+ require_react
22
+ } from "./chunk-TOMGVNQP.js";
23
+ import {
24
+ __toESM
25
+ } from "./chunk-G3PMV62Z.js";
26
+
27
+ // ../../node_modules/.pnpm/@radix-ui+react-checkbox@1.3.3_@types+react-dom@18.3.7_@types+react@18.3.28__@types+react@18._t74gssewtskobxwycl7nf6sn4m/node_modules/@radix-ui/react-checkbox/dist/index.mjs
28
+ var React = __toESM(require_react(), 1);
29
+ var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
30
+ var CHECKBOX_NAME = "Checkbox";
31
+ var [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);
32
+ var [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
33
+ function CheckboxProvider(props) {
34
+ const {
35
+ __scopeCheckbox,
36
+ checked: checkedProp,
37
+ children,
38
+ defaultChecked,
39
+ disabled,
40
+ form,
41
+ name,
42
+ onCheckedChange,
43
+ required,
44
+ value = "on",
45
+ // @ts-expect-error
46
+ internal_do_not_use_render
47
+ } = props;
48
+ const [checked, setChecked] = useControllableState({
49
+ prop: checkedProp,
50
+ defaultProp: defaultChecked ?? false,
51
+ onChange: onCheckedChange,
52
+ caller: CHECKBOX_NAME
53
+ });
54
+ const [control, setControl] = React.useState(null);
55
+ const [bubbleInput, setBubbleInput] = React.useState(null);
56
+ const hasConsumerStoppedPropagationRef = React.useRef(false);
57
+ const isFormControl = control ? !!form || !!control.closest("form") : (
58
+ // We set this to true by default so that events bubble to forms without JS (SSR)
59
+ true
60
+ );
61
+ const context = {
62
+ checked,
63
+ disabled,
64
+ setChecked,
65
+ control,
66
+ setControl,
67
+ name,
68
+ form,
69
+ value,
70
+ hasConsumerStoppedPropagationRef,
71
+ required,
72
+ defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,
73
+ isFormControl,
74
+ bubbleInput,
75
+ setBubbleInput
76
+ };
77
+ return (0, import_jsx_runtime.jsx)(
78
+ CheckboxProviderImpl,
79
+ {
80
+ scope: __scopeCheckbox,
81
+ ...context,
82
+ children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children
83
+ }
84
+ );
85
+ }
86
+ var TRIGGER_NAME = "CheckboxTrigger";
87
+ var CheckboxTrigger = React.forwardRef(
88
+ ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => {
89
+ const {
90
+ control,
91
+ value,
92
+ disabled,
93
+ checked,
94
+ required,
95
+ setControl,
96
+ setChecked,
97
+ hasConsumerStoppedPropagationRef,
98
+ isFormControl,
99
+ bubbleInput
100
+ } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);
101
+ const composedRefs = useComposedRefs(forwardedRef, setControl);
102
+ const initialCheckedStateRef = React.useRef(checked);
103
+ React.useEffect(() => {
104
+ const form = control == null ? void 0 : control.form;
105
+ if (form) {
106
+ const reset = () => setChecked(initialCheckedStateRef.current);
107
+ form.addEventListener("reset", reset);
108
+ return () => form.removeEventListener("reset", reset);
109
+ }
110
+ }, [control, setChecked]);
111
+ return (0, import_jsx_runtime.jsx)(
112
+ Primitive.button,
113
+ {
114
+ type: "button",
115
+ role: "checkbox",
116
+ "aria-checked": isIndeterminate(checked) ? "mixed" : checked,
117
+ "aria-required": required,
118
+ "data-state": getState(checked),
119
+ "data-disabled": disabled ? "" : void 0,
120
+ disabled,
121
+ value,
122
+ ...checkboxProps,
123
+ ref: composedRefs,
124
+ onKeyDown: composeEventHandlers(onKeyDown, (event) => {
125
+ if (event.key === "Enter") event.preventDefault();
126
+ }),
127
+ onClick: composeEventHandlers(onClick, (event) => {
128
+ setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);
129
+ if (bubbleInput && isFormControl) {
130
+ hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
131
+ if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
132
+ }
133
+ })
134
+ }
135
+ );
136
+ }
137
+ );
138
+ CheckboxTrigger.displayName = TRIGGER_NAME;
139
+ var Checkbox = React.forwardRef(
140
+ (props, forwardedRef) => {
141
+ const {
142
+ __scopeCheckbox,
143
+ name,
144
+ checked,
145
+ defaultChecked,
146
+ required,
147
+ disabled,
148
+ value,
149
+ onCheckedChange,
150
+ form,
151
+ ...checkboxProps
152
+ } = props;
153
+ return (0, import_jsx_runtime.jsx)(
154
+ CheckboxProvider,
155
+ {
156
+ __scopeCheckbox,
157
+ checked,
158
+ defaultChecked,
159
+ disabled,
160
+ required,
161
+ onCheckedChange,
162
+ name,
163
+ form,
164
+ value,
165
+ internal_do_not_use_render: ({ isFormControl }) => (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
166
+ (0, import_jsx_runtime.jsx)(
167
+ CheckboxTrigger,
168
+ {
169
+ ...checkboxProps,
170
+ ref: forwardedRef,
171
+ __scopeCheckbox
172
+ }
173
+ ),
174
+ isFormControl && (0, import_jsx_runtime.jsx)(
175
+ CheckboxBubbleInput,
176
+ {
177
+ __scopeCheckbox
178
+ }
179
+ )
180
+ ] })
181
+ }
182
+ );
183
+ }
184
+ );
185
+ Checkbox.displayName = CHECKBOX_NAME;
186
+ var INDICATOR_NAME = "CheckboxIndicator";
187
+ var CheckboxIndicator = React.forwardRef(
188
+ (props, forwardedRef) => {
189
+ const { __scopeCheckbox, forceMount, ...indicatorProps } = props;
190
+ const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);
191
+ return (0, import_jsx_runtime.jsx)(
192
+ Presence,
193
+ {
194
+ present: forceMount || isIndeterminate(context.checked) || context.checked === true,
195
+ children: (0, import_jsx_runtime.jsx)(
196
+ Primitive.span,
197
+ {
198
+ "data-state": getState(context.checked),
199
+ "data-disabled": context.disabled ? "" : void 0,
200
+ ...indicatorProps,
201
+ ref: forwardedRef,
202
+ style: { pointerEvents: "none", ...props.style }
203
+ }
204
+ )
205
+ }
206
+ );
207
+ }
208
+ );
209
+ CheckboxIndicator.displayName = INDICATOR_NAME;
210
+ var BUBBLE_INPUT_NAME = "CheckboxBubbleInput";
211
+ var CheckboxBubbleInput = React.forwardRef(
212
+ ({ __scopeCheckbox, ...props }, forwardedRef) => {
213
+ const {
214
+ control,
215
+ hasConsumerStoppedPropagationRef,
216
+ checked,
217
+ defaultChecked,
218
+ required,
219
+ disabled,
220
+ name,
221
+ value,
222
+ form,
223
+ bubbleInput,
224
+ setBubbleInput
225
+ } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);
226
+ const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);
227
+ const prevChecked = usePrevious(checked);
228
+ const controlSize = useSize(control);
229
+ React.useEffect(() => {
230
+ const input = bubbleInput;
231
+ if (!input) return;
232
+ const inputProto = window.HTMLInputElement.prototype;
233
+ const descriptor = Object.getOwnPropertyDescriptor(
234
+ inputProto,
235
+ "checked"
236
+ );
237
+ const setChecked = descriptor.set;
238
+ const bubbles = !hasConsumerStoppedPropagationRef.current;
239
+ if (prevChecked !== checked && setChecked) {
240
+ const event = new Event("click", { bubbles });
241
+ input.indeterminate = isIndeterminate(checked);
242
+ setChecked.call(input, isIndeterminate(checked) ? false : checked);
243
+ input.dispatchEvent(event);
244
+ }
245
+ }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);
246
+ const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);
247
+ return (0, import_jsx_runtime.jsx)(
248
+ Primitive.input,
249
+ {
250
+ type: "checkbox",
251
+ "aria-hidden": true,
252
+ defaultChecked: defaultChecked ?? defaultCheckedRef.current,
253
+ required,
254
+ disabled,
255
+ name,
256
+ value,
257
+ form,
258
+ ...props,
259
+ tabIndex: -1,
260
+ ref: composedRefs,
261
+ style: {
262
+ ...props.style,
263
+ ...controlSize,
264
+ position: "absolute",
265
+ pointerEvents: "none",
266
+ opacity: 0,
267
+ margin: 0,
268
+ // We transform because the input is absolutely positioned but we have
269
+ // rendered it **after** the button. This pulls it back to sit on top
270
+ // of the button.
271
+ transform: "translateX(-100%)"
272
+ }
273
+ }
274
+ );
275
+ }
276
+ );
277
+ CheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;
278
+ function isFunction(value) {
279
+ return typeof value === "function";
280
+ }
281
+ function isIndeterminate(checked) {
282
+ return checked === "indeterminate";
283
+ }
284
+ function getState(checked) {
285
+ return isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
286
+ }
287
+ export {
288
+ Checkbox,
289
+ CheckboxIndicator,
290
+ CheckboxIndicator as Indicator,
291
+ Checkbox as Root,
292
+ createCheckboxScope,
293
+ CheckboxBubbleInput as unstable_BubbleInput,
294
+ CheckboxBubbleInput as unstable_CheckboxBubbleInput,
295
+ CheckboxProvider as unstable_CheckboxProvider,
296
+ CheckboxTrigger as unstable_CheckboxTrigger,
297
+ CheckboxProvider as unstable_Provider,
298
+ CheckboxTrigger as unstable_Trigger
299
+ };
300
+ //# sourceMappingURL=@radix-ui_react-checkbox.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../node_modules/.pnpm/@radix-ui+react-checkbox@1.3.3_@types+react-dom@18.3.7_@types+react@18.3.28__@types+react@18._t74gssewtskobxwycl7nf6sn4m/node_modules/@radix-ui/react-checkbox/src/checkbox.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst CHECKBOX_NAME = 'Checkbox';\n\ntype ScopedProps<P> = P & { __scopeCheckbox?: Scope };\nconst [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\n\ntype CheckedState = boolean | 'indeterminate';\n\ntype CheckboxContextValue<State extends CheckedState | boolean = CheckedState> = {\n checked: State | boolean;\n setChecked: React.Dispatch<React.SetStateAction<State | boolean>>;\n disabled: boolean | undefined;\n control: HTMLButtonElement | null;\n setControl: React.Dispatch<React.SetStateAction<HTMLButtonElement | null>>;\n name: string | undefined;\n form: string | undefined;\n value: string | number | readonly string[];\n hasConsumerStoppedPropagationRef: React.RefObject<boolean>;\n required: boolean | undefined;\n defaultChecked: boolean | undefined;\n isFormControl: boolean;\n bubbleInput: HTMLInputElement | null;\n setBubbleInput: React.Dispatch<React.SetStateAction<HTMLInputElement | null>>;\n};\n\nconst [CheckboxProviderImpl, useCheckboxContext] =\n createCheckboxContext<CheckboxContextValue>(CHECKBOX_NAME);\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CheckboxProviderProps<State extends CheckedState = CheckedState> {\n checked?: State | boolean;\n defaultChecked?: State | boolean;\n required?: boolean;\n onCheckedChange?(checked: State | boolean): void;\n name?: string;\n form?: string;\n disabled?: boolean;\n value?: string | number | readonly string[];\n children?: React.ReactNode;\n}\n\nfunction CheckboxProvider<State extends CheckedState = CheckedState>(\n props: ScopedProps<CheckboxProviderProps<State>>\n) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = 'on',\n // @ts-expect-error\n internal_do_not_use_render,\n } = props;\n\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME,\n });\n const [control, setControl] = React.useState<HTMLButtonElement | null>(null);\n const [bubbleInput, setBubbleInput] = React.useState<HTMLInputElement | null>(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control\n ? !!form || !!control.closest('form')\n : // We set this to true by default so that events bubble to forms without JS (SSR)\n true;\n\n const context: CheckboxContextValue<State> = {\n checked: checked,\n disabled: disabled,\n setChecked: setChecked,\n control: control,\n setControl: setControl,\n name: name,\n form: form,\n value: value,\n hasConsumerStoppedPropagationRef: hasConsumerStoppedPropagationRef,\n required: required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl: isFormControl,\n bubbleInput,\n setBubbleInput,\n };\n\n return (\n <CheckboxProviderImpl\n scope={__scopeCheckbox}\n {...(context as unknown as CheckboxContextValue<CheckedState>)}\n >\n {isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children}\n </CheckboxProviderImpl>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CheckboxTrigger';\n\ninterface CheckboxTriggerProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.button>,\n keyof CheckboxProviderProps\n > {\n children?: React.ReactNode;\n}\n\nconst CheckboxTrigger = React.forwardRef<HTMLButtonElement, CheckboxTriggerProps>(\n (\n { __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }: ScopedProps<CheckboxTriggerProps>,\n forwardedRef\n ) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput,\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener('reset', reset);\n return () => form.removeEventListener('reset', reset);\n }\n }, [control, setChecked]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={isIndeterminate(checked) ? 'mixed' : checked}\n aria-required={required}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...checkboxProps}\n ref={composedRefs}\n onKeyDown={composeEventHandlers(onKeyDown, (event) => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onClick={composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => (isIndeterminate(prevChecked) ? true : !prevChecked));\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if checkbox has a bubble input and is a form control, stop\n // propagation from the button so that we only propagate one click\n // event (from the input). We propagate changes from an input so\n // that native form validation works and form events reflect\n // checkbox updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n );\n }\n);\n\nCheckboxTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Checkbox\n * -----------------------------------------------------------------------------------------------*/\n\ntype CheckboxElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CheckboxProps extends Omit<PrimitiveButtonProps, 'checked' | 'defaultChecked'> {\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n required?: boolean;\n onCheckedChange?(checked: CheckedState): void;\n}\n\nconst Checkbox = React.forwardRef<CheckboxElement, CheckboxProps>(\n (props: ScopedProps<CheckboxProps>, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n\n return (\n <CheckboxProvider\n __scopeCheckbox={__scopeCheckbox}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n required={required}\n onCheckedChange={onCheckedChange}\n name={name}\n form={form}\n value={value}\n // @ts-expect-error\n internal_do_not_use_render={({ isFormControl }: CheckboxContextValue) => (\n <>\n <CheckboxTrigger\n {...checkboxProps}\n ref={forwardedRef}\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n {isFormControl && (\n <CheckboxBubbleInput\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n )}\n </>\n )}\n />\n );\n }\n);\n\nCheckbox.displayName = CHECKBOX_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'CheckboxIndicator';\n\ntype CheckboxIndicatorElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface CheckboxIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CheckboxIndicator = React.forwardRef<CheckboxIndicatorElement, CheckboxIndicatorProps>(\n (props: ScopedProps<CheckboxIndicatorProps>, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return (\n <Presence\n present={forceMount || isIndeterminate(context.checked) || context.checked === true}\n >\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n style={{ pointerEvents: 'none', ...props.style }}\n />\n </Presence>\n );\n }\n);\n\nCheckboxIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'CheckboxBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface CheckboxBubbleInputProps extends Omit<InputProps, 'checked'> {}\n\nconst CheckboxBubbleInput = React.forwardRef<HTMLInputElement, CheckboxBubbleInputProps>(\n ({ __scopeCheckbox, ...props }: ScopedProps<CheckboxBubbleInputProps>, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput,\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked'\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return (\n <Primitive.input\n type=\"checkbox\"\n aria-hidden\n defaultChecked={defaultChecked ?? defaultCheckedRef.current}\n required={required}\n disabled={disabled}\n name={name}\n value={value}\n form={form}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: 'translateX(-100%)',\n }}\n />\n );\n }\n);\n\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n\nfunction isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nfunction getState(checked: CheckedState) {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createCheckboxScope,\n //\n Checkbox,\n CheckboxProvider,\n CheckboxTrigger,\n CheckboxIndicator,\n CheckboxBubbleInput,\n //\n Checkbox as Root,\n CheckboxProvider as Provider,\n CheckboxTrigger as Trigger,\n CheckboxIndicator as Indicator,\n CheckboxBubbleInput as BubbleInput,\n};\nexport type {\n CheckboxProps,\n CheckboxProviderProps,\n CheckboxTriggerProps,\n CheckboxIndicatorProps,\n CheckboxBubbleInputProps,\n CheckedState,\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }