@developer_tribe/react-builder 1.2.32 → 1.2.33

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 (73) hide show
  1. package/dist/assets/prompt-scheme-onboard.generated.d.ts +1 -0
  2. package/dist/assets/prompt-scheme-paywall.generated.d.ts +1 -0
  3. package/dist/components/BuilderProvider.d.ts +2 -4
  4. package/dist/index.cjs.js +1 -1
  5. package/dist/index.cjs.js.map +1 -1
  6. package/dist/index.esm.js +1 -1
  7. package/dist/index.esm.js.map +1 -1
  8. package/dist/index.web.cjs.js +6 -6
  9. package/dist/index.web.cjs.js.map +1 -1
  10. package/dist/index.web.esm.js +6 -6
  11. package/dist/index.web.esm.js.map +1 -1
  12. package/dist/modals/PromptManagerModal.d.ts +9 -0
  13. package/dist/modals/index.d.ts +1 -0
  14. package/dist/styles.css +1 -1
  15. package/dist/utils/nodeXml.d.ts +11 -0
  16. package/package.json +5 -1
  17. package/scripts/prebuild/assets/prompt_scheme.md +44 -0
  18. package/scripts/prebuild/generate-prompt-schemes.js +328 -0
  19. package/scripts/prebuild/prebuild.js +4 -0
  20. package/src/RenderPage.tsx +6 -6
  21. package/src/assets/meta.json +1 -1
  22. package/src/assets/prompt-scheme-onboard.generated.ts +4 -0
  23. package/src/assets/prompt-scheme-paywall.generated.ts +4 -0
  24. package/src/attribute-analyser/style/native/useExtractImageStyle.ts +1 -1
  25. package/src/attribute-analyser/style/native/useExtractTextStyle.ts +1 -1
  26. package/src/attribute-analyser/style/native/useExtractViewStyle.ts +1 -1
  27. package/src/attribute-analyser/style/web/useExtractImageStyle.ts +1 -1
  28. package/src/attribute-analyser/style/web/useExtractTextStyle.ts +1 -1
  29. package/src/attribute-analyser/style/web/useExtractViewStyle.ts +1 -1
  30. package/src/build-components/BIcon/pattern.json +1 -3
  31. package/src/build-components/BackgroundImage/pattern.json +2 -10
  32. package/src/build-components/Button/pattern.json +1 -3
  33. package/src/build-components/Carousel/pattern.json +2 -8
  34. package/src/build-components/CarouselDots/CarouselDots.tsx +1 -1
  35. package/src/build-components/CarouselProvider/pattern.json +1 -4
  36. package/src/build-components/CountDown/pattern.json +1 -3
  37. package/src/build-components/Image/pattern.json +2 -9
  38. package/src/build-components/Main/pattern.json +1 -3
  39. package/src/build-components/NavigationBarColor/NavigationBarColor.tsx +1 -1
  40. package/src/build-components/NavigationBarColor/pattern.json +1 -3
  41. package/src/build-components/Onboard/pattern.json +2 -6
  42. package/src/build-components/OnboardButton/OnboardButton.tsx +1 -1
  43. package/src/build-components/OnboardButton/pattern.json +3 -14
  44. package/src/build-components/OnboardButtons/pattern.json +4 -15
  45. package/src/build-components/OnboardDot/OnboardDot.tsx +1 -1
  46. package/src/build-components/OnboardDot/pattern.json +1 -3
  47. package/src/build-components/OnboardFooter/OnboardFooter.tsx +3 -3
  48. package/src/build-components/OnboardFooter/pattern.json +1 -3
  49. package/src/build-components/OnboardItem/pattern.json +3 -11
  50. package/src/build-components/OnboardProvider/pattern.json +2 -8
  51. package/src/build-components/OnboardSubtitle/pattern.json +1 -4
  52. package/src/build-components/OnboardTitle/pattern.json +1 -4
  53. package/src/build-components/PaywallBackground/pattern.json +1 -3
  54. package/src/build-components/PaywallCloseButton/pattern.json +1 -3
  55. package/src/build-components/PaywallOptions/pattern.json +1 -3
  56. package/src/build-components/PaywallProvider/pattern.json +1 -3
  57. package/src/build-components/PaywallSubscribeButton/pattern.json +1 -3
  58. package/src/build-components/PriceTag/pattern.json +2 -8
  59. package/src/build-components/Pricing/pattern.json +1 -3
  60. package/src/build-components/Promo/pattern.json +1 -3
  61. package/src/build-components/Separator/pattern.json +1 -3
  62. package/src/build-components/StatusBarColor/StatusBarColor.tsx +1 -1
  63. package/src/build-components/StatusBarColor/pattern.json +1 -3
  64. package/src/build-components/Text/pattern.json +1 -3
  65. package/src/build-components/View/pattern.json +4 -16
  66. package/src/components/BottomBar.tsx +28 -1
  67. package/src/components/BuilderProvider.tsx +5 -14
  68. package/src/hooks/useLocalize.ts +1 -1
  69. package/src/modals/PromptManagerModal.tsx +270 -0
  70. package/src/modals/index.ts +1 -0
  71. package/src/styles/index.scss +1 -0
  72. package/src/styles/modals/_prompt-manager-modal.scss +95 -0
  73. package/src/utils/nodeXml.ts +196 -0
@@ -21,7 +21,7 @@ export function useExtractTextStyle<T extends TextPropsGenerated['attributes']>(
21
21
  };
22
22
  } {
23
23
  const {
24
- mockTheme: theme,
24
+ selectedTheme: theme,
25
25
  projectColors,
26
26
  fonts,
27
27
  baseSize,
@@ -17,7 +17,7 @@ export function useExtractViewStyle<T extends ViewPropsGenerated['attributes']>(
17
17
  style: ViewStyle;
18
18
  other: Omit<T, StyleAttrKey> & { scrollable?: boolean };
19
19
  } {
20
- const { mockTheme: theme, projectColors, baseSize } = useBuilderParams();
20
+ const { selectedTheme: theme, projectColors, baseSize } = useBuilderParams();
21
21
 
22
22
  return useMemo(() => {
23
23
  const style = extractViewStyleNative(node, {
@@ -8,7 +8,7 @@ import { extractImageStyle } from '../../../utils/extractImageStyle';
8
8
  export function useExtractImageStyle<
9
9
  T extends ImagePropsGenerated['attributes'],
10
10
  >(node: NodeData<T>): CSSProperties {
11
- const { mockTheme: theme, projectColors, baseSize } = useBuilderParams();
11
+ const { selectedTheme: theme, projectColors, baseSize } = useBuilderParams();
12
12
 
13
13
  return useMemo(
14
14
  () => extractImageStyle(node, { theme, projectColors, baseSize }),
@@ -10,7 +10,7 @@ export function useExtractTextStyle<T extends TextPropsGenerated['attributes']>(
10
10
  directlyTextStyle = false,
11
11
  ): CSSProperties {
12
12
  const {
13
- mockTheme: theme,
13
+ selectedTheme: theme,
14
14
  projectColors,
15
15
  fonts,
16
16
  baseSize,
@@ -8,7 +8,7 @@ import { extractViewStyle } from '../../../utils/extractViewStyle';
8
8
  export function useExtractViewStyle<T extends ViewPropsGenerated['attributes']>(
9
9
  node: NodeData<T>,
10
10
  ): CSSProperties {
11
- const { mockTheme: theme, projectColors, baseSize } = useBuilderParams();
11
+ const { selectedTheme: theme, projectColors, baseSize } = useBuilderParams();
12
12
 
13
13
  return useMemo(
14
14
  () => extractViewStyle(node, { theme, projectColors, baseSize }),
@@ -13,9 +13,7 @@
13
13
  }
14
14
  },
15
15
  "meta": {
16
- "desiredParent": [
17
- "all"
18
- ],
16
+ "desiredParent": ["all"],
19
17
  "label": "BIcon",
20
18
  "description": "Renders an icon from the icon set.",
21
19
  "styles": {},
@@ -8,12 +8,7 @@
8
8
  "extends": "View",
9
9
  "attributes": {
10
10
  "src": "string",
11
- "resizeMode": [
12
- "cover",
13
- "contain",
14
- "stretch",
15
- "center"
16
- ]
11
+ "resizeMode": ["cover", "contain", "stretch", "center"]
17
12
  },
18
13
  "defaults": {
19
14
  "resizeMode": "cover",
@@ -29,10 +24,7 @@
29
24
  }
30
25
  },
31
26
  "meta": {
32
- "desiredParent": [
33
- "all",
34
- "background"
35
- ],
27
+ "desiredParent": ["all", "background"],
36
28
  "label": "Background Image",
37
29
  "description": "Background image.",
38
30
  "styles": {
@@ -27,9 +27,7 @@
27
27
  }
28
28
  },
29
29
  "meta": {
30
- "desiredParent": [
31
- "all"
32
- ],
30
+ "desiredParent": ["all"],
33
31
  "label": "Button",
34
32
  "description": "Simple action button.",
35
33
  "styles": {
@@ -9,17 +9,11 @@
9
9
  "attributes": {
10
10
  "loop": "boolean",
11
11
  "dragFree": "boolean",
12
- "align": [
13
- "start",
14
- "center",
15
- "end"
16
- ]
12
+ "align": ["start", "center", "end"]
17
13
  }
18
14
  },
19
15
  "meta": {
20
- "desiredParent": [
21
- "=CarouselProvider"
22
- ],
16
+ "desiredParent": ["=CarouselProvider"],
23
17
  "label": "Carousel",
24
18
  "description": "Container for carousel items.",
25
19
  "styles": {}
@@ -34,7 +34,7 @@ function CarouselDots({ node }: CarouselDotsComponentProps) {
34
34
  const onboardApi = useContext(onboardContext);
35
35
  const emblaApi = isOnboard ? onboardApi?.emblaApi : carouselApi;
36
36
 
37
- const { mockTheme: theme, projectColors, baseSize } = useBuilderParams();
37
+ const { selectedTheme: theme, projectColors, baseSize } = useBuilderParams();
38
38
  const inactiveDotOpacity =
39
39
  (stylesBag?.inactive_dot_opacity as number | undefined) ??
40
40
  (attrRecord.inactive_dot_opacity as number | undefined) ??
@@ -15,10 +15,7 @@
15
15
  }
16
16
  },
17
17
  "meta": {
18
- "desiredParent": [
19
- "root",
20
- ">View"
21
- ],
18
+ "desiredParent": ["root", ">View"],
22
19
  "label": "Carousel Provider",
23
20
  "description": "Provides carousel context to its children.",
24
21
  "attributes": {}
@@ -15,9 +15,7 @@
15
15
  }
16
16
  },
17
17
  "meta": {
18
- "desiredParent": [
19
- "all"
20
- ],
18
+ "desiredParent": ["all"],
21
19
  "label": "Count Down",
22
20
  "description": "Displays a countdown timer.",
23
21
  "attributes": {
@@ -9,12 +9,7 @@
9
9
  "attributes": {
10
10
  "src": "string",
11
11
  "styles": {
12
- "resizeMode": [
13
- "cover",
14
- "contain",
15
- "stretch",
16
- "center"
17
- ]
12
+ "resizeMode": ["cover", "contain", "stretch", "center"]
18
13
  }
19
14
  },
20
15
  "defaults": {
@@ -24,9 +19,7 @@
24
19
  }
25
20
  },
26
21
  "meta": {
27
- "desiredParent": [
28
- "all"
29
- ],
22
+ "desiredParent": ["all"],
30
23
  "label": "Image",
31
24
  "description": "Shows an image or graphic.",
32
25
  "styles": {
@@ -20,9 +20,7 @@
20
20
  }
21
21
  },
22
22
  "meta": {
23
- "desiredParent": [
24
- "root"
25
- ],
23
+ "desiredParent": ["root"],
26
24
  "label": "Main",
27
25
  "description": "Top-level screen wrapper (safe area, base layout).",
28
26
  "hideAllAttributes": true,
@@ -11,7 +11,7 @@ function NavigationBarColor({ node }: NavigationBarColorComponentProps) {
11
11
  useLogRender('NavigationBarColor');
12
12
  node = useNode(node);
13
13
 
14
- const { theme, projectColors } = useBuilderParams();
14
+ const { selectedTheme: theme, projectColors } = useBuilderParams();
15
15
  const setNavBarOverrideColor = useRenderStore(
16
16
  (s) => s.setNavBarOverrideColor,
17
17
  );
@@ -13,9 +13,7 @@
13
13
  }
14
14
  },
15
15
  "meta": {
16
- "desiredParent": [
17
- "all"
18
- ],
16
+ "desiredParent": ["all"],
19
17
  "label": "Navigation Bar Color",
20
18
  "description": "Sets the OS navigation bar background color.",
21
19
  "styles": {
@@ -8,12 +8,8 @@
8
8
  "extends": "View"
9
9
  },
10
10
  "meta": {
11
- "desiredParent": [
12
- "=OnboardProvider"
13
- ],
14
- "desiredChildren": [
15
- "=OnboardItem"
16
- ],
11
+ "desiredParent": ["=OnboardProvider"],
12
+ "desiredChildren": ["=OnboardItem"],
17
13
  "label": "Onboard",
18
14
  "description": "Wraps the onboarding flow.",
19
15
  "styles": {}
@@ -18,7 +18,7 @@ export function OnboardButton({ node }: OnboardButtonComponentProps) {
18
18
  node = useNode(node);
19
19
  const attributeName = node.sourceType ?? node.type ?? 'OnboardButton';
20
20
  const { emblaApi } = useContext(onboardContext) ?? {};
21
- const { theme, projectColors } = useBuilderParams();
21
+ const { selectedTheme: theme, projectColors } = useBuilderParams();
22
22
  const context = useMockOSContext();
23
23
  const mockPermissionManager = useMockPermission(context);
24
24
  const handledEventsRef = useRef<EventObjectGenerated[]>([]);
@@ -31,25 +31,14 @@
31
31
  },
32
32
  "types": {
33
33
  "EventObject": {
34
- "type": [
35
- "Permission",
36
- "Navigate"
37
- ],
38
- "permission": [
39
- "att",
40
- "notification",
41
- "rating",
42
- "GDPR",
43
- "null"
44
- ],
34
+ "type": ["Permission", "Navigate"],
35
+ "permission": ["att", "notification", "rating", "GDPR", "null"],
45
36
  "navigate_to": "string",
46
37
  "targetIndex": "number"
47
38
  }
48
39
  },
49
40
  "meta": {
50
- "desiredParent": [
51
- "=OnboardButtons"
52
- ],
41
+ "desiredParent": ["=OnboardButtons"],
53
42
  "label": "Onboard Button",
54
43
  "description": "Single action button for onboarding.",
55
44
  "attributes": {
@@ -7,21 +7,12 @@
7
7
  "children": "node",
8
8
  "extends": "View",
9
9
  "attributes": {
10
- "buttonType": [
11
- "previous_button",
12
- "next_button",
13
- "skip_button"
14
- ],
10
+ "buttonType": ["previous_button", "next_button", "skip_button"],
15
11
  "skipNumber": "number",
16
- "buttons_direction": [
17
- "row",
18
- "column"
19
- ],
12
+ "buttons_direction": ["row", "column"],
20
13
  "forIndex": "number",
21
14
  "seperatorColor": "color",
22
- "condition": [
23
- "carousel-index"
24
- ],
15
+ "condition": ["carousel-index"],
25
16
  "conditionVariable": "number"
26
17
  },
27
18
  "defaults": {
@@ -37,9 +28,7 @@
37
28
  }
38
29
  },
39
30
  "meta": {
40
- "desiredParent": [
41
- "=OnboardItem"
42
- ],
31
+ "desiredParent": ["=OnboardItem"],
43
32
  "label": "Onboard Buttons",
44
33
  "description": "Wrapper for onboarding button set.",
45
34
  "styles": {
@@ -29,7 +29,7 @@ export function OnboardDot({ node }: OnboardDotComponentProps) {
29
29
  const {
30
30
  previewMode,
31
31
  selectedKey,
32
- mockTheme: theme,
32
+ selectedTheme: theme,
33
33
  projectColors,
34
34
  baseSize,
35
35
  } = useBuilderParams();
@@ -38,9 +38,7 @@
38
38
  }
39
39
  },
40
40
  "meta": {
41
- "desiredParent": [
42
- ">OnboardProvider"
43
- ],
41
+ "desiredParent": [">OnboardProvider"],
44
42
  "label": "Onboard Dot",
45
43
  "description": "Renders onboarding progress dots.",
46
44
  "styles": {
@@ -97,15 +97,15 @@ function OnboardFooter({ node }: OnboardFooterComponentProps) {
97
97
  const attributeName = node.sourceType ?? node.type ?? 'OnboardFooter';
98
98
  const {
99
99
  localization: builderLocalization,
100
- theme,
101
- defaultLanguage,
100
+ selectedTheme: theme,
101
+ selectedLanguage,
102
102
  previewMode,
103
103
  selectedKey,
104
104
  projectColors: builderProjectColors,
105
105
  } = useBuilderParams();
106
106
  const localization = builderLocalization ?? defaultLocalization;
107
107
  const projectColors = builderProjectColors;
108
- const lang = defaultLanguage ?? 'en';
108
+ const lang = selectedLanguage ?? 'en';
109
109
  const t = (key?: string) => (key ? (localization?.[lang]?.[key] ?? key) : '');
110
110
 
111
111
  const attrs = node?.attributes;
@@ -27,9 +27,7 @@
27
27
  }
28
28
  },
29
29
  "meta": {
30
- "desiredParent": [
31
- ">OnboardItem"
32
- ],
30
+ "desiredParent": [">OnboardItem"],
33
31
  "label": "Onboard Footer",
34
32
  "description": "Footer text with optional links.",
35
33
  "styles": {
@@ -7,15 +7,9 @@
7
7
  "children": "node",
8
8
  "extends": "View",
9
9
  "attributes": {
10
- "display": [
11
- "flex",
12
- "block"
13
- ],
10
+ "display": ["flex", "block"],
14
11
  "gap": "size",
15
- "flexDirection": [
16
- "row",
17
- "column"
18
- ],
12
+ "flexDirection": ["row", "column"],
19
13
  "paddingHorizontal": "size"
20
14
  }
21
15
  },
@@ -28,9 +22,7 @@
28
22
  }
29
23
  },
30
24
  "meta": {
31
- "desiredParent": [
32
- "=Onboard"
33
- ],
25
+ "desiredParent": ["=Onboard"],
34
26
  "label": "Onboard Item",
35
27
  "description": "Single onboarding screen section.",
36
28
  "styles": {},
@@ -7,11 +7,7 @@
7
7
  "children": "node",
8
8
  "extends": "View",
9
9
  "attributes": {
10
- "theme": [
11
- "light",
12
- "dark",
13
- "all"
14
- ],
10
+ "theme": ["light", "dark", "all"],
15
11
  "borderRadius": "never"
16
12
  }
17
13
  },
@@ -22,9 +18,7 @@
22
18
  }
23
19
  },
24
20
  "meta": {
25
- "desiredParent": [
26
- "root"
27
- ],
21
+ "desiredParent": ["root"],
28
22
  "label": "Onboard Provider",
29
23
  "description": "Provides shared settings for onboarding.",
30
24
  "styles": {},
@@ -14,10 +14,7 @@
14
14
  }
15
15
  },
16
16
  "meta": {
17
- "desiredParent": [
18
- ">OnboardProvider",
19
- ">OnboardItem"
20
- ],
17
+ "desiredParent": [">OnboardProvider", ">OnboardItem"],
21
18
  "label": "Onboard Subtitle",
22
19
  "description": "Subtitle text for an onboarding step.",
23
20
  "styles": {}
@@ -15,10 +15,7 @@
15
15
  }
16
16
  },
17
17
  "meta": {
18
- "desiredParent": [
19
- ">OnboardItem",
20
- ">OnboardProvider"
21
- ],
18
+ "desiredParent": [">OnboardItem", ">OnboardProvider"],
22
19
  "label": "Onboard Title",
23
20
  "description": "Title text for an onboarding step.",
24
21
  "styles": {}
@@ -20,9 +20,7 @@
20
20
  }
21
21
  },
22
22
  "meta": {
23
- "desiredParent": [
24
- ">PaywallProvider"
25
- ],
23
+ "desiredParent": [">PaywallProvider"],
26
24
  "label": "Paywall Background",
27
25
  "description": "Paywall Background component.",
28
26
  "styles": {}
@@ -8,9 +8,7 @@
8
8
  "extends": "BIcon"
9
9
  },
10
10
  "meta": {
11
- "desiredParent": [
12
- ">PaywallProvider"
13
- ],
11
+ "desiredParent": [">PaywallProvider"],
14
12
  "label": "Paywall Close Button",
15
13
  "description": "Paywall Close Button component.",
16
14
  "styles": {}
@@ -8,9 +8,7 @@
8
8
  "children": "node"
9
9
  },
10
10
  "meta": {
11
- "desiredParent": [
12
- ">PaywallProvider"
13
- ],
11
+ "desiredParent": [">PaywallProvider"],
14
12
  "label": "Paywall Options",
15
13
  "description": "Paywall options selector component.",
16
14
  "styles": {}
@@ -17,9 +17,7 @@
17
17
  }
18
18
  },
19
19
  "meta": {
20
- "desiredParent": [
21
- "all"
22
- ],
20
+ "desiredParent": ["all"],
23
21
  "label": "Paywall Provider",
24
22
  "description": "Provider/wrapper for paywall screen components.",
25
23
  "attributes": {
@@ -21,9 +21,7 @@
21
21
  }
22
22
  },
23
23
  "meta": {
24
- "desiredParent": [
25
- ">PaywallProvider"
26
- ],
24
+ "desiredParent": [">PaywallProvider"],
27
25
  "label": "Paywall Subscribe Button",
28
26
  "description": "Paywall subscribe call-to-action button. Extends Button.",
29
27
  "styles": {}
@@ -10,11 +10,7 @@
10
10
  "showOriginalPricePossible": "boolean",
11
11
  "hideIfItsNotDiscount": "boolean",
12
12
  "styles": {
13
- "textDecorationLine": [
14
- "none",
15
- "underline",
16
- "line-through"
17
- ]
13
+ "textDecorationLine": ["none", "underline", "line-through"]
18
14
  }
19
15
  }
20
16
  },
@@ -25,9 +21,7 @@
25
21
  }
26
22
  },
27
23
  "meta": {
28
- "desiredParent": [
29
- ">PaywallProvider"
30
- ],
24
+ "desiredParent": [">PaywallProvider"],
31
25
  "label": "Price Tag",
32
26
  "description": "Displays a price tag text. Extends Text.",
33
27
  "styles": {
@@ -17,9 +17,7 @@
17
17
  }
18
18
  },
19
19
  "meta": {
20
- "desiredParent": [
21
- ">PaywallProvider"
22
- ],
20
+ "desiredParent": [">PaywallProvider"],
23
21
  "label": "Pricing",
24
22
  "description": "Displays pricing details (e.g. promo/trial breakdown). Extends Text.",
25
23
  "styles": {}
@@ -17,9 +17,7 @@
17
17
  }
18
18
  },
19
19
  "meta": {
20
- "desiredParent": [
21
- ">PaywallProvider"
22
- ],
20
+ "desiredParent": [">PaywallProvider"],
23
21
  "label": "Promo",
24
22
  "description": "Displays promotional badge/text (e.g. discount percentage). Extends Text.",
25
23
  "styles": {}
@@ -18,9 +18,7 @@
18
18
  }
19
19
  },
20
20
  "meta": {
21
- "desiredParent": [
22
- "all"
23
- ],
21
+ "desiredParent": ["all"],
24
22
  "label": "Separator",
25
23
  "description": "Horizontal line separator.",
26
24
  "styles": {
@@ -11,7 +11,7 @@ function StatusBarColor({ node }: StatusBarColorComponentProps) {
11
11
  useLogRender('StatusBarColor');
12
12
  node = useNode(node);
13
13
 
14
- const { theme, projectColors } = useBuilderParams();
14
+ const { selectedTheme: theme, projectColors } = useBuilderParams();
15
15
  const setStatusBarOverrideColor = useRenderStore(
16
16
  (s) => s.setStatusBarOverrideColor,
17
17
  );
@@ -13,9 +13,7 @@
13
13
  }
14
14
  },
15
15
  "meta": {
16
- "desiredParent": [
17
- "all"
18
- ],
16
+ "desiredParent": ["all"],
19
17
  "label": "Status Bar Color",
20
18
  "description": "Sets the OS status bar background color.",
21
19
  "styles": {
@@ -27,9 +27,7 @@
27
27
  }
28
28
  },
29
29
  "meta": {
30
- "desiredParent": [
31
- "all"
32
- ],
30
+ "desiredParent": ["all"],
33
31
  "label": "Text",
34
32
  "description": "Displays simple text.",
35
33
  "styles": {
@@ -8,15 +8,8 @@
8
8
  "attributes": {
9
9
  "scrollable": "boolean",
10
10
  "styles": {
11
- "flexDirection": [
12
- "row",
13
- "column"
14
- ],
15
- "flexWrap": [
16
- "nowrap",
17
- "wrap",
18
- "wrap-reverse"
19
- ],
11
+ "flexDirection": ["row", "column"],
12
+ "flexWrap": ["nowrap", "wrap", "wrap-reverse"],
20
13
  "alignItems": [
21
14
  "flex-start",
22
15
  "center",
@@ -56,10 +49,7 @@
56
49
  "minHeight": "size",
57
50
  "maxHeight": "size",
58
51
  "flex": "number",
59
- "position": [
60
- "relative",
61
- "absolute"
62
- ],
52
+ "position": ["relative", "absolute"],
63
53
  "top": "size",
64
54
  "bottom": "size",
65
55
  "left": "size",
@@ -69,9 +59,7 @@
69
59
  }
70
60
  },
71
61
  "meta": {
72
- "desiredParent": [
73
- "all"
74
- ],
62
+ "desiredParent": ["all"],
75
63
  "label": "View",
76
64
  "description": "Base layout container.",
77
65
  "specialCategories": {