@plusscommunities/pluss-feature-builder-app-d 8.0.11-beta.6 → 8.0.13-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 -76
  2. package/dist/module/components/FeatureDetailScreen.js.map +1 -1
  3. package/dist/module/components/FeatureListItem.js +26 -26
  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 +2 -2
  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 +4 -2
  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 -697
  29. package/src/components/FeatureListItem.js +192 -173
  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 +2 -2
  37. package/src/components/layouts/CondensedList.js +205 -205
  38. package/src/components/layouts/FeatureImageList.js +164 -163
  39. package/src/components/layouts/RoundImageList.js +192 -192
  40. package/src/components/layouts/SquareImageList.js +179 -179
@@ -1,31 +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 { connect } from 'react-redux';
8
- import _ from 'lodash';
9
- import { LinearGradient } from 'expo-linear-gradient';
10
- import { Services } from '../feature.config';
11
- import { Components, Colours, COLOUR_TRANSPARENT, TEXT_DARK } from '../core.config';
12
- import { TEXT_MID, LINEGREY } from '../js/Colors';
13
- import FileDownload from './FileDownload';
14
- import { values } from '../values.config';
15
- import { selectFeatureDefinition } from '../utils/selectors';
16
- import Constants from 'expo-constants';
17
- import { InlineButton, FontAwesome } from './common';
18
- import { FIELD_TYPES } from '../js/FieldTypes';
19
- 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;
20
22
  const CARD_IMAGE_HEIGHT = SCREEN_HEIGHT * 0.3;
21
- const SCREEN_WIDTH = Dimensions.get('window').width;
23
+ const SCREEN_WIDTH = Dimensions.get("window").width;
22
24
 
23
25
  // StatusBarHeight function copied to avoid import from outside extension
24
26
  const StatusBarHeight = size => {
25
27
  return getStatusBarHeight() + size;
26
28
  };
27
29
  const getStatusBarHeight = () => {
28
- return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;
30
+ return Platform.OS === "ios" ? Constants.statusBarHeight : StatusBar.currentHeight;
29
31
  };
30
32
  class FeatureDetailScreen extends Component {
31
33
  constructor(props) {
@@ -100,13 +102,13 @@ class FeatureDetailScreen extends Component {
100
102
  */
101
103
  _defineProperty(this, "normalizeImageField", imageField => {
102
104
  if (!imageField) return null;
103
- if (typeof imageField === 'string') {
105
+ if (typeof imageField === "string") {
104
106
  return {
105
107
  uri: imageField,
106
108
  url: imageField
107
109
  };
108
110
  }
109
- if (typeof imageField === 'object') {
111
+ if (typeof imageField === "object") {
110
112
  if (imageField.uri) {
111
113
  return {
112
114
  uri: imageField.uri,
@@ -186,7 +188,7 @@ class FeatureDetailScreen extends Component {
186
188
  }
187
189
  }
188
190
  componentWillUnmount() {
189
- if (Platform.OS === 'ios') StatusBar.setBarStyle('dark-content');
191
+ if (Platform.OS === "ios") StatusBar.setBarStyle("dark-content");
190
192
  }
191
193
  /**
192
194
  * Process fields: filter out mandatory fields and sort by order
@@ -240,7 +242,7 @@ class FeatureDetailScreen extends Component {
240
242
  // Defensive: ensure fieldDef is always an object
241
243
  const safeFieldDef = fieldDef || {};
242
244
  const type = safeFieldDef.type || FIELD_TYPES.TEXT;
243
- const label = safeFieldDef.label || safeFieldDef.id || 'Unknown Field';
245
+ const label = safeFieldDef.label || safeFieldDef.id || "Unknown Field";
244
246
  switch (type) {
245
247
  case FIELD_TYPES.CTA:
246
248
  {
@@ -305,7 +307,7 @@ class FeatureDetailScreen extends Component {
305
307
  case FIELD_TYPES.IMAGE:
306
308
  {
307
309
  // Render secondary images inline with click handler
308
- 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);
309
311
  if (!imgUri) return null;
310
312
 
311
313
  // Find this image's index for popup
@@ -337,12 +339,12 @@ class FeatureDetailScreen extends Component {
337
339
  }
338
340
  }, /*#__PURE__*/React.createElement(View, {
339
341
  style: {
340
- flexDirection: 'row',
341
- flexWrap: 'wrap',
342
+ flexDirection: "row",
343
+ flexWrap: "wrap",
342
344
  marginHorizontal: -4
343
345
  }
344
346
  }, fieldValue.map((imgItem, index) => {
345
- 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);
346
348
  if (!imgUri) return null;
347
349
 
348
350
  // Find global index for the popup
@@ -355,7 +357,7 @@ class FeatureDetailScreen extends Component {
355
357
  onPress: () => this.openImagePopup(globalIndex !== -1 ? globalIndex : 0),
356
358
  activeOpacity: 0.8,
357
359
  style: {
358
- width: '50%',
360
+ width: "50%",
359
361
  padding: 4
360
362
  } // 2 column grid
361
363
  }, /*#__PURE__*/React.createElement(Image, {
@@ -382,7 +384,7 @@ class FeatureDetailScreen extends Component {
382
384
  // Default text fallback
383
385
  return /*#__PURE__*/React.createElement(Text, {
384
386
  style: styles.bodyText
385
- }, typeof fieldValue === 'object' ? JSON.stringify(fieldValue) : fieldValue);
387
+ }, typeof fieldValue === "object" ? JSON.stringify(fieldValue) : fieldValue);
386
388
  }
387
389
  }
388
390
 
@@ -414,7 +416,7 @@ class FeatureDetailScreen extends Component {
414
416
  }
415
417
 
416
418
  // Parse the image field value
417
- if (typeof imageField === 'string') {
419
+ if (typeof imageField === "string") {
418
420
  return imageField;
419
421
  }
420
422
  return (imageField === null || imageField === void 0 ? void 0 : imageField.uri) || (imageField === null || imageField === void 0 ? void 0 : imageField.url) || null;
@@ -442,11 +444,11 @@ class FeatureDetailScreen extends Component {
442
444
  }, "Item not found"));
443
445
  }
444
446
  return /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
445
- behavior: Platform.OS === 'ios' && 'padding',
447
+ behavior: Platform.OS === "ios" && "padding",
446
448
  style: {
447
- position: 'relative',
449
+ position: "relative",
448
450
  flex: 1,
449
- backgroundColor: Colours.BACKGROUND_WHITE || '#fff'
451
+ backgroundColor: Colours.BACKGROUND_WHITE || "#fff"
450
452
  }
451
453
  }, /*#__PURE__*/React.createElement(View, {
452
454
  style: styles.backButton
@@ -459,7 +461,7 @@ class FeatureDetailScreen extends Component {
459
461
  }
460
462
  }))), /*#__PURE__*/React.createElement(ScrollView, {
461
463
  style: {
462
- backgroundColor: Colours.BACKGROUND_WHITE || '#fff'
464
+ backgroundColor: Colours.BACKGROUND_WHITE || "#fff"
463
465
  },
464
466
  keyboardShouldPersistTaps: "always",
465
467
  ref: ref => {
@@ -481,7 +483,7 @@ class FeatureDetailScreen extends Component {
481
483
  }]
482
484
  }), /*#__PURE__*/React.createElement(LinearGradient, {
483
485
  style: styles.gradientOverlay,
484
- colors: ['rgba(0,0,0,0.7)', COLOUR_TRANSPARENT],
486
+ colors: ["rgba(0,0,0,0.7)", COLOUR_TRANSPARENT],
485
487
  start: {
486
488
  x: 0,
487
489
  y: 0
@@ -513,7 +515,7 @@ class FeatureDetailScreen extends Component {
513
515
  }
514
516
  const styles = StyleSheet.create({
515
517
  backButton: {
516
- position: 'absolute',
518
+ position: "absolute",
517
519
  left: 0,
518
520
  top: 0,
519
521
  zIndex: 10,
@@ -521,20 +523,20 @@ const styles = StyleSheet.create({
521
523
  height: StatusBarHeight(70)
522
524
  },
523
525
  headerContent: {
524
- alignSelf: 'stretch',
525
- flexDirection: 'row',
526
+ alignSelf: "stretch",
527
+ flexDirection: "row",
526
528
  flex: 1,
527
529
  paddingTop: StatusBarHeight(12)
528
530
  },
529
531
  image: {
530
- backgroundColor: Colours.BACKGROUND_WHITE || '#fff',
531
- position: 'relative',
532
+ backgroundColor: Colours.BACKGROUND_WHITE || "#fff",
533
+ position: "relative",
532
534
  width: undefined,
533
535
  height: undefined,
534
536
  flex: 1
535
537
  },
536
538
  mainHeader: {
537
- position: 'relative',
539
+ position: "relative",
538
540
  height: CARD_IMAGE_HEIGHT,
539
541
  width: SCREEN_WIDTH
540
542
  },
@@ -548,88 +550,88 @@ const styles = StyleSheet.create({
548
550
  },
549
551
  // Field labels/captions
550
552
  fieldLabel: {
551
- fontFamily: 'sf-regular',
553
+ fontFamily: "sf-regular",
552
554
  fontSize: 11,
553
555
  color: TEXT_MID,
554
556
  marginBottom: 6,
555
- textTransform: 'uppercase',
557
+ textTransform: "uppercase",
556
558
  letterSpacing: 1.2,
557
- alignSelf: 'center',
558
- textAlign: 'center',
559
+ alignSelf: "center",
560
+ textAlign: "center",
559
561
  paddingHorizontal: 8,
560
562
  paddingVertical: 4,
561
- backgroundColor: 'rgba(0,0,0,0.03)',
563
+ backgroundColor: "rgba(0,0,0,0.03)",
562
564
  borderRadius: 12,
563
- maxWidth: '80%'
565
+ maxWidth: "80%"
564
566
  },
565
567
  // Field type styles
566
568
  bodyText: {
567
- fontFamily: 'sf-regular',
569
+ fontFamily: "sf-regular",
568
570
  fontSize: 16,
569
571
  color: TEXT_DARK,
570
572
  lineHeight: 22
571
573
  },
572
574
  titleText: {
573
- fontFamily: 'sf-semibold',
575
+ fontFamily: "sf-semibold",
574
576
  fontSize: 16,
575
- fontWeight: '600',
577
+ fontWeight: "600",
576
578
  color: TEXT_DARK
577
579
  },
578
580
  descriptionText: {
579
- fontFamily: 'sf-regular',
581
+ fontFamily: "sf-regular",
580
582
  fontSize: 16,
581
583
  color: TEXT_DARK,
582
584
  lineHeight: 24
583
585
  },
584
586
  numberText: {
585
- fontFamily: 'sf-medium',
587
+ fontFamily: "sf-medium",
586
588
  fontSize: 16,
587
- fontWeight: '500',
589
+ fontWeight: "500",
588
590
  color: TEXT_DARK
589
591
  },
590
592
  // Link styles
591
593
  linkContainer: {
592
- flexDirection: 'row',
593
- alignItems: 'center',
594
+ flexDirection: "row",
595
+ alignItems: "center",
594
596
  paddingVertical: 4
595
597
  },
596
598
  linkText: {
597
- fontFamily: 'sf-medium',
599
+ fontFamily: "sf-medium",
598
600
  fontSize: 16,
599
- textDecorationLine: 'underline'
601
+ textDecorationLine: "underline"
600
602
  },
601
603
  // Date styles
602
604
  dateContainer: {
603
- flexDirection: 'row',
604
- alignItems: 'center',
605
+ flexDirection: "row",
606
+ alignItems: "center",
605
607
  paddingVertical: 4
606
608
  },
607
609
  // Image styles
608
610
  inlineImage: {
609
- width: '100%',
611
+ width: "100%",
610
612
  height: 200,
611
613
  borderRadius: 8,
612
614
  marginVertical: 8
613
615
  },
614
616
  imageCaption: {
615
- fontFamily: 'sf-italic',
617
+ fontFamily: "sf-italic",
616
618
  fontSize: 14,
617
- fontStyle: 'italic',
619
+ fontStyle: "italic",
618
620
  color: TEXT_MID,
619
621
  marginTop: 4,
620
- textAlign: 'center'
622
+ textAlign: "center"
621
623
  },
622
624
  // CTA styles
623
625
  ctaContainer: {
624
- alignItems: 'center',
625
- justifyContent: 'center',
626
+ alignItems: "center",
627
+ justifyContent: "center",
626
628
  paddingVertical: 8
627
629
  },
628
630
  // Section title styles
629
631
  sectionTitle: {
630
- fontFamily: 'sf-bold',
632
+ fontFamily: "sf-bold",
631
633
  fontSize: 14,
632
- fontWeight: '700',
634
+ fontWeight: "700",
633
635
  color: TEXT_DARK,
634
636
  marginBottom: SPACING.SM
635
637
  },
@@ -648,12 +650,12 @@ const styles = StyleSheet.create({
648
650
  marginHorizontal: 16
649
651
  },
650
652
  facilityDetailTitle: {
651
- fontFamily: 'sf-bold',
653
+ fontFamily: "sf-bold",
652
654
  color: TEXT_DARK,
653
655
  fontSize: 14
654
656
  },
655
657
  facilityDetailContent: {
656
- fontFamily: 'sf-regular',
658
+ fontFamily: "sf-regular",
657
659
  color: TEXT_DARK,
658
660
  fontSize: 16,
659
661
  lineHeight: 22
@@ -663,11 +665,11 @@ const styles = StyleSheet.create({
663
665
  },
664
666
  facilityDetailsTextContainer: {
665
667
  flex: 1,
666
- justifyContent: 'center'
668
+ justifyContent: "center"
667
669
  },
668
670
  facilityDetailContainer: {
669
671
  marginTop: 16,
670
- flexDirection: 'row'
672
+ flexDirection: "row"
671
673
  },
672
674
  facilityDetailTitleContainer: {
673
675
  width: 100,
@@ -678,15 +680,15 @@ const styles = StyleSheet.create({
678
680
  paddingTop: 20
679
681
  },
680
682
  eventTitle: {
681
- fontFamily: 'sf-bold',
683
+ fontFamily: "sf-bold",
682
684
  fontSize: 24,
683
685
  lineHeight: 32,
684
686
  color: TEXT_DARK,
685
- backgroundColor: 'transparent',
687
+ backgroundColor: "transparent",
686
688
  flex: 1
687
689
  },
688
690
  textLink: {
689
- fontFamily: 'sf-medium',
691
+ fontFamily: "sf-medium",
690
692
  fontSize: 16,
691
693
  lineHeight: 22
692
694
  },
@@ -695,14 +697,14 @@ const styles = StyleSheet.create({
695
697
  },
696
698
  centerContainer: {
697
699
  flex: 1,
698
- justifyContent: 'center',
699
- alignItems: 'center',
700
+ justifyContent: "center",
701
+ alignItems: "center",
700
702
  paddingHorizontal: 20
701
703
  },
702
704
  errorText: {
703
705
  fontSize: 16,
704
706
  color: TEXT_MID,
705
- textAlign: 'center'
707
+ textAlign: "center"
706
708
  },
707
709
  filesContainer: {
708
710
  marginVertical: 8
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","SPACING","Platform","View","ScrollView","Animated","Dimensions","StatusBar","Text","TouchableOpacity","Linking","StyleSheet","KeyboardAvoidingView","Image","connect","_","LinearGradient","Services","Components","Colours","COLOUR_TRANSPARENT","TEXT_DARK","TEXT_MID","LINEGREY","FileDownload","values","selectFeatureDefinition","Constants","InlineButton","FontAwesome","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 { 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, FontAwesome } 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":[]}