@plasmicpkgs/plasmic-cms 0.0.214 → 0.0.215

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.
@@ -9,8 +9,7 @@ var registerGlobalContext = _interopDefault(require('@plasmicapp/host/registerGl
9
9
  var host = require('@plasmicapp/host');
10
10
  var query = require('@plasmicapp/query');
11
11
  var dayjs = _interopDefault(require('dayjs'));
12
- var React = require('react');
13
- var React__default = _interopDefault(React);
12
+ var React = _interopDefault(require('react'));
14
13
 
15
14
  function _regeneratorRuntime() {
16
15
  _regeneratorRuntime = function () {
@@ -447,6 +446,7 @@ function queryParamsToApi(params) {
447
446
  return {
448
447
  where: params.where,
449
448
  limit: params.limit,
449
+ offset: params.offset,
450
450
  order: params.orderBy ? [{
451
451
  field: params.orderBy,
452
452
  dir: params.desc ? "desc" : "asc"
@@ -463,7 +463,7 @@ var HttpError = /*#__PURE__*/function (_Error) {
463
463
  }
464
464
  return HttpError;
465
465
  }( /*#__PURE__*/_wrapNativeSuper(Error));
466
- var API = /*#__PURE__*/function (_get, _fetchTables, _query) {
466
+ var API = /*#__PURE__*/function (_get, _fetchTables, _query, _count) {
467
467
  function API(config) {
468
468
  this.config = config;
469
469
  }
@@ -503,7 +503,9 @@ var API = /*#__PURE__*/function (_get, _fetchTables, _query) {
503
503
  if ((_json$error = json.error) != null && _json$error.message) {
504
504
  message = json.error.message;
505
505
  }
506
- } catch (_unused) {}
506
+ } catch (_unused) {
507
+ // ignored
508
+ }
507
509
  throw new HttpError(response.status, message);
508
510
  case 12:
509
511
  _context.next = 14;
@@ -572,6 +574,36 @@ var API = /*#__PURE__*/function (_get, _fetchTables, _query) {
572
574
  }, _callee3, this, [[1, 8]]);
573
575
  }))).apply(this, arguments);
574
576
  };
577
+ _proto.count = function count(_x5, _x6) {
578
+ return (_count = _count || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(table, params) {
579
+ var response;
580
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
581
+ while (1) switch (_context4.prev = _context4.next) {
582
+ case 0:
583
+ if (params === void 0) {
584
+ params = {};
585
+ }
586
+ _context4.prev = 1;
587
+ _context4.next = 4;
588
+ return this.get("/tables/" + table + "/count", {
589
+ q: JSON.stringify(queryParamsToApi(params)),
590
+ draft: Number(params.useDraft)
591
+ });
592
+ case 4:
593
+ response = _context4.sent;
594
+ return _context4.abrupt("return", response.count);
595
+ case 8:
596
+ _context4.prev = 8;
597
+ _context4.t0 = _context4["catch"](1);
598
+ console.error(_context4.t0);
599
+ throw _context4.t0;
600
+ case 12:
601
+ case "end":
602
+ return _context4.stop();
603
+ }
604
+ }, _callee4, this, [[1, 8]]);
605
+ }))).apply(this, arguments);
606
+ };
575
607
  return API;
576
608
  }();
577
609
  function mkApi(config) {
@@ -589,9 +621,17 @@ var mkQueryContextKey = function mkQueryContextKey(table) {
589
621
  return "" + contextPrefix + capitalizeFirst(table) + collectionResultSuffix;
590
622
  };
591
623
  var itemContextSuffix = "Item";
624
+ var countContextSuffix = "Count";
625
+ var modeContextSuffix = "Mode";
592
626
  var mkRowContextKey = function mkRowContextKey(table) {
593
627
  return "" + contextPrefix + capitalizeFirst(table) + itemContextSuffix;
594
628
  };
629
+ var mkCountContextKey = function mkCountContextKey(table) {
630
+ return "" + contextPrefix + capitalizeFirst(table) + countContextSuffix;
631
+ };
632
+ var mkModeContextKey = function mkModeContextKey(table) {
633
+ return "" + contextPrefix + capitalizeFirst(table) + modeContextSuffix;
634
+ };
595
635
  function capitalizeFirst(str) {
596
636
  var _str$;
597
637
  return ((_str$ = str[0]) == null ? void 0 : _str$.toUpperCase()) + str.slice(1);
@@ -602,7 +642,7 @@ function useDatabase() {
602
642
  function DatabaseProvider(_ref) {
603
643
  var config = _ref.config,
604
644
  children = _ref.children;
605
- return React__default.createElement(host.DataProvider, {
645
+ return React.createElement(host.DataProvider, {
606
646
  name: databaseContextKey,
607
647
  data: config,
608
648
  hidden: true
@@ -614,15 +654,15 @@ function useTables() {
614
654
  function TablesProvider(_ref2) {
615
655
  var children = _ref2.children,
616
656
  tables = _ref2.tables;
617
- return React__default.createElement(host.DataProvider, {
657
+ return React.createElement(host.DataProvider, {
618
658
  name: tablesContextKey,
619
659
  data: tables,
620
660
  hidden: true
621
661
  }, children);
622
662
  }
623
- function getClosestMatchingKeys(env, suffix) {
624
- return [].concat(Object.keys(env).reverse()).filter(function (k) {
625
- return k.endsWith(suffix);
663
+ function getClosestMatchingKeysBy(env, pred) {
664
+ return [].concat(Object.keys(env).reverse()).filter(function (key) {
665
+ return pred(key);
626
666
  });
627
667
  }
628
668
  function QueryResultProvider(_ref3) {
@@ -630,13 +670,17 @@ function QueryResultProvider(_ref3) {
630
670
  table = _ref3.table,
631
671
  rows = _ref3.rows,
632
672
  hidden = _ref3.hidden;
633
- return React__default.createElement(host.DataProvider, {
673
+ return React.createElement(host.DataProvider, {
674
+ name: table ? mkModeContextKey(table) : undefined,
675
+ data: "rows",
676
+ hidden: true
677
+ }, React.createElement(host.DataProvider, {
634
678
  name: table ? mkQueryContextKey(table) : undefined,
635
679
  data: rows,
636
680
  hidden: hidden
637
- }, children);
681
+ }, children));
638
682
  }
639
- function useTablesWithDataLoaded() {
683
+ function useTablesWithDataLoaded(mode) {
640
684
  var env = host.useDataEnv();
641
685
  var tables = useTables();
642
686
  if (!env) {
@@ -645,21 +689,39 @@ function useTablesWithDataLoaded() {
645
689
  if (!tables) {
646
690
  return undefined;
647
691
  }
648
- var matchingKeys = getClosestMatchingKeys(env, itemContextSuffix);
692
+ var matchingKeys = getClosestMatchingKeysBy(env, function (key) {
693
+ if (mode === "rows") {
694
+ return key.endsWith(itemContextSuffix);
695
+ } else if (mode === "count") {
696
+ return key.endsWith(countContextSuffix);
697
+ } else {
698
+ return key.endsWith(itemContextSuffix) || key.endsWith(countContextSuffix);
699
+ }
700
+ });
649
701
  return tables.filter(function (table) {
650
702
  return matchingKeys.some(function (key) {
651
- return mkRowContextKey(table.identifier) === key;
703
+ if (mode === "rows") {
704
+ return mkRowContextKey(table.identifier) === key;
705
+ } else if (mode === "count") {
706
+ return mkCountContextKey(table.identifier) === key;
707
+ } else {
708
+ return mkRowContextKey(table.identifier) === key || mkCountContextKey(table.identifier) === key;
709
+ }
652
710
  });
653
711
  });
654
712
  }
713
+ function deriveTableId(tables, table) {
714
+ if (!table && tables && tables.length > 0) {
715
+ table = tables[0].identifier;
716
+ }
717
+ return table;
718
+ }
655
719
  function useRow(tables, table) {
656
720
  var env = host.useDataEnv();
657
721
  if (!env) {
658
722
  return undefined;
659
723
  }
660
- if (!table && tables && tables.length > 0) {
661
- table = tables[0].identifier;
662
- }
724
+ table = deriveTableId(tables, table);
663
725
  if (table) {
664
726
  return {
665
727
  table: table,
@@ -668,15 +730,42 @@ function useRow(tables, table) {
668
730
  }
669
731
  return undefined;
670
732
  }
733
+ function useCount(tables, table) {
734
+ var env = host.useDataEnv();
735
+ if (!env) {
736
+ return undefined;
737
+ }
738
+ table = deriveTableId(tables, table);
739
+ if (table) {
740
+ return {
741
+ table: table,
742
+ count: env[mkCountContextKey(table)]
743
+ };
744
+ }
745
+ return undefined;
746
+ }
671
747
  function RowProvider(_ref4) {
672
748
  var children = _ref4.children,
673
749
  table = _ref4.table,
674
750
  row = _ref4.row;
675
- return React__default.createElement(host.DataProvider, {
751
+ return React.createElement(host.DataProvider, {
676
752
  name: mkRowContextKey(table),
677
753
  data: row
678
754
  }, children);
679
755
  }
756
+ function CountProvider(_ref5) {
757
+ var children = _ref5.children,
758
+ table = _ref5.table,
759
+ count = _ref5.count;
760
+ return React.createElement(host.DataProvider, {
761
+ name: table ? mkModeContextKey(table) : undefined,
762
+ data: "count",
763
+ hidden: true
764
+ }, React.createElement(host.DataProvider, {
765
+ name: table ? mkCountContextKey(table) : undefined,
766
+ data: count
767
+ }, children));
768
+ }
680
769
 
681
770
  function mkTableOptions(tables) {
682
771
  if (!tables) {
@@ -723,27 +812,28 @@ function mkFieldOptions(tables, tableIdentifier, types) {
723
812
  }
724
813
 
725
814
  var _excluded = ["className", "table", "field", "dateFormat", "setControlContextData"],
726
- _excluded2 = ["table", "field", "valueProp", "children", "setControlContextData"];
815
+ _excluded2 = ["className", "table", "setControlContextData"],
816
+ _excluded3 = ["table", "field", "valueProp", "children", "setControlContextData"];
727
817
  var modulePath = "@plasmicpkgs/plasmic-cms";
728
818
  var componentPrefix = "hostless-plasmic-cms";
729
819
  function renderMaybeData(maybeData, renderFn, loaderProps, inEditor, loadingMessage, forceLoadingState) {
730
820
  if ("error" in maybeData) {
731
821
  var error = maybeData.error;
732
822
  if (!inEditor) {
733
- return React__default.createElement(React__default.Fragment, null, loadingMessage != null ? loadingMessage : React__default.createElement("div", null, "Loading..."));
823
+ return React.createElement(React.Fragment, null, loadingMessage != null ? loadingMessage : React.createElement("div", null, "Loading..."));
734
824
  }
735
825
  if (error && error instanceof HttpError && error.status === 404) {
736
826
  if (loaderProps.hideIfNotFound) {
737
827
  return null;
738
828
  } else {
739
- return React__default.createElement("div", null, "Error: Data not found");
829
+ return React.createElement("div", null, "Error: Data not found");
740
830
  }
741
831
  } else {
742
- return React__default.createElement("div", null, "Error: ", error == null ? void 0 : error.message);
832
+ return React.createElement("div", null, "Error: ", error == null ? void 0 : error.message);
743
833
  }
744
834
  }
745
835
  if (!("data" in maybeData) || forceLoadingState) {
746
- return React__default.createElement(React__default.Fragment, null, loadingMessage != null ? loadingMessage : React__default.createElement("div", null, "Loading..."));
836
+ return React.createElement(React.Fragment, null, loadingMessage != null ? loadingMessage : React.createElement("div", null, "Loading..."));
747
837
  }
748
838
  return renderFn(maybeData.data);
749
839
  }
@@ -793,9 +883,9 @@ function CmsCredentialsProvider(_ref) {
793
883
  locale: locale,
794
884
  host: host || defaultHost
795
885
  };
796
- return React__default.createElement(DatabaseProvider, {
886
+ return React.createElement(DatabaseProvider, {
797
887
  config: config
798
- }, React__default.createElement(TablesFetcher, null, children));
888
+ }, React.createElement(TablesFetcher, null, children));
799
889
  }
800
890
  function TablesFetcher(_ref2) {
801
891
  var children = _ref2.children;
@@ -824,10 +914,10 @@ function TablesFetcher(_ref2) {
824
914
  }
825
915
  }, _callee);
826
916
  })));
827
- var inEditor = !!React.useContext(host.PlasmicCanvasContext);
828
- return React__default.createElement(TablesProvider, {
917
+ var inEditor = !!host.usePlasmicCanvasContext();
918
+ return React.createElement(TablesProvider, {
829
919
  tables: maybeData.data
830
- }, inEditor && maybeData.error ? React__default.createElement("div", null, "CMS Error: ", maybeData.error.message) : children);
920
+ }, inEditor && maybeData.error ? React.createElement("div", null, "CMS Error: ", maybeData.error.message) : children);
831
921
  }
832
922
  function isDatabaseConfigured(config) {
833
923
  return (config == null ? void 0 : config.databaseId) && (config == null ? void 0 : config.databaseToken);
@@ -877,6 +967,17 @@ var cmsQueryRepeaterMeta = {
877
967
  return true;
878
968
  }
879
969
  },
970
+ mode: {
971
+ type: "choice",
972
+ options: [{
973
+ label: "Rows",
974
+ value: "rows"
975
+ }, {
976
+ label: "Count",
977
+ value: "count"
978
+ }],
979
+ defaultValueHint: "rows"
980
+ },
880
981
  where: {
881
982
  type: "object",
882
983
  displayName: "Filter",
@@ -906,19 +1007,36 @@ var cmsQueryRepeaterMeta = {
906
1007
  description: "Field to order by.",
907
1008
  options: function options(_, ctx) {
908
1009
  return mkFieldOptions(ctx == null ? void 0 : ctx.tables, ctx == null ? void 0 : ctx.table, ["number", "boolean", "date-time", "long-text", "text"]);
1010
+ },
1011
+ hidden: function hidden(ps) {
1012
+ return ps.mode === "count";
909
1013
  }
910
1014
  },
911
1015
  desc: {
912
1016
  type: "boolean",
913
1017
  displayName: "Sort descending?",
914
1018
  description: 'Sort descending by "Order by" field.',
915
- defaultValue: false
1019
+ defaultValue: false,
1020
+ hidden: function hidden(ps) {
1021
+ return ps.mode === "count";
1022
+ }
916
1023
  },
917
1024
  limit: {
918
1025
  type: "number",
919
1026
  displayName: "Limit",
920
1027
  description: "Maximum number of entries to fetch (0 for unlimited).",
921
- defaultValue: 0
1028
+ defaultValue: 0,
1029
+ hidden: function hidden(ps) {
1030
+ return ps.mode === "count";
1031
+ }
1032
+ },
1033
+ offset: {
1034
+ type: "number",
1035
+ displayName: "Offset",
1036
+ description: "Skips this number of rows in the result set; used in combination with limit to build pagination",
1037
+ hidden: function hidden(ps) {
1038
+ return ps.mode === "count";
1039
+ }
922
1040
  },
923
1041
  emptyMessage: {
924
1042
  type: "slot",
@@ -956,7 +1074,10 @@ var cmsQueryRepeaterMeta = {
956
1074
  type: "boolean",
957
1075
  displayName: "No auto-repeat",
958
1076
  description: "Do not automatically repeat children for every entry.",
959
- defaultValue: false
1077
+ defaultValue: false,
1078
+ hidden: function hidden(ps) {
1079
+ return ps.mode === "count";
1080
+ }
960
1081
  }
961
1082
  }
962
1083
  };
@@ -964,11 +1085,13 @@ function CmsQueryRepeater(_ref5) {
964
1085
  var table = _ref5.table,
965
1086
  children = _ref5.children,
966
1087
  setControlContextData = _ref5.setControlContextData,
1088
+ mode = _ref5.mode,
967
1089
  where = _ref5.where,
968
1090
  useDraft = _ref5.useDraft,
969
1091
  orderBy = _ref5.orderBy,
970
1092
  desc = _ref5.desc,
971
1093
  limit = _ref5.limit,
1094
+ offset = _ref5.offset,
972
1095
  emptyMessage = _ref5.emptyMessage,
973
1096
  forceEmptyState = _ref5.forceEmptyState,
974
1097
  loadingMessage = _ref5.loadingMessage,
@@ -989,13 +1112,15 @@ function CmsQueryRepeater(_ref5) {
989
1112
  useDraft: useDraft,
990
1113
  orderBy: orderBy,
991
1114
  desc: desc,
992
- limit: limit
1115
+ limit: limit,
1116
+ offset: offset
993
1117
  };
994
1118
  if (!table && tables && tables.length > 0) {
995
1119
  table = tables[0].identifier;
996
1120
  }
997
1121
  var cacheKey = JSON.stringify({
998
1122
  component: "CmsQueryLoader",
1123
+ mode: mode,
999
1124
  table: table,
1000
1125
  databaseConfig: databaseConfig,
1001
1126
  params: params
@@ -1031,34 +1156,52 @@ function CmsQueryRepeater(_ref5) {
1031
1156
  }
1032
1157
  throw new Error("There is no model called \"" + table + "\"");
1033
1158
  case 10:
1159
+ if (!(mode === "count")) {
1160
+ _context2.next = 14;
1161
+ break;
1162
+ }
1163
+ return _context2.abrupt("return", mkApi(databaseConfig).count(table, params));
1164
+ case 14:
1034
1165
  return _context2.abrupt("return", mkApi(databaseConfig).query(table, params));
1035
- case 11:
1166
+ case 15:
1036
1167
  case "end":
1037
1168
  return _context2.stop();
1038
1169
  }
1039
1170
  }, _callee2);
1040
1171
  })));
1041
- var inEditor = !!React.useContext(host.PlasmicCanvasContext);
1042
- var node = renderMaybeData(maybeData, function (rows) {
1043
- if (rows.length === 0 || forceEmptyState) {
1044
- return emptyMessage;
1045
- }
1046
- return noAutoRepeat ? children : rows.map(function (row, index) {
1047
- return React__default.createElement(RowProvider, {
1048
- key: index,
1049
- table: table,
1050
- row: row
1051
- }, host.repeatedElement(index, children));
1052
- });
1053
- }, {
1054
- hideIfNotFound: false
1055
- }, inEditor, loadingMessage, forceLoadingState);
1056
- return React__default.createElement(QueryResultProvider, {
1057
- rows: maybeData == null ? void 0 : maybeData.data,
1058
- table: table
1059
- }, noLayout ? React__default.createElement(React__default.Fragment, null, " ", node, " ") : React__default.createElement("div", {
1060
- className: className
1061
- }, " ", node, " "));
1172
+ var inEditor = !!host.usePlasmicCanvasContext();
1173
+ if (mode === "count") {
1174
+ var node = renderMaybeData(maybeData, function () {
1175
+ return children;
1176
+ }, {
1177
+ hideIfNotFound: false
1178
+ }, inEditor, loadingMessage, forceLoadingState);
1179
+ return React.createElement(CountProvider, {
1180
+ table: table,
1181
+ count: typeof (maybeData == null ? void 0 : maybeData.data) === "number" ? maybeData.data : undefined
1182
+ }, node);
1183
+ } else {
1184
+ var _node = renderMaybeData(maybeData, function (rows) {
1185
+ if (rows.length === 0 || forceEmptyState) {
1186
+ return emptyMessage;
1187
+ }
1188
+ return noAutoRepeat ? children : rows.map(function (row, index) {
1189
+ return React.createElement(RowProvider, {
1190
+ key: index,
1191
+ table: table,
1192
+ row: row
1193
+ }, host.repeatedElement(index, children));
1194
+ });
1195
+ }, {
1196
+ hideIfNotFound: false
1197
+ }, inEditor, loadingMessage, forceLoadingState);
1198
+ return React.createElement(QueryResultProvider, {
1199
+ rows: Array.isArray(maybeData == null ? void 0 : maybeData.data) ? maybeData.data : undefined,
1200
+ table: table
1201
+ }, noLayout ? React.createElement(React.Fragment, null, " ", _node, " ") : React.createElement("div", {
1202
+ className: className
1203
+ }, " ", _node, " "));
1204
+ }
1062
1205
  }
1063
1206
  var cmsRowFieldMeta = {
1064
1207
  name: componentPrefix + "-row-field",
@@ -1174,9 +1317,9 @@ function CmsRowField(_ref9) {
1174
1317
  dateFormat = _ref9.dateFormat,
1175
1318
  setControlContextData = _ref9.setControlContextData,
1176
1319
  rest = _objectWithoutPropertiesLoose(_ref9, _excluded);
1177
- var tables = useTablesWithDataLoaded();
1320
+ var tables = useTablesWithDataLoaded("rows");
1178
1321
  var res = useRow(tables, table);
1179
- var unknown = React__default.createElement("div", Object.assign({
1322
+ var unknown = React.createElement("div", Object.assign({
1180
1323
  className: className
1181
1324
  }, rest), "Field ", table != null ? table : "Unknown Model", ".", field != null ? field : "Unknown Field");
1182
1325
  var fieldMeta = res ? deriveInferredTableField({
@@ -1199,7 +1342,7 @@ function CmsRowField(_ref9) {
1199
1342
  return unknown;
1200
1343
  }
1201
1344
  if (!res.row) {
1202
- return React__default.createElement("div", {
1345
+ return React.createElement("div", {
1203
1346
  className: className
1204
1347
  }, "Error: No CMS Entry found");
1205
1348
  }
@@ -1217,6 +1360,50 @@ function CmsRowField(_ref9) {
1217
1360
  className: className
1218
1361
  }, rest)) : null;
1219
1362
  }
1363
+ var cmsCountFieldMeta = {
1364
+ name: componentPrefix + "-count",
1365
+ displayName: "CMS Entries Count",
1366
+ importName: "CmsCount",
1367
+ importPath: modulePath,
1368
+ props: {
1369
+ table: {
1370
+ type: "choice",
1371
+ displayName: "Model",
1372
+ hidden: function hidden(props, ctx) {
1373
+ var _ctx$tables$length2, _ctx$tables2;
1374
+ return ((_ctx$tables$length2 = ctx == null || (_ctx$tables2 = ctx.tables) == null ? void 0 : _ctx$tables2.length) != null ? _ctx$tables$length2 : 0) <= 1 && !props.table;
1375
+ },
1376
+ helpText: "Pick model from a CMS Data Fetcher",
1377
+ description: "Usually not used! Only with multiple CMS Data Loaders, use this to choose which to show. Otherwise, go select the CMS Data Loader if you want to load different data.",
1378
+ options: function options(_, ctx) {
1379
+ return mkTableOptions(ctx == null ? void 0 : ctx.tables);
1380
+ },
1381
+ defaultValueHint: function defaultValueHint(_, ctx) {
1382
+ return ctx == null ? void 0 : ctx.table;
1383
+ }
1384
+ }
1385
+ }
1386
+ };
1387
+ function CmsCount(_ref10) {
1388
+ var className = _ref10.className,
1389
+ table = _ref10.table,
1390
+ rest = _objectWithoutPropertiesLoose(_ref10, _excluded2);
1391
+ var tables = useTablesWithDataLoaded("count");
1392
+ var res = useCount(tables, table);
1393
+ var unknown = React.createElement("div", Object.assign({
1394
+ className: className
1395
+ }, rest), "Count: ", table != null ? table : "Unknown Model");
1396
+ if (!res) {
1397
+ return unknown;
1398
+ }
1399
+ if (res.count == null) {
1400
+ return null;
1401
+ } else {
1402
+ return React.createElement("div", Object.assign({
1403
+ className: className
1404
+ }, rest), new Intl.NumberFormat().format(res.count));
1405
+ }
1406
+ }
1220
1407
  var DEFAULT_TYPE_FILTERS = ["text"];
1221
1408
  function deriveInferredTableField(opts) {
1222
1409
  var _tables$find;
@@ -1246,9 +1433,9 @@ function renderValue(value, type, props) {
1246
1433
  case "long-text":
1247
1434
  case "date-time":
1248
1435
  case "ref":
1249
- return React__default.createElement("div", Object.assign({}, props), value);
1436
+ return React.createElement("div", Object.assign({}, props), value);
1250
1437
  case "rich-text":
1251
- return React__default.createElement("div", Object.assign({
1438
+ return React.createElement("div", Object.assign({
1252
1439
  dangerouslySetInnerHTML: {
1253
1440
  __html: value
1254
1441
  },
@@ -1258,7 +1445,7 @@ function renderValue(value, type, props) {
1258
1445
  }, props));
1259
1446
  case "image":
1260
1447
  if (value && typeof value === "object" && value.url && value.imageMeta) {
1261
- return React__default.createElement("img", Object.assign({
1448
+ return React.createElement("img", Object.assign({
1262
1449
  src: value.url,
1263
1450
  width: value.imageMeta.width,
1264
1451
  height: value.imageMeta.height
@@ -1267,7 +1454,7 @@ function renderValue(value, type, props) {
1267
1454
  return null;
1268
1455
  case "file":
1269
1456
  if (value && typeof value === "object" && value.url && value.name) {
1270
- return React__default.createElement("a", Object.assign({
1457
+ return React.createElement("a", Object.assign({
1271
1458
  href: value.url,
1272
1459
  target: "_blank"
1273
1460
  }, props), value.name);
@@ -1295,8 +1482,8 @@ var cmsRowLinkMeta = {
1295
1482
  type: "choice",
1296
1483
  displayName: "Model",
1297
1484
  hidden: function hidden(props, ctx) {
1298
- var _ctx$tables$length2, _ctx$tables2;
1299
- return ((_ctx$tables$length2 = ctx == null || (_ctx$tables2 = ctx.tables) == null ? void 0 : _ctx$tables2.length) != null ? _ctx$tables$length2 : 0) <= 1 && !props.table;
1485
+ var _ctx$tables$length3, _ctx$tables3;
1486
+ return ((_ctx$tables$length3 = ctx == null || (_ctx$tables3 = ctx.tables) == null ? void 0 : _ctx$tables3.length) != null ? _ctx$tables$length3 : 0) <= 1 && !props.table;
1300
1487
  },
1301
1488
  helpText: "Pick model from a CMS Data Fetcher",
1302
1489
  description: "Usually not used! Only with multiple CMS Data Loaders, use this to choose which to show. Otherwise, go select the CMS Data Loader if you want to load different data.",
@@ -1311,9 +1498,9 @@ var cmsRowLinkMeta = {
1311
1498
  type: "choice",
1312
1499
  displayName: "Field",
1313
1500
  description: "Field (from model schema) to use.",
1314
- options: function options(_ref10, ctx) {
1501
+ options: function options(_ref11, ctx) {
1315
1502
  var _ctx$table3;
1316
- var table = _ref10.table;
1503
+ var table = _ref11.table;
1317
1504
  return mkFieldOptions(ctx == null ? void 0 : ctx.tables, (_ctx$table3 = ctx == null ? void 0 : ctx.table) != null ? _ctx$table3 : table);
1318
1505
  },
1319
1506
  defaultValueHint: function defaultValueHint(_, ctx) {
@@ -1347,19 +1534,19 @@ var cmsRowLinkMeta = {
1347
1534
  }
1348
1535
  }
1349
1536
  };
1350
- function CmsRowLink(_ref11) {
1537
+ function CmsRowLink(_ref12) {
1351
1538
  var _res$row$data2;
1352
- var table = _ref11.table,
1353
- field = _ref11.field,
1354
- hrefProp = _ref11.hrefProp,
1355
- children = _ref11.children,
1356
- setControlContextData = _ref11.setControlContextData,
1357
- prefix = _ref11.prefix,
1358
- suffix = _ref11.suffix;
1359
- var tables = useTablesWithDataLoaded();
1539
+ var table = _ref12.table,
1540
+ field = _ref12.field,
1541
+ hrefProp = _ref12.hrefProp,
1542
+ children = _ref12.children,
1543
+ setControlContextData = _ref12.setControlContextData,
1544
+ prefix = _ref12.prefix,
1545
+ suffix = _ref12.suffix;
1546
+ var tables = useTablesWithDataLoaded("rows");
1360
1547
  var res = useRow(tables, table);
1361
1548
  if (!res || !res.row) {
1362
- return React__default.createElement(React__default.Fragment, null, children);
1549
+ return React.createElement(React.Fragment, null, children);
1363
1550
  }
1364
1551
  var fieldMeta = deriveInferredTableField({
1365
1552
  table: res.table,
@@ -1377,20 +1564,20 @@ function CmsRowLink(_ref11) {
1377
1564
  });
1378
1565
  }
1379
1566
  if (!fieldMeta) {
1380
- return React__default.createElement(React__default.Fragment, null, children);
1567
+ return React.createElement(React.Fragment, null, children);
1381
1568
  }
1382
1569
  if (!children) {
1383
1570
  return null;
1384
1571
  }
1385
1572
  var value = ((_res$row$data2 = res.row.data) == null ? void 0 : _res$row$data2[fieldMeta.identifier]) || "";
1386
- var childrenWithProps = React__default.Children.map(children, function (child) {
1387
- if (React__default.isValidElement(child)) {
1573
+ var childrenWithProps = React.Children.map(children, function (child) {
1574
+ if (React.isValidElement(child)) {
1388
1575
  var _React$cloneElement;
1389
- return React__default.cloneElement(child, (_React$cloneElement = {}, _React$cloneElement[hrefProp] = fieldMeta.type === "file" ? value.url : prefix || suffix ? "" + (prefix || "") + value + (suffix || "") : value, _React$cloneElement));
1576
+ return React.cloneElement(child, (_React$cloneElement = {}, _React$cloneElement[hrefProp] = fieldMeta.type === "file" ? value.url : prefix || suffix ? "" + (prefix || "") + value + (suffix || "") : value, _React$cloneElement));
1390
1577
  }
1391
1578
  return child;
1392
1579
  });
1393
- return React__default.createElement(React__default.Fragment, null, childrenWithProps != null ? childrenWithProps : null);
1580
+ return React.createElement(React.Fragment, null, childrenWithProps != null ? childrenWithProps : null);
1394
1581
  }
1395
1582
  var cmsRowImageMeta = {
1396
1583
  name: componentPrefix + "-row-image",
@@ -1409,8 +1596,8 @@ var cmsRowImageMeta = {
1409
1596
  type: "choice",
1410
1597
  displayName: "Model",
1411
1598
  hidden: function hidden(props, ctx) {
1412
- var _ctx$tables$length3, _ctx$tables3;
1413
- return ((_ctx$tables$length3 = ctx == null || (_ctx$tables3 = ctx.tables) == null ? void 0 : _ctx$tables3.length) != null ? _ctx$tables$length3 : 0) <= 1 && !props.table;
1599
+ var _ctx$tables$length4, _ctx$tables4;
1600
+ return ((_ctx$tables$length4 = ctx == null || (_ctx$tables4 = ctx.tables) == null ? void 0 : _ctx$tables4.length) != null ? _ctx$tables$length4 : 0) <= 1 && !props.table;
1414
1601
  },
1415
1602
  helpText: "Pick model from a CMS Data Fetcher",
1416
1603
  description: "Usually not used! Only with multiple CMS Data Loaders, use this to choose which to show. Otherwise, go select the CMS Data Loader if you want to load different data.",
@@ -1425,9 +1612,9 @@ var cmsRowImageMeta = {
1425
1612
  type: "choice",
1426
1613
  displayName: "Field",
1427
1614
  description: "Field (from model schema) to use.",
1428
- options: function options(_ref12, ctx) {
1615
+ options: function options(_ref13, ctx) {
1429
1616
  var _ctx$table4;
1430
- var table = _ref12.table;
1617
+ var table = _ref13.table;
1431
1618
  return mkFieldOptions(ctx == null ? void 0 : ctx.tables, (_ctx$table4 = ctx == null ? void 0 : ctx.table) != null ? _ctx$table4 : table, ["image"]);
1432
1619
  },
1433
1620
  defaultValueHint: function defaultValueHint(_, ctx) {
@@ -1443,17 +1630,17 @@ var cmsRowImageMeta = {
1443
1630
  }
1444
1631
  }
1445
1632
  };
1446
- function CmsRowImage(_ref13) {
1633
+ function CmsRowImage(_ref14) {
1447
1634
  var _res$row$data3;
1448
- var table = _ref13.table,
1449
- field = _ref13.field,
1450
- srcProp = _ref13.srcProp,
1451
- children = _ref13.children,
1452
- setControlContextData = _ref13.setControlContextData;
1453
- var tables = useTablesWithDataLoaded();
1635
+ var table = _ref14.table,
1636
+ field = _ref14.field,
1637
+ srcProp = _ref14.srcProp,
1638
+ children = _ref14.children,
1639
+ setControlContextData = _ref14.setControlContextData;
1640
+ var tables = useTablesWithDataLoaded("rows");
1454
1641
  var res = useRow(tables, table);
1455
1642
  if (!res || !res.row) {
1456
- return React__default.createElement(React__default.Fragment, null, children);
1643
+ return React.createElement(React.Fragment, null, children);
1457
1644
  }
1458
1645
  var fieldMeta = deriveInferredTableField({
1459
1646
  table: res.table,
@@ -1471,25 +1658,25 @@ function CmsRowImage(_ref13) {
1471
1658
  });
1472
1659
  }
1473
1660
  if (!fieldMeta) {
1474
- return React__default.createElement(React__default.Fragment, null, children);
1661
+ return React.createElement(React.Fragment, null, children);
1475
1662
  }
1476
1663
  var value = ((_res$row$data3 = res.row.data) == null ? void 0 : _res$row$data3[fieldMeta.identifier]) || "";
1477
- var childrenWithProps = React__default.Children.map(children, function (child) {
1478
- if (React__default.isValidElement(child) && value) {
1664
+ var childrenWithProps = React.Children.map(children, function (child) {
1665
+ if (React.isValidElement(child) && value) {
1479
1666
  var _React$cloneElement3;
1480
1667
  if (typeof value === "object" && value.url && value.imageMeta) {
1481
1668
  var _React$cloneElement2;
1482
- return React__default.cloneElement(child, (_React$cloneElement2 = {}, _React$cloneElement2[srcProp] = {
1669
+ return React.cloneElement(child, (_React$cloneElement2 = {}, _React$cloneElement2[srcProp] = {
1483
1670
  src: value.url,
1484
1671
  fullHeight: value.imageMeta.height,
1485
1672
  fullWidth: value.imageMeta.width
1486
1673
  }, _React$cloneElement2));
1487
1674
  }
1488
- return React__default.cloneElement(child, (_React$cloneElement3 = {}, _React$cloneElement3[srcProp] = value, _React$cloneElement3));
1675
+ return React.cloneElement(child, (_React$cloneElement3 = {}, _React$cloneElement3[srcProp] = value, _React$cloneElement3));
1489
1676
  }
1490
1677
  return child;
1491
1678
  });
1492
- return React__default.createElement(React__default.Fragment, null, childrenWithProps);
1679
+ return React.createElement(React.Fragment, null, childrenWithProps);
1493
1680
  }
1494
1681
  var cmsRowFieldValueMeta = {
1495
1682
  name: componentPrefix + "-row-value",
@@ -1504,8 +1691,8 @@ var cmsRowFieldValueMeta = {
1504
1691
  type: "choice",
1505
1692
  displayName: "Model",
1506
1693
  hidden: function hidden(props, ctx) {
1507
- var _ctx$tables$length4, _ctx$tables4;
1508
- return ((_ctx$tables$length4 = ctx == null || (_ctx$tables4 = ctx.tables) == null ? void 0 : _ctx$tables4.length) != null ? _ctx$tables$length4 : 0) <= 1 && !props.table;
1694
+ var _ctx$tables$length5, _ctx$tables5;
1695
+ return ((_ctx$tables$length5 = ctx == null || (_ctx$tables5 = ctx.tables) == null ? void 0 : _ctx$tables5.length) != null ? _ctx$tables$length5 : 0) <= 1 && !props.table;
1509
1696
  },
1510
1697
  helpText: "Pick model from a CMS Data Fetcher",
1511
1698
  description: "Usually not used! Only with multiple CMS Data Loaders, use this to choose which to show. Otherwise, go select the CMS Data Loader if you want to load different data.",
@@ -1520,9 +1707,9 @@ var cmsRowFieldValueMeta = {
1520
1707
  type: "choice",
1521
1708
  displayName: "Field",
1522
1709
  description: "Field (from model schema) to use.",
1523
- options: function options(_ref14, ctx) {
1710
+ options: function options(_ref15, ctx) {
1524
1711
  var _ctx$table5;
1525
- var table = _ref14.table;
1712
+ var table = _ref15.table;
1526
1713
  return mkFieldOptions(ctx == null ? void 0 : ctx.tables, (_ctx$table5 = ctx == null ? void 0 : ctx.table) != null ? _ctx$table5 : table);
1527
1714
  },
1528
1715
  defaultValueHint: function defaultValueHint(_, ctx) {
@@ -1538,18 +1725,18 @@ var cmsRowFieldValueMeta = {
1538
1725
  }
1539
1726
  }
1540
1727
  };
1541
- function CmsRowFieldValue(_ref15) {
1728
+ function CmsRowFieldValue(_ref16) {
1542
1729
  var _res$row$data4;
1543
- var table = _ref15.table,
1544
- field = _ref15.field,
1545
- valueProp = _ref15.valueProp,
1546
- children = _ref15.children,
1547
- setControlContextData = _ref15.setControlContextData,
1548
- rest = _objectWithoutPropertiesLoose(_ref15, _excluded2);
1549
- var tables = useTablesWithDataLoaded();
1730
+ var table = _ref16.table,
1731
+ field = _ref16.field,
1732
+ valueProp = _ref16.valueProp,
1733
+ children = _ref16.children,
1734
+ setControlContextData = _ref16.setControlContextData,
1735
+ rest = _objectWithoutPropertiesLoose(_ref16, _excluded3);
1736
+ var tables = useTablesWithDataLoaded("rows");
1550
1737
  var res = useRow(tables, table);
1551
1738
  if (!res || !res.row) {
1552
- return React__default.createElement(React__default.Fragment, null, children);
1739
+ return React.createElement(React.Fragment, null, children);
1553
1740
  }
1554
1741
  var fieldMeta = deriveInferredTableField({
1555
1742
  table: res.table,
@@ -1567,17 +1754,17 @@ function CmsRowFieldValue(_ref15) {
1567
1754
  });
1568
1755
  }
1569
1756
  if (!fieldMeta) {
1570
- return React__default.createElement(React__default.Fragment, null, children);
1757
+ return React.createElement(React.Fragment, null, children);
1571
1758
  }
1572
1759
  var value = ((_res$row$data4 = res.row.data) == null ? void 0 : _res$row$data4[fieldMeta.identifier]) || "";
1573
- var childrenWithProps = React__default.Children.map(children, function (child) {
1574
- if (React__default.isValidElement(child)) {
1760
+ var childrenWithProps = React.Children.map(children, function (child) {
1761
+ if (React.isValidElement(child)) {
1575
1762
  var _extends2;
1576
- return React__default.cloneElement(child, _extends({}, rest, (_extends2 = {}, _extends2[valueProp] = value, _extends2)));
1763
+ return React.cloneElement(child, _extends({}, rest, (_extends2 = {}, _extends2[valueProp] = value, _extends2)));
1577
1764
  }
1578
1765
  return child;
1579
1766
  });
1580
- return React__default.createElement(React__default.Fragment, null, childrenWithProps);
1767
+ return React.createElement(React.Fragment, null, childrenWithProps);
1581
1768
  }
1582
1769
 
1583
1770
  function registerAll(loader) {
@@ -1603,9 +1790,11 @@ function registerAll(loader) {
1603
1790
  _registerComponent(CmsRowLink, cmsRowLinkMeta);
1604
1791
  _registerComponent(CmsRowImage, cmsRowImageMeta);
1605
1792
  _registerComponent(CmsRowFieldValue, cmsRowFieldValueMeta);
1793
+ _registerComponent(CmsCount, cmsCountFieldMeta);
1606
1794
  }
1607
1795
 
1608
1796
  exports.API = API;
1797
+ exports.CmsCount = CmsCount;
1609
1798
  exports.CmsCredentialsProvider = CmsCredentialsProvider;
1610
1799
  exports.CmsQueryRepeater = CmsQueryRepeater;
1611
1800
  exports.CmsRowField = CmsRowField;
@@ -1613,6 +1802,7 @@ exports.CmsRowFieldValue = CmsRowFieldValue;
1613
1802
  exports.CmsRowImage = CmsRowImage;
1614
1803
  exports.CmsRowLink = CmsRowLink;
1615
1804
  exports.HttpError = HttpError;
1805
+ exports.cmsCountFieldMeta = cmsCountFieldMeta;
1616
1806
  exports.cmsCredentialsProviderMeta = cmsCredentialsProviderMeta;
1617
1807
  exports.cmsQueryRepeaterMeta = cmsQueryRepeaterMeta;
1618
1808
  exports.cmsRowFieldMeta = cmsRowFieldMeta;