@plasmicpkgs/plasmic-rich-components 1.0.118 → 1.0.119

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,10 +1,12 @@
1
1
  import registerComponent from '@plasmicapp/host/registerComponent';
2
2
  import '@plasmicapp/host/registerGlobalContext';
3
- import React, { useState, useEffect, useRef } from 'react';
4
- import { Result, Checkbox, Switch, Empty, Descriptions, theme, ConfigProvider, Dropdown, Button, Input, List, Tag, Card } from 'antd';
3
+ import React, { useState, useEffect, useRef, useMemo } from 'react';
4
+ import dayjs from 'dayjs';
5
+ import customParseFormat from 'dayjs/plugin/customParseFormat';
6
+ import { DateTime } from 'luxon';
7
+ import { Result, Checkbox, Switch, Empty, Descriptions, theme, ConfigProvider, Dropdown, Button, Input, List, Tag, Card, Calendar, Badge } from 'antd';
5
8
  import 'lodash/get';
6
9
  import { normalizeData, deriveFieldConfigs } from '@plasmicapp/data-sources';
7
- import { DateTime } from 'luxon';
8
10
  import { tinycolor } from '@ctrl/tinycolor';
9
11
  import { LogoutOutlined, PlusOutlined, EllipsisOutlined } from '@ant-design/icons';
10
12
  import { ProLayout, ProConfigProvider, ProTable } from '@ant-design/pro-components';
@@ -13,6 +15,7 @@ import { createObjectCsvStringifier } from 'csv-writer-browser';
13
15
  import fastStringify from 'fast-stringify';
14
16
  import classNames from 'classnames';
15
17
  import groupBy from 'lodash/groupBy';
18
+ import { groupBy as groupBy$1 } from 'lodash';
16
19
 
17
20
  function registerComponentHelper(loader, component, meta) {
18
21
  if (loader) {
@@ -35,9 +38,65 @@ function maybe(x, f) {
35
38
  return void 0;
36
39
  return f(x);
37
40
  }
41
+ function isValidIsoDate(str, extendedOnly = false) {
42
+ if (!str)
43
+ return false;
44
+ if (typeof str !== "string")
45
+ return false;
46
+ if (str.includes(" "))
47
+ return false;
48
+ if (str.length === 10) {
49
+ if (extendedOnly)
50
+ return false;
51
+ dayjs.extend(customParseFormat);
52
+ return dayjs(str, "YYYY-MM-DD", true).isValid();
53
+ }
54
+ if (!dayjs(str).isValid())
55
+ return false;
56
+ if (isNaN(new Date(str).getTime()))
57
+ return false;
58
+ return true;
59
+ }
60
+ function parseDate(value) {
61
+ const dateTimeParsers = [
62
+ DateTime.fromISO,
63
+ DateTime.fromRFC2822,
64
+ DateTime.fromHTTP,
65
+ DateTime.fromSQL
66
+ ];
67
+ if (!value)
68
+ return void 0;
69
+ if (typeof value !== "string")
70
+ return void 0;
71
+ for (const parser of dateTimeParsers) {
72
+ const parsed = parser(value);
73
+ if (parsed.isValid) {
74
+ return parsed;
75
+ }
76
+ }
77
+ return void 0;
78
+ }
79
+ function isLikeDate(value) {
80
+ const parsed = parseDate(value);
81
+ return parsed ? true : false;
82
+ }
38
83
  function isLikeImage(value) {
39
84
  return typeof value === "string" ? value.match(/\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i) : false;
40
85
  }
86
+ function isLikeColor(value) {
87
+ if (typeof value !== "string")
88
+ return false;
89
+ const hex = /^#?([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[0-9a-fA-F]{4}([0-9a-fA-F]{4})?)$/;
90
+ const rgba = /^rgba?\((\s*\d+\s*,\s*\d+\s*,\s*\d+\s*(,\s*(1|0?(\.\d+)?))?\s*)\)$/;
91
+ const cssNamed = /^(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)$/;
92
+ const hsla = /^hsla?\((\s*\d+(\.\d+)?\s*,\s*\d+(\.\d+)?%\s*,\s*\d+(\.\d+)?%\s*(,\s*(1|0?\.\d+))?\s*)\)$/;
93
+ const cmyk = /^cmyka?\((\s*\d+(\.\d+)?%\s*,\s*\d+(\.\d+)?%\s*,\s*\d+(\.\d+)?%\s*,\s*\d+(\.\d+)?%\s*(,\s*(1|0?\.\d+))?\s*)\)$/;
94
+ const hsv = /^hsva?\((\s*\d+(\.\d+)?\s*,\s*\d+(\.\d+)?%\s*,\s*\d+(\.\d+)?%\s*(,\s*(1|0?\.\d+))?\s*)\)$/;
95
+ if (value.match(hex) || value.match(rgba) || value.match(cssNamed) || value.match(hsla) || value.match(cmyk) || value.match(hsv)) {
96
+ return true;
97
+ }
98
+ return false;
99
+ }
41
100
  function isInteractable(target) {
42
101
  if (["A", "BUTTON", "INPUT", "TEXTAREA", "SELECT"].includes(target.tagName)) {
43
102
  return true;
@@ -85,33 +144,33 @@ class ErrorBoundary extends React.Component {
85
144
  }
86
145
  }
87
146
 
88
- var __defProp$9 = Object.defineProperty;
89
- var __defProps$7 = Object.defineProperties;
90
- var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
91
- var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
92
- var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
93
- var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
94
- var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
95
- var __spreadValues$9 = (a, b) => {
147
+ var __defProp$b = Object.defineProperty;
148
+ var __defProps$8 = Object.defineProperties;
149
+ var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
150
+ var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
151
+ var __hasOwnProp$b = Object.prototype.hasOwnProperty;
152
+ var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
153
+ var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
154
+ var __spreadValues$b = (a, b) => {
96
155
  for (var prop in b || (b = {}))
97
- if (__hasOwnProp$9.call(b, prop))
98
- __defNormalProp$9(a, prop, b[prop]);
99
- if (__getOwnPropSymbols$9)
100
- for (var prop of __getOwnPropSymbols$9(b)) {
101
- if (__propIsEnum$9.call(b, prop))
102
- __defNormalProp$9(a, prop, b[prop]);
156
+ if (__hasOwnProp$b.call(b, prop))
157
+ __defNormalProp$b(a, prop, b[prop]);
158
+ if (__getOwnPropSymbols$b)
159
+ for (var prop of __getOwnPropSymbols$b(b)) {
160
+ if (__propIsEnum$b.call(b, prop))
161
+ __defNormalProp$b(a, prop, b[prop]);
103
162
  }
104
163
  return a;
105
164
  };
106
- var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
107
- var __objRest$2 = (source, exclude) => {
165
+ var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
166
+ var __objRest$3 = (source, exclude) => {
108
167
  var target = {};
109
168
  for (var prop in source)
110
- if (__hasOwnProp$9.call(source, prop) && exclude.indexOf(prop) < 0)
169
+ if (__hasOwnProp$b.call(source, prop) && exclude.indexOf(prop) < 0)
111
170
  target[prop] = source[prop];
112
- if (source != null && __getOwnPropSymbols$9)
113
- for (var prop of __getOwnPropSymbols$9(source)) {
114
- if (exclude.indexOf(prop) < 0 && __propIsEnum$9.call(source, prop))
171
+ if (source != null && __getOwnPropSymbols$b)
172
+ for (var prop of __getOwnPropSymbols$b(source)) {
173
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$b.call(source, prop))
115
174
  target[prop] = source[prop];
116
175
  }
117
176
  return target;
@@ -147,7 +206,7 @@ function deriveValueType(cconfig) {
147
206
  const NoneField = "||NoneField||";
148
207
  const CustomField = "";
149
208
  function getFieldSubprops(opts) {
150
- return __spreadValues$9(__spreadValues$9({
209
+ return __spreadValues$b(__spreadValues$b({
151
210
  key: {
152
211
  type: "string",
153
212
  hidden: () => true
@@ -183,7 +242,7 @@ function getFieldSubprops(opts) {
183
242
  defaultValueHint: getDefaultValueHint("title"),
184
243
  hidden: () => !!opts.noTitle
185
244
  },
186
- expr: __spreadProps$7(__spreadValues$9({}, rowDataType("Custom value")), {
245
+ expr: __spreadProps$8(__spreadValues$b({}, rowDataType("Custom value")), {
187
246
  hidden: (ps, ctx, { item, path: _controlPath }) => {
188
247
  return false;
189
248
  }
@@ -461,7 +520,7 @@ function buildFieldsPropType(_a) {
461
520
  advanced,
462
521
  displayName,
463
522
  minimalValue = (_props, contextData) => contextData == null ? void 0 : contextData.minimalFullLengthFields
464
- } = _b, opts = __objRest$2(_b, [
523
+ } = _b, opts = __objRest$3(_b, [
465
524
  "advanced",
466
525
  "displayName",
467
526
  "minimalValue"
@@ -495,25 +554,25 @@ function buildFieldsPropType(_a) {
495
554
  };
496
555
  }
497
556
 
498
- var __defProp$8 = Object.defineProperty;
499
- var __defProps$6 = Object.defineProperties;
500
- var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
501
- var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
502
- var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
503
- var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
504
- var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
505
- var __spreadValues$8 = (a, b) => {
557
+ var __defProp$a = Object.defineProperty;
558
+ var __defProps$7 = Object.defineProperties;
559
+ var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
560
+ var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
561
+ var __hasOwnProp$a = Object.prototype.hasOwnProperty;
562
+ var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
563
+ var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
564
+ var __spreadValues$a = (a, b) => {
506
565
  for (var prop in b || (b = {}))
507
- if (__hasOwnProp$8.call(b, prop))
508
- __defNormalProp$8(a, prop, b[prop]);
509
- if (__getOwnPropSymbols$8)
510
- for (var prop of __getOwnPropSymbols$8(b)) {
511
- if (__propIsEnum$8.call(b, prop))
512
- __defNormalProp$8(a, prop, b[prop]);
566
+ if (__hasOwnProp$a.call(b, prop))
567
+ __defNormalProp$a(a, prop, b[prop]);
568
+ if (__getOwnPropSymbols$a)
569
+ for (var prop of __getOwnPropSymbols$a(b)) {
570
+ if (__propIsEnum$a.call(b, prop))
571
+ __defNormalProp$a(a, prop, b[prop]);
513
572
  }
514
573
  return a;
515
574
  };
516
- var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
575
+ var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
517
576
  function multiRenderValue(record, cconfigs) {
518
577
  return cconfigs == null ? void 0 : cconfigs.flatMap(
519
578
  (cc) => cc.isHidden ? [] : [` \u2022 `, /* @__PURE__ */ React.createElement(React.Fragment, null, renderValue(record, cc))]
@@ -529,6 +588,11 @@ function getFieldValue(record, cconfig) {
529
588
  }
530
589
  return value;
531
590
  }
591
+ function getFieldAggregateValue(record, cconfigs, separator = ", ") {
592
+ if (!(cconfigs == null ? void 0 : cconfigs.length))
593
+ return void 0;
594
+ return (cconfigs == null ? void 0 : cconfigs.length) ? cconfigs.map((item) => getFieldValue(record, item)).join(separator) : void 0;
595
+ }
532
596
  function renderValue(record, cconfig) {
533
597
  const value = getFieldValue(record, cconfig);
534
598
  if (value == null) {
@@ -582,11 +646,11 @@ function renderNumber(value, cconfig) {
582
646
  if (cconfig.dataType === "number") {
583
647
  return new Intl.NumberFormat(cconfig.locale, cconfig).format(value);
584
648
  } else if (cconfig.dataType === "percent") {
585
- return new Intl.NumberFormat(cconfig.locale, __spreadProps$6(__spreadValues$8({}, cconfig), {
649
+ return new Intl.NumberFormat(cconfig.locale, __spreadProps$7(__spreadValues$a({}, cconfig), {
586
650
  style: "percent"
587
651
  })).format(value);
588
652
  } else if (cconfig.dataType === "currency") {
589
- return new Intl.NumberFormat(cconfig.locale, __spreadProps$6(__spreadValues$8(__spreadValues$8({}, DEFAULT_CURRENCY_SETTINGS), cconfig), {
653
+ return new Intl.NumberFormat(cconfig.locale, __spreadProps$7(__spreadValues$a(__spreadValues$a({}, DEFAULT_CURRENCY_SETTINGS), cconfig), {
590
654
  style: "currency"
591
655
  })).format(value);
592
656
  } else {
@@ -594,7 +658,7 @@ function renderNumber(value, cconfig) {
594
658
  }
595
659
  }
596
660
  function renderDate(value, cconfig) {
597
- const opts = __spreadValues$8(__spreadValues$8({}, DEFAULT_DATETIME_SETTINGS), cconfig);
661
+ const opts = __spreadValues$a(__spreadValues$a({}, DEFAULT_DATETIME_SETTINGS), cconfig);
598
662
  if (opts.dateStyle === "none") {
599
663
  delete opts["dateStyle"];
600
664
  }
@@ -618,7 +682,7 @@ const UNIT_TO_MS = {
618
682
  const UNITS_BY_MS = Object.keys(UNIT_TO_MS);
619
683
  function renderRelativeDate(value, cconfig) {
620
684
  var _a;
621
- const opts = __spreadValues$8(__spreadValues$8({}, DEFAULT_RELATIVE_DATETIME_SETTINGS), cconfig);
685
+ const opts = __spreadValues$a(__spreadValues$a({}, DEFAULT_RELATIVE_DATETIME_SETTINGS), cconfig);
622
686
  const unit = (_a = cconfig.unit) != null ? _a : "day";
623
687
  const formatter = new Intl.RelativeTimeFormat(cconfig.locale, opts);
624
688
  if (isOneOf(unit, UNITS_BY_MS)) {
@@ -648,12 +712,6 @@ function renderBoolean(value, cconfig) {
648
712
  return value ? "true" : "false";
649
713
  }
650
714
  }
651
- const dateTimeParsers = [
652
- DateTime.fromISO,
653
- DateTime.fromRFC2822,
654
- DateTime.fromHTTP,
655
- DateTime.fromSQL
656
- ];
657
715
  const CANNOT_COERCE = Symbol("plasmic-cannot-coerce");
658
716
  function coerceValue(value, dataType) {
659
717
  if (value == null) {
@@ -675,11 +733,9 @@ function coerceValue(value, dataType) {
675
733
  } else if (typeof value === "number") {
676
734
  return new Date(value);
677
735
  } else if (typeof value === "string") {
678
- for (const parser of dateTimeParsers) {
679
- const parsed = parser(value);
680
- if (parsed.isValid) {
681
- return parsed.toJSDate();
682
- }
736
+ const parsed = parseDate(value);
737
+ if (parsed) {
738
+ return parsed.toJSDate();
683
739
  }
684
740
  }
685
741
  } else if (dataType === "boolean") {
@@ -715,25 +771,25 @@ function asString(value) {
715
771
  }
716
772
  }
717
773
 
718
- var __defProp$7 = Object.defineProperty;
719
- var __defProps$5 = Object.defineProperties;
720
- var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
721
- var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
722
- var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
723
- var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
724
- var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
725
- var __spreadValues$7 = (a, b) => {
774
+ var __defProp$9 = Object.defineProperty;
775
+ var __defProps$6 = Object.defineProperties;
776
+ var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
777
+ var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
778
+ var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
779
+ var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
780
+ var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
781
+ var __spreadValues$9 = (a, b) => {
726
782
  for (var prop in b || (b = {}))
727
- if (__hasOwnProp$7.call(b, prop))
728
- __defNormalProp$7(a, prop, b[prop]);
729
- if (__getOwnPropSymbols$7)
730
- for (var prop of __getOwnPropSymbols$7(b)) {
731
- if (__propIsEnum$7.call(b, prop))
732
- __defNormalProp$7(a, prop, b[prop]);
783
+ if (__hasOwnProp$9.call(b, prop))
784
+ __defNormalProp$9(a, prop, b[prop]);
785
+ if (__getOwnPropSymbols$9)
786
+ for (var prop of __getOwnPropSymbols$9(b)) {
787
+ if (__propIsEnum$9.call(b, prop))
788
+ __defNormalProp$9(a, prop, b[prop]);
733
789
  }
734
790
  return a;
735
791
  };
736
- var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
792
+ var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
737
793
  function RichDetails(props) {
738
794
  var _a;
739
795
  const {
@@ -776,7 +832,7 @@ function useColumnDefinitions$1(data, props) {
776
832
  const { mergedFields, minimalFullLengthFields } = deriveFieldConfigs(
777
833
  fields != null ? fields : [],
778
834
  schema,
779
- (field) => __spreadValues$7({
835
+ (field) => __spreadValues$9({
780
836
  key: mkShortId(),
781
837
  isHidden: false,
782
838
  dataType: "auto"
@@ -787,7 +843,7 @@ function useColumnDefinitions$1(data, props) {
787
843
  expr: (currentItem) => currentItem[field.id]
788
844
  })
789
845
  );
790
- setControlContextData == null ? void 0 : setControlContextData(__spreadProps$5(__spreadValues$7({}, data), { mergedFields, minimalFullLengthFields }));
846
+ setControlContextData == null ? void 0 : setControlContextData(__spreadProps$6(__spreadValues$9({}, data), { mergedFields, minimalFullLengthFields }));
791
847
  const normalized = mergedFields;
792
848
  const columnDefinitions = normalized.filter((cconfig) => !cconfig.isHidden).map((cconfig, _columnIndex, _columnsArray) => {
793
849
  const columnDefinition = {
@@ -880,56 +936,56 @@ function isLight(color) {
880
936
  return r * 0.299 + g * 0.587 + b * 0.114 > 186;
881
937
  }
882
938
 
883
- var __defProp$6 = Object.defineProperty;
884
- var __defProps$4 = Object.defineProperties;
885
- var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
886
- var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
887
- var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
888
- var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
889
- var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
890
- var __spreadValues$6 = (a, b) => {
939
+ var __defProp$8 = Object.defineProperty;
940
+ var __defProps$5 = Object.defineProperties;
941
+ var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
942
+ var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
943
+ var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
944
+ var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
945
+ var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
946
+ var __spreadValues$8 = (a, b) => {
891
947
  for (var prop in b || (b = {}))
892
- if (__hasOwnProp$6.call(b, prop))
893
- __defNormalProp$6(a, prop, b[prop]);
894
- if (__getOwnPropSymbols$6)
895
- for (var prop of __getOwnPropSymbols$6(b)) {
896
- if (__propIsEnum$6.call(b, prop))
897
- __defNormalProp$6(a, prop, b[prop]);
948
+ if (__hasOwnProp$8.call(b, prop))
949
+ __defNormalProp$8(a, prop, b[prop]);
950
+ if (__getOwnPropSymbols$8)
951
+ for (var prop of __getOwnPropSymbols$8(b)) {
952
+ if (__propIsEnum$8.call(b, prop))
953
+ __defNormalProp$8(a, prop, b[prop]);
898
954
  }
899
955
  return a;
900
956
  };
901
- var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
957
+ var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
902
958
  const AnchorLink = React.forwardRef(function AnchorLink2(props, ref) {
903
- return /* @__PURE__ */ React.createElement("a", __spreadProps$4(__spreadValues$6({}, props), { ref }));
959
+ return /* @__PURE__ */ React.createElement("a", __spreadProps$5(__spreadValues$8({}, props), { ref }));
904
960
  });
905
961
 
906
- var __defProp$5 = Object.defineProperty;
907
- var __defProps$3 = Object.defineProperties;
908
- var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
909
- var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
910
- var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
911
- var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
912
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
913
- var __spreadValues$5 = (a, b) => {
962
+ var __defProp$7 = Object.defineProperty;
963
+ var __defProps$4 = Object.defineProperties;
964
+ var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
965
+ var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
966
+ var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
967
+ var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
968
+ var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
969
+ var __spreadValues$7 = (a, b) => {
914
970
  for (var prop in b || (b = {}))
915
- if (__hasOwnProp$5.call(b, prop))
916
- __defNormalProp$5(a, prop, b[prop]);
917
- if (__getOwnPropSymbols$5)
918
- for (var prop of __getOwnPropSymbols$5(b)) {
919
- if (__propIsEnum$5.call(b, prop))
920
- __defNormalProp$5(a, prop, b[prop]);
971
+ if (__hasOwnProp$7.call(b, prop))
972
+ __defNormalProp$7(a, prop, b[prop]);
973
+ if (__getOwnPropSymbols$7)
974
+ for (var prop of __getOwnPropSymbols$7(b)) {
975
+ if (__propIsEnum$7.call(b, prop))
976
+ __defNormalProp$7(a, prop, b[prop]);
921
977
  }
922
978
  return a;
923
979
  };
924
- var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
925
- var __objRest$1 = (source, exclude) => {
980
+ var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
981
+ var __objRest$2 = (source, exclude) => {
926
982
  var target = {};
927
983
  for (var prop in source)
928
- if (__hasOwnProp$5.call(source, prop) && exclude.indexOf(prop) < 0)
984
+ if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)
929
985
  target[prop] = source[prop];
930
- if (source != null && __getOwnPropSymbols$5)
931
- for (var prop of __getOwnPropSymbols$5(source)) {
932
- if (exclude.indexOf(prop) < 0 && __propIsEnum$5.call(source, prop))
986
+ if (source != null && __getOwnPropSymbols$7)
987
+ for (var prop of __getOwnPropSymbols$7(source)) {
988
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))
933
989
  target[prop] = source[prop];
934
990
  }
935
991
  return target;
@@ -940,7 +996,7 @@ function omitUndefined(x) {
940
996
  );
941
997
  }
942
998
  function processNavItems(navMenuItems) {
943
- return navMenuItems.filter((item) => item.condition === void 0 || item.condition).map((item) => __spreadProps$3(__spreadValues$5({}, item), {
999
+ return navMenuItems.filter((item) => item.condition === void 0 || item.condition).map((item) => __spreadProps$4(__spreadValues$7({}, item), {
944
1000
  // We fill a default path because otherwise the item doesn't appear at all.
945
1001
  path: item.path || "/",
946
1002
  routes: item.routes ? processNavItems(item.routes) : void 0
@@ -972,7 +1028,7 @@ function RichLayout(_a) {
972
1028
  simpleNavTheme,
973
1029
  logo,
974
1030
  logoElement
975
- } = _b, layoutProps = __objRest$1(_b, [
1031
+ } = _b, layoutProps = __objRest$2(_b, [
976
1032
  "children",
977
1033
  "navMenuItems",
978
1034
  "rootUrl",
@@ -1041,7 +1097,7 @@ function RichLayout(_a) {
1041
1097
  };
1042
1098
  return /* @__PURE__ */ React.createElement("div", { className, style: { display: "flex" } }, /* @__PURE__ */ React.createElement("style", null, baseStyles), /* @__PURE__ */ React.createElement(
1043
1099
  ProLayout,
1044
- __spreadProps$3(__spreadValues$5({}, layoutProps), {
1100
+ __spreadProps$4(__spreadValues$7({}, layoutProps), {
1045
1101
  pageTitleRender: () => "",
1046
1102
  logo: logo != null ? logo : logoElement,
1047
1103
  headerRender: (_props, defaultDom) => /* @__PURE__ */ React.createElement(
@@ -1052,7 +1108,7 @@ function RichLayout(_a) {
1052
1108
  /* @__PURE__ */ React.createElement(ProConfigProvider, { dark: !isNavBgLight }, defaultDom)
1053
1109
  ),
1054
1110
  token: {
1055
- header: omitUndefined(__spreadValues$5({
1111
+ header: omitUndefined(__spreadValues$7({
1056
1112
  colorBgHeader: navBgColor
1057
1113
  }, layoutColorOverrides)),
1058
1114
  // Ideally, we'd do something similar to headerRender above, and just specify general dark mode to specify
@@ -1122,19 +1178,19 @@ function RichLayout(_a) {
1122
1178
  ));
1123
1179
  }
1124
1180
 
1125
- var __defProp$4 = Object.defineProperty;
1126
- var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
1127
- var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
1128
- var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
1129
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1130
- var __spreadValues$4 = (a, b) => {
1181
+ var __defProp$6 = Object.defineProperty;
1182
+ var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
1183
+ var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
1184
+ var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
1185
+ var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1186
+ var __spreadValues$6 = (a, b) => {
1131
1187
  for (var prop in b || (b = {}))
1132
- if (__hasOwnProp$4.call(b, prop))
1133
- __defNormalProp$4(a, prop, b[prop]);
1134
- if (__getOwnPropSymbols$4)
1135
- for (var prop of __getOwnPropSymbols$4(b)) {
1136
- if (__propIsEnum$4.call(b, prop))
1137
- __defNormalProp$4(a, prop, b[prop]);
1188
+ if (__hasOwnProp$6.call(b, prop))
1189
+ __defNormalProp$6(a, prop, b[prop]);
1190
+ if (__getOwnPropSymbols$6)
1191
+ for (var prop of __getOwnPropSymbols$6(b)) {
1192
+ if (__propIsEnum$6.call(b, prop))
1193
+ __defNormalProp$6(a, prop, b[prop]);
1138
1194
  }
1139
1195
  return a;
1140
1196
  };
@@ -1147,7 +1203,7 @@ function generateNavMenuType(isNested, remainingDepth, displayName, defaultValue
1147
1203
  itemType: {
1148
1204
  type: "object",
1149
1205
  nameFunc: (item) => item.name || (!displayName ? "Unnamed nested item" : "Unnamed item"),
1150
- fields: __spreadValues$4({
1206
+ fields: __spreadValues$6({
1151
1207
  path: "href",
1152
1208
  name: "string",
1153
1209
  condition: {
@@ -1426,25 +1482,25 @@ function renderActions(rowActions, row, data, rowKey) {
1426
1482
  });
1427
1483
  }
1428
1484
 
1429
- var __defProp$3 = Object.defineProperty;
1430
- var __defProps$2 = Object.defineProperties;
1431
- var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
1432
- var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
1433
- var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
1434
- var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
1435
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1436
- var __spreadValues$3 = (a, b) => {
1485
+ var __defProp$5 = Object.defineProperty;
1486
+ var __defProps$3 = Object.defineProperties;
1487
+ var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
1488
+ var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
1489
+ var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
1490
+ var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
1491
+ var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1492
+ var __spreadValues$5 = (a, b) => {
1437
1493
  for (var prop in b || (b = {}))
1438
- if (__hasOwnProp$3.call(b, prop))
1439
- __defNormalProp$3(a, prop, b[prop]);
1440
- if (__getOwnPropSymbols$3)
1441
- for (var prop of __getOwnPropSymbols$3(b)) {
1442
- if (__propIsEnum$3.call(b, prop))
1443
- __defNormalProp$3(a, prop, b[prop]);
1494
+ if (__hasOwnProp$5.call(b, prop))
1495
+ __defNormalProp$5(a, prop, b[prop]);
1496
+ if (__getOwnPropSymbols$5)
1497
+ for (var prop of __getOwnPropSymbols$5(b)) {
1498
+ if (__propIsEnum$5.call(b, prop))
1499
+ __defNormalProp$5(a, prop, b[prop]);
1444
1500
  }
1445
1501
  return a;
1446
1502
  };
1447
- var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
1503
+ var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
1448
1504
  function RichTable(props) {
1449
1505
  const {
1450
1506
  className,
@@ -1489,7 +1545,7 @@ function RichTable(props) {
1489
1545
  }
1490
1546
  return /* @__PURE__ */ React.createElement("div", { className: `${className} ${scopeClassName != null ? scopeClassName : ""}` }, /* @__PURE__ */ React.createElement(ErrorBoundary, { canvasEnvId: props["data-plasmic-canvas-envs"] }, /* @__PURE__ */ React.createElement(
1491
1547
  ProTable,
1492
- __spreadProps$2(__spreadValues$3({
1548
+ __spreadProps$3(__spreadValues$5({
1493
1549
  ErrorBoundary: false,
1494
1550
  rowClassName: props.onRowClick || props.canSelectRows === "click" ? "plasmic-table-row-clickable" : void 0,
1495
1551
  actionRef,
@@ -1613,7 +1669,7 @@ function RichTable(props) {
1613
1669
  }
1614
1670
  ));
1615
1671
  }
1616
- const defaultColumnConfig$1 = () => ({
1672
+ const defaultColumnConfig$2 = () => ({
1617
1673
  key: mkShortId(),
1618
1674
  isEditableExpr: () => false,
1619
1675
  disableSorting: false,
@@ -1633,13 +1689,13 @@ function useColumnDefinitions(data, props) {
1633
1689
  if (!data || !schema) {
1634
1690
  return { normalized: [], columnDefinitions: [] };
1635
1691
  }
1636
- const { mergedFields, minimalFullLengthFields } = deriveFieldConfigs(fields != null ? fields : [], schema, (field) => __spreadValues$3(__spreadValues$3({}, defaultColumnConfig$1()), field && {
1692
+ const { mergedFields, minimalFullLengthFields } = deriveFieldConfigs(fields != null ? fields : [], schema, (field) => __spreadValues$5(__spreadValues$5({}, defaultColumnConfig$2()), field && {
1637
1693
  key: field.id,
1638
1694
  fieldId: field.id,
1639
1695
  title: field.label || field.id,
1640
1696
  expr: (currentItem) => currentItem[field.id]
1641
1697
  }));
1642
- setControlContextData == null ? void 0 : setControlContextData(__spreadProps$2(__spreadValues$3({}, data), { mergedFields, minimalFullLengthFields }));
1698
+ setControlContextData == null ? void 0 : setControlContextData(__spreadProps$3(__spreadValues$5({}, data), { mergedFields, minimalFullLengthFields }));
1643
1699
  const normalized = mergedFields;
1644
1700
  const columnDefinitions = normalized.filter((cconfig) => !cconfig.isHidden).map((cconfig, _columnIndex, _columnsArray) => {
1645
1701
  const columnDefinition = {
@@ -1707,7 +1763,7 @@ function useRowSelectionProps(data, props) {
1707
1763
  return [];
1708
1764
  }
1709
1765
  };
1710
- const rowSelection = canSelectRows && canSelectRows !== "none" ? __spreadValues$3({
1766
+ const rowSelection = canSelectRows && canSelectRows !== "none" ? __spreadValues$5({
1711
1767
  type: canSelectRows === "single" || canSelectRows === "click" ? "radio" : "checkbox",
1712
1768
  selectedRowKeys: deriveSelectedRowKeys(),
1713
1769
  onChange: (rowKeys, rows) => {
@@ -1797,6 +1853,44 @@ function ExportMenu(props) {
1797
1853
  );
1798
1854
  }
1799
1855
 
1856
+ function roleProp({
1857
+ role,
1858
+ singular = false,
1859
+ advanced = false,
1860
+ displayName
1861
+ }) {
1862
+ return singular ? {
1863
+ type: "object",
1864
+ displayName: displayName || `${capitalize(role)} field`,
1865
+ advanced,
1866
+ hidden: (ps) => !ps.data,
1867
+ nameFunc: (item) => maybe(
1868
+ item,
1869
+ (i) => i.isHidden ? "Hidden" : i.fieldId || "Custom value"
1870
+ ),
1871
+ fields: getFieldSubprops({
1872
+ canChangeField: true,
1873
+ noTitle: true
1874
+ }),
1875
+ defaultValueHint: (_props, contextData) => {
1876
+ var _a;
1877
+ return ((_a = contextData == null ? void 0 : contextData.minimalFullLengthFields) != null ? _a : []).find(
1878
+ (f) => f.role === role
1879
+ );
1880
+ }
1881
+ } : buildFieldsPropType({
1882
+ displayName: displayName || `${capitalize(role)} fields`,
1883
+ advanced,
1884
+ noTitle: true,
1885
+ canChangeField: true,
1886
+ minimalValue: (_props, contextData) => {
1887
+ var _a;
1888
+ return ((_a = contextData == null ? void 0 : contextData.minimalFullLengthFields) != null ? _a : []).filter(
1889
+ (f) => f.role === role
1890
+ );
1891
+ }
1892
+ });
1893
+ }
1800
1894
  function dataProp() {
1801
1895
  return {
1802
1896
  type: "dataSourceOpData",
@@ -1886,25 +1980,25 @@ function onRowClickProp() {
1886
1980
  };
1887
1981
  }
1888
1982
 
1889
- var __defProp$2 = Object.defineProperty;
1890
- var __defProps$1 = Object.defineProperties;
1891
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
1892
- var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
1893
- var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
1894
- var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
1895
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1896
- var __spreadValues$2 = (a, b) => {
1983
+ var __defProp$4 = Object.defineProperty;
1984
+ var __defProps$2 = Object.defineProperties;
1985
+ var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
1986
+ var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
1987
+ var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
1988
+ var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
1989
+ var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1990
+ var __spreadValues$4 = (a, b) => {
1897
1991
  for (var prop in b || (b = {}))
1898
- if (__hasOwnProp$2.call(b, prop))
1899
- __defNormalProp$2(a, prop, b[prop]);
1900
- if (__getOwnPropSymbols$2)
1901
- for (var prop of __getOwnPropSymbols$2(b)) {
1902
- if (__propIsEnum$2.call(b, prop))
1903
- __defNormalProp$2(a, prop, b[prop]);
1992
+ if (__hasOwnProp$4.call(b, prop))
1993
+ __defNormalProp$4(a, prop, b[prop]);
1994
+ if (__getOwnPropSymbols$4)
1995
+ for (var prop of __getOwnPropSymbols$4(b)) {
1996
+ if (__propIsEnum$4.call(b, prop))
1997
+ __defNormalProp$4(a, prop, b[prop]);
1904
1998
  }
1905
1999
  return a;
1906
2000
  };
1907
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
2001
+ var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
1908
2002
  const tableHelpers = {
1909
2003
  states: {
1910
2004
  selectedRow: {
@@ -1937,7 +2031,7 @@ const dataTableMeta = {
1937
2031
  padding: "16px",
1938
2032
  maxHeight: "100%"
1939
2033
  },
1940
- props: __spreadProps$1(__spreadValues$2({
2034
+ props: __spreadProps$2(__spreadValues$4({
1941
2035
  data: dataProp(),
1942
2036
  fields: buildFieldsPropType({}),
1943
2037
  canSelectRows: {
@@ -2038,24 +2132,24 @@ const dataTableMeta = {
2038
2132
  }
2039
2133
  }),
2040
2134
  states: {
2041
- selectedRowKey: __spreadValues$2({
2135
+ selectedRowKey: __spreadValues$4({
2042
2136
  type: "writable",
2043
2137
  valueProp: "selectedRowKey",
2044
2138
  onChangeProp: "onRowSelectionChanged",
2045
2139
  variableType: "text"
2046
2140
  }, tableHelpers.states.selectedRowKey),
2047
- selectedRowKeys: __spreadValues$2({
2141
+ selectedRowKeys: __spreadValues$4({
2048
2142
  type: "writable",
2049
2143
  valueProp: "selectedRowKeys",
2050
2144
  onChangeProp: "onRowSelectionChanged",
2051
2145
  variableType: "array"
2052
2146
  }, tableHelpers.states.selectedRowKeys),
2053
- selectedRow: __spreadValues$2({
2147
+ selectedRow: __spreadValues$4({
2054
2148
  type: "readonly",
2055
2149
  onChangeProp: "onRowSelectionChanged",
2056
2150
  variableType: "object"
2057
2151
  }, tableHelpers.states.selectedRow),
2058
- selectedRows: __spreadValues$2({
2152
+ selectedRows: __spreadValues$4({
2059
2153
  type: "readonly",
2060
2154
  onChangeProp: "onRowSelectionChanged",
2061
2155
  variableType: "array"
@@ -2073,33 +2167,33 @@ function registerRichTable(loader) {
2073
2167
  registerComponentHelper(loader, RichTable, dataTableMeta);
2074
2168
  }
2075
2169
 
2076
- var __defProp$1 = Object.defineProperty;
2077
- var __defProps = Object.defineProperties;
2078
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
2079
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
2080
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
2081
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
2082
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2083
- var __spreadValues$1 = (a, b) => {
2170
+ var __defProp$3 = Object.defineProperty;
2171
+ var __defProps$1 = Object.defineProperties;
2172
+ var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
2173
+ var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
2174
+ var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
2175
+ var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
2176
+ var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2177
+ var __spreadValues$3 = (a, b) => {
2084
2178
  for (var prop in b || (b = {}))
2085
- if (__hasOwnProp$1.call(b, prop))
2086
- __defNormalProp$1(a, prop, b[prop]);
2087
- if (__getOwnPropSymbols$1)
2088
- for (var prop of __getOwnPropSymbols$1(b)) {
2089
- if (__propIsEnum$1.call(b, prop))
2090
- __defNormalProp$1(a, prop, b[prop]);
2179
+ if (__hasOwnProp$3.call(b, prop))
2180
+ __defNormalProp$3(a, prop, b[prop]);
2181
+ if (__getOwnPropSymbols$3)
2182
+ for (var prop of __getOwnPropSymbols$3(b)) {
2183
+ if (__propIsEnum$3.call(b, prop))
2184
+ __defNormalProp$3(a, prop, b[prop]);
2091
2185
  }
2092
2186
  return a;
2093
2187
  };
2094
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
2095
- var __objRest = (source, exclude) => {
2188
+ var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
2189
+ var __objRest$1 = (source, exclude) => {
2096
2190
  var target = {};
2097
2191
  for (var prop in source)
2098
- if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)
2192
+ if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)
2099
2193
  target[prop] = source[prop];
2100
- if (source != null && __getOwnPropSymbols$1)
2101
- for (var prop of __getOwnPropSymbols$1(source)) {
2102
- if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))
2194
+ if (source != null && __getOwnPropSymbols$3)
2195
+ for (var prop of __getOwnPropSymbols$3(source)) {
2196
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop))
2103
2197
  target[prop] = source[prop];
2104
2198
  }
2105
2199
  return target;
@@ -2177,7 +2271,7 @@ function RichList(props) {
2177
2271
  rowKey,
2178
2272
  pagination = true,
2179
2273
  onRowClick
2180
- } = _a; __objRest(_a, [
2274
+ } = _a; __objRest$1(_a, [
2181
2275
  "data",
2182
2276
  "type",
2183
2277
  "bordered",
@@ -2194,7 +2288,7 @@ function RichList(props) {
2194
2288
  "onRowClick"
2195
2289
  ]);
2196
2290
  const data = normalizeData(rawData);
2197
- const { normalized, finalRoles: roleConfigs } = useRoleDefinitions(
2291
+ const { normalized, finalRoles: roleConfigs } = useRoleDefinitions$1(
2198
2292
  data,
2199
2293
  props
2200
2294
  );
@@ -2324,7 +2418,7 @@ function ListItemContent(_a) {
2324
2418
  afterTitle,
2325
2419
  content,
2326
2420
  bordered
2327
- } = _b, others = __objRest(_b, [
2421
+ } = _b, others = __objRest$1(_b, [
2328
2422
  "className",
2329
2423
  "title",
2330
2424
  "subtitle",
@@ -2338,7 +2432,7 @@ function ListItemContent(_a) {
2338
2432
  const classString = classNames(`${prefixCls}-item-meta`, className);
2339
2433
  return /* @__PURE__ */ React.createElement(
2340
2434
  "div",
2341
- __spreadProps(__spreadValues$1({}, others), {
2435
+ __spreadProps$1(__spreadValues$3({}, others), {
2342
2436
  className: classNames(
2343
2437
  {
2344
2438
  "plasmic-list-item-content--unbordered": !bordered
@@ -2367,7 +2461,7 @@ function ListItemContent(_a) {
2367
2461
  )
2368
2462
  );
2369
2463
  }
2370
- const defaultColumnConfig = () => ({
2464
+ const defaultColumnConfig$1 = () => ({
2371
2465
  key: mkShortId(),
2372
2466
  isEditableExpr: () => false,
2373
2467
  disableSorting: false,
@@ -2381,7 +2475,7 @@ const defaultColumnConfig = () => ({
2381
2475
  dataType: "auto",
2382
2476
  role: void 0
2383
2477
  });
2384
- const roles = [
2478
+ const roles$1 = [
2385
2479
  "content",
2386
2480
  "title",
2387
2481
  "subtitle",
@@ -2390,7 +2484,7 @@ const roles = [
2390
2484
  "image",
2391
2485
  "unset"
2392
2486
  ];
2393
- function useRoleDefinitions(data, props) {
2487
+ function useRoleDefinitions$1(data, props) {
2394
2488
  const { fields, setControlContextData, rowActions } = props;
2395
2489
  return React.useMemo(() => {
2396
2490
  var _a, _b, _c, _d;
@@ -2403,7 +2497,7 @@ function useRoleDefinitions(data, props) {
2403
2497
  var _a2;
2404
2498
  if (role !== "unset") {
2405
2499
  return ensureArray((_a2 = props[role]) != null ? _a2 : []).map((field) => {
2406
- return __spreadProps(__spreadValues$1({}, field), {
2500
+ return __spreadProps$1(__spreadValues$3({}, field), {
2407
2501
  role
2408
2502
  });
2409
2503
  });
@@ -2423,7 +2517,7 @@ function useRoleDefinitions(data, props) {
2423
2517
  return deriveFieldConfigs(
2424
2518
  mode === "defaults" ? [] : specifiedFieldsPartial,
2425
2519
  schema,
2426
- (field) => __spreadValues$1(__spreadValues$1({}, defaultColumnConfig()), field && {
2520
+ (field) => __spreadValues$3(__spreadValues$3({}, defaultColumnConfig$1()), field && {
2427
2521
  key: field.id,
2428
2522
  fieldId: field.id,
2429
2523
  title: field.label || field.id,
@@ -2514,12 +2608,12 @@ function useRoleDefinitions(data, props) {
2514
2608
  groupBy(mergedFieldsWithDefaults, (f) => f.role)
2515
2609
  );
2516
2610
  const finalRoles = {};
2517
- for (const role of roles) {
2611
+ for (const role of roles$1) {
2518
2612
  if (role !== "unset") {
2519
2613
  finalRoles[role] = (_d = maybe(props[role], ensureArray)) != null ? _d : roleConfigs[role];
2520
2614
  }
2521
2615
  }
2522
- setControlContextData == null ? void 0 : setControlContextData(__spreadProps(__spreadValues$1({}, data), {
2616
+ setControlContextData == null ? void 0 : setControlContextData(__spreadProps$1(__spreadValues$3({}, data), {
2523
2617
  mergedFields: mergedFieldsWithDefaults,
2524
2618
  minimalFullLengthFields: minimalFullLengthFieldsWithDefaults
2525
2619
  }));
@@ -2528,60 +2622,22 @@ function useRoleDefinitions(data, props) {
2528
2622
  }, [fields, data, setControlContextData, rowActions]);
2529
2623
  }
2530
2624
 
2531
- var __defProp = Object.defineProperty;
2532
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
2533
- var __hasOwnProp = Object.prototype.hasOwnProperty;
2534
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
2535
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2536
- var __spreadValues = (a, b) => {
2625
+ var __defProp$2 = Object.defineProperty;
2626
+ var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
2627
+ var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
2628
+ var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
2629
+ var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2630
+ var __spreadValues$2 = (a, b) => {
2537
2631
  for (var prop in b || (b = {}))
2538
- if (__hasOwnProp.call(b, prop))
2539
- __defNormalProp(a, prop, b[prop]);
2540
- if (__getOwnPropSymbols)
2541
- for (var prop of __getOwnPropSymbols(b)) {
2542
- if (__propIsEnum.call(b, prop))
2543
- __defNormalProp(a, prop, b[prop]);
2632
+ if (__hasOwnProp$2.call(b, prop))
2633
+ __defNormalProp$2(a, prop, b[prop]);
2634
+ if (__getOwnPropSymbols$2)
2635
+ for (var prop of __getOwnPropSymbols$2(b)) {
2636
+ if (__propIsEnum$2.call(b, prop))
2637
+ __defNormalProp$2(a, prop, b[prop]);
2544
2638
  }
2545
2639
  return a;
2546
2640
  };
2547
- function roleProp({
2548
- role,
2549
- singular = false,
2550
- advanced = false,
2551
- displayName
2552
- }) {
2553
- return singular ? {
2554
- type: "object",
2555
- displayName,
2556
- advanced,
2557
- hidden: (ps) => !ps.data,
2558
- nameFunc: (item) => maybe(
2559
- item,
2560
- (i) => i.isHidden ? "Hidden" : i.fieldId || "Custom value"
2561
- ),
2562
- fields: getFieldSubprops({
2563
- canChangeField: true,
2564
- noTitle: true
2565
- }),
2566
- defaultValueHint: (_props, contextData) => {
2567
- var _a;
2568
- return ((_a = contextData == null ? void 0 : contextData.minimalFullLengthFields) != null ? _a : []).find(
2569
- (f) => f.role === role
2570
- );
2571
- }
2572
- } : buildFieldsPropType({
2573
- displayName,
2574
- advanced,
2575
- noTitle: true,
2576
- canChangeField: true,
2577
- minimalValue: (_props, contextData) => {
2578
- var _a;
2579
- return ((_a = contextData == null ? void 0 : contextData.minimalFullLengthFields) != null ? _a : []).filter(
2580
- (f) => f.role === role
2581
- );
2582
- }
2583
- });
2584
- }
2585
2641
  const richListMeta = {
2586
2642
  name: "hostless-rich-list",
2587
2643
  displayName: "Data List",
@@ -2591,7 +2647,7 @@ const richListMeta = {
2591
2647
  maxHeight: "100%"
2592
2648
  },
2593
2649
  defaultDisplay: "block",
2594
- props: __spreadValues({
2650
+ props: __spreadValues$2({
2595
2651
  data: dataProp(),
2596
2652
  type: {
2597
2653
  type: "choice",
@@ -2614,7 +2670,6 @@ const richListMeta = {
2614
2670
  image: roleProp({ role: "image", singular: true }),
2615
2671
  subtitle: roleProp({
2616
2672
  role: "subtitle",
2617
- displayName: "Subtitle",
2618
2673
  advanced: true
2619
2674
  }),
2620
2675
  // Haven't styled these yet!
@@ -2649,11 +2704,471 @@ function registerRichList(loader) {
2649
2704
  registerComponentHelper(loader, RichList, richListMeta);
2650
2705
  }
2651
2706
 
2707
+ var __defProp$1 = Object.defineProperty;
2708
+ var __defProps = Object.defineProperties;
2709
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
2710
+ var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
2711
+ var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
2712
+ var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
2713
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2714
+ var __spreadValues$1 = (a, b) => {
2715
+ for (var prop in b || (b = {}))
2716
+ if (__hasOwnProp$1.call(b, prop))
2717
+ __defNormalProp$1(a, prop, b[prop]);
2718
+ if (__getOwnPropSymbols$1)
2719
+ for (var prop of __getOwnPropSymbols$1(b)) {
2720
+ if (__propIsEnum$1.call(b, prop))
2721
+ __defNormalProp$1(a, prop, b[prop]);
2722
+ }
2723
+ return a;
2724
+ };
2725
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
2726
+ var __objRest = (source, exclude) => {
2727
+ var target = {};
2728
+ for (var prop in source)
2729
+ if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)
2730
+ target[prop] = source[prop];
2731
+ if (source != null && __getOwnPropSymbols$1)
2732
+ for (var prop of __getOwnPropSymbols$1(source)) {
2733
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))
2734
+ target[prop] = source[prop];
2735
+ }
2736
+ return target;
2737
+ };
2738
+ function getEventFullDate(date) {
2739
+ var _a;
2740
+ return ((_a = parseDate(date)) == null ? void 0 : _a.toISODate()) || void 0;
2741
+ }
2742
+ function getEventMonthYear(date) {
2743
+ var _a;
2744
+ return (_a = getEventFullDate(date)) == null ? void 0 : _a.substring(0, 7);
2745
+ }
2746
+ function EventCell({ events }) {
2747
+ if (!events || !events.length)
2748
+ return null;
2749
+ return /* @__PURE__ */ React.createElement("ul", { style: { all: "unset" } }, events.map((e) => /* @__PURE__ */ React.createElement("li", { key: JSON.stringify(e), style: { all: "unset", display: "block" } }, /* @__PURE__ */ React.createElement(Badge, { color: e.color || "green", text: e.title }))));
2750
+ }
2751
+ function RichCalendar(props) {
2752
+ const _a = props, {
2753
+ data: rawData = {
2754
+ data: [],
2755
+ schema: {
2756
+ id: "inferred",
2757
+ fields: [
2758
+ {
2759
+ id: "id",
2760
+ type: "string",
2761
+ readOnly: false
2762
+ }
2763
+ ]
2764
+ }
2765
+ },
2766
+ value: isoValue,
2767
+ defaultValue: isoDefaultValue,
2768
+ validRange: isoValidRange,
2769
+ dateCellRender,
2770
+ dateFullCellRender,
2771
+ monthCellRender,
2772
+ monthFullCellRender
2773
+ } = _a, rest = __objRest(_a, [
2774
+ "data",
2775
+ "value",
2776
+ "defaultValue",
2777
+ "validRange",
2778
+ "dateCellRender",
2779
+ "dateFullCellRender",
2780
+ "monthCellRender",
2781
+ "monthFullCellRender"
2782
+ ]);
2783
+ const data = normalizeData(rawData);
2784
+ const { normalized, finalRoles: roleConfigs } = useRoleDefinitions(
2785
+ data,
2786
+ props
2787
+ );
2788
+ const {
2789
+ eventsByDate,
2790
+ eventsByMonth
2791
+ } = useMemo(() => {
2792
+ if (!data)
2793
+ return { eventsByDate: {}, eventsByMonth: {} };
2794
+ return data == null ? void 0 : data.data.reduce(
2795
+ (acc, item) => {
2796
+ const date = getFieldAggregateValue(item, roleConfigs.date);
2797
+ const title = getFieldAggregateValue(item, roleConfigs.title);
2798
+ const color = getFieldAggregateValue(item, roleConfigs.color);
2799
+ const event = {
2800
+ date,
2801
+ title,
2802
+ color
2803
+ };
2804
+ const keyDate = getEventFullDate(date);
2805
+ const keyMonth = getEventMonthYear(date);
2806
+ if (keyDate && keyMonth) {
2807
+ acc.eventsByDate[keyDate] = [
2808
+ ...acc.eventsByDate[keyDate] || [],
2809
+ event
2810
+ ];
2811
+ acc.eventsByMonth[keyMonth] = [
2812
+ ...acc.eventsByMonth[keyMonth] || [],
2813
+ event
2814
+ ];
2815
+ }
2816
+ return acc;
2817
+ },
2818
+ { eventsByDate: {}, eventsByMonth: {} }
2819
+ );
2820
+ }, [data, roleConfigs.color, roleConfigs.date, roleConfigs.title]);
2821
+ const value = useMemo(
2822
+ () => isValidIsoDate(isoValue) ? dayjs(isoValue) : dayjs(),
2823
+ [isoValue]
2824
+ );
2825
+ const defaultValue = useMemo(
2826
+ () => isValidIsoDate(isoDefaultValue) ? dayjs(isoDefaultValue) : dayjs(),
2827
+ [isoDefaultValue]
2828
+ );
2829
+ const validRange = useMemo(() => {
2830
+ if (!isoValidRange)
2831
+ return void 0;
2832
+ const range = isoValidRange.filter((dateIso) => isValidIsoDate(dateIso)).map((d) => dayjs(d));
2833
+ if (range.length !== 2)
2834
+ return void 0;
2835
+ return [range[0], range[1]];
2836
+ }, [isoValidRange]);
2837
+ const key = useMemo(() => JSON.stringify(roleConfigs), [roleConfigs]);
2838
+ return /* @__PURE__ */ React.createElement(
2839
+ Calendar,
2840
+ __spreadProps(__spreadValues$1({}, rest), {
2841
+ key,
2842
+ validRange,
2843
+ defaultValue,
2844
+ value,
2845
+ dateCellRender: dateCellRender ? dateCellRender : (date) => /* @__PURE__ */ React.createElement(
2846
+ EventCell,
2847
+ {
2848
+ events: eventsByDate[getEventFullDate(date.toISOString())]
2849
+ }
2850
+ ),
2851
+ monthCellRender: monthCellRender ? monthCellRender : (date) => /* @__PURE__ */ React.createElement(
2852
+ EventCell,
2853
+ {
2854
+ events: eventsByMonth[getEventMonthYear(date.toISOString())]
2855
+ }
2856
+ ),
2857
+ dateFullCellRender,
2858
+ monthFullCellRender
2859
+ })
2860
+ );
2861
+ }
2862
+ const defaultColumnConfig = () => ({
2863
+ key: mkShortId(),
2864
+ isEditableExpr: () => false,
2865
+ disableSorting: false,
2866
+ sortByExpr: void 0,
2867
+ isHidden: false,
2868
+ formatting: {
2869
+ styles: {},
2870
+ align: "left",
2871
+ freeze: "off"
2872
+ },
2873
+ dataType: "auto",
2874
+ role: void 0
2875
+ });
2876
+ const roles = ["date", "title", "color", "unset"];
2877
+ function useRoleDefinitions(data, props) {
2878
+ const { fields, setControlContextData } = props;
2879
+ return React.useMemo(() => {
2880
+ var _a, _b, _c, _d, _e;
2881
+ const schema = data == null ? void 0 : data.schema;
2882
+ if (!data || !schema) {
2883
+ return { normalized: [], finalRoles: {} };
2884
+ }
2885
+ function tagFieldConfigs(role) {
2886
+ var _a2;
2887
+ if (role !== "unset") {
2888
+ return ensureArray((_a2 = props[role]) != null ? _a2 : []).map((field) => {
2889
+ return __spreadProps(__spreadValues$1({}, field), {
2890
+ role
2891
+ });
2892
+ });
2893
+ } else {
2894
+ return [];
2895
+ }
2896
+ }
2897
+ const specifiedFieldsPartial = [
2898
+ ...tagFieldConfigs("date"),
2899
+ ...tagFieldConfigs("color"),
2900
+ ...tagFieldConfigs("title")
2901
+ ];
2902
+ function doDeriveFieldConfigs(mode) {
2903
+ return deriveFieldConfigs(
2904
+ mode === "defaults" ? [] : specifiedFieldsPartial,
2905
+ schema,
2906
+ (field) => __spreadValues$1(__spreadValues$1({}, defaultColumnConfig()), field && {
2907
+ key: field.id,
2908
+ fieldId: field.id,
2909
+ title: field.label || field.id,
2910
+ // undefined means not yet determined in this routine, not 'unset'
2911
+ role: void 0,
2912
+ expr: (currentItem) => currentItem[field.id]
2913
+ })
2914
+ );
2915
+ }
2916
+ const {
2917
+ mergedFields: defaultMergedFields,
2918
+ minimalFullLengthFields: defaultMinimalFullLengthFields
2919
+ } = doDeriveFieldConfigs("defaults");
2920
+ if (data.data.length > 0 && !defaultMergedFields.some((field) => field.role === "date")) {
2921
+ const sampleRows = Array.from(
2922
+ new Set(
2923
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(
2924
+ (i) => Math.round(i / 9 * (data.data.length - 1))
2925
+ )
2926
+ )
2927
+ ).map((i) => data.data[i]);
2928
+ const dateFieldCandidates = defaultMergedFields.filter(
2929
+ (field) => !field.role && sampleRows.filter(
2930
+ (row) => field.fieldId && isLikeDate(row[field.fieldId])
2931
+ ).length >= sampleRows.length / 2
2932
+ );
2933
+ const dateField = (_b = (_a = dateFieldCandidates.find(
2934
+ (f) => {
2935
+ var _a2;
2936
+ return (_a2 = f.fieldId) == null ? void 0 : _a2.match(/^(date|datetime|timestamp|eventdate)$/i);
2937
+ }
2938
+ )) != null ? _a : dateFieldCandidates.find(
2939
+ (f) => {
2940
+ var _a2;
2941
+ return (_a2 = f.fieldId) == null ? void 0 : _a2.match(/.*(date|time|event).*/i);
2942
+ }
2943
+ )) != null ? _b : dateFieldCandidates[0];
2944
+ if (dateField) {
2945
+ dateField.role = "date";
2946
+ }
2947
+ }
2948
+ if (data.data.length > 0 && !defaultMergedFields.some((field) => field.role === "color")) {
2949
+ const sampleRows = Array.from(
2950
+ new Set(
2951
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(
2952
+ (i) => Math.round(i / 9 * (data.data.length - 1))
2953
+ )
2954
+ )
2955
+ ).map((i) => data.data[i]);
2956
+ const colorFieldCandidates = defaultMergedFields.filter(
2957
+ (field) => !field.role && sampleRows.filter(
2958
+ (row) => field.fieldId && isLikeColor(row[field.fieldId])
2959
+ ).length >= sampleRows.length / 2
2960
+ );
2961
+ const colorField = (_d = (_c = colorFieldCandidates.find(
2962
+ (f) => {
2963
+ var _a2;
2964
+ return (_a2 = f.fieldId) == null ? void 0 : _a2.match(/^(color|hex|rgb|hsl|rgba|cmyk|hsv|hsb)$/i);
2965
+ }
2966
+ )) != null ? _c : colorFieldCandidates.find(
2967
+ (f) => {
2968
+ var _a2;
2969
+ return (_a2 = f.fieldId) == null ? void 0 : _a2.match(/.*(color|hex|rgb|hsl|rgba|cmyk|hsv|hsb).*/i);
2970
+ }
2971
+ )) != null ? _d : colorFieldCandidates[0];
2972
+ if (colorField) {
2973
+ colorField.role = "color";
2974
+ }
2975
+ }
2976
+ if (!defaultMergedFields.some((field) => field.role === "title")) {
2977
+ const titleField = defaultMergedFields.find(
2978
+ (field) => {
2979
+ var _a2;
2980
+ return !field.role && ((_a2 = field.fieldId) == null ? void 0 : _a2.toLowerCase().match(/^(title|name||event[ _-]?name)$/));
2981
+ }
2982
+ );
2983
+ if (titleField) {
2984
+ titleField.role = "title";
2985
+ }
2986
+ }
2987
+ const fieldIdToDefaultRole = new Map(
2988
+ defaultMergedFields.map((f) => [f.fieldId, f.role])
2989
+ );
2990
+ for (const f of defaultMinimalFullLengthFields) {
2991
+ f.role = fieldIdToDefaultRole.get(f.fieldId);
2992
+ }
2993
+ const { mergedFields, minimalFullLengthFields } = doDeriveFieldConfigs("existing");
2994
+ const minimalFullLengthFieldsWithDefaults = [
2995
+ ...minimalFullLengthFields.filter((f) => f.role && f.role !== "unset"),
2996
+ ...defaultMinimalFullLengthFields.filter(
2997
+ (f) => f.role && f.role !== "unset" && !props[f.role]
2998
+ )
2999
+ ];
3000
+ const mergedFieldsWithDefaults = [
3001
+ ...mergedFields.filter((f) => f.role && f.role !== "unset"),
3002
+ ...defaultMergedFields.filter(
3003
+ (f) => f.role && f.role !== "unset" && !props[f.role]
3004
+ )
3005
+ ];
3006
+ const roleConfigs = ensure(
3007
+ groupBy$1(mergedFieldsWithDefaults, (f) => f.role)
3008
+ );
3009
+ const finalRoles = {};
3010
+ for (const role of roles) {
3011
+ if (role !== "unset") {
3012
+ finalRoles[role] = (_e = maybe(props[role], ensureArray)) != null ? _e : roleConfigs[role];
3013
+ }
3014
+ }
3015
+ setControlContextData == null ? void 0 : setControlContextData(__spreadProps(__spreadValues$1({}, data), {
3016
+ mergedFields: mergedFieldsWithDefaults,
3017
+ minimalFullLengthFields: minimalFullLengthFieldsWithDefaults
3018
+ }));
3019
+ const normalized = mergedFieldsWithDefaults;
3020
+ return { normalized, finalRoles };
3021
+ }, [data, setControlContextData, props]);
3022
+ }
3023
+
3024
+ var __defProp = Object.defineProperty;
3025
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3026
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
3027
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
3028
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3029
+ var __spreadValues = (a, b) => {
3030
+ for (var prop in b || (b = {}))
3031
+ if (__hasOwnProp.call(b, prop))
3032
+ __defNormalProp(a, prop, b[prop]);
3033
+ if (__getOwnPropSymbols)
3034
+ for (var prop of __getOwnPropSymbols(b)) {
3035
+ if (__propIsEnum.call(b, prop))
3036
+ __defNormalProp(a, prop, b[prop]);
3037
+ }
3038
+ return a;
3039
+ };
3040
+ const calendarHelpers = {
3041
+ states: {
3042
+ mode: {
3043
+ onChangeArgsToValue: (_date, mode) => mode
3044
+ },
3045
+ selectedDate: {
3046
+ onChangeArgsToValue: (date) => dayjs(date).toISOString()
3047
+ }
3048
+ }
3049
+ };
3050
+ const calendarComponentName = "hostless-rich-calendar";
3051
+ function registerRichCalendar(loader) {
3052
+ registerComponentHelper(loader, RichCalendar, {
3053
+ name: calendarComponentName,
3054
+ displayName: "Calendar",
3055
+ props: {
3056
+ data: {
3057
+ type: "dataSourceOpData",
3058
+ description: "The data to display. Should be a list of records with some date field."
3059
+ },
3060
+ title: roleProp({ role: "title" }),
3061
+ date: roleProp({ role: "date", singular: true }),
3062
+ color: roleProp({ role: "color", singular: true }),
3063
+ value: {
3064
+ // Must have a corresponding state and eventhandler for any prop that I want to be able to change in interactive mode.
3065
+ editOnly: true,
3066
+ uncontrolledProp: "defaultValue",
3067
+ type: "dateString",
3068
+ description: `The date selected by default as an ISO string`,
3069
+ validator: (value, ps) => {
3070
+ if (!ps.validRange)
3071
+ return true;
3072
+ if (!isValidIsoDate(value))
3073
+ return "Not a valid ISO string.";
3074
+ if (dayjs(value).isBefore(ps.validRange[0]) || dayjs(value).isAfter(ps.validRange[1]))
3075
+ return "Not within the valid range";
3076
+ return true;
3077
+ }
3078
+ },
3079
+ mode: {
3080
+ type: "choice",
3081
+ options: ["month", "year"],
3082
+ description: "The default display mode of the calendar.",
3083
+ defaultValueHint: "month"
3084
+ },
3085
+ validRange: {
3086
+ type: "dateRangeStrings",
3087
+ description: "Only allow selection of dates that lie within this range",
3088
+ advanced: true,
3089
+ validator: (value, ps) => {
3090
+ if (!value)
3091
+ return true;
3092
+ if (!Array.isArray(value) || value.length !== 2)
3093
+ return "Not an array with 2 items";
3094
+ if (!isValidIsoDate(value[0]) || !isValidIsoDate(value[1]))
3095
+ return "Min or max range is not in valid ISO date format.";
3096
+ return true;
3097
+ }
3098
+ },
3099
+ headerRender: {
3100
+ type: "slot",
3101
+ renderPropParams: ["headerProps"],
3102
+ hidePlaceholder: true,
3103
+ displayName: "Custom Header"
3104
+ },
3105
+ dateCellRender: {
3106
+ type: "slot",
3107
+ renderPropParams: ["dateProps"],
3108
+ hidePlaceholder: true,
3109
+ displayName: "Append Date Cell"
3110
+ },
3111
+ dateFullCellRender: {
3112
+ type: "slot",
3113
+ renderPropParams: ["dateProps"],
3114
+ hidePlaceholder: true,
3115
+ displayName: "Custom Date Cell"
3116
+ },
3117
+ monthCellRender: {
3118
+ type: "slot",
3119
+ renderPropParams: ["dateProps"],
3120
+ hidePlaceholder: true,
3121
+ displayName: "Append Month Cell"
3122
+ },
3123
+ monthFullCellRender: {
3124
+ type: "slot",
3125
+ renderPropParams: ["dateProps"],
3126
+ hidePlaceholder: true,
3127
+ displayName: "Custom Month Cell"
3128
+ },
3129
+ onPanelChange: {
3130
+ type: "eventHandler",
3131
+ description: "Triggers when the calendar mode changes (e.g. from month to year mode)",
3132
+ argTypes: [
3133
+ { name: "date", type: "object" },
3134
+ { name: "mode", type: "string" }
3135
+ ]
3136
+ },
3137
+ onChange: {
3138
+ type: "eventHandler",
3139
+ argTypes: [{ name: "date", type: "object" }]
3140
+ }
3141
+ },
3142
+ states: {
3143
+ mode: __spreadValues({
3144
+ type: "writable",
3145
+ valueProp: "mode",
3146
+ onChangeProp: "onPanelChange",
3147
+ variableType: "text"
3148
+ }, calendarHelpers.states.mode),
3149
+ selectedDate: __spreadValues({
3150
+ type: "writable",
3151
+ valueProp: "value",
3152
+ onChangeProp: "onChange",
3153
+ variableType: "text"
3154
+ }, calendarHelpers.states.selectedDate)
3155
+ },
3156
+ componentHelpers: {
3157
+ helpers: calendarHelpers,
3158
+ importName: "calendarHelpers",
3159
+ importPath: "@plasmicpkgs/plasmic-rich-components"
3160
+ },
3161
+ importPath: "@plasmicpkgs/plasmic-rich-components",
3162
+ importName: "RichCalendar"
3163
+ });
3164
+ }
3165
+
2652
3166
  function registerAll(loader) {
2653
3167
  registerRichLayout(loader);
2654
3168
  registerRichList(loader);
2655
3169
  registerRichTable(loader);
2656
3170
  registerRichDetails(loader);
3171
+ registerRichCalendar(loader);
2657
3172
  }
2658
3173
 
2659
3174
  export { RichDetails, RichLayout, RichList, RichTable, commonProps, dataProp, deriveKeyOfRow, deriveRowKey, ensureArray, isInteractable, isLikeImage, onRowClickProp, registerAll, renderActions, rowActionsProp, tableHelpers, useSortedFilteredData };