treege 3.0.0-beta.26 → 3.0.0-beta.28

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 (58) hide show
  1. package/README.md +188 -24
  2. package/dist/ThemeContext-BBEqRK_Q.js +429 -0
  3. package/dist/{TreegeEditor-WqTXkYl3.js → TreegeEditor-Bi7GcSKl.js} +198 -197
  4. package/dist/TreegeRenderer-DbE0m_4e.js +1047 -0
  5. package/dist/editor.js +2 -2
  6. package/dist/main.js +50 -49
  7. package/dist/renderer/features/TreegeRenderer/native/TreegeRenderer.d.ts +19 -11
  8. package/dist/renderer/features/TreegeRenderer/native/components/DefaultFormWrapper.d.ts +7 -7
  9. package/dist/renderer/features/TreegeRenderer/native/components/DefaultGroup.d.ts +7 -7
  10. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +26 -15
  11. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButton.d.ts +9 -7
  12. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButtonWrapper.d.ts +11 -0
  13. package/dist/renderer/features/TreegeRenderer/native/components/DefaultUI.d.ts +8 -7
  14. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAddressInput.d.ts +3 -0
  15. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAutocompleteInput.d.ts +3 -0
  16. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultCheckboxInput.d.ts +3 -0
  17. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateInput.d.ts +3 -0
  18. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateRangeInput.d.ts +3 -0
  19. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultFileInput.d.ts +3 -0
  20. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHiddenInput.d.ts +3 -0
  21. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHttpInput.d.ts +3 -0
  22. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultNumberInput.d.ts +3 -0
  23. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultPasswordInput.d.ts +3 -0
  24. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultRadioInput.d.ts +3 -0
  25. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSelectInput.d.ts +3 -0
  26. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSwitchInput.d.ts +3 -0
  27. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextInput.d.ts +3 -0
  28. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextareaInput.d.ts +3 -0
  29. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeInput.d.ts +3 -0
  30. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeRangeInput.d.ts +3 -0
  31. package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +81 -23
  32. package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +1 -1
  33. package/dist/renderer/hooks/useRenderNode.d.ts +55 -0
  34. package/dist/renderer/index.d.ts +1 -0
  35. package/dist/renderer/index.native.d.ts +19 -0
  36. package/dist/renderer/types/renderer.d.ts +20 -4
  37. package/dist/renderer/utils/sanitize.native.d.ts +69 -0
  38. package/dist/renderer/utils/submit.d.ts +1 -1
  39. package/dist/renderer-native.d.ts +2 -0
  40. package/dist/renderer-native.js +2833 -0
  41. package/dist/renderer.js +48 -47
  42. package/dist/separator-oCo7kxCK.js +364 -0
  43. package/dist/shared/constants/colors.d.ts +45 -0
  44. package/dist/shared/context/ThemeContext.d.ts +2 -0
  45. package/dist/shared/context/ThemeContext.native.d.ts +22 -0
  46. package/dist/shared/hooks/useThemeColors.d.ts +37 -0
  47. package/dist/shared/locales/ar.json.d.ts +13 -5
  48. package/dist/shared/locales/de.json.d.ts +13 -5
  49. package/dist/shared/locales/en.json.d.ts +13 -5
  50. package/dist/shared/locales/es.json.d.ts +13 -5
  51. package/dist/shared/locales/fr.json.d.ts +13 -5
  52. package/dist/shared/locales/it.json.d.ts +13 -5
  53. package/dist/shared/locales/pt.json.d.ts +13 -5
  54. package/dist/shared/types/node.d.ts +2 -2
  55. package/dist/useRenderNode-BACcrUML.js +863 -0
  56. package/package.json +24 -1
  57. package/dist/ThemeContext-BIT4DHqC.js +0 -764
  58. package/dist/TreegeRenderer-BSR_ez96.js +0 -1812
@@ -120,7 +120,9 @@ export type TreegeRendererComponents = {
120
120
  /**
121
121
  * Custom group container renderer
122
122
  */
123
- group?: (props: NodeRenderProps) => ReactNode;
123
+ group?: (props: NodeRenderProps & {
124
+ children?: ReactNode;
125
+ }) => ReactNode;
124
126
  /**
125
127
  * Custom form wrapper
126
128
  */
@@ -129,10 +131,20 @@ export type TreegeRendererComponents = {
129
131
  onSubmit: (e: FormEvent) => void;
130
132
  }) => ReactNode;
131
133
  /**
132
- * Custom submit button (pure button without wrapper)
134
+ * Custom submit button (supports both web and native variants)
135
+ * Web variant: { label?: string; disabled?: boolean; ...otherHTMLAttributes }
136
+ * Native variant: { children?: ReactNode; disabled?: boolean; isSubmitting?: boolean; onPress?: () => void }
133
137
  */
134
138
  submitButton?: (props: {
135
139
  label?: string;
140
+ disabled?: boolean;
141
+ [key: string]: unknown;
142
+ } | {
143
+ children?: ReactNode;
144
+ disabled?: boolean;
145
+ isSubmitting?: boolean;
146
+ onPress?: () => void;
147
+ [key: string]: unknown;
136
148
  }) => ReactNode;
137
149
  /**
138
150
  * Custom submit button wrapper (e.g., for tooltip with missing fields)
@@ -175,7 +187,11 @@ export type TreegeRendererConfig = {
175
187
  /**
176
188
  * Props for the TreegeRenderer component
177
189
  */
178
- export type TreegeRendererProps = {
190
+ export interface TreegeRendererProps {
191
+ /**
192
+ * Additional class name for the renderer container
193
+ */
194
+ className?: string;
179
195
  /**
180
196
  * Custom component renderers
181
197
  */
@@ -222,4 +238,4 @@ export type TreegeRendererProps = {
222
238
  * Validation mode
223
239
  */
224
240
  validationMode?: "onChange" | "onSubmit";
225
- };
241
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * React Native implementation of sanitization utilities
3
+ * Does not use DOMPurify as it depends on browser DOM
4
+ */
5
+ /**
6
+ * Configuration for sanitization
7
+ */
8
+ interface SanitizeOptions {
9
+ /**
10
+ * Allow only plain text (strip all HTML tags)
11
+ * @default true
12
+ */
13
+ plainTextOnly?: boolean;
14
+ /**
15
+ * Custom allowed tags (when plainTextOnly is false)
16
+ * Note: In React Native, HTML tags are always stripped
17
+ */
18
+ allowedTags?: string[];
19
+ /**
20
+ * Custom allowed attributes (when plainTextOnly is false)
21
+ * Note: In React Native, attributes are not applicable
22
+ */
23
+ allowedAttributes?: string[];
24
+ }
25
+ /**
26
+ * Sanitizes user input to prevent XSS attacks
27
+ *
28
+ * React Native implementation that strips all HTML tags and decodes entities.
29
+ * Since React Native doesn't render HTML, we focus on cleaning text content.
30
+ *
31
+ * @param input - The string to sanitize
32
+ * @param options - Sanitization options (maintained for API compatibility)
33
+ * @returns Sanitized string safe for rendering
34
+ *
35
+ * @example
36
+ * sanitize('<script>alert("xss")</script>Hello')
37
+ * // => 'Hello'
38
+ *
39
+ * @example
40
+ * sanitize('<b>Bold text</b><script>alert("xss")</script>')
41
+ * // => 'Bold text'
42
+ */
43
+ export declare const sanitize: (input: string | undefined | null, _options?: SanitizeOptions) => string;
44
+ /**
45
+ * Sanitizes data from HTTP responses
46
+ *
47
+ * This function recursively sanitizes all string values in an object or array.
48
+ * Useful for cleaning data received from external APIs before displaying it.
49
+ *
50
+ * Protection against:
51
+ * - Circular references: Uses WeakSet to detect and handle circular objects
52
+ * - Deep nesting attacks: Limits recursion depth to prevent DoS
53
+ * - XSS attacks: Sanitizes all string values
54
+ *
55
+ * @param data - The data to sanitize (can be any type)
56
+ * @param options - Sanitization options
57
+ * @param depth - Current recursion depth (internal use)
58
+ * @param seen - WeakSet to track visited objects (internal use)
59
+ * @returns Sanitized data with same structure
60
+ *
61
+ * @example
62
+ * sanitizeHttpResponse({
63
+ * name: 'John <script>xss</script>',
64
+ * nested: { title: 'Hello <b>world</b>' }
65
+ * })
66
+ * // => { name: 'John ', nested: { title: 'Hello world' } }
67
+ */
68
+ export declare const sanitizeHttpResponse: (data: unknown, options?: SanitizeOptions, depth?: number, seen?: WeakSet<object>) => unknown;
69
+ export {};
@@ -33,7 +33,7 @@ export interface SubmitResult {
33
33
  *
34
34
  * @param config - Submit configuration from the submit button node
35
35
  * @param formValues - Current form values
36
- * @param inputNodes - All input nodes (required when sendFormData is true)
36
+ * @param inputNodes - All input nodes (required when sendAllFormValues is true)
37
37
  * @returns Promise with submission result
38
38
  */
39
39
  export declare const submitFormData: (config: SubmitConfig, formValues: FormValues, inputNodes: Node<InputNodeData>[]) => Promise<SubmitResult>;
@@ -0,0 +1,2 @@
1
+ export * from './renderer/index.native'
2
+ export {}