@plusscommunities/pluss-feature-builder-app-d 8.0.8-beta.0 → 8.0.9

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.
@@ -1,19 +1,25 @@
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 { Text, View, ScrollView, StyleSheet, TouchableOpacity, Image } from "react-native";
6
- import { connect } from "react-redux";
7
- import _ from "lodash";
8
- import { FontAwesome } from "@expo/vector-icons";
9
- import { Services } from "../feature.config";
10
- import { Components, Colours } from "../core.config";
11
- import { values } from "../values.config";
12
- import { selectListings, selectFeatureDefinition } from "../utils/selectors";
13
- import { SPACING } from "../js/spacing";
14
- import { getMainBrandingColourFromState } from "../js";
15
- import { getSummaryFieldValue } from "../js/helpers";
16
- import { loadTargetFeature } from "../actions/featureBuilderActions";
4
+ import React, { Component } from 'react';
5
+ import { Text, View, StyleSheet } from 'react-native';
6
+ import { connect } from 'react-redux';
7
+ import _ from 'lodash';
8
+ import { FontAwesome } from '@expo/vector-icons';
9
+ import { Services } from '../feature.config';
10
+ import { Components, Colours } from '../core.config';
11
+ import { values } from '../values.config';
12
+ import { selectListings, selectFeatureDefinition } from '../utils/selectors';
13
+ import { SPACING } from '../js/spacing';
14
+ import { getMainBrandingColourFromState } from '../js';
15
+ import { getSummaryFieldValue } from '../js/helpers';
16
+ import { loadTargetFeature } from '../actions/featureBuilderActions';
17
+
18
+ // Layouts
19
+ import RoundImageList from './layouts/RoundImageList';
20
+ import CondensedList from './layouts/CondensedList';
21
+ import SquareImageList from './layouts/SquareImageList';
22
+ import FeatureImageList from './layouts/FeatureImageList';
17
23
  class WidgetLarge extends Component {
18
24
  constructor(props) {
19
25
  super(props);
@@ -27,19 +33,33 @@ class WidgetLarge extends Component {
27
33
  if (featureDefinition !== null && featureDefinition !== void 0 && featureDefinition.title || featureDefinition !== null && featureDefinition !== void 0 && featureDefinition.displayName) {
28
34
  return featureDefinition.title || featureDefinition.displayName;
29
35
  }
30
- return values.featureName || "Custom Features";
36
+ return values.featureName || 'Custom Features';
31
37
  });
32
38
  _defineProperty(this, "getEmptyStateText", () => {
33
39
  const {
34
- options
40
+ options,
41
+ featureDefinition
35
42
  } = this.props;
36
43
  if (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;
37
- return "No custom features available";
44
+ const featureName = (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.title) || (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.displayName) || values.featureName || 'Feature';
45
+ return `No listings for ${featureName}`;
46
+ });
47
+ _defineProperty(this, "getLayoutComponent", layoutType => {
48
+ switch (layoutType) {
49
+ case values.layoutTypes.round:
50
+ return RoundImageList;
51
+ case values.layoutTypes.square:
52
+ return SquareImageList;
53
+ case values.layoutTypes.feature:
54
+ return FeatureImageList;
55
+ default:
56
+ return CondensedList;
57
+ }
38
58
  });
39
59
  _defineProperty(this, "refresh", () => {
40
60
  this.onLoadingChanged(true, async () => {
41
61
  try {
42
- await loadTargetFeature()(this.props.dispatch, () => this.props.getState);
62
+ await this.props.dispatch(loadTargetFeature());
43
63
  } finally {
44
64
  this.onLoadingChanged(false);
45
65
  }
@@ -53,75 +73,17 @@ class WidgetLarge extends Component {
53
73
  if (callback) callback();
54
74
  });
55
75
  });
56
- _defineProperty(this, "getImageSource", imageField => {
57
- if (!imageField) return null;
58
- if (typeof imageField === "string") {
59
- return {
60
- uri: imageField
61
- };
62
- }
63
- if (typeof imageField === "object" && imageField.uri) {
64
- return imageField;
65
- }
66
- if (typeof imageField === "object" && imageField.url) {
67
- return {
68
- uri: imageField.url
69
- };
70
- }
71
- return null;
72
- });
73
- _defineProperty(this, "onListingPress", listing => {
74
- const {
75
- featureDefinition
76
- } = this.props;
77
- const title = this.getTitle();
78
- Services.navigation.navigate(values.screens.featureDetail, {
79
- listing: listing,
80
- featureDefinition: featureDefinition,
81
- featureTitle: title
82
- });
83
- });
84
- _defineProperty(this, "renderListingCard", listing => {
85
- var _listing$fields, _listing$fields2;
76
+ _defineProperty(this, "onItemPress", item => {
86
77
  const {
87
- colourBrandingMain,
88
78
  featureDefinition
89
79
  } = this.props;
90
- const title = ((_listing$fields = listing.fields) === null || _listing$fields === void 0 ? void 0 : _listing$fields[values.mandatoryFields.title]) || "Untitled";
91
- const summary = getSummaryFieldValue(listing, featureDefinition);
92
- const imageField = (_listing$fields2 = listing.fields) === null || _listing$fields2 === void 0 ? void 0 : _listing$fields2[values.mandatoryFields.featureImage];
93
- const imageSource = this.getImageSource(imageField);
94
- return /*#__PURE__*/React.createElement(TouchableOpacity, {
95
- key: listing.id,
96
- style: styles.listItem,
97
- onPress: () => this.onListingPress(listing)
98
- }, /*#__PURE__*/React.createElement(View, {
99
- style: styles.avatarContainer
100
- }, imageSource ? /*#__PURE__*/React.createElement(Image, {
101
- source: imageSource,
102
- style: styles.avatar,
103
- resizeMode: "cover"
104
- }) : /*#__PURE__*/React.createElement(View, {
105
- style: [styles.avatar, styles.placeholderAvatar]
106
- }, /*#__PURE__*/React.createElement(FontAwesome, {
107
- name: "image",
108
- size: 16,
109
- color: Colours.TEXT_LIGHT
110
- }))), /*#__PURE__*/React.createElement(View, {
111
- style: styles.textContainer
112
- }, /*#__PURE__*/React.createElement(Text, {
113
- style: styles.titleText,
114
- numberOfLines: 1
115
- }, title), summary && /*#__PURE__*/React.createElement(Text, {
116
- style: styles.descriptionText,
117
- numberOfLines: 1
118
- }, summary)), /*#__PURE__*/React.createElement(View, {
119
- style: styles.chevronContainer
120
- }, /*#__PURE__*/React.createElement(FontAwesome, {
121
- name: "chevron-right",
122
- size: 14,
123
- color: Colours.TEXT_LIGHT
124
- })));
80
+ if (featureDefinition) {
81
+ Services.navigation.navigate(values.screens.featureDetail, {
82
+ listing: item,
83
+ featureDefinition: featureDefinition,
84
+ featureTitle: featureDefinition.title || featureDefinition.displayName
85
+ });
86
+ }
125
87
  });
126
88
  this.state = {
127
89
  loading: false
@@ -136,52 +98,55 @@ class WidgetLarge extends Component {
136
98
  }
137
99
  }
138
100
  renderContent() {
101
+ var _featureDefinition$la;
139
102
  const {
140
- listings
103
+ listings,
104
+ featureDefinition,
105
+ colourBrandingMain
141
106
  } = this.props;
142
107
 
143
- // Don't render widget if no listings are available (and not loading)
144
- if (_.isEmpty(listings) && !this.state.loading) {
145
- return null;
108
+ // Show loading state if no definition or loading
109
+ if (!featureDefinition || this.state.loading) {
110
+ return /*#__PURE__*/React.createElement(View, {
111
+ style: styles.loadingPadding
112
+ }, /*#__PURE__*/React.createElement(Components.LoadingStateWidget, {
113
+ height: 300
114
+ }));
146
115
  }
116
+
117
+ // Show empty state if no listings are available
147
118
  if (_.isEmpty(listings)) {
148
- if (this.state.loading) {
149
- return /*#__PURE__*/React.createElement(View, {
150
- style: styles.loadingPadding
151
- }, /*#__PURE__*/React.createElement(Components.LoadingStateWidget, {
152
- height: 300
153
- }));
154
- }
155
- return null;
119
+ return /*#__PURE__*/React.createElement(View, {
120
+ style: styles.emptyPadding
121
+ }, /*#__PURE__*/React.createElement(Components.EmptyStateWidget, {
122
+ title: this.getTitle(),
123
+ height: 120
124
+ }));
156
125
  }
157
- return /*#__PURE__*/React.createElement(ScrollView, {
158
- contentContainerStyle: styles.featuresContainer,
159
- showsVerticalScrollIndicator: false
160
- }, listings.map(listing => this.renderListingCard(listing)));
126
+ const layoutType = ((_featureDefinition$la = featureDefinition.layout) === null || _featureDefinition$la === void 0 ? void 0 : _featureDefinition$la.type) || 'condensed';
127
+ const LayoutComponent = this.getLayoutComponent(layoutType);
128
+ const title = this.getTitle();
129
+ return /*#__PURE__*/React.createElement(LayoutComponent, {
130
+ listings: listings,
131
+ featureDefinition: featureDefinition,
132
+ colourBrandingMain: colourBrandingMain,
133
+ title: title,
134
+ onItemPress: this.onItemPress
135
+ });
161
136
  }
162
137
  render() {
163
- const {
164
- colourBrandingMain
165
- } = this.props;
166
- const content = this.renderContent();
167
- // Don't render widget section if content is null (no features available)
168
- if (content === null) {
169
- return null;
170
- }
171
138
  return /*#__PURE__*/React.createElement(View, {
172
139
  style: styles.sectionContainer
173
140
  }, /*#__PURE__*/React.createElement(View, {
174
141
  style: styles.sectionPadding
175
- }, /*#__PURE__*/React.createElement(View, {
176
- style: styles.sectionHeading
177
142
  }, /*#__PURE__*/React.createElement(Text, {
178
143
  style: styles.sectionTitle
179
- }, this.getTitle()))), content);
144
+ }, this.getTitle())), this.renderContent());
180
145
  }
181
146
  }
182
147
  const styles = StyleSheet.create({
183
148
  sectionContainer: {
184
- backgroundColor: "#fff",
149
+ backgroundColor: '#fff',
185
150
  flex: 1
186
151
  },
187
152
  sectionPadding: {
@@ -192,61 +157,13 @@ const styles = StyleSheet.create({
192
157
  loadingPadding: {
193
158
  paddingHorizontal: SPACING.MD
194
159
  },
195
- sectionHeading: {
196
- marginBottom: SPACING.MD
160
+ emptyPadding: {
161
+ paddingHorizontal: SPACING.MD
197
162
  },
198
163
  sectionTitle: {
199
- fontFamily: "sf-bold",
164
+ fontFamily: 'sf-bold',
200
165
  fontSize: 24,
201
- color: "#000"
202
- },
203
- featuresContainer: {
204
- paddingHorizontal: SPACING.MD,
205
- paddingBottom: SPACING.MD
206
- },
207
- // Listing item styles (similar to CondensedListItem)
208
- listItem: {
209
- flexDirection: "row",
210
- alignItems: "center",
211
- paddingHorizontal: 16,
212
- paddingVertical: 8,
213
- backgroundColor: "#fff"
214
- },
215
- avatarContainer: {
216
- width: 40,
217
- height: 40,
218
- borderRadius: 20,
219
- marginRight: 12
220
- },
221
- avatar: {
222
- width: 40,
223
- height: 40,
224
- borderRadius: 20,
225
- backgroundColor: Colours.BACKGROUND_LIGHT || "#f0f0f0"
226
- },
227
- placeholderAvatar: {
228
- backgroundColor: Colours.BACKGROUND_LIGHT || "#f0f0f0",
229
- justifyContent: "center",
230
- alignItems: "center"
231
- },
232
- textContainer: {
233
- flex: 1,
234
- justifyContent: "center"
235
- },
236
- titleText: {
237
- fontFamily: "sf-semibold",
238
- fontSize: 16,
239
- color: Colours.TEXT_DARK || "#333",
240
- marginBottom: 2
241
- },
242
- descriptionText: {
243
- fontFamily: "sf-regular",
244
- fontSize: 14,
245
- color: Colours.TEXT_LIGHT || "#666",
246
- lineHeight: 18
247
- },
248
- chevronContainer: {
249
- paddingLeft: 8
166
+ color: '#000'
250
167
  }
251
168
  });
252
169
  const mapStateToProps = state => {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","Text","View","ScrollView","StyleSheet","TouchableOpacity","Image","connect","_","FontAwesome","Services","Components","Colours","values","selectListings","selectFeatureDefinition","SPACING","getMainBrandingColourFromState","getSummaryFieldValue","loadTargetFeature","WidgetLarge","constructor","props","_defineProperty","options","featureDefinition","isEmpty","Title","title","displayName","featureName","EmptyText","onLoadingChanged","dispatch","getState","loading","callback","setState","state","imageField","uri","url","listing","getTitle","navigation","navigate","screens","featureDetail","featureTitle","_listing$fields","_listing$fields2","colourBrandingMain","fields","mandatoryFields","summary","featureImage","imageSource","getImageSource","createElement","key","id","style","styles","listItem","onPress","onListingPress","avatarContainer","source","avatar","resizeMode","placeholderAvatar","name","size","color","TEXT_LIGHT","textContainer","titleText","numberOfLines","descriptionText","chevronContainer","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","renderContent","listings","loadingPadding","LoadingStateWidget","height","contentContainerStyle","featuresContainer","showsVerticalScrollIndicator","map","renderListingCard","render","content","sectionContainer","sectionPadding","sectionHeading","sectionTitle","create","backgroundColor","flex","paddingHorizontal","MD","paddingBottom","XS","paddingTop","marginBottom","fontFamily","fontSize","flexDirection","alignItems","paddingVertical","width","borderRadius","marginRight","BACKGROUND_LIGHT","justifyContent","TEXT_DARK","lineHeight","paddingLeft","mapStateToProps","_state$strings","user","notifications","site","notificationKey","strings","config","forwardRef"],"sources":["WidgetLarge.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport {\n\tText,\n\tView,\n\tScrollView,\n\tStyleSheet,\n\tTouchableOpacity,\n\tImage,\n} from \"react-native\";\nimport { connect } from \"react-redux\";\nimport _ from \"lodash\";\nimport { FontAwesome } from \"@expo/vector-icons\";\nimport { Services } from \"../feature.config\";\nimport { Components, Colours } from \"../core.config\";\nimport { values } from \"../values.config\";\nimport { selectListings, selectFeatureDefinition } from \"../utils/selectors\";\nimport { SPACING } from \"../js/spacing\";\nimport { getMainBrandingColourFromState } from \"../js\";\nimport { getSummaryFieldValue } from \"../js/helpers\";\nimport { loadTargetFeature } from \"../actions/featureBuilderActions\";\n\nclass WidgetLarge extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { loading: false };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.refresh();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) {\n\t\t\tthis.refresh();\n\t\t}\n\t}\n\n\tgetTitle = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.Title)) return options.Title;\n\t\t// Use feature definition title\n\t\tif (featureDefinition?.title || featureDefinition?.displayName) {\n\t\t\treturn featureDefinition.title || featureDefinition.displayName;\n\t\t}\n\t\treturn values.featureName || \"Custom Features\";\n\t};\n\n\tgetEmptyStateText = () => {\n\t\tconst { options } = this.props;\n\t\tif (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;\n\t\treturn \"No custom features available\";\n\t};\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tawait loadTargetFeature()(\n\t\t\t\t\tthis.props.dispatch,\n\t\t\t\t\t() => this.props.getState,\n\t\t\t\t);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tgetImageSource = (imageField) => {\n\t\tif (!imageField) return null;\n\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn { uri: imageField };\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.uri) {\n\t\t\treturn imageField;\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.url) {\n\t\t\treturn { uri: imageField.url };\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tonListingPress = (listing) => {\n\t\tconst { featureDefinition } = this.props;\n\t\tconst title = this.getTitle();\n\t\tServices.navigation.navigate(values.screens.featureDetail, {\n\t\t\tlisting: listing,\n\t\t\tfeatureDefinition: featureDefinition,\n\t\t\tfeatureTitle: title,\n\t\t});\n\t};\n\n\trenderListingCard = (listing) => {\n\t\tconst { colourBrandingMain, featureDefinition } = this.props;\n\t\tconst title = listing.fields?.[values.mandatoryFields.title] || \"Untitled\";\n\t\tconst summary = getSummaryFieldValue(listing, featureDefinition);\n\t\tconst imageField = listing.fields?.[values.mandatoryFields.featureImage];\n\t\tconst imageSource = this.getImageSource(imageField);\n\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tkey={listing.id}\n\t\t\t\tstyle={styles.listItem}\n\t\t\t\tonPress={() => this.onListingPress(listing)}\n\t\t\t>\n\t\t\t\t{/* Small circular avatar image */}\n\t\t\t\t<View style={styles.avatarContainer}>\n\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tsource={imageSource}\n\t\t\t\t\t\t\tstyle={styles.avatar}\n\t\t\t\t\t\t\tresizeMode=\"cover\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<View style={[styles.avatar, styles.placeholderAvatar]}>\n\t\t\t\t\t\t\t<FontAwesome name=\"image\" size={16} color={Colours.TEXT_LIGHT} />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\n\t\t\t\t{/* Text content */}\n\t\t\t\t<View style={styles.textContainer}>\n\t\t\t\t\t<Text style={styles.titleText} numberOfLines={1}>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{summary && (\n\t\t\t\t\t\t<Text style={styles.descriptionText} numberOfLines={1}>\n\t\t\t\t\t\t\t{summary}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\n\t\t\t\t{/* Chevron icon */}\n\t\t\t\t<View style={styles.chevronContainer}>\n\t\t\t\t\t<FontAwesome\n\t\t\t\t\t\tname=\"chevron-right\"\n\t\t\t\t\t\tsize={14}\n\t\t\t\t\t\tcolor={Colours.TEXT_LIGHT}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t};\n\n\trenderContent() {\n\t\tconst { listings } = this.props;\n\n\t\t// Don't render widget if no listings are available (and not loading)\n\t\tif (_.isEmpty(listings) && !this.state.loading) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (_.isEmpty(listings)) {\n\t\t\tif (this.state.loading) {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.loadingPadding}>\n\t\t\t\t\t\t<Components.LoadingStateWidget height={300} />\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<ScrollView\n\t\t\t\tcontentContainerStyle={styles.featuresContainer}\n\t\t\t\tshowsVerticalScrollIndicator={false}\n\t\t\t>\n\t\t\t\t{listings.map((listing) => this.renderListingCard(listing))}\n\t\t\t</ScrollView>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { colourBrandingMain } = this.props;\n\n\t\tconst content = this.renderContent();\n\t\t// Don't render widget section if content is null (no features available)\n\t\tif (content === null) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<View style={styles.sectionContainer}>\n\t\t\t\t<View style={styles.sectionPadding}>\n\t\t\t\t\t<View style={styles.sectionHeading}>\n\t\t\t\t\t\t<Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t\t{content}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tsectionContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tflex: 1,\n\t},\n\tsectionPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t\tpaddingBottom: SPACING.XS + 2,\n\t\tpaddingTop: SPACING.MD,\n\t},\n\tloadingPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\tsectionHeading: {\n\t\tmarginBottom: SPACING.MD,\n\t},\n\tsectionTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 24,\n\t\tcolor: \"#000\",\n\t},\n\tfeaturesContainer: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t\tpaddingBottom: SPACING.MD,\n\t},\n\t// Listing item styles (similar to CondensedListItem)\n\tlistItem: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 8,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tavatarContainer: {\n\t\twidth: 40,\n\t\theight: 40,\n\t\tborderRadius: 20,\n\t\tmarginRight: 12,\n\t},\n\tavatar: {\n\t\twidth: 40,\n\t\theight: 40,\n\t\tborderRadius: 20,\n\t\tbackgroundColor: Colours.BACKGROUND_LIGHT || \"#f0f0f0\",\n\t},\n\tplaceholderAvatar: {\n\t\tbackgroundColor: Colours.BACKGROUND_LIGHT || \"#f0f0f0\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\ttextContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t},\n\ttitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARK || \"#333\",\n\t\tmarginBottom: 2,\n\t},\n\tdescriptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT || \"#666\",\n\t\tlineHeight: 18,\n\t},\n\tchevronContainer: {\n\t\tpaddingLeft: 8,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\n\treturn {\n\t\tcolourBrandingMain: getMainBrandingColourFromState(state),\n\t\tlistings: selectListings(state),\n\t\tfeatureDefinition: selectFeatureDefinition(state),\n\t\tsite: user.site,\n\t\tdataUpdated: notifications.dataUpdated[values.notificationKey],\n\t\tstrings: state.strings?.config || {},\n\t};\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n\tWidgetLarge,\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Component","Text","View","StyleSheet","connect","_","FontAwesome","Services","Components","Colours","values","selectListings","selectFeatureDefinition","SPACING","getMainBrandingColourFromState","getSummaryFieldValue","loadTargetFeature","RoundImageList","CondensedList","SquareImageList","FeatureImageList","WidgetLarge","constructor","props","_defineProperty","options","featureDefinition","isEmpty","Title","title","displayName","featureName","EmptyText","layoutType","layoutTypes","round","square","feature","onLoadingChanged","dispatch","loading","callback","setState","state","item","navigation","navigate","screens","featureDetail","listing","featureTitle","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","renderContent","_featureDefinition$la","listings","colourBrandingMain","createElement","style","styles","loadingPadding","LoadingStateWidget","height","emptyPadding","EmptyStateWidget","getTitle","layout","type","LayoutComponent","getLayoutComponent","onItemPress","render","sectionContainer","sectionPadding","sectionTitle","create","backgroundColor","flex","paddingHorizontal","MD","paddingBottom","XS","paddingTop","fontFamily","fontSize","color","mapStateToProps","_state$strings","user","notifications","site","notificationKey","strings","config","forwardRef"],"sources":["WidgetLarge.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Text, View, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { FontAwesome } from '@expo/vector-icons';\nimport { Services } from '../feature.config';\nimport { Components, Colours } from '../core.config';\nimport { values } from '../values.config';\nimport { selectListings, selectFeatureDefinition } from '../utils/selectors';\nimport { SPACING } from '../js/spacing';\nimport { getMainBrandingColourFromState } from '../js';\nimport { getSummaryFieldValue } from '../js/helpers';\nimport { loadTargetFeature } from '../actions/featureBuilderActions';\n\n// Layouts\nimport RoundImageList from './layouts/RoundImageList';\nimport CondensedList from './layouts/CondensedList';\nimport SquareImageList from './layouts/SquareImageList';\nimport FeatureImageList from './layouts/FeatureImageList';\n\nclass WidgetLarge extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { loading: false };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.refresh();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) {\n\t\t\tthis.refresh();\n\t\t}\n\t}\n\n\tgetTitle = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.Title)) return options.Title;\n\t\t// Use feature definition title\n\t\tif (featureDefinition?.title || featureDefinition?.displayName) {\n\t\t\treturn featureDefinition.title || featureDefinition.displayName;\n\t\t}\n\t\treturn values.featureName || 'Custom Features';\n\t};\n\n\tgetEmptyStateText = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;\n\n\t\tconst featureName = featureDefinition?.title || featureDefinition?.displayName || values.featureName || 'Feature';\n\t\treturn `No listings for ${featureName}`;\n\t};\n\n\tgetLayoutComponent = layoutType => {\n\t\tswitch (layoutType) {\n\t\t\tcase values.layoutTypes.round:\n\t\t\t\treturn RoundImageList;\n\t\t\tcase values.layoutTypes.square:\n\t\t\t\treturn SquareImageList;\n\t\t\tcase values.layoutTypes.feature:\n\t\t\t\treturn FeatureImageList;\n\t\t\tdefault:\n\t\t\t\treturn CondensedList;\n\t\t}\n\t};\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tawait this.props.dispatch(loadTargetFeature());\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonItemPress = item => {\n\t\tconst { featureDefinition } = this.props;\n\t\tif (featureDefinition) {\n\t\t\tServices.navigation.navigate(values.screens.featureDetail, {\n\t\t\t\tlisting: item,\n\t\t\t\tfeatureDefinition: featureDefinition,\n\t\t\t\tfeatureTitle: featureDefinition.title || featureDefinition.displayName,\n\t\t\t});\n\t\t}\n\t};\n\n\trenderContent() {\n\t\tconst { listings, featureDefinition, colourBrandingMain } = this.props;\n\n\t\t// Show loading state if no definition or loading\n\t\tif (!featureDefinition || this.state.loading) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.loadingPadding}>\n\t\t\t\t\t<Components.LoadingStateWidget height={300} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\t// Show empty state if no listings are available\n\t\tif (_.isEmpty(listings)) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.emptyPadding}>\n\t\t\t\t\t<Components.EmptyStateWidget title={this.getTitle()} height={120} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\tconst layoutType = featureDefinition.layout?.type || 'condensed';\n\t\tconst LayoutComponent = this.getLayoutComponent(layoutType);\n\t\tconst title = this.getTitle();\n\n\t\treturn (\n\t\t\t<LayoutComponent\n\t\t\t\tlistings={listings}\n\t\t\t\tfeatureDefinition={featureDefinition}\n\t\t\t\tcolourBrandingMain={colourBrandingMain}\n\t\t\t\ttitle={title}\n\t\t\t\tonItemPress={this.onItemPress}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={styles.sectionContainer}>\n\t\t\t\t<View style={styles.sectionPadding}>\n\t\t\t\t\t<Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n\t\t\t\t</View>\n\t\t\t\t{this.renderContent()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tsectionContainer: {\n\t\tbackgroundColor: '#fff',\n\t\tflex: 1,\n\t},\n\tsectionPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t\tpaddingBottom: SPACING.XS + 2,\n\t\tpaddingTop: SPACING.MD,\n\t},\n\tloadingPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\temptyPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\tsectionTitle: {\n\t\tfontFamily: 'sf-bold',\n\t\tfontSize: 24,\n\t\tcolor: '#000',\n\t},\n});\n\nconst mapStateToProps = state => {\n\tconst { user, notifications } = state;\n\n\treturn {\n\t\tcolourBrandingMain: getMainBrandingColourFromState(state),\n\t\tlistings: selectListings(state),\n\t\tfeatureDefinition: selectFeatureDefinition(state),\n\t\tsite: user.site,\n\t\tdataUpdated: notifications.dataUpdated[values.notificationKey],\n\t\tstrings: state.strings?.config || {},\n\t};\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(WidgetLarge);\n"],"mappings":"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","ignoreList":[]}