@plusscommunities/pluss-feature-builder-app-b 8.0.11-beta.7 → 8.0.14-beta.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 (40) hide show
  1. package/dist/module/components/FeatureDetailScreen.js +78 -77
  2. package/dist/module/components/FeatureDetailScreen.js.map +1 -1
  3. package/dist/module/components/FeatureListItem.js +2 -2
  4. package/dist/module/components/FeatureListItem.js.map +1 -1
  5. package/dist/module/components/FeatureListScreen.js +2 -1
  6. package/dist/module/components/FeatureListScreen.js.map +1 -1
  7. package/dist/module/components/FieldRenderer.js +2 -1
  8. package/dist/module/components/FieldRenderer.js.map +1 -1
  9. package/dist/module/components/FileDownload.js +2 -2
  10. package/dist/module/components/FileDownload.js.map +1 -1
  11. package/dist/module/components/WidgetGrid.js +2 -1
  12. package/dist/module/components/WidgetGrid.js.map +1 -1
  13. package/dist/module/components/WidgetLarge.js +2 -1
  14. package/dist/module/components/WidgetLarge.js.map +1 -1
  15. package/dist/module/components/WidgetSmall.js +2 -1
  16. package/dist/module/components/WidgetSmall.js.map +1 -1
  17. package/dist/module/components/common/index.js +1 -1
  18. package/dist/module/components/common/index.js.map +1 -1
  19. package/dist/module/components/layouts/CondensedList.js +2 -1
  20. package/dist/module/components/layouts/CondensedList.js.map +1 -1
  21. package/dist/module/components/layouts/FeatureImageList.js +2 -1
  22. package/dist/module/components/layouts/FeatureImageList.js.map +1 -1
  23. package/dist/module/components/layouts/RoundImageList.js +2 -1
  24. package/dist/module/components/layouts/RoundImageList.js.map +1 -1
  25. package/dist/module/components/layouts/SquareImageList.js +2 -1
  26. package/dist/module/components/layouts/SquareImageList.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/components/FeatureDetailScreen.js +797 -698
  29. package/src/components/FeatureListItem.js +183 -183
  30. package/src/components/FeatureListScreen.js +2 -1
  31. package/src/components/FieldRenderer.js +229 -234
  32. package/src/components/FileDownload.js +55 -55
  33. package/src/components/WidgetGrid.js +2 -1
  34. package/src/components/WidgetLarge.js +158 -157
  35. package/src/components/WidgetSmall.js +2 -1
  36. package/src/components/common/index.js +1 -1
  37. package/src/components/layouts/CondensedList.js +205 -205
  38. package/src/components/layouts/FeatureImageList.js +162 -162
  39. package/src/components/layouts/RoundImageList.js +192 -192
  40. package/src/components/layouts/SquareImageList.js +179 -179
@@ -1,32 +1,33 @@
1
1
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
2
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
3
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
- import React, { Component } from 'react';
5
- import { SPACING } from '../js/spacing';
6
- import { Platform, View, ScrollView, Animated, Dimensions, StatusBar, Text, TouchableOpacity, Linking, StyleSheet, KeyboardAvoidingView, Image } from 'react-native';
7
- import { FontAwesome } from './common';
8
- import { connect } from 'react-redux';
9
- import _ from 'lodash';
10
- import { LinearGradient } from 'expo-linear-gradient';
11
- import { Services } from '../feature.config';
12
- import { Components, Colours, COLOUR_TRANSPARENT, TEXT_DARK } from '../core.config';
13
- import { TEXT_MID, LINEGREY } from '../js/Colors';
14
- import FileDownload from './FileDownload';
15
- import { values } from '../values.config';
16
- import { selectFeatureDefinition } from '../utils/selectors';
17
- import Constants from 'expo-constants';
18
- import { InlineButton } from './common';
19
- import { FIELD_TYPES } from '../js/FieldTypes';
20
- const SCREEN_HEIGHT = Dimensions.get('window').height;
4
+ import React, { Component } from "react";
5
+ import { Text } from "@plusscommunities/pluss-core-app/components";
6
+ import { SPACING } from "../js/spacing";
7
+ import { Platform, View, ScrollView, Animated, Dimensions, StatusBar, TouchableOpacity, Linking, StyleSheet, KeyboardAvoidingView, Image } from "react-native";
8
+ import { FontAwesome } from "./common";
9
+ import { connect } from "react-redux";
10
+ import _ from "lodash";
11
+ import { LinearGradient } from "expo-linear-gradient";
12
+ import { Services } from "../feature.config";
13
+ import { Components, Colours, COLOUR_TRANSPARENT, TEXT_DARK } from "../core.config";
14
+ import { TEXT_MID, LINEGREY } from "../js/Colors";
15
+ import FileDownload from "./FileDownload";
16
+ import { values } from "../values.config";
17
+ import { selectFeatureDefinition } from "../utils/selectors";
18
+ import Constants from "expo-constants";
19
+ import { InlineButton } from "./common";
20
+ import { FIELD_TYPES } from "../js/FieldTypes";
21
+ const SCREEN_HEIGHT = Dimensions.get("window").height;
21
22
  const CARD_IMAGE_HEIGHT = SCREEN_HEIGHT * 0.3;
22
- const SCREEN_WIDTH = Dimensions.get('window').width;
23
+ const SCREEN_WIDTH = Dimensions.get("window").width;
23
24
 
24
25
  // StatusBarHeight function copied to avoid import from outside extension
25
26
  const StatusBarHeight = size => {
26
27
  return getStatusBarHeight() + size;
27
28
  };
28
29
  const getStatusBarHeight = () => {
29
- return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;
30
+ return Platform.OS === "ios" ? Constants.statusBarHeight : StatusBar.currentHeight;
30
31
  };
31
32
  class FeatureDetailScreen extends Component {
32
33
  constructor(props) {
@@ -101,13 +102,13 @@ class FeatureDetailScreen extends Component {
101
102
  */
102
103
  _defineProperty(this, "normalizeImageField", imageField => {
103
104
  if (!imageField) return null;
104
- if (typeof imageField === 'string') {
105
+ if (typeof imageField === "string") {
105
106
  return {
106
107
  uri: imageField,
107
108
  url: imageField
108
109
  };
109
110
  }
110
- if (typeof imageField === 'object') {
111
+ if (typeof imageField === "object") {
111
112
  if (imageField.uri) {
112
113
  return {
113
114
  uri: imageField.uri,
@@ -187,7 +188,7 @@ class FeatureDetailScreen extends Component {
187
188
  }
188
189
  }
189
190
  componentWillUnmount() {
190
- if (Platform.OS === 'ios') StatusBar.setBarStyle('dark-content');
191
+ if (Platform.OS === "ios") StatusBar.setBarStyle("dark-content");
191
192
  }
192
193
  /**
193
194
  * Process fields: filter out mandatory fields and sort by order
@@ -241,7 +242,7 @@ class FeatureDetailScreen extends Component {
241
242
  // Defensive: ensure fieldDef is always an object
242
243
  const safeFieldDef = fieldDef || {};
243
244
  const type = safeFieldDef.type || FIELD_TYPES.TEXT;
244
- const label = safeFieldDef.label || safeFieldDef.id || 'Unknown Field';
245
+ const label = safeFieldDef.label || safeFieldDef.id || "Unknown Field";
245
246
  switch (type) {
246
247
  case FIELD_TYPES.CTA:
247
248
  {
@@ -306,7 +307,7 @@ class FeatureDetailScreen extends Component {
306
307
  case FIELD_TYPES.IMAGE:
307
308
  {
308
309
  // Render secondary images inline with click handler
309
- const imgUri = (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.url) || (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.uri) || (typeof fieldValue === 'string' ? fieldValue : null);
310
+ const imgUri = (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.url) || (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.uri) || (typeof fieldValue === "string" ? fieldValue : null);
310
311
  if (!imgUri) return null;
311
312
 
312
313
  // Find this image's index for popup
@@ -338,12 +339,12 @@ class FeatureDetailScreen extends Component {
338
339
  }
339
340
  }, /*#__PURE__*/React.createElement(View, {
340
341
  style: {
341
- flexDirection: 'row',
342
- flexWrap: 'wrap',
342
+ flexDirection: "row",
343
+ flexWrap: "wrap",
343
344
  marginHorizontal: -4
344
345
  }
345
346
  }, fieldValue.map((imgItem, index) => {
346
- const imgUri = (imgItem === null || imgItem === void 0 ? void 0 : imgItem.url) || (imgItem === null || imgItem === void 0 ? void 0 : imgItem.uri) || (typeof imgItem === 'string' ? imgItem : null);
347
+ const imgUri = (imgItem === null || imgItem === void 0 ? void 0 : imgItem.url) || (imgItem === null || imgItem === void 0 ? void 0 : imgItem.uri) || (typeof imgItem === "string" ? imgItem : null);
347
348
  if (!imgUri) return null;
348
349
 
349
350
  // Find global index for the popup
@@ -356,7 +357,7 @@ class FeatureDetailScreen extends Component {
356
357
  onPress: () => this.openImagePopup(globalIndex !== -1 ? globalIndex : 0),
357
358
  activeOpacity: 0.8,
358
359
  style: {
359
- width: '50%',
360
+ width: "50%",
360
361
  padding: 4
361
362
  } // 2 column grid
362
363
  }, /*#__PURE__*/React.createElement(Image, {
@@ -383,7 +384,7 @@ class FeatureDetailScreen extends Component {
383
384
  // Default text fallback
384
385
  return /*#__PURE__*/React.createElement(Text, {
385
386
  style: styles.bodyText
386
- }, typeof fieldValue === 'object' ? JSON.stringify(fieldValue) : fieldValue);
387
+ }, typeof fieldValue === "object" ? JSON.stringify(fieldValue) : fieldValue);
387
388
  }
388
389
  }
389
390
 
@@ -415,7 +416,7 @@ class FeatureDetailScreen extends Component {
415
416
  }
416
417
 
417
418
  // Parse the image field value
418
- if (typeof imageField === 'string') {
419
+ if (typeof imageField === "string") {
419
420
  return imageField;
420
421
  }
421
422
  return (imageField === null || imageField === void 0 ? void 0 : imageField.uri) || (imageField === null || imageField === void 0 ? void 0 : imageField.url) || null;
@@ -443,11 +444,11 @@ class FeatureDetailScreen extends Component {
443
444
  }, "Item not found"));
444
445
  }
445
446
  return /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
446
- behavior: Platform.OS === 'ios' && 'padding',
447
+ behavior: Platform.OS === "ios" && "padding",
447
448
  style: {
448
- position: 'relative',
449
+ position: "relative",
449
450
  flex: 1,
450
- backgroundColor: Colours.BACKGROUND_WHITE || '#fff'
451
+ backgroundColor: Colours.BACKGROUND_WHITE || "#fff"
451
452
  }
452
453
  }, /*#__PURE__*/React.createElement(View, {
453
454
  style: styles.backButton
@@ -460,7 +461,7 @@ class FeatureDetailScreen extends Component {
460
461
  }
461
462
  }))), /*#__PURE__*/React.createElement(ScrollView, {
462
463
  style: {
463
- backgroundColor: Colours.BACKGROUND_WHITE || '#fff'
464
+ backgroundColor: Colours.BACKGROUND_WHITE || "#fff"
464
465
  },
465
466
  keyboardShouldPersistTaps: "always",
466
467
  ref: ref => {
@@ -482,7 +483,7 @@ class FeatureDetailScreen extends Component {
482
483
  }]
483
484
  }), /*#__PURE__*/React.createElement(LinearGradient, {
484
485
  style: styles.gradientOverlay,
485
- colors: ['rgba(0,0,0,0.7)', COLOUR_TRANSPARENT],
486
+ colors: ["rgba(0,0,0,0.7)", COLOUR_TRANSPARENT],
486
487
  start: {
487
488
  x: 0,
488
489
  y: 0
@@ -514,7 +515,7 @@ class FeatureDetailScreen extends Component {
514
515
  }
515
516
  const styles = StyleSheet.create({
516
517
  backButton: {
517
- position: 'absolute',
518
+ position: "absolute",
518
519
  left: 0,
519
520
  top: 0,
520
521
  zIndex: 10,
@@ -522,20 +523,20 @@ const styles = StyleSheet.create({
522
523
  height: StatusBarHeight(70)
523
524
  },
524
525
  headerContent: {
525
- alignSelf: 'stretch',
526
- flexDirection: 'row',
526
+ alignSelf: "stretch",
527
+ flexDirection: "row",
527
528
  flex: 1,
528
529
  paddingTop: StatusBarHeight(12)
529
530
  },
530
531
  image: {
531
- backgroundColor: Colours.BACKGROUND_WHITE || '#fff',
532
- position: 'relative',
532
+ backgroundColor: Colours.BACKGROUND_WHITE || "#fff",
533
+ position: "relative",
533
534
  width: undefined,
534
535
  height: undefined,
535
536
  flex: 1
536
537
  },
537
538
  mainHeader: {
538
- position: 'relative',
539
+ position: "relative",
539
540
  height: CARD_IMAGE_HEIGHT,
540
541
  width: SCREEN_WIDTH
541
542
  },
@@ -549,88 +550,88 @@ const styles = StyleSheet.create({
549
550
  },
550
551
  // Field labels/captions
551
552
  fieldLabel: {
552
- fontFamily: 'sf-regular',
553
+ fontFamily: "sf-regular",
553
554
  fontSize: 11,
554
555
  color: TEXT_MID,
555
556
  marginBottom: 6,
556
- textTransform: 'uppercase',
557
+ textTransform: "uppercase",
557
558
  letterSpacing: 1.2,
558
- alignSelf: 'center',
559
- textAlign: 'center',
559
+ alignSelf: "center",
560
+ textAlign: "center",
560
561
  paddingHorizontal: 8,
561
562
  paddingVertical: 4,
562
- backgroundColor: 'rgba(0,0,0,0.03)',
563
+ backgroundColor: "rgba(0,0,0,0.03)",
563
564
  borderRadius: 12,
564
- maxWidth: '80%'
565
+ maxWidth: "80%"
565
566
  },
566
567
  // Field type styles
567
568
  bodyText: {
568
- fontFamily: 'sf-regular',
569
+ fontFamily: "sf-regular",
569
570
  fontSize: 16,
570
571
  color: TEXT_DARK,
571
572
  lineHeight: 22
572
573
  },
573
574
  titleText: {
574
- fontFamily: 'sf-semibold',
575
+ fontFamily: "sf-semibold",
575
576
  fontSize: 16,
576
- fontWeight: '600',
577
+ fontWeight: "600",
577
578
  color: TEXT_DARK
578
579
  },
579
580
  descriptionText: {
580
- fontFamily: 'sf-regular',
581
+ fontFamily: "sf-regular",
581
582
  fontSize: 16,
582
583
  color: TEXT_DARK,
583
584
  lineHeight: 24
584
585
  },
585
586
  numberText: {
586
- fontFamily: 'sf-medium',
587
+ fontFamily: "sf-medium",
587
588
  fontSize: 16,
588
- fontWeight: '500',
589
+ fontWeight: "500",
589
590
  color: TEXT_DARK
590
591
  },
591
592
  // Link styles
592
593
  linkContainer: {
593
- flexDirection: 'row',
594
- alignItems: 'center',
594
+ flexDirection: "row",
595
+ alignItems: "center",
595
596
  paddingVertical: 4
596
597
  },
597
598
  linkText: {
598
- fontFamily: 'sf-medium',
599
+ fontFamily: "sf-medium",
599
600
  fontSize: 16,
600
- textDecorationLine: 'underline'
601
+ textDecorationLine: "underline"
601
602
  },
602
603
  // Date styles
603
604
  dateContainer: {
604
- flexDirection: 'row',
605
- alignItems: 'center',
605
+ flexDirection: "row",
606
+ alignItems: "center",
606
607
  paddingVertical: 4
607
608
  },
608
609
  // Image styles
609
610
  inlineImage: {
610
- width: '100%',
611
+ width: "100%",
611
612
  height: 200,
612
613
  borderRadius: 8,
613
614
  marginVertical: 8
614
615
  },
615
616
  imageCaption: {
616
- fontFamily: 'sf-italic',
617
+ fontFamily: "sf-italic",
617
618
  fontSize: 14,
618
- fontStyle: 'italic',
619
+ fontStyle: "italic",
619
620
  color: TEXT_MID,
620
621
  marginTop: 4,
621
- textAlign: 'center'
622
+ textAlign: "center"
622
623
  },
623
624
  // CTA styles
624
625
  ctaContainer: {
625
- alignItems: 'center',
626
- justifyContent: 'center',
626
+ alignItems: "center",
627
+ justifyContent: "center",
627
628
  paddingVertical: 8
628
629
  },
629
630
  // Section title styles
630
631
  sectionTitle: {
631
- fontFamily: 'sf-bold',
632
+ fontFamily: "sf-bold",
632
633
  fontSize: 14,
633
- fontWeight: '700',
634
+ fontWeight: "700",
634
635
  color: TEXT_DARK,
635
636
  marginBottom: SPACING.SM
636
637
  },
@@ -649,12 +650,12 @@ const styles = StyleSheet.create({
649
650
  marginHorizontal: 16
650
651
  },
651
652
  facilityDetailTitle: {
652
- fontFamily: 'sf-bold',
653
+ fontFamily: "sf-bold",
653
654
  color: TEXT_DARK,
654
655
  fontSize: 14
655
656
  },
656
657
  facilityDetailContent: {
657
- fontFamily: 'sf-regular',
658
+ fontFamily: "sf-regular",
658
659
  color: TEXT_DARK,
659
660
  fontSize: 16,
660
661
  lineHeight: 22
@@ -664,11 +665,11 @@ const styles = StyleSheet.create({
664
665
  },
665
666
  facilityDetailsTextContainer: {
666
667
  flex: 1,
667
- justifyContent: 'center'
668
+ justifyContent: "center"
668
669
  },
669
670
  facilityDetailContainer: {
670
671
  marginTop: 16,
671
- flexDirection: 'row'
672
+ flexDirection: "row"
672
673
  },
673
674
  facilityDetailTitleContainer: {
674
675
  width: 100,
@@ -679,15 +680,15 @@ const styles = StyleSheet.create({
679
680
  paddingTop: 20
680
681
  },
681
682
  eventTitle: {
682
- fontFamily: 'sf-bold',
683
+ fontFamily: "sf-bold",
683
684
  fontSize: 24,
684
685
  lineHeight: 32,
685
686
  color: TEXT_DARK,
686
- backgroundColor: 'transparent',
687
+ backgroundColor: "transparent",
687
688
  flex: 1
688
689
  },
689
690
  textLink: {
690
- fontFamily: 'sf-medium',
691
+ fontFamily: "sf-medium",
691
692
  fontSize: 16,
692
693
  lineHeight: 22
693
694
  },
@@ -696,14 +697,14 @@ const styles = StyleSheet.create({
696
697
  },
697
698
  centerContainer: {
698
699
  flex: 1,
699
- justifyContent: 'center',
700
- alignItems: 'center',
700
+ justifyContent: "center",
701
+ alignItems: "center",
701
702
  paddingHorizontal: 20
702
703
  },
703
704
  errorText: {
704
705
  fontSize: 16,
705
706
  color: TEXT_MID,
706
- textAlign: 'center'
707
+ textAlign: "center"
707
708
  },
708
709
  filesContainer: {
709
710
  marginVertical: 8
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","SPACING","Platform","View","ScrollView","Animated","Dimensions","StatusBar","Text","TouchableOpacity","Linking","StyleSheet","KeyboardAvoidingView","Image","FontAwesome","connect","_","LinearGradient","Services","Components","Colours","COLOUR_TRANSPARENT","TEXT_DARK","TEXT_MID","LINEGREY","FileDownload","values","selectFeatureDefinition","Constants","InlineButton","FIELD_TYPES","SCREEN_HEIGHT","get","height","CARD_IMAGE_HEIGHT","SCREEN_WIDTH","width","StatusBarHeight","size","getStatusBarHeight","OS","statusBarHeight","currentHeight","FeatureDetailScreen","constructor","props","_defineProperty","navigation","goBack","listing","featureDefinition","fields","allImages","fieldDefinitions","primaryImage","mandatoryFields","featureImage","imageObj","normalizeImageField","push","fieldId","fieldLabel","labels","forEach","fieldDef","type","IMAGE","GALLERY","id","fieldValue","Array","isArray","item","label","imageField","uri","url","imageIndex","state","length","setState","showImagePopup","selectedImageIndex","openURL","catch","err","file","isHomeTab","componentDidMount","getParentRoute","collectAllImages","componentDidUpdate","prevProps","componentWillUnmount","setBarStyle","processFields","excludedFieldIds","Set","title","filteredFields","Object","keys","filter","has","hasDefinition","some","f","map","fieldDefinition","find","fieldType","TEXT","sortBy","field","_field$fieldDefinitio","order","renderField","colourBrandingMain","safeFieldDef","CTA","btnLabel","btnUrl","createElement","style","styles","ctaContainer","large","color","onPress","handleLinkPress","EMAIL","linkContainer","name","fieldIcon","linkText","DATE","dateContainer","bodyText","FILE","files","filesContainer","sectionTitle","attachments","index","key","handleFilePress","DESCRIPTION","descriptionText","imgUri","findIndex","img","caption","openImagePopup","activeOpacity","source","inlineImage","resizeMode","imageCaption","marginVertical","flexDirection","flexWrap","marginHorizontal","imgItem","globalIndex","padding","TITLE","titleText","NUMBER","numberText","JSON","stringify","renderFields","processedFields","_index","_field$fieldDefinitio2","_field$fieldDefinitio3","fieldContainer","getImageSource","getTitle","defaultTitle","render","imageSource","centerContainer","errorText","behavior","position","flex","backgroundColor","BACKGROUND_WHITE","backButton","headerContent","BackButton","onPressBack","marginLeft","keyboardShouldPersistTaps","ref","scrollView","mainHeader","AutoOffsetImage","grayPlaceholder","gradientOverlay","colors","start","x","y","end","locations","paddingHorizontal","titleContainer","eventTitle","minHeight","ImagePopup","visible","images","onClose","closeImagePopup","create","left","top","zIndex","elevation","alignSelf","paddingTop","image","undefined","fontFamily","fontSize","marginBottom","textTransform","letterSpacing","textAlign","paddingVertical","borderRadius","maxWidth","lineHeight","fontWeight","alignItems","textDecorationLine","fontStyle","marginTop","justifyContent","SM","marginRight","section","divider","facilityDetailTitle","facilityDetailContent","facilityDetailsContainer","facilityDetailsTextContainer","facilityDetailContainer","facilityDetailTitleContainer","textLink","mapStateToProps","ownProps","getMainBrandingColourFromState","colourBrandingHeader","user","forwardRef"],"sources":["FeatureDetailScreen.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { SPACING } from '../js/spacing';\nimport {\n Platform,\n View,\n ScrollView,\n Animated,\n Dimensions,\n StatusBar,\n Text,\n TouchableOpacity,\n Linking,\n StyleSheet,\n KeyboardAvoidingView,\n Image,\n} from 'react-native';\nimport { FontAwesome } from './common';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { LinearGradient } from 'expo-linear-gradient';\nimport { Services } from '../feature.config';\nimport { Components, Colours, COLOUR_TRANSPARENT, TEXT_DARK } from '../core.config';\nimport { TEXT_MID, LINEGREY } from '../js/Colors';\nimport FileDownload from './FileDownload';\nimport { values } from '../values.config';\nimport { selectFeatureDefinition } from '../utils/selectors';\n\nimport Constants from 'expo-constants';\nimport { InlineButton } from './common';\nimport { FIELD_TYPES } from '../js/FieldTypes';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst CARD_IMAGE_HEIGHT = SCREEN_HEIGHT * 0.3;\nconst SCREEN_WIDTH = Dimensions.get('window').width;\n\n// StatusBarHeight function copied to avoid import from outside extension\nconst StatusBarHeight = size => {\n return getStatusBarHeight() + size;\n};\n\nconst getStatusBarHeight = () => {\n return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;\n};\n\nclass FeatureDetailScreen extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isHomeTab: false,\n showImagePopup: false,\n selectedImageIndex: 0,\n allImages: [],\n };\n }\n\n componentDidMount() {\n this.setState({\n isHomeTab: !Services.navigation.getParentRoute(),\n allImages: this.collectAllImages(),\n });\n }\n\n componentDidUpdate(prevProps) {\n // Recalculate allImages when listing or featureDefinition changes\n if (prevProps.listing !== this.props.listing || prevProps.featureDefinition !== this.props.featureDefinition) {\n this.setState({ allImages: this.collectAllImages() });\n }\n }\n\n componentWillUnmount() {\n if (Platform.OS === 'ios') StatusBar.setBarStyle('dark-content');\n }\n\n onPressBack = () => {\n Services.navigation.goBack();\n };\n\n /**\n * Collect all images from listing fields\n */\n collectAllImages = () => {\n const { listing, featureDefinition } = this.props;\n if (!listing || !listing.fields || !featureDefinition) {\n return [];\n }\n\n const allImages = [];\n const fieldDefinitions = featureDefinition.fields || [];\n\n // Add primary feature image first\n const primaryImage = listing.fields[values.mandatoryFields.featureImage];\n if (primaryImage) {\n const imageObj = this.normalizeImageField(primaryImage);\n if (imageObj) {\n allImages.push({\n ...imageObj,\n fieldId: values.mandatoryFields.featureImage,\n fieldLabel: values.labels.featureImage,\n });\n }\n }\n\n // Add additional image fields\n fieldDefinitions.forEach(fieldDef => {\n if (\n (fieldDef.type === FIELD_TYPES.IMAGE || fieldDef.type === FIELD_TYPES.GALLERY) &&\n fieldDef.id !== values.mandatoryFields.featureImage\n ) {\n const fieldValue = listing.fields[fieldDef.id];\n\n if (fieldValue) {\n if (fieldDef.type === FIELD_TYPES.GALLERY) {\n // Handle Gallery (Array of images)\n if (Array.isArray(fieldValue)) {\n fieldValue.forEach(item => {\n const imageObj = this.normalizeImageField(item);\n if (imageObj) {\n allImages.push({\n ...imageObj,\n fieldId: fieldDef.id,\n fieldLabel: fieldDef.label || fieldDef.id,\n });\n }\n });\n }\n } else {\n // Handle Single Image\n const imageObj = this.normalizeImageField(fieldValue);\n if (imageObj) {\n allImages.push({\n ...imageObj,\n fieldId: fieldDef.id,\n fieldLabel: fieldDef.label || fieldDef.id,\n });\n }\n }\n }\n }\n });\n\n return allImages;\n };\n\n /**\n * Normalize image field to object format\n */\n normalizeImageField = imageField => {\n if (!imageField) return null;\n\n if (typeof imageField === 'string') {\n return { uri: imageField, url: imageField };\n }\n\n if (typeof imageField === 'object') {\n if (imageField.uri) {\n return { uri: imageField.uri, url: imageField.uri, ...imageField };\n }\n if (imageField.url) {\n return { uri: imageField.url, url: imageField.url, ...imageField };\n }\n }\n\n return null;\n };\n\n /**\n * Open image popup with all images\n */\n openImagePopup = (imageIndex = 0) => {\n const { allImages } = this.state;\n if (allImages.length > 0) {\n this.setState({\n showImagePopup: true,\n selectedImageIndex: imageIndex,\n });\n }\n };\n\n /**\n * Close image popup\n */\n closeImagePopup = () => {\n this.setState({\n showImagePopup: false,\n selectedImageIndex: 0,\n });\n };\n\n /**\n * Process fields: filter out mandatory fields and sort by order\n */\n processFields() {\n const { listing, featureDefinition } = this.props;\n if (!listing || !listing.fields || !featureDefinition) {\n return [];\n }\n\n const fieldDefinitions = featureDefinition.fields || [];\n const excludedFieldIds = new Set([values.mandatoryFields.title, values.mandatoryFields.featureImage]);\n\n // Filter and map fields with their definitions\n const filteredFields = Object.keys(listing.fields)\n .filter(fieldId => {\n if (!fieldId || excludedFieldIds.has(fieldId)) return false;\n if (listing.fields[fieldId] == null) return false;\n\n // Only include fields that have definitions\n const hasDefinition = fieldDefinitions.some(f => f.id === fieldId);\n if (!hasDefinition) {\n return false;\n }\n return true;\n })\n .map(fieldId => {\n const fieldDefinition = fieldDefinitions.find(fieldDef => fieldDef.id === fieldId);\n return {\n fieldId,\n fieldValue: listing.fields[fieldId],\n fieldDefinition,\n fieldType: fieldDefinition?.type || FIELD_TYPES.TEXT,\n };\n });\n\n // Sort by order property if available\n return _.sortBy(filteredFields, field => field.fieldDefinition?.order || 999);\n }\n\n /**\n * Handle link opening for various field types\n */\n handleLinkPress = url => {\n if (url) {\n Linking.openURL(url).catch(err => {\n // Silently handle URL open errors\n });\n }\n };\n\n handleFilePress = file => {\n if (file?.url) {\n Linking.openURL(file.url).catch(err => {\n // Silently handle URL open errors\n });\n }\n };\n\n /**\n * Render individual field based on its type\n */\n renderField(fieldDef, fieldValue) {\n const { colourBrandingMain } = this.props;\n\n // Defensive: ensure fieldDef is always an object\n const safeFieldDef = fieldDef || {};\n const type = safeFieldDef.type || FIELD_TYPES.TEXT;\n const label = safeFieldDef.label || safeFieldDef.id || 'Unknown Field';\n\n switch (type) {\n case FIELD_TYPES.CTA: {\n const btnLabel = fieldValue?.label || label;\n const btnUrl = fieldValue?.url;\n return (\n <View style={styles.ctaContainer}>\n <InlineButton large color={colourBrandingMain} onPress={() => this.handleLinkPress(btnUrl)}>\n {btnLabel}\n </InlineButton>\n </View>\n );\n }\n\n case FIELD_TYPES.EMAIL:\n return (\n <TouchableOpacity style={styles.linkContainer} onPress={() => this.handleLinkPress(`mailto:${fieldValue}`)}>\n <FontAwesome name=\"envelope\" size={16} color={colourBrandingMain} style={styles.fieldIcon} />\n <Text style={[styles.linkText, { color: colourBrandingMain }]}>{fieldValue}</Text>\n </TouchableOpacity>\n );\n\n case FIELD_TYPES.DATE:\n return (\n <View style={styles.dateContainer}>\n <FontAwesome name=\"calendar\" size={16} color={TEXT_DARK} style={styles.fieldIcon} />\n <Text style={styles.bodyText}>{fieldValue}</Text>\n </View>\n );\n\n case FIELD_TYPES.FILE: {\n // Handle both single file and multiple files (array)\n const files = Array.isArray(fieldValue) ? fieldValue : [fieldValue];\n return (\n <View style={styles.filesContainer}>\n <Text style={styles.sectionTitle}>{values.labels.attachments}</Text>\n {files.map((file, index) => {\n // Skip null/undefined files\n if (!file) return null;\n\n return <FileDownload key={index} file={file} onPress={this.handleFilePress} color={this.props.colourBrandingMain} />;\n })}\n </View>\n );\n }\n\n case FIELD_TYPES.DESCRIPTION:\n return <Text style={styles.descriptionText}>{fieldValue}</Text>;\n\n case FIELD_TYPES.IMAGE: {\n // Render secondary images inline with click handler\n const imgUri = fieldValue?.url || fieldValue?.uri || (typeof fieldValue === 'string' ? fieldValue : null);\n if (!imgUri) return null;\n\n // Find this image's index for popup\n const { allImages } = this.state;\n const imageIndex = allImages.findIndex(img => img.uri === imgUri || img.url === imgUri);\n\n const caption = fieldValue?.caption;\n\n return (\n <TouchableOpacity onPress={() => this.openImagePopup(imageIndex)} activeOpacity={0.8}>\n <Image source={{ uri: imgUri }} style={styles.inlineImage} resizeMode=\"cover\" />\n {caption && <Text style={styles.imageCaption}>{caption}</Text>}\n </TouchableOpacity>\n );\n }\n\n case FIELD_TYPES.GALLERY: {\n // Handle Gallery Fields (arrays of images)\n if (!Array.isArray(fieldValue)) return null;\n\n return (\n <View style={{ marginVertical: 16 }}>\n <View\n style={{\n flexDirection: 'row',\n flexWrap: 'wrap',\n marginHorizontal: -4,\n }}\n >\n {fieldValue.map((imgItem, index) => {\n const imgUri = imgItem?.url || imgItem?.uri || (typeof imgItem === 'string' ? imgItem : null);\n if (!imgUri) return null;\n\n // Find global index for the popup\n const { allImages } = this.state;\n const globalIndex = allImages.findIndex(img => img.uri === imgUri || img.url === imgUri);\n\n return (\n <TouchableOpacity\n key={index}\n onPress={() => this.openImagePopup(globalIndex !== -1 ? globalIndex : 0)}\n activeOpacity={0.8}\n style={{ width: '50%', padding: 4 }} // 2 column grid\n >\n <Image source={{ uri: imgUri }} style={[styles.inlineImage, { height: 150, marginVertical: 0 }]} resizeMode=\"cover\" />\n </TouchableOpacity>\n );\n })}\n </View>\n </View>\n );\n }\n\n case FIELD_TYPES.TITLE:\n return <Text style={styles.titleText}>{fieldValue}</Text>;\n\n case FIELD_TYPES.NUMBER:\n return <Text style={styles.numberText}>{fieldValue}</Text>;\n\n default:\n // Default text fallback\n return <Text style={styles.bodyText}>{typeof fieldValue === 'object' ? JSON.stringify(fieldValue) : fieldValue}</Text>;\n }\n }\n\n /**\n * Render all fields with proper spacing and structure\n */\n renderFields() {\n const processedFields = this.processFields();\n\n return processedFields.map((field, _index) => {\n return (\n <View key={field.fieldId} style={styles.fieldContainer}>\n {field.fieldType !== FIELD_TYPES.CTA && field.fieldType !== FIELD_TYPES.IMAGE && field.fieldDefinition?.label && (\n <Text style={styles.fieldLabel}>{field.fieldDefinition?.label}</Text>\n )}\n {this.renderField(field.fieldDefinition, field.fieldValue)}\n </View>\n );\n });\n }\n\n getImageSource() {\n const { listing } = this.props;\n if (!listing || !listing.fields) {\n return null;\n }\n\n const imageField = listing.fields[values.mandatoryFields.featureImage];\n if (!imageField) {\n return null;\n }\n\n // Parse the image field value\n if (typeof imageField === 'string') {\n return imageField;\n }\n\n return imageField?.uri || imageField?.url || null;\n }\n\n getTitle() {\n const { listing } = this.props;\n if (!listing || !listing.fields) {\n return values.labels.defaultTitle;\n }\n\n return listing.fields[values.mandatoryFields.title] || values.labels.defaultTitle;\n }\n\n render() {\n const { listing } = this.props;\n const imageSource = this.getImageSource();\n const title = this.getTitle();\n\n if (!listing || !listing.fields) {\n return (\n <View style={styles.centerContainer}>\n <Text style={styles.errorText}>Item not found</Text>\n </View>\n );\n }\n\n return (\n <KeyboardAvoidingView\n behavior={Platform.OS === 'ios' && 'padding'}\n style={{\n position: 'relative',\n flex: 1,\n backgroundColor: Colours.BACKGROUND_WHITE || '#fff',\n }}\n >\n <View style={styles.backButton}>\n <View style={styles.headerContent}>\n <Components.BackButton\n onPress={this.onPressBack}\n style={{\n marginLeft: 16,\n }}\n />\n </View>\n </View>\n\n <ScrollView\n style={{ backgroundColor: Colours.BACKGROUND_WHITE || '#fff' }}\n keyboardShouldPersistTaps=\"always\"\n ref={ref => {\n this.scrollView = ref;\n }}\n >\n <View style={[styles.mainHeader]}>\n {imageSource ? (\n <TouchableOpacity onPress={() => this.openImagePopup(0)} activeOpacity={0.9}>\n <Components.AutoOffsetImage uri={imageSource} height={CARD_IMAGE_HEIGHT} width={SCREEN_WIDTH} />\n </TouchableOpacity>\n ) : (\n <View style={[styles.grayPlaceholder, { height: CARD_IMAGE_HEIGHT, width: SCREEN_WIDTH }]} />\n )}\n <LinearGradient\n style={styles.gradientOverlay}\n colors={['rgba(0,0,0,0.7)', COLOUR_TRANSPARENT]}\n start={{ x: 0, y: 0 }}\n end={{ x: 0, y: 1 }}\n locations={[0, 0.5]}\n />\n </View>\n <View style={{ paddingHorizontal: 16 }}>\n <View style={styles.titleContainer}>\n <Text style={styles.eventTitle}>{title}</Text>\n </View>\n </View>\n <View style={{ minHeight: SCREEN_HEIGHT - CARD_IMAGE_HEIGHT - 56 }}>{this.renderFields()}</View>\n </ScrollView>\n\n {/* Image Popup */}\n {this.state.showImagePopup && (\n <Components.ImagePopup\n visible={this.state.showImagePopup}\n images={this.state.allImages}\n index={this.state.selectedImageIndex}\n onClose={this.closeImagePopup}\n />\n )}\n </KeyboardAvoidingView>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n backButton: {\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 10,\n elevation: 10,\n height: StatusBarHeight(70),\n },\n headerContent: {\n alignSelf: 'stretch',\n flexDirection: 'row',\n flex: 1,\n paddingTop: StatusBarHeight(12),\n },\n image: {\n backgroundColor: Colours.BACKGROUND_WHITE || '#fff',\n position: 'relative',\n width: undefined,\n height: undefined,\n flex: 1,\n },\n mainHeader: {\n position: 'relative',\n height: CARD_IMAGE_HEIGHT,\n width: SCREEN_WIDTH,\n },\n\n gradientOverlay: {\n flex: 1,\n },\n\n // Field container and spacing\n fieldContainer: {\n paddingHorizontal: 16,\n marginVertical: 12,\n },\n\n // Field labels/captions\n fieldLabel: {\n fontFamily: 'sf-regular',\n fontSize: 11,\n color: TEXT_MID,\n marginBottom: 6,\n textTransform: 'uppercase',\n letterSpacing: 1.2,\n alignSelf: 'center',\n textAlign: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n backgroundColor: 'rgba(0,0,0,0.03)',\n borderRadius: 12,\n maxWidth: '80%',\n },\n\n // Field type styles\n bodyText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: TEXT_DARK,\n lineHeight: 22,\n },\n titleText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n fontWeight: '600',\n color: TEXT_DARK,\n },\n descriptionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: TEXT_DARK,\n lineHeight: 24,\n },\n numberText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n fontWeight: '500',\n color: TEXT_DARK,\n },\n\n // Link styles\n linkContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 4,\n },\n linkText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n textDecorationLine: 'underline',\n },\n\n // Date styles\n dateContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 4,\n },\n\n // Image styles\n inlineImage: {\n width: '100%',\n height: 200,\n borderRadius: 8,\n marginVertical: 8,\n },\n imageCaption: {\n fontFamily: 'sf-italic',\n fontSize: 14,\n fontStyle: 'italic',\n color: TEXT_MID,\n marginTop: 4,\n textAlign: 'center',\n },\n\n // CTA styles\n ctaContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 8,\n },\n\n // Section title styles\n sectionTitle: {\n fontFamily: 'sf-bold',\n fontSize: 14,\n fontWeight: '700',\n color: TEXT_DARK,\n marginBottom: SPACING.SM,\n },\n\n // Icon styles\n fieldIcon: {\n marginRight: 8,\n },\n\n // Legacy styles (kept for compatibility)\n section: {\n paddingVertical: 16,\n },\n divider: {\n height: 1,\n backgroundColor: LINEGREY,\n marginVertical: 8,\n marginHorizontal: 16,\n },\n facilityDetailTitle: {\n fontFamily: 'sf-bold',\n color: TEXT_DARK,\n fontSize: 14,\n },\n facilityDetailContent: {\n fontFamily: 'sf-regular',\n color: TEXT_DARK,\n fontSize: 16,\n lineHeight: 22,\n },\n facilityDetailsContainer: {\n flex: 1,\n },\n facilityDetailsTextContainer: {\n flex: 1,\n justifyContent: 'center',\n },\n facilityDetailContainer: {\n marginTop: 16,\n flexDirection: 'row',\n },\n facilityDetailTitleContainer: {\n width: 100,\n marginRight: 10,\n },\n titleContainer: {\n paddingVertical: 16,\n paddingTop: 20,\n },\n eventTitle: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n lineHeight: 32,\n color: TEXT_DARK,\n backgroundColor: 'transparent',\n flex: 1,\n },\n textLink: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n lineHeight: 22,\n },\n grayPlaceholder: {\n backgroundColor: LINEGREY,\n },\n centerContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n paddingHorizontal: 20,\n },\n errorText: {\n fontSize: 16,\n color: TEXT_MID,\n textAlign: 'center',\n },\n filesContainer: {\n marginVertical: 8,\n },\n});\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n colourBrandingHeader: Colours.getMainBrandingColourFromState(state),\n featureDefinition: selectFeatureDefinition(state),\n user: state.user,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(FeatureDetailScreen);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Component","Text","SPACING","Platform","View","ScrollView","Animated","Dimensions","StatusBar","TouchableOpacity","Linking","StyleSheet","KeyboardAvoidingView","Image","FontAwesome","connect","_","LinearGradient","Services","Components","Colours","COLOUR_TRANSPARENT","TEXT_DARK","TEXT_MID","LINEGREY","FileDownload","values","selectFeatureDefinition","Constants","InlineButton","FIELD_TYPES","SCREEN_HEIGHT","get","height","CARD_IMAGE_HEIGHT","SCREEN_WIDTH","width","StatusBarHeight","size","getStatusBarHeight","OS","statusBarHeight","currentHeight","FeatureDetailScreen","constructor","props","_defineProperty","navigation","goBack","listing","featureDefinition","fields","allImages","fieldDefinitions","primaryImage","mandatoryFields","featureImage","imageObj","normalizeImageField","push","fieldId","fieldLabel","labels","forEach","fieldDef","type","IMAGE","GALLERY","id","fieldValue","Array","isArray","item","label","imageField","uri","url","imageIndex","state","length","setState","showImagePopup","selectedImageIndex","openURL","catch","err","file","isHomeTab","componentDidMount","getParentRoute","collectAllImages","componentDidUpdate","prevProps","componentWillUnmount","setBarStyle","processFields","excludedFieldIds","Set","title","filteredFields","Object","keys","filter","has","hasDefinition","some","f","map","fieldDefinition","find","fieldType","TEXT","sortBy","field","_field$fieldDefinitio","order","renderField","colourBrandingMain","safeFieldDef","CTA","btnLabel","btnUrl","createElement","style","styles","ctaContainer","large","color","onPress","handleLinkPress","EMAIL","linkContainer","name","fieldIcon","linkText","DATE","dateContainer","bodyText","FILE","files","filesContainer","sectionTitle","attachments","index","key","handleFilePress","DESCRIPTION","descriptionText","imgUri","findIndex","img","caption","openImagePopup","activeOpacity","source","inlineImage","resizeMode","imageCaption","marginVertical","flexDirection","flexWrap","marginHorizontal","imgItem","globalIndex","padding","TITLE","titleText","NUMBER","numberText","JSON","stringify","renderFields","processedFields","_index","_field$fieldDefinitio2","_field$fieldDefinitio3","fieldContainer","getImageSource","getTitle","defaultTitle","render","imageSource","centerContainer","errorText","behavior","position","flex","backgroundColor","BACKGROUND_WHITE","backButton","headerContent","BackButton","onPressBack","marginLeft","keyboardShouldPersistTaps","ref","scrollView","mainHeader","AutoOffsetImage","grayPlaceholder","gradientOverlay","colors","start","x","y","end","locations","paddingHorizontal","titleContainer","eventTitle","minHeight","ImagePopup","visible","images","onClose","closeImagePopup","create","left","top","zIndex","elevation","alignSelf","paddingTop","image","undefined","fontFamily","fontSize","marginBottom","textTransform","letterSpacing","textAlign","paddingVertical","borderRadius","maxWidth","lineHeight","fontWeight","alignItems","textDecorationLine","fontStyle","marginTop","justifyContent","SM","marginRight","section","divider","facilityDetailTitle","facilityDetailContent","facilityDetailsContainer","facilityDetailsTextContainer","facilityDetailContainer","facilityDetailTitleContainer","textLink","mapStateToProps","ownProps","getMainBrandingColourFromState","colourBrandingHeader","user","forwardRef"],"sources":["FeatureDetailScreen.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport { SPACING } from \"../js/spacing\";\nimport {\n\tPlatform,\n\tView,\n\tScrollView,\n\tAnimated,\n\tDimensions,\n\tStatusBar,\n\tTouchableOpacity,\n\tLinking,\n\tStyleSheet,\n\tKeyboardAvoidingView,\n\tImage,\n} from \"react-native\";\nimport { FontAwesome } from \"./common\";\nimport { connect } from \"react-redux\";\nimport _ from \"lodash\";\nimport { LinearGradient } from \"expo-linear-gradient\";\nimport { Services } from \"../feature.config\";\nimport {\n\tComponents,\n\tColours,\n\tCOLOUR_TRANSPARENT,\n\tTEXT_DARK,\n} from \"../core.config\";\nimport { TEXT_MID, LINEGREY } from \"../js/Colors\";\nimport FileDownload from \"./FileDownload\";\nimport { values } from \"../values.config\";\nimport { selectFeatureDefinition } from \"../utils/selectors\";\n\nimport Constants from \"expo-constants\";\nimport { InlineButton } from \"./common\";\nimport { FIELD_TYPES } from \"../js/FieldTypes\";\n\nconst SCREEN_HEIGHT = Dimensions.get(\"window\").height;\nconst CARD_IMAGE_HEIGHT = SCREEN_HEIGHT * 0.3;\nconst SCREEN_WIDTH = Dimensions.get(\"window\").width;\n\n// StatusBarHeight function copied to avoid import from outside extension\nconst StatusBarHeight = (size) => {\n\treturn getStatusBarHeight() + size;\n};\n\nconst getStatusBarHeight = () => {\n\treturn Platform.OS === \"ios\"\n\t\t? Constants.statusBarHeight\n\t\t: StatusBar.currentHeight;\n};\n\nclass FeatureDetailScreen extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tisHomeTab: false,\n\t\t\tshowImagePopup: false,\n\t\t\tselectedImageIndex: 0,\n\t\t\tallImages: [],\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.setState({\n\t\t\tisHomeTab: !Services.navigation.getParentRoute(),\n\t\t\tallImages: this.collectAllImages(),\n\t\t});\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\t// Recalculate allImages when listing or featureDefinition changes\n\t\tif (\n\t\t\tprevProps.listing !== this.props.listing ||\n\t\t\tprevProps.featureDefinition !== this.props.featureDefinition\n\t\t) {\n\t\t\tthis.setState({ allImages: this.collectAllImages() });\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (Platform.OS === \"ios\") StatusBar.setBarStyle(\"dark-content\");\n\t}\n\n\tonPressBack = () => {\n\t\tServices.navigation.goBack();\n\t};\n\n\t/**\n\t * Collect all images from listing fields\n\t */\n\tcollectAllImages = () => {\n\t\tconst { listing, featureDefinition } = this.props;\n\t\tif (!listing || !listing.fields || !featureDefinition) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst allImages = [];\n\t\tconst fieldDefinitions = featureDefinition.fields || [];\n\n\t\t// Add primary feature image first\n\t\tconst primaryImage = listing.fields[values.mandatoryFields.featureImage];\n\t\tif (primaryImage) {\n\t\t\tconst imageObj = this.normalizeImageField(primaryImage);\n\t\t\tif (imageObj) {\n\t\t\t\tallImages.push({\n\t\t\t\t\t...imageObj,\n\t\t\t\t\tfieldId: values.mandatoryFields.featureImage,\n\t\t\t\t\tfieldLabel: values.labels.featureImage,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Add additional image fields\n\t\tfieldDefinitions.forEach((fieldDef) => {\n\t\t\tif (\n\t\t\t\t(fieldDef.type === FIELD_TYPES.IMAGE ||\n\t\t\t\t\tfieldDef.type === FIELD_TYPES.GALLERY) &&\n\t\t\t\tfieldDef.id !== values.mandatoryFields.featureImage\n\t\t\t) {\n\t\t\t\tconst fieldValue = listing.fields[fieldDef.id];\n\n\t\t\t\tif (fieldValue) {\n\t\t\t\t\tif (fieldDef.type === FIELD_TYPES.GALLERY) {\n\t\t\t\t\t\t// Handle Gallery (Array of images)\n\t\t\t\t\t\tif (Array.isArray(fieldValue)) {\n\t\t\t\t\t\t\tfieldValue.forEach((item) => {\n\t\t\t\t\t\t\t\tconst imageObj = this.normalizeImageField(item);\n\t\t\t\t\t\t\t\tif (imageObj) {\n\t\t\t\t\t\t\t\t\tallImages.push({\n\t\t\t\t\t\t\t\t\t\t...imageObj,\n\t\t\t\t\t\t\t\t\t\tfieldId: fieldDef.id,\n\t\t\t\t\t\t\t\t\t\tfieldLabel: fieldDef.label || fieldDef.id,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Handle Single Image\n\t\t\t\t\t\tconst imageObj = this.normalizeImageField(fieldValue);\n\t\t\t\t\t\tif (imageObj) {\n\t\t\t\t\t\t\tallImages.push({\n\t\t\t\t\t\t\t\t...imageObj,\n\t\t\t\t\t\t\t\tfieldId: fieldDef.id,\n\t\t\t\t\t\t\t\tfieldLabel: fieldDef.label || fieldDef.id,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn allImages;\n\t};\n\n\t/**\n\t * Normalize image field to object format\n\t */\n\tnormalizeImageField = (imageField) => {\n\t\tif (!imageField) return null;\n\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn { uri: imageField, url: imageField };\n\t\t}\n\n\t\tif (typeof imageField === \"object\") {\n\t\t\tif (imageField.uri) {\n\t\t\t\treturn { uri: imageField.uri, url: imageField.uri, ...imageField };\n\t\t\t}\n\t\t\tif (imageField.url) {\n\t\t\t\treturn { uri: imageField.url, url: imageField.url, ...imageField };\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t};\n\n\t/**\n\t * Open image popup with all images\n\t */\n\topenImagePopup = (imageIndex = 0) => {\n\t\tconst { allImages } = this.state;\n\t\tif (allImages.length > 0) {\n\t\t\tthis.setState({\n\t\t\t\tshowImagePopup: true,\n\t\t\t\tselectedImageIndex: imageIndex,\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Close image popup\n\t */\n\tcloseImagePopup = () => {\n\t\tthis.setState({\n\t\t\tshowImagePopup: false,\n\t\t\tselectedImageIndex: 0,\n\t\t});\n\t};\n\n\t/**\n\t * Process fields: filter out mandatory fields and sort by order\n\t */\n\tprocessFields() {\n\t\tconst { listing, featureDefinition } = this.props;\n\t\tif (!listing || !listing.fields || !featureDefinition) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst fieldDefinitions = featureDefinition.fields || [];\n\t\tconst excludedFieldIds = new Set([\n\t\t\tvalues.mandatoryFields.title,\n\t\t\tvalues.mandatoryFields.featureImage,\n\t\t]);\n\n\t\t// Filter and map fields with their definitions\n\t\tconst filteredFields = Object.keys(listing.fields)\n\t\t\t.filter((fieldId) => {\n\t\t\t\tif (!fieldId || excludedFieldIds.has(fieldId)) return false;\n\t\t\t\tif (listing.fields[fieldId] == null) return false;\n\n\t\t\t\t// Only include fields that have definitions\n\t\t\t\tconst hasDefinition = fieldDefinitions.some((f) => f.id === fieldId);\n\t\t\t\tif (!hasDefinition) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t})\n\t\t\t.map((fieldId) => {\n\t\t\t\tconst fieldDefinition = fieldDefinitions.find(\n\t\t\t\t\t(fieldDef) => fieldDef.id === fieldId,\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tfieldId,\n\t\t\t\t\tfieldValue: listing.fields[fieldId],\n\t\t\t\t\tfieldDefinition,\n\t\t\t\t\tfieldType: fieldDefinition?.type || FIELD_TYPES.TEXT,\n\t\t\t\t};\n\t\t\t});\n\n\t\t// Sort by order property if available\n\t\treturn _.sortBy(\n\t\t\tfilteredFields,\n\t\t\t(field) => field.fieldDefinition?.order || 999,\n\t\t);\n\t}\n\n\t/**\n\t * Handle link opening for various field types\n\t */\n\thandleLinkPress = (url) => {\n\t\tif (url) {\n\t\t\tLinking.openURL(url).catch((err) => {\n\t\t\t\t// Silently handle URL open errors\n\t\t\t});\n\t\t}\n\t};\n\n\thandleFilePress = (file) => {\n\t\tif (file?.url) {\n\t\t\tLinking.openURL(file.url).catch((err) => {\n\t\t\t\t// Silently handle URL open errors\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Render individual field based on its type\n\t */\n\trenderField(fieldDef, fieldValue) {\n\t\tconst { colourBrandingMain } = this.props;\n\n\t\t// Defensive: ensure fieldDef is always an object\n\t\tconst safeFieldDef = fieldDef || {};\n\t\tconst type = safeFieldDef.type || FIELD_TYPES.TEXT;\n\t\tconst label = safeFieldDef.label || safeFieldDef.id || \"Unknown Field\";\n\n\t\tswitch (type) {\n\t\t\tcase FIELD_TYPES.CTA: {\n\t\t\t\tconst btnLabel = fieldValue?.label || label;\n\t\t\t\tconst btnUrl = fieldValue?.url;\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.ctaContainer}>\n\t\t\t\t\t\t<InlineButton\n\t\t\t\t\t\t\tlarge\n\t\t\t\t\t\t\tcolor={colourBrandingMain}\n\t\t\t\t\t\t\tonPress={() => this.handleLinkPress(btnUrl)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{btnLabel}\n\t\t\t\t\t\t</InlineButton>\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase FIELD_TYPES.EMAIL:\n\t\t\t\treturn (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tstyle={styles.linkContainer}\n\t\t\t\t\t\tonPress={() => this.handleLinkPress(`mailto:${fieldValue}`)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FontAwesome\n\t\t\t\t\t\t\tname=\"envelope\"\n\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\tcolor={colourBrandingMain}\n\t\t\t\t\t\t\tstyle={styles.fieldIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Text style={[styles.linkText, { color: colourBrandingMain }]}>\n\t\t\t\t\t\t\t{fieldValue}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t);\n\n\t\t\tcase FIELD_TYPES.DATE:\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.dateContainer}>\n\t\t\t\t\t\t<FontAwesome\n\t\t\t\t\t\t\tname=\"calendar\"\n\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\tcolor={TEXT_DARK}\n\t\t\t\t\t\t\tstyle={styles.fieldIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Text style={styles.bodyText}>{fieldValue}</Text>\n\t\t\t\t\t</View>\n\t\t\t\t);\n\n\t\t\tcase FIELD_TYPES.FILE: {\n\t\t\t\t// Handle both single file and multiple files (array)\n\t\t\t\tconst files = Array.isArray(fieldValue) ? fieldValue : [fieldValue];\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.filesContainer}>\n\t\t\t\t\t\t<Text style={styles.sectionTitle}>{values.labels.attachments}</Text>\n\t\t\t\t\t\t{files.map((file, index) => {\n\t\t\t\t\t\t\t// Skip null/undefined files\n\t\t\t\t\t\t\tif (!file) return null;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<FileDownload\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tfile={file}\n\t\t\t\t\t\t\t\t\tonPress={this.handleFilePress}\n\t\t\t\t\t\t\t\t\tcolor={this.props.colourBrandingMain}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase FIELD_TYPES.DESCRIPTION:\n\t\t\t\treturn <Text style={styles.descriptionText}>{fieldValue}</Text>;\n\n\t\t\tcase FIELD_TYPES.IMAGE: {\n\t\t\t\t// Render secondary images inline with click handler\n\t\t\t\tconst imgUri =\n\t\t\t\t\tfieldValue?.url ||\n\t\t\t\t\tfieldValue?.uri ||\n\t\t\t\t\t(typeof fieldValue === \"string\" ? fieldValue : null);\n\t\t\t\tif (!imgUri) return null;\n\n\t\t\t\t// Find this image's index for popup\n\t\t\t\tconst { allImages } = this.state;\n\t\t\t\tconst imageIndex = allImages.findIndex(\n\t\t\t\t\t(img) => img.uri === imgUri || img.url === imgUri,\n\t\t\t\t);\n\n\t\t\t\tconst caption = fieldValue?.caption;\n\n\t\t\t\treturn (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={() => this.openImagePopup(imageIndex)}\n\t\t\t\t\t\tactiveOpacity={0.8}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tsource={{ uri: imgUri }}\n\t\t\t\t\t\t\tstyle={styles.inlineImage}\n\t\t\t\t\t\t\tresizeMode=\"cover\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{caption && <Text style={styles.imageCaption}>{caption}</Text>}\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase FIELD_TYPES.GALLERY: {\n\t\t\t\t// Handle Gallery Fields (arrays of images)\n\t\t\t\tif (!Array.isArray(fieldValue)) return null;\n\n\t\t\t\treturn (\n\t\t\t\t\t<View style={{ marginVertical: 16 }}>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tflexDirection: \"row\",\n\t\t\t\t\t\t\t\tflexWrap: \"wrap\",\n\t\t\t\t\t\t\t\tmarginHorizontal: -4,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{fieldValue.map((imgItem, index) => {\n\t\t\t\t\t\t\t\tconst imgUri =\n\t\t\t\t\t\t\t\t\timgItem?.url ||\n\t\t\t\t\t\t\t\t\timgItem?.uri ||\n\t\t\t\t\t\t\t\t\t(typeof imgItem === \"string\" ? imgItem : null);\n\t\t\t\t\t\t\t\tif (!imgUri) return null;\n\n\t\t\t\t\t\t\t\t// Find global index for the popup\n\t\t\t\t\t\t\t\tconst { allImages } = this.state;\n\t\t\t\t\t\t\t\tconst globalIndex = allImages.findIndex(\n\t\t\t\t\t\t\t\t\t(img) => img.uri === imgUri || img.url === imgUri,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\tonPress={() =>\n\t\t\t\t\t\t\t\t\t\t\tthis.openImagePopup(globalIndex !== -1 ? globalIndex : 0)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tactiveOpacity={0.8}\n\t\t\t\t\t\t\t\t\t\tstyle={{ width: \"50%\", padding: 4 }} // 2 column grid\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\t\tsource={{ uri: imgUri }}\n\t\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\t\tstyles.inlineImage,\n\t\t\t\t\t\t\t\t\t\t\t\t{ height: 150, marginVertical: 0 },\n\t\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t\t\tresizeMode=\"cover\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase FIELD_TYPES.TITLE:\n\t\t\t\treturn <Text style={styles.titleText}>{fieldValue}</Text>;\n\n\t\t\tcase FIELD_TYPES.NUMBER:\n\t\t\t\treturn <Text style={styles.numberText}>{fieldValue}</Text>;\n\n\t\t\tdefault:\n\t\t\t\t// Default text fallback\n\t\t\t\treturn (\n\t\t\t\t\t<Text style={styles.bodyText}>\n\t\t\t\t\t\t{typeof fieldValue === \"object\"\n\t\t\t\t\t\t\t? JSON.stringify(fieldValue)\n\t\t\t\t\t\t\t: fieldValue}\n\t\t\t\t\t</Text>\n\t\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Render all fields with proper spacing and structure\n\t */\n\trenderFields() {\n\t\tconst processedFields = this.processFields();\n\n\t\treturn processedFields.map((field, _index) => {\n\t\t\treturn (\n\t\t\t\t<View key={field.fieldId} style={styles.fieldContainer}>\n\t\t\t\t\t{field.fieldType !== FIELD_TYPES.CTA &&\n\t\t\t\t\t\tfield.fieldType !== FIELD_TYPES.IMAGE &&\n\t\t\t\t\t\tfield.fieldDefinition?.label && (\n\t\t\t\t\t\t\t<Text style={styles.fieldLabel}>\n\t\t\t\t\t\t\t\t{field.fieldDefinition?.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t{this.renderField(field.fieldDefinition, field.fieldValue)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t});\n\t}\n\n\tgetImageSource() {\n\t\tconst { listing } = this.props;\n\t\tif (!listing || !listing.fields) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst imageField = listing.fields[values.mandatoryFields.featureImage];\n\t\tif (!imageField) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Parse the image field value\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn imageField;\n\t\t}\n\n\t\treturn imageField?.uri || imageField?.url || null;\n\t}\n\n\tgetTitle() {\n\t\tconst { listing } = this.props;\n\t\tif (!listing || !listing.fields) {\n\t\t\treturn values.labels.defaultTitle;\n\t\t}\n\n\t\treturn (\n\t\t\tlisting.fields[values.mandatoryFields.title] || values.labels.defaultTitle\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { listing } = this.props;\n\t\tconst imageSource = this.getImageSource();\n\t\tconst title = this.getTitle();\n\n\t\tif (!listing || !listing.fields) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.centerContainer}>\n\t\t\t\t\t<Text style={styles.errorText}>Item not found</Text>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<KeyboardAvoidingView\n\t\t\t\tbehavior={Platform.OS === \"ios\" && \"padding\"}\n\t\t\t\tstyle={{\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tbackgroundColor: Colours.BACKGROUND_WHITE || \"#fff\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<View style={styles.backButton}>\n\t\t\t\t\t<View style={styles.headerContent}>\n\t\t\t\t\t\t<Components.BackButton\n\t\t\t\t\t\t\tonPress={this.onPressBack}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tmarginLeft: 16,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\n\t\t\t\t<ScrollView\n\t\t\t\t\tstyle={{ backgroundColor: Colours.BACKGROUND_WHITE || \"#fff\" }}\n\t\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\t\tref={(ref) => {\n\t\t\t\t\t\tthis.scrollView = ref;\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<View style={[styles.mainHeader]}>\n\t\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={() => this.openImagePopup(0)}\n\t\t\t\t\t\t\t\tactiveOpacity={0.9}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Components.AutoOffsetImage\n\t\t\t\t\t\t\t\t\turi={imageSource}\n\t\t\t\t\t\t\t\t\theight={CARD_IMAGE_HEIGHT}\n\t\t\t\t\t\t\t\t\twidth={SCREEN_WIDTH}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.grayPlaceholder,\n\t\t\t\t\t\t\t\t\t{ height: CARD_IMAGE_HEIGHT, width: SCREEN_WIDTH },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<LinearGradient\n\t\t\t\t\t\t\tstyle={styles.gradientOverlay}\n\t\t\t\t\t\t\tcolors={[\"rgba(0,0,0,0.7)\", COLOUR_TRANSPARENT]}\n\t\t\t\t\t\t\tstart={{ x: 0, y: 0 }}\n\t\t\t\t\t\t\tend={{ x: 0, y: 1 }}\n\t\t\t\t\t\t\tlocations={[0, 0.5]}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</View>\n\t\t\t\t\t<View style={{ paddingHorizontal: 16 }}>\n\t\t\t\t\t\t<View style={styles.titleContainer}>\n\t\t\t\t\t\t\t<Text style={styles.eventTitle}>{title}</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t\t<View style={{ minHeight: SCREEN_HEIGHT - CARD_IMAGE_HEIGHT - 56 }}>\n\t\t\t\t\t\t{this.renderFields()}\n\t\t\t\t\t</View>\n\t\t\t\t</ScrollView>\n\n\t\t\t\t{/* Image Popup */}\n\t\t\t\t{this.state.showImagePopup && (\n\t\t\t\t\t<Components.ImagePopup\n\t\t\t\t\t\tvisible={this.state.showImagePopup}\n\t\t\t\t\t\timages={this.state.allImages}\n\t\t\t\t\t\tindex={this.state.selectedImageIndex}\n\t\t\t\t\t\tonClose={this.closeImagePopup}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</KeyboardAvoidingView>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tbackButton: {\n\t\tposition: \"absolute\",\n\t\tleft: 0,\n\t\ttop: 0,\n\t\tzIndex: 10,\n\t\televation: 10,\n\t\theight: StatusBarHeight(70),\n\t},\n\theaderContent: {\n\t\talignSelf: \"stretch\",\n\t\tflexDirection: \"row\",\n\t\tflex: 1,\n\t\tpaddingTop: StatusBarHeight(12),\n\t},\n\timage: {\n\t\tbackgroundColor: Colours.BACKGROUND_WHITE || \"#fff\",\n\t\tposition: \"relative\",\n\t\twidth: undefined,\n\t\theight: undefined,\n\t\tflex: 1,\n\t},\n\tmainHeader: {\n\t\tposition: \"relative\",\n\t\theight: CARD_IMAGE_HEIGHT,\n\t\twidth: SCREEN_WIDTH,\n\t},\n\n\tgradientOverlay: {\n\t\tflex: 1,\n\t},\n\n\t// Field container and spacing\n\tfieldContainer: {\n\t\tpaddingHorizontal: 16,\n\t\tmarginVertical: 12,\n\t},\n\n\t// Field labels/captions\n\tfieldLabel: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 11,\n\t\tcolor: TEXT_MID,\n\t\tmarginBottom: 6,\n\t\ttextTransform: \"uppercase\",\n\t\tletterSpacing: 1.2,\n\t\talignSelf: \"center\",\n\t\ttextAlign: \"center\",\n\t\tpaddingHorizontal: 8,\n\t\tpaddingVertical: 4,\n\t\tbackgroundColor: \"rgba(0,0,0,0.03)\",\n\t\tborderRadius: 12,\n\t\tmaxWidth: \"80%\",\n\t},\n\n\t// Field type styles\n\tbodyText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: TEXT_DARK,\n\t\tlineHeight: 22,\n\t},\n\ttitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tfontWeight: \"600\",\n\t\tcolor: TEXT_DARK,\n\t},\n\tdescriptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: TEXT_DARK,\n\t\tlineHeight: 24,\n\t},\n\tnumberText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\tfontWeight: \"500\",\n\t\tcolor: TEXT_DARK,\n\t},\n\n\t// Link styles\n\tlinkContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingVertical: 4,\n\t},\n\tlinkText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\ttextDecorationLine: \"underline\",\n\t},\n\n\t// Date styles\n\tdateContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingVertical: 4,\n\t},\n\n\t// Image styles\n\tinlineImage: {\n\t\twidth: \"100%\",\n\t\theight: 200,\n\t\tborderRadius: 8,\n\t\tmarginVertical: 8,\n\t},\n\timageCaption: {\n\t\tfontFamily: \"sf-italic\",\n\t\tfontSize: 14,\n\t\tfontStyle: \"italic\",\n\t\tcolor: TEXT_MID,\n\t\tmarginTop: 4,\n\t\ttextAlign: \"center\",\n\t},\n\n\t// CTA styles\n\tctaContainer: {\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tpaddingVertical: 8,\n\t},\n\n\t// Section title styles\n\tsectionTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tfontWeight: \"700\",\n\t\tcolor: TEXT_DARK,\n\t\tmarginBottom: SPACING.SM,\n\t},\n\n\t// Icon styles\n\tfieldIcon: {\n\t\tmarginRight: 8,\n\t},\n\n\t// Legacy styles (kept for compatibility)\n\tsection: {\n\t\tpaddingVertical: 16,\n\t},\n\tdivider: {\n\t\theight: 1,\n\t\tbackgroundColor: LINEGREY,\n\t\tmarginVertical: 8,\n\t\tmarginHorizontal: 16,\n\t},\n\tfacilityDetailTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tcolor: TEXT_DARK,\n\t\tfontSize: 14,\n\t},\n\tfacilityDetailContent: {\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: TEXT_DARK,\n\t\tfontSize: 16,\n\t\tlineHeight: 22,\n\t},\n\tfacilityDetailsContainer: {\n\t\tflex: 1,\n\t},\n\tfacilityDetailsTextContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t},\n\tfacilityDetailContainer: {\n\t\tmarginTop: 16,\n\t\tflexDirection: \"row\",\n\t},\n\tfacilityDetailTitleContainer: {\n\t\twidth: 100,\n\t\tmarginRight: 10,\n\t},\n\ttitleContainer: {\n\t\tpaddingVertical: 16,\n\t\tpaddingTop: 20,\n\t},\n\teventTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 24,\n\t\tlineHeight: 32,\n\t\tcolor: TEXT_DARK,\n\t\tbackgroundColor: \"transparent\",\n\t\tflex: 1,\n\t},\n\ttextLink: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\tlineHeight: 22,\n\t},\n\tgrayPlaceholder: {\n\t\tbackgroundColor: LINEGREY,\n\t},\n\tcenterContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 20,\n\t},\n\terrorText: {\n\t\tfontSize: 16,\n\t\tcolor: TEXT_MID,\n\t\ttextAlign: \"center\",\n\t},\n\tfilesContainer: {\n\t\tmarginVertical: 8,\n\t},\n});\n\nconst mapStateToProps = (state, ownProps) => {\n\treturn {\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tcolourBrandingHeader: Colours.getMainBrandingColourFromState(state),\n\t\tfeatureDefinition: selectFeatureDefinition(state),\n\t\tuser: state.user,\n\t};\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n\tFeatureDetailScreen,\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { Text, TouchableOpacity, View, StyleSheet, Image } from "react-native";
3
- import { FontAwesome } from "./common";
2
+ import { TouchableOpacity, View, StyleSheet, Image } from "react-native";
3
+ import { FontAwesome, Text } from "./common";
4
4
  import _ from "lodash";
5
5
  import { Helper, Colours } from "../core.config";
6
6
  import { values } from "../values.config";