@texaryn/react 0.0.0

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 (82) hide show
  1. package/LICENSE +190 -0
  2. package/dist/components/FormRoot.d.ts +7 -0
  3. package/dist/components/FormRoot.d.ts.map +1 -0
  4. package/dist/components/FormRoot.js +14 -0
  5. package/dist/components/FormRoot.js.map +1 -0
  6. package/dist/components/NodeRenderer.d.ts +15 -0
  7. package/dist/components/NodeRenderer.d.ts.map +1 -0
  8. package/dist/components/NodeRenderer.js +19 -0
  9. package/dist/components/NodeRenderer.js.map +1 -0
  10. package/dist/components/renderer-context.d.ts +17 -0
  11. package/dist/components/renderer-context.d.ts.map +1 -0
  12. package/dist/components/renderer-context.js +10 -0
  13. package/dist/components/renderer-context.js.map +1 -0
  14. package/dist/context.d.ts +5 -0
  15. package/dist/context.d.ts.map +1 -0
  16. package/dist/context.js +11 -0
  17. package/dist/context.js.map +1 -0
  18. package/dist/hooks/use-field-array.d.ts +16 -0
  19. package/dist/hooks/use-field-array.d.ts.map +1 -0
  20. package/dist/hooks/use-field-array.js +27 -0
  21. package/dist/hooks/use-field-array.js.map +1 -0
  22. package/dist/hooks/use-field.d.ts +13 -0
  23. package/dist/hooks/use-field.d.ts.map +1 -0
  24. package/dist/hooks/use-field.js +31 -0
  25. package/dist/hooks/use-field.js.map +1 -0
  26. package/dist/hooks/use-form.d.ts +11 -0
  27. package/dist/hooks/use-form.d.ts.map +1 -0
  28. package/dist/hooks/use-form.js +22 -0
  29. package/dist/hooks/use-form.js.map +1 -0
  30. package/dist/hooks/use-store.d.ts +3 -0
  31. package/dist/hooks/use-store.d.ts.map +1 -0
  32. package/dist/hooks/use-store.js +5 -0
  33. package/dist/hooks/use-store.js.map +1 -0
  34. package/dist/index.d.ts +18 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +11 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/props/field-props.d.ts +72 -0
  39. package/dist/props/field-props.d.ts.map +1 -0
  40. package/dist/props/field-props.js +62 -0
  41. package/dist/props/field-props.js.map +1 -0
  42. package/dist/props/index.d.ts +3 -0
  43. package/dist/props/index.d.ts.map +1 -0
  44. package/dist/props/index.js +2 -0
  45. package/dist/props/index.js.map +1 -0
  46. package/dist/widgets/ArrayControl.d.ts +9 -0
  47. package/dist/widgets/ArrayControl.d.ts.map +1 -0
  48. package/dist/widgets/ArrayControl.js +16 -0
  49. package/dist/widgets/ArrayControl.js.map +1 -0
  50. package/dist/widgets/Checkbox.d.ts +9 -0
  51. package/dist/widgets/Checkbox.d.ts.map +1 -0
  52. package/dist/widgets/Checkbox.js +19 -0
  53. package/dist/widgets/Checkbox.js.map +1 -0
  54. package/dist/widgets/NumberInput.d.ts +9 -0
  55. package/dist/widgets/NumberInput.d.ts.map +1 -0
  56. package/dist/widgets/NumberInput.js +20 -0
  57. package/dist/widgets/NumberInput.js.map +1 -0
  58. package/dist/widgets/ObjectLayout.d.ts +9 -0
  59. package/dist/widgets/ObjectLayout.d.ts.map +1 -0
  60. package/dist/widgets/ObjectLayout.js +17 -0
  61. package/dist/widgets/ObjectLayout.js.map +1 -0
  62. package/dist/widgets/Select.d.ts +9 -0
  63. package/dist/widgets/Select.d.ts.map +1 -0
  64. package/dist/widgets/Select.js +21 -0
  65. package/dist/widgets/Select.js.map +1 -0
  66. package/dist/widgets/TextInput.d.ts +9 -0
  67. package/dist/widgets/TextInput.d.ts.map +1 -0
  68. package/dist/widgets/TextInput.js +16 -0
  69. package/dist/widgets/TextInput.js.map +1 -0
  70. package/dist/widgets/Textarea.d.ts +9 -0
  71. package/dist/widgets/Textarea.d.ts.map +1 -0
  72. package/dist/widgets/Textarea.js +16 -0
  73. package/dist/widgets/Textarea.js.map +1 -0
  74. package/dist/widgets/default-registry.d.ts +4 -0
  75. package/dist/widgets/default-registry.d.ts.map +1 -0
  76. package/dist/widgets/default-registry.js +46 -0
  77. package/dist/widgets/default-registry.js.map +1 -0
  78. package/dist/widgets/index.d.ts +9 -0
  79. package/dist/widgets/index.d.ts.map +1 -0
  80. package/dist/widgets/index.js +9 -0
  81. package/dist/widgets/index.js.map +1 -0
  82. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-props.d.ts","sourceRoot":"","sources":["../../src/props/field-props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAA;IAC9G,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,QAAQ,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,EAAE,EAAE,MAAM,CAAA;CACX;AASD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAyBjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAKzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAMzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAIrE"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Generate deterministic element ID from NodeId
3
+ */
4
+ function makeId(nodeId, suffix) {
5
+ return `texaryn-${nodeId}-${suffix}`;
6
+ }
7
+ /**
8
+ * getInputProps: Returns ARIA-correct props for an input element
9
+ * Includes id, name, value, disabled, aria-required, aria-invalid, aria-describedby
10
+ */
11
+ export function getInputProps(node, fieldState) {
12
+ const id = makeId(node.id, 'input');
13
+ const hasErrors = fieldState.errors.length > 0;
14
+ const hasDescription = Boolean(node.annotations?.description);
15
+ // Build aria-describedby from error and description IDs
16
+ const describedByIds = [];
17
+ if (hasErrors) {
18
+ describedByIds.push(makeId(node.id, 'error'));
19
+ }
20
+ if (hasDescription) {
21
+ describedByIds.push(makeId(node.id, 'description'));
22
+ }
23
+ return {
24
+ id,
25
+ name: node.dataPointer || node.id,
26
+ value: fieldState.value,
27
+ disabled: fieldState.disabled,
28
+ 'aria-required': Boolean(node.constraints?.required),
29
+ 'aria-invalid': hasErrors,
30
+ 'aria-describedby': describedByIds.length > 0 ? describedByIds.join(' ') : undefined,
31
+ onChange: fieldState.onChange,
32
+ onBlur: fieldState.onBlur,
33
+ };
34
+ }
35
+ /**
36
+ * getLabelProps: Returns ARIA-correct props for a label element
37
+ */
38
+ export function getLabelProps(node) {
39
+ return {
40
+ id: makeId(node.id, 'label'),
41
+ htmlFor: makeId(node.id, 'input'),
42
+ };
43
+ }
44
+ /**
45
+ * getErrorProps: Returns ARIA-correct props for an error container
46
+ */
47
+ export function getErrorProps(node) {
48
+ return {
49
+ id: makeId(node.id, 'error'),
50
+ role: 'alert',
51
+ 'aria-live': 'polite',
52
+ };
53
+ }
54
+ /**
55
+ * getDescriptionProps: Returns ARIA-correct props for a description element
56
+ */
57
+ export function getDescriptionProps(node) {
58
+ return {
59
+ id: makeId(node.id, 'description'),
60
+ };
61
+ }
62
+ //# sourceMappingURL=field-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-props.js","sourceRoot":"","sources":["../../src/props/field-props.ts"],"names":[],"mappings":"AAuDA;;GAEG;AACH,SAAS,MAAM,CAAC,MAAc,EAAE,MAAc;IAC5C,OAAO,WAAW,MAAM,IAAI,MAAM,EAAE,CAAA;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe,EAAE,UAAsB;IACnE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IAC9C,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAE7D,wDAAwD;IACxD,MAAM,cAAc,GAAa,EAAE,CAAA;IACnC,IAAI,SAAS,EAAE,CAAC;QACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/C,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,OAAO;QACL,EAAE;QACF,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE;QACjC,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;QACpD,cAAc,EAAE,SAAS;QACzB,kBAAkB,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QACpF,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;KAClC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;QAC5B,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;KACtB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC;KACnC,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { getInputProps, getLabelProps, getErrorProps, getDescriptionProps } from './field-props.js';
2
+ export type { InputProps, LabelProps, ErrorProps, DescriptionProps, FieldState } from './field-props.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/props/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACnG,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { getInputProps, getLabelProps, getErrorProps, getDescriptionProps } from './field-props.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/props/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { UINode } from '@texaryn/core';
3
+ export interface WidgetProps {
4
+ node: UINode;
5
+ }
6
+ declare function ArrayControlImpl({ node }: WidgetProps): React.JSX.Element;
7
+ export declare const ArrayControl: React.MemoExoticComponent<typeof ArrayControlImpl>;
8
+ export {};
9
+ //# sourceMappingURL=ArrayControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayControl.d.ts","sourceRoot":"","sources":["../../src/widgets/ArrayControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAA;AAK1D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,iBAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,qBA6B9C;AAED,eAAO,MAAM,YAAY,oDAGxB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { useFieldArray } from '../hooks/use-field-array.js';
4
+ import { NodeRenderer } from '../components/NodeRenderer.js';
5
+ import { useRendererContext } from '../components/renderer-context.js';
6
+ function ArrayControlImpl({ node }) {
7
+ const containerNode = node;
8
+ const fieldArray = useFieldArray(containerNode.id);
9
+ const { document, registry } = useRendererContext();
10
+ return (_jsxs("div", { children: [fieldArray.items.map((item, index) => {
11
+ const childNode = item.nodeId ? document.nodes[item.nodeId] : undefined;
12
+ return (_jsxs("div", { children: [childNode ? (_jsx(NodeRenderer, { node: childNode, document: document, registry: registry })) : null, fieldArray.canRemove ? (_jsx("button", { type: "button", onClick: () => fieldArray.remove(index), children: "Remove" })) : null] }, item.id));
13
+ }), fieldArray.canAdd ? (_jsx("button", { type: "button", onClick: () => fieldArray.add(), children: "Add" })) : null] }));
14
+ }
15
+ export const ArrayControl = React.memo(ArrayControlImpl, (prev, next) => prev.node.id === next.node.id);
16
+ //# sourceMappingURL=ArrayControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayControl.js","sourceRoot":"","sources":["../../src/widgets/ArrayControl.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAMtE,SAAS,gBAAgB,CAAC,EAAE,IAAI,EAAe;IAC7C,MAAM,aAAa,GAAG,IAAqB,CAAA;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;IAClD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAEnD,OAAO,CACL,0BACG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBACvE,OAAO,CACL,0BACG,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,YAAY,IAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAC1E,CAAC,CAAC,CAAC,IAAI,EACP,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CACtB,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,uBAEpD,CACV,CAAC,CAAC,CAAC,IAAI,KARA,IAAI,CAAC,EAAE,CASX,CACP,CAAA;YACH,CAAC,CAAC,EACD,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CACnB,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,oBAE5C,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CACpC,gBAAgB,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { UINode } from '@texaryn/core';
3
+ export interface WidgetProps {
4
+ node: UINode;
5
+ }
6
+ declare function CheckboxImpl({ node }: WidgetProps): React.JSX.Element;
7
+ export declare const Checkbox: React.MemoExoticComponent<typeof CheckboxImpl>;
8
+ export {};
9
+ //# sourceMappingURL=Checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/widgets/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,eAAe,CAAA;AAItD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,iBAAS,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,qBA8B1C;AAED,eAAO,MAAM,QAAQ,gDAGpB,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { useField } from '../hooks/use-field.js';
4
+ import { getInputProps, getLabelProps, getErrorProps, getDescriptionProps } from '../props/index.js';
5
+ function CheckboxImpl({ node }) {
6
+ const fieldNode = node;
7
+ const field = useField(fieldNode.id);
8
+ const { value, onChange, ...inputProps } = getInputProps(fieldNode, field);
9
+ const labelProps = getLabelProps(fieldNode);
10
+ const errorProps = getErrorProps(fieldNode);
11
+ const descriptionProps = getDescriptionProps(fieldNode);
12
+ const label = fieldNode.annotations.title ?? fieldNode.dataPointer ?? fieldNode.id;
13
+ const handleChange = (event) => {
14
+ onChange(event.target.checked);
15
+ };
16
+ return (_jsxs("div", { children: [_jsx("input", { ...inputProps, type: "checkbox", checked: Boolean(value), onChange: handleChange }), _jsx("label", { ...labelProps, children: label }), fieldNode.annotations.description ? (_jsx("div", { ...descriptionProps, children: fieldNode.annotations.description })) : null, field.errors.length > 0 ? (_jsx("div", { ...errorProps, children: field.errors.map((error) => error.message).join(', ') })) : null] }));
17
+ }
18
+ export const Checkbox = React.memo(CheckboxImpl, (prev, next) => prev.node.id === next.node.id);
19
+ //# sourceMappingURL=Checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/widgets/Checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAMpG,SAAS,YAAY,CAAC,EAAE,IAAI,EAAe;IACzC,MAAM,SAAS,GAAG,IAAiB,CAAA;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE,CAAA;IAElF,MAAM,YAAY,GAAG,CAAC,KAA0C,EAAE,EAAE;QAClE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC,CAAA;IAED,OAAO,CACL,0BACE,mBACM,UAAU,EACd,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACvB,QAAQ,EAAE,YAAY,GACtB,EACF,mBAAW,UAAU,YAAG,KAAK,GAAS,EACrC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CACnC,iBAAS,gBAAgB,YAAG,SAAS,CAAC,WAAW,CAAC,WAAW,GAAO,CACrE,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACzB,iBAAS,UAAU,YAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAO,CACnF,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAChC,YAAY,EACZ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { UINode } from '@texaryn/core';
3
+ export interface WidgetProps {
4
+ node: UINode;
5
+ }
6
+ declare function NumberInputImpl({ node }: WidgetProps): React.JSX.Element;
7
+ export declare const NumberInput: React.MemoExoticComponent<typeof NumberInputImpl>;
8
+ export {};
9
+ //# sourceMappingURL=NumberInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberInput.d.ts","sourceRoot":"","sources":["../../src/widgets/NumberInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,eAAe,CAAA;AAItD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,iBAAS,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,qBA+B7C;AAED,eAAO,MAAM,WAAW,mDAGvB,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { useField } from '../hooks/use-field.js';
4
+ import { getInputProps, getLabelProps, getErrorProps, getDescriptionProps } from '../props/index.js';
5
+ function NumberInputImpl({ node }) {
6
+ const fieldNode = node;
7
+ const field = useField(fieldNode.id);
8
+ const { value, onChange, ...inputProps } = getInputProps(fieldNode, field);
9
+ const labelProps = getLabelProps(fieldNode);
10
+ const errorProps = getErrorProps(fieldNode);
11
+ const descriptionProps = getDescriptionProps(fieldNode);
12
+ const label = fieldNode.annotations.title ?? fieldNode.dataPointer ?? fieldNode.id;
13
+ const handleChange = (event) => {
14
+ const raw = event.target.value;
15
+ onChange(raw === '' ? undefined : Number(raw));
16
+ };
17
+ return (_jsxs("div", { children: [_jsx("label", { ...labelProps, children: label }), _jsx("input", { ...inputProps, type: "number", value: typeof value === 'number' ? value : value == null ? '' : String(value), onChange: handleChange }), fieldNode.annotations.description ? (_jsx("div", { ...descriptionProps, children: fieldNode.annotations.description })) : null, field.errors.length > 0 ? (_jsx("div", { ...errorProps, children: field.errors.map((error) => error.message).join(', ') })) : null] }));
18
+ }
19
+ export const NumberInput = React.memo(NumberInputImpl, (prev, next) => prev.node.id === next.node.id);
20
+ //# sourceMappingURL=NumberInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberInput.js","sourceRoot":"","sources":["../../src/widgets/NumberInput.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAMpG,SAAS,eAAe,CAAC,EAAE,IAAI,EAAe;IAC5C,MAAM,SAAS,GAAG,IAAiB,CAAA;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE,CAAA;IAElF,MAAM,YAAY,GAAG,CAAC,KAA0C,EAAE,EAAE;QAClE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAA;QAC9B,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAChD,CAAC,CAAA;IAED,OAAO,CACL,0BACE,mBAAW,UAAU,YAAG,KAAK,GAAS,EACtC,mBACM,UAAU,EACd,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7E,QAAQ,EAAE,YAAY,GACtB,EACD,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CACnC,iBAAS,gBAAgB,YAAG,SAAS,CAAC,WAAW,CAAC,WAAW,GAAO,CACrE,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACzB,iBAAS,UAAU,YAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAO,CACnF,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CACnC,eAAe,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { UINode } from '@texaryn/core';
3
+ export interface WidgetProps {
4
+ node: UINode;
5
+ }
6
+ declare function ObjectLayoutImpl({ node }: WidgetProps): React.JSX.Element;
7
+ export declare const ObjectLayout: React.MemoExoticComponent<typeof ObjectLayoutImpl>;
8
+ export {};
9
+ //# sourceMappingURL=ObjectLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectLayout.d.ts","sourceRoot":"","sources":["../../src/widgets/ObjectLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAA;AAI1D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,iBAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,qBAe9C;AAED,eAAO,MAAM,YAAY,oDAGxB,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { NodeRenderer } from '../components/NodeRenderer.js';
4
+ import { useRendererContext } from '../components/renderer-context.js';
5
+ function ObjectLayoutImpl({ node }) {
6
+ const containerNode = node;
7
+ const { document, registry } = useRendererContext();
8
+ return (_jsx("div", { children: containerNode.children.map((childId) => {
9
+ const child = document.nodes[childId];
10
+ if (!child) {
11
+ return null;
12
+ }
13
+ return _jsx(NodeRenderer, { node: child, document: document, registry: registry }, childId);
14
+ }) }));
15
+ }
16
+ export const ObjectLayout = React.memo(ObjectLayoutImpl, (prev, next) => prev.node.id === next.node.id);
17
+ //# sourceMappingURL=ObjectLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectLayout.js","sourceRoot":"","sources":["../../src/widgets/ObjectLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAMtE,SAAS,gBAAgB,CAAC,EAAE,IAAI,EAAe;IAC7C,MAAM,aAAa,GAAG,IAAqB,CAAA;IAC3C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAEnD,OAAO,CACL,wBACG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,KAAC,YAAY,IAAe,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAA5D,OAAO,CAAyD,CAAA;QAC5F,CAAC,CAAC,GACE,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CACpC,gBAAgB,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { UINode } from '@texaryn/core';
3
+ export interface WidgetProps {
4
+ node: UINode;
5
+ }
6
+ declare function SelectImpl({ node }: WidgetProps): React.JSX.Element;
7
+ export declare const Select: React.MemoExoticComponent<typeof SelectImpl>;
8
+ export {};
9
+ //# sourceMappingURL=Select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../src/widgets/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,eAAe,CAAA;AAItD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,iBAAS,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,qBAqCxC;AAED,eAAO,MAAM,MAAM,8CAGlB,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { useField } from '../hooks/use-field.js';
4
+ import { getInputProps, getLabelProps, getErrorProps, getDescriptionProps } from '../props/index.js';
5
+ function SelectImpl({ node }) {
6
+ const fieldNode = node;
7
+ const field = useField(fieldNode.id);
8
+ const { value, onChange, ...inputProps } = getInputProps(fieldNode, field);
9
+ const labelProps = getLabelProps(fieldNode);
10
+ const errorProps = getErrorProps(fieldNode);
11
+ const descriptionProps = getDescriptionProps(fieldNode);
12
+ const label = fieldNode.annotations.title ?? fieldNode.dataPointer ?? fieldNode.id;
13
+ const enumValues = fieldNode.enumValues ?? [];
14
+ const handleChange = (event) => {
15
+ const selected = enumValues.find((option) => String(option.value) === event.target.value);
16
+ onChange(selected ? selected.value : event.target.value);
17
+ };
18
+ return (_jsxs("div", { children: [_jsx("label", { ...labelProps, children: label }), _jsx("select", { ...inputProps, value: value == null ? '' : String(value), onChange: handleChange, children: enumValues.map((option) => (_jsx("option", { value: String(option.value), children: option.title ?? String(option.value) }, String(option.value)))) }), fieldNode.annotations.description ? (_jsx("div", { ...descriptionProps, children: fieldNode.annotations.description })) : null, field.errors.length > 0 ? (_jsx("div", { ...errorProps, children: field.errors.map((error) => error.message).join(', ') })) : null] }));
19
+ }
20
+ export const Select = React.memo(SelectImpl, (prev, next) => prev.node.id === next.node.id);
21
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../src/widgets/Select.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAMpG,SAAS,UAAU,CAAC,EAAE,IAAI,EAAe;IACvC,MAAM,SAAS,GAAG,IAAiB,CAAA;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE,CAAA;IAClF,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAA;IAE7C,MAAM,YAAY,GAAG,CAAC,KAA2C,EAAE,EAAE;QACnE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzF,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1D,CAAC,CAAA;IAED,OAAO,CACL,0BACE,mBAAW,UAAU,YAAG,KAAK,GAAS,EACtC,oBACM,UAAU,EACd,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,QAAQ,EAAE,YAAY,YAErB,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC1B,iBAAmC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAC3D,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAD1B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAExB,CACV,CAAC,GACK,EACR,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CACnC,iBAAS,gBAAgB,YAAG,SAAS,CAAC,WAAW,CAAC,WAAW,GAAO,CACrE,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACzB,iBAAS,UAAU,YAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAO,CACnF,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAC9B,UAAU,EACV,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { UINode } from '@texaryn/core';
3
+ export interface WidgetProps {
4
+ node: UINode;
5
+ }
6
+ declare function TextInputImpl({ node }: WidgetProps): React.JSX.Element;
7
+ export declare const TextInput: React.MemoExoticComponent<typeof TextInputImpl>;
8
+ export {};
9
+ //# sourceMappingURL=TextInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextInput.d.ts","sourceRoot":"","sources":["../../src/widgets/TextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,eAAe,CAAA;AAItD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,iBAAS,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,qBA0B3C;AAED,eAAO,MAAM,SAAS,iDAGrB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { useField } from '../hooks/use-field.js';
4
+ import { getInputProps, getLabelProps, getErrorProps, getDescriptionProps } from '../props/index.js';
5
+ function TextInputImpl({ node }) {
6
+ const fieldNode = node;
7
+ const field = useField(fieldNode.id);
8
+ const { value, onChange, ...inputProps } = getInputProps(fieldNode, field);
9
+ const labelProps = getLabelProps(fieldNode);
10
+ const errorProps = getErrorProps(fieldNode);
11
+ const descriptionProps = getDescriptionProps(fieldNode);
12
+ const label = fieldNode.annotations.title ?? fieldNode.dataPointer ?? fieldNode.id;
13
+ return (_jsxs("div", { children: [_jsx("label", { ...labelProps, children: label }), _jsx("input", { ...inputProps, type: "text", value: typeof value === 'string' ? value : value == null ? '' : String(value), onChange: (event) => onChange(event.target.value) }), fieldNode.annotations.description ? (_jsx("div", { ...descriptionProps, children: fieldNode.annotations.description })) : null, field.errors.length > 0 ? (_jsx("div", { ...errorProps, children: field.errors.map((error) => error.message).join(', ') })) : null] }));
14
+ }
15
+ export const TextInput = React.memo(TextInputImpl, (prev, next) => prev.node.id === next.node.id);
16
+ //# sourceMappingURL=TextInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextInput.js","sourceRoot":"","sources":["../../src/widgets/TextInput.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAMpG,SAAS,aAAa,CAAC,EAAE,IAAI,EAAe;IAC1C,MAAM,SAAS,GAAG,IAAiB,CAAA;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE,CAAA;IAElF,OAAO,CACL,0BACE,mBAAW,UAAU,YAAG,KAAK,GAAS,EACtC,mBACM,UAAU,EACd,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7E,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GACjD,EACD,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CACnC,iBAAS,gBAAgB,YAAG,SAAS,CAAC,WAAW,CAAC,WAAW,GAAO,CACrE,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACzB,iBAAS,UAAU,YAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAO,CACnF,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CACjC,aAAa,EACb,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { UINode } from '@texaryn/core';
3
+ export interface WidgetProps {
4
+ node: UINode;
5
+ }
6
+ declare function TextareaImpl({ node }: WidgetProps): React.JSX.Element;
7
+ export declare const Textarea: React.MemoExoticComponent<typeof TextareaImpl>;
8
+ export {};
9
+ //# sourceMappingURL=Textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../src/widgets/Textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,eAAe,CAAA;AAItD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,iBAAS,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,qBAyB1C;AAED,eAAO,MAAM,QAAQ,gDAGpB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { useField } from '../hooks/use-field.js';
4
+ import { getInputProps, getLabelProps, getErrorProps, getDescriptionProps } from '../props/index.js';
5
+ function TextareaImpl({ node }) {
6
+ const fieldNode = node;
7
+ const field = useField(fieldNode.id);
8
+ const { value, onChange, ...inputProps } = getInputProps(fieldNode, field);
9
+ const labelProps = getLabelProps(fieldNode);
10
+ const errorProps = getErrorProps(fieldNode);
11
+ const descriptionProps = getDescriptionProps(fieldNode);
12
+ const label = fieldNode.annotations.title ?? fieldNode.dataPointer ?? fieldNode.id;
13
+ return (_jsxs("div", { children: [_jsx("label", { ...labelProps, children: label }), _jsx("textarea", { ...inputProps, value: typeof value === 'string' ? value : value == null ? '' : String(value), onChange: (event) => onChange(event.target.value) }), fieldNode.annotations.description ? (_jsx("div", { ...descriptionProps, children: fieldNode.annotations.description })) : null, field.errors.length > 0 ? (_jsx("div", { ...errorProps, children: field.errors.map((error) => error.message).join(', ') })) : null] }));
14
+ }
15
+ export const Textarea = React.memo(TextareaImpl, (prev, next) => prev.node.id === next.node.id);
16
+ //# sourceMappingURL=Textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../src/widgets/Textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAMpG,SAAS,YAAY,CAAC,EAAE,IAAI,EAAe;IACzC,MAAM,SAAS,GAAG,IAAiB,CAAA;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE,CAAA;IAElF,OAAO,CACL,0BACE,mBAAW,UAAU,YAAG,KAAK,GAAS,EACtC,sBACM,UAAU,EACd,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7E,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GACjD,EACD,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CACnC,iBAAS,gBAAgB,YAAG,SAAS,CAAC,WAAW,CAAC,WAAW,GAAO,CACrE,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACzB,iBAAS,UAAU,YAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAO,CACnF,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAChC,YAAY,EACZ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { RendererRegistry } from '@texaryn/core';
2
+ import type { WidgetComponent } from '../components/renderer-context.js';
3
+ export declare function createDefaultRegistry(): RendererRegistry<WidgetComponent>;
4
+ //# sourceMappingURL=default-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-registry.d.ts","sourceRoot":"","sources":["../../src/widgets/default-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,eAAe,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AASxE,wBAAgB,qBAAqB,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAoEzE"}
@@ -0,0 +1,46 @@
1
+ import { createRendererRegistry } from '@texaryn/core';
2
+ import { TextInput } from './TextInput.js';
3
+ import { NumberInput } from './NumberInput.js';
4
+ import { Checkbox } from './Checkbox.js';
5
+ import { Select } from './Select.js';
6
+ import { Textarea } from './Textarea.js';
7
+ import { ObjectLayout } from './ObjectLayout.js';
8
+ import { ArrayControl } from './ArrayControl.js';
9
+ export function createDefaultRegistry() {
10
+ const registry = createRendererRegistry();
11
+ registry.register({
12
+ test: (node) => node.type === 'field' &&
13
+ node.fieldType === 'string' &&
14
+ node.enumValues == null,
15
+ rank: 1,
16
+ }, TextInput);
17
+ registry.register({
18
+ test: (node) => node.type === 'field' &&
19
+ (node.fieldType === 'number' || node.fieldType === 'integer'),
20
+ rank: 1,
21
+ }, NumberInput);
22
+ registry.register({
23
+ test: (node) => node.type === 'field' && node.fieldType === 'boolean',
24
+ rank: 1,
25
+ }, Checkbox);
26
+ registry.register({
27
+ test: (node) => node.type === 'field' &&
28
+ node.enumValues != null &&
29
+ node.enumValues.length > 0,
30
+ rank: 2,
31
+ }, Select);
32
+ registry.register({
33
+ test: (node) => node.type === 'field' && node.widget === 'textarea',
34
+ rank: 5,
35
+ }, Textarea);
36
+ registry.register({
37
+ test: (node) => node.type === 'container' && node.containerType === 'object',
38
+ rank: 1,
39
+ }, ObjectLayout);
40
+ registry.register({
41
+ test: (node) => node.type === 'container' && node.containerType === 'array',
42
+ rank: 1,
43
+ }, ArrayControl);
44
+ return registry;
45
+ }
46
+ //# sourceMappingURL=default-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-registry.js","sourceRoot":"","sources":["../../src/widgets/default-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,sBAAsB,EAAmB,CAAA;IAE1D,QAAQ,CAAC,QAAQ,CACf;QACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CACb,IAAI,CAAC,IAAI,KAAK,OAAO;YACpB,IAAkB,CAAC,SAAS,KAAK,QAAQ;YACzC,IAAkB,CAAC,UAAU,IAAI,IAAI;QACxC,IAAI,EAAE,CAAC;KACR,EACD,SAAS,CACV,CAAA;IAED,QAAQ,CAAC,QAAQ,CACf;QACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CACb,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,CAAE,IAAkB,CAAC,SAAS,KAAK,QAAQ,IAAK,IAAkB,CAAC,SAAS,KAAK,SAAS,CAAC;QAC7F,IAAI,EAAE,CAAC;KACR,EACD,WAAW,CACZ,CAAA;IAED,QAAQ,CAAC,QAAQ,CACf;QACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAK,IAAkB,CAAC,SAAS,KAAK,SAAS;QACpF,IAAI,EAAE,CAAC;KACR,EACD,QAAQ,CACT,CAAA;IAED,QAAQ,CAAC,QAAQ,CACf;QACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CACb,IAAI,CAAC,IAAI,KAAK,OAAO;YACpB,IAAkB,CAAC,UAAU,IAAI,IAAI;YACrC,IAAkB,CAAC,UAAW,CAAC,MAAM,GAAG,CAAC;QAC5C,IAAI,EAAE,CAAC;KACR,EACD,MAAM,CACP,CAAA;IAED,QAAQ,CAAC,QAAQ,CACf;QACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAK,IAAkB,CAAC,MAAM,KAAK,UAAU;QAClF,IAAI,EAAE,CAAC;KACR,EACD,QAAQ,CACT,CAAA;IAED,QAAQ,CAAC,QAAQ,CACf;QACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ;QAC5E,IAAI,EAAE,CAAC;KACR,EACD,YAAY,CACb,CAAA;IAED,QAAQ,CAAC,QAAQ,CACf;QACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO;QAC3E,IAAI,EAAE,CAAC;KACR,EACD,YAAY,CACb,CAAA;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { TextInput } from './TextInput.js';
2
+ export { NumberInput } from './NumberInput.js';
3
+ export { Checkbox } from './Checkbox.js';
4
+ export { Select } from './Select.js';
5
+ export { Textarea } from './Textarea.js';
6
+ export { ObjectLayout } from './ObjectLayout.js';
7
+ export { ArrayControl } from './ArrayControl.js';
8
+ export { createDefaultRegistry } from './default-registry.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/widgets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,9 @@
1
+ export { TextInput } from './TextInput.js';
2
+ export { NumberInput } from './NumberInput.js';
3
+ export { Checkbox } from './Checkbox.js';
4
+ export { Select } from './Select.js';
5
+ export { Textarea } from './Textarea.js';
6
+ export { ObjectLayout } from './ObjectLayout.js';
7
+ export { ArrayControl } from './ArrayControl.js';
8
+ export { createDefaultRegistry } from './default-registry.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/widgets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@texaryn/react",
3
+ "version": "0.0.0",
4
+ "description": "React bindings, hooks, prop getters, and default widgets for Texaryn",
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/texaryn/texaryn.git",
10
+ "directory": "packages/react"
11
+ },
12
+ "homepage": "https://github.com/texaryn/texaryn#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/texaryn/texaryn/issues"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "main": "./dist/index.js",
20
+ "types": "./dist/index.d.ts",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/index.d.ts",
24
+ "import": "./dist/index.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "dist"
29
+ ],
30
+ "dependencies": {
31
+ "@texaryn/core": "0.0.0"
32
+ },
33
+ "peerDependencies": {
34
+ "react": ">=18.0.0"
35
+ },
36
+ "devDependencies": {
37
+ "@testing-library/react": "^16.0.0",
38
+ "@types/react": "^19.0.0",
39
+ "jsdom": "^25.0.0",
40
+ "react": "^19.0.0",
41
+ "react-dom": "^19.0.0",
42
+ "@texaryn/schema-json": "0.0.0"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc --build"
46
+ }
47
+ }