@bpmn-io/form-js-viewer 1.10.0 → 1.11.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -665,6 +665,12 @@ const FormContext = preact.createContext({
665
665
  formId: null
666
666
  });
667
667
 
668
+ /**
669
+ * @template T
670
+ * @param {string} type
671
+ * @param {boolean} [strict=true]
672
+ * @returns {T | null}
673
+ */
668
674
  function useService(type, strict) {
669
675
  const {
670
676
  getService
@@ -743,11 +749,10 @@ function buildExpressionContext(context) {
743
749
  }
744
750
 
745
751
  /**
746
- * Evaluate a string based on the expressionLanguage and context information.
747
- * If the string is not an expression, it is returned as is.
752
+ * If the value is a valid expression, it is evaluated and returned. Otherwise, it is returned as-is.
748
753
  *
749
754
  * @param {any} expressionLanguage - The expression language to use.
750
- * @param {string} value - The string to evaluate.
755
+ * @param {any} value - The static value or expression to evaluate.
751
756
  * @param {Object} expressionContextInfo - The context information to use.
752
757
  * @returns {any} - Evaluated value or the original value if not an expression.
753
758
  */
@@ -878,11 +883,10 @@ function _isAllowedValue(value) {
878
883
  }
879
884
 
880
885
  /**
881
- * Evaluate a string reactively based on the expressionLanguage and form data.
882
- * If the string is not an expression, it is returned as is.
886
+ * If the value is a valid expression, it is evaluated and returned. Otherwise, it is returned as-is.
883
887
  * The function is memoized to minimize re-renders.
884
888
  *
885
- * @param {string} value - The string to evaluate.
889
+ * @param {any} value - A static value or expression to evaluate.
886
890
  * @returns {any} - Evaluated value or the original value if not an expression.
887
891
  */
888
892
  function useExpressionEvaluation(value) {
@@ -1122,7 +1126,7 @@ function _isElementScrollable(el) {
1122
1126
  }
1123
1127
 
1124
1128
  const EMPTY_OBJECT = {};
1125
- const EMPTY_ARRAY = [];
1129
+ const EMPTY_ARRAY$2 = [];
1126
1130
 
1127
1131
  /**
1128
1132
  * Custom hook to scroll an element within a scrollable container.
@@ -1138,7 +1142,7 @@ const EMPTY_ARRAY = [];
1138
1142
  */
1139
1143
  function useScrollIntoView(scrolledElementRef, deps, scrollOptions, flagRefs) {
1140
1144
  const _scrollOptions = scrollOptions || EMPTY_OBJECT;
1141
- const _flagRefs = flagRefs || EMPTY_ARRAY;
1145
+ const _flagRefs = flagRefs || EMPTY_ARRAY$2;
1142
1146
  hooks.useEffect(() => {
1143
1147
  // return early if flags are not raised, or component is not mounted
1144
1148
  if (minDash.some(_flagRefs, ref => !ref.current) || !scrolledElementRef.current) {
@@ -1192,6 +1196,23 @@ function _getTopOffset(item, scrollContainer, options) {
1192
1196
  return 0;
1193
1197
  }
1194
1198
 
1199
+ /**
1200
+ * If the value is a valid expression, we evaluate it. Otherwise, we continue with the value as-is.
1201
+ * If the resulting value isn't a boolean, we return 'false'
1202
+ * The function is memoized to minimize re-renders.
1203
+ *
1204
+ * @param {boolean | string} value - A static boolean or expression to evaluate.
1205
+ * @returns {boolean} - Evaluated boolean result.
1206
+ */
1207
+ function useBooleanExpressionEvaluation(value) {
1208
+ const expressionLanguage = useService('expressionLanguage');
1209
+ const expressionContextInfo = hooks.useContext(LocalExpressionContext);
1210
+ return hooks.useMemo(() => {
1211
+ const evaluationResult = runExpressionEvaluation(expressionLanguage, value, expressionContextInfo);
1212
+ return typeof evaluationResult === 'boolean' ? evaluationResult : false;
1213
+ }, [expressionLanguage, expressionContextInfo, value]);
1214
+ }
1215
+
1195
1216
  /**
1196
1217
  * Returns the conditionally filtered data of a form reactively.
1197
1218
  * Memoised to minimize re-renders
@@ -1676,7 +1697,7 @@ function useCleanupMultiSelectValue(props) {
1676
1697
  }, [field, options, onChange, memoizedValues, loadState]);
1677
1698
  }
1678
1699
 
1679
- const type$h = 'button';
1700
+ const type$i = 'button';
1680
1701
  function Button(props) {
1681
1702
  const {
1682
1703
  disabled,
@@ -1691,7 +1712,7 @@ function Button(props) {
1691
1712
  debug: true
1692
1713
  });
1693
1714
  return jsxRuntime.jsx("div", {
1694
- class: formFieldClasses(type$h),
1715
+ class: formFieldClasses(type$i),
1695
1716
  children: jsxRuntime.jsx("button", {
1696
1717
  class: "fjs-button",
1697
1718
  type: action,
@@ -1703,7 +1724,7 @@ function Button(props) {
1703
1724
  });
1704
1725
  }
1705
1726
  Button.config = {
1706
- type: type$h,
1727
+ type: type$i,
1707
1728
  keyed: false,
1708
1729
  label: 'Button',
1709
1730
  group: 'action',
@@ -1778,7 +1799,7 @@ function Label(props) {
1778
1799
  });
1779
1800
  }
1780
1801
 
1781
- const type$g = 'checkbox';
1802
+ const type$h = 'checkbox';
1782
1803
  function Checkbox(props) {
1783
1804
  const {
1784
1805
  disabled,
@@ -1808,7 +1829,7 @@ function Checkbox(props) {
1808
1829
  const descriptionId = `${domId}-description`;
1809
1830
  const errorMessageId = `${domId}-error-message`;
1810
1831
  return jsxRuntime.jsxs("div", {
1811
- class: classNames(formFieldClasses(type$g, {
1832
+ class: classNames(formFieldClasses(type$h, {
1812
1833
  errors,
1813
1834
  disabled,
1814
1835
  readonly
@@ -1843,7 +1864,7 @@ function Checkbox(props) {
1843
1864
  });
1844
1865
  }
1845
1866
  Checkbox.config = {
1846
- type: type$g,
1867
+ type: type$h,
1847
1868
  keyed: true,
1848
1869
  label: 'Checkbox',
1849
1870
  group: 'selection',
@@ -1856,7 +1877,7 @@ Checkbox.config = {
1856
1877
  })
1857
1878
  };
1858
1879
 
1859
- const type$f = 'checklist';
1880
+ const type$g = 'checklist';
1860
1881
  function Checklist(props) {
1861
1882
  const {
1862
1883
  disabled,
@@ -1909,7 +1930,7 @@ function Checklist(props) {
1909
1930
  const descriptionId = `${domId}-description`;
1910
1931
  const errorMessageId = `${domId}-error-message`;
1911
1932
  return jsxRuntime.jsxs("div", {
1912
- class: classNames(formFieldClasses(type$f, {
1933
+ class: classNames(formFieldClasses(type$g, {
1913
1934
  errors,
1914
1935
  disabled,
1915
1936
  readonly
@@ -1953,7 +1974,7 @@ function Checklist(props) {
1953
1974
  });
1954
1975
  }
1955
1976
  Checklist.config = {
1956
- type: type$f,
1977
+ type: type$g,
1957
1978
  keyed: true,
1958
1979
  label: 'Checkbox group',
1959
1980
  group: 'selection',
@@ -1963,7 +1984,9 @@ Checklist.config = {
1963
1984
  };
1964
1985
 
1965
1986
  const noop$1 = () => false;
1987
+ const ids$2 = new Ids([32, 36, 1]);
1966
1988
  function FormField(props) {
1989
+ const instanceIdRef = hooks.useRef(ids$2.next());
1967
1990
  const {
1968
1991
  field,
1969
1992
  indexes,
@@ -2009,22 +2032,28 @@ function FormField(props) {
2009
2032
  // add precedence: global readonly > form field disabled
2010
2033
  const disabled = !properties.readOnly && (properties.disabled || field.disabled || false);
2011
2034
  const hidden = useCondition(field.conditional && field.conditional.hide || null);
2012
- const fieldInstance = hooks.useMemo(() => ({
2013
- id: field.id,
2014
- expressionContextInfo: localExpressionContext,
2015
- valuePath,
2016
- indexes
2017
- }), [field.id, valuePath, localExpressionContext, indexes]);
2035
+ const instanceId = hooks.useMemo(() => {
2036
+ if (!formFieldInstanceRegistry) {
2037
+ return null;
2038
+ }
2039
+ return formFieldInstanceRegistry.syncInstance(instanceIdRef.current, {
2040
+ id: field.id,
2041
+ expressionContextInfo: localExpressionContext,
2042
+ valuePath,
2043
+ value,
2044
+ indexes,
2045
+ hidden
2046
+ });
2047
+ }, [formFieldInstanceRegistry, field.id, localExpressionContext, valuePath, value, indexes, hidden]);
2048
+ const fieldInstance = instanceId ? formFieldInstanceRegistry.get(instanceId) : null;
2018
2049
 
2019
- // register form field instance
2050
+ // cleanup the instance on unmount
2020
2051
  hooks.useEffect(() => {
2021
- if (formFieldInstanceRegistry && !hidden) {
2022
- const instanceId = formFieldInstanceRegistry.add(fieldInstance);
2023
- return () => {
2024
- formFieldInstanceRegistry.remove(instanceId);
2025
- };
2052
+ const instanceId = instanceIdRef.current;
2053
+ if (formFieldInstanceRegistry) {
2054
+ return () => formFieldInstanceRegistry.cleanupInstance(instanceId);
2026
2055
  }
2027
- }, [fieldInstance, formFieldInstanceRegistry, hidden]);
2056
+ }, [formFieldInstanceRegistry]);
2028
2057
 
2029
2058
  // ensures the initial validation behavior can be re-triggered upon form reset
2030
2059
  hooks.useEffect(() => {
@@ -2260,16 +2289,16 @@ Default.config = {
2260
2289
  })
2261
2290
  };
2262
2291
 
2263
- var _path$w;
2264
- function _extends$x() { _extends$x = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$x.apply(this, arguments); }
2292
+ var _path$x;
2293
+ function _extends$y() { _extends$y = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$y.apply(this, arguments); }
2265
2294
  var SvgCalendar = function SvgCalendar(props) {
2266
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$x({
2295
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$y({
2267
2296
  xmlns: "http://www.w3.org/2000/svg",
2268
2297
  width: 14,
2269
2298
  height: 15,
2270
2299
  fill: "none",
2271
2300
  viewBox: "0 0 28 30"
2272
- }, props), _path$w || (_path$w = /*#__PURE__*/React__namespace.createElement("path", {
2301
+ }, props), _path$x || (_path$x = /*#__PURE__*/React__namespace.createElement("path", {
2273
2302
  fill: "currentColor",
2274
2303
  fillRule: "evenodd",
2275
2304
  d: "M19 2H9V0H7v2H2a2 2 0 0 0-2 2v24a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2h-5V0h-2zM7 7V4H2v5h24V4h-5v3h-2V4H9v3zm-5 4v17h24V11z",
@@ -2534,16 +2563,16 @@ function Datepicker(props) {
2534
2563
  });
2535
2564
  }
2536
2565
 
2537
- var _path$v, _path2$4;
2538
- function _extends$w() { _extends$w = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$w.apply(this, arguments); }
2566
+ var _path$w, _path2$4;
2567
+ function _extends$x() { _extends$x = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$x.apply(this, arguments); }
2539
2568
  var SvgClock = function SvgClock(props) {
2540
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$w({
2569
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$x({
2541
2570
  xmlns: "http://www.w3.org/2000/svg",
2542
2571
  width: 16,
2543
2572
  height: 16,
2544
2573
  fill: "none",
2545
2574
  viewBox: "0 0 28 29"
2546
- }, props), _path$v || (_path$v = /*#__PURE__*/React__namespace.createElement("path", {
2575
+ }, props), _path$w || (_path$w = /*#__PURE__*/React__namespace.createElement("path", {
2547
2576
  fill: "currentColor",
2548
2577
  d: "M13 14.41 18.59 20 20 18.59l-5-5.01V5h-2z"
2549
2578
  })), _path2$4 || (_path2$4 = /*#__PURE__*/React__namespace.createElement("path", {
@@ -2812,7 +2841,7 @@ function Timepicker(props) {
2812
2841
  });
2813
2842
  }
2814
2843
 
2815
- const type$e = 'datetime';
2844
+ const type$f = 'datetime';
2816
2845
  function Datetime(props) {
2817
2846
  const {
2818
2847
  disabled,
@@ -2981,7 +3010,7 @@ function Datetime(props) {
2981
3010
  'aria-describedby': [descriptionId, errorMessageId].join(' ')
2982
3011
  };
2983
3012
  return jsxRuntime.jsxs("div", {
2984
- class: formFieldClasses(type$e, {
3013
+ class: formFieldClasses(type$f, {
2985
3014
  errors: allErrors,
2986
3015
  disabled,
2987
3016
  readonly
@@ -3006,7 +3035,7 @@ function Datetime(props) {
3006
3035
  });
3007
3036
  }
3008
3037
  Datetime.config = {
3009
- type: type$e,
3038
+ type: type$f,
3010
3039
  keyed: true,
3011
3040
  label: 'Date time',
3012
3041
  group: 'basic-input',
@@ -3066,7 +3095,7 @@ Group.config = {
3066
3095
  })
3067
3096
  };
3068
3097
 
3069
- const type$d = 'iframe';
3098
+ const type$e = 'iframe';
3070
3099
  const DEFAULT_HEIGHT = 300;
3071
3100
  function IFrame(props) {
3072
3101
  const {
@@ -3096,7 +3125,7 @@ function IFrame(props) {
3096
3125
  setIframeRefresh(count => count + 1);
3097
3126
  }, [sandbox, allow]);
3098
3127
  return jsxRuntime.jsxs("div", {
3099
- class: formFieldClasses(type$d, {
3128
+ class: formFieldClasses(type$e, {
3100
3129
  disabled,
3101
3130
  readonly
3102
3131
  }),
@@ -3131,7 +3160,7 @@ function IFramePlaceholder(props) {
3131
3160
  });
3132
3161
  }
3133
3162
  IFrame.config = {
3134
- type: type$d,
3163
+ type: type$e,
3135
3164
  keyed: false,
3136
3165
  label: 'iFrame',
3137
3166
  group: 'container',
@@ -3143,42 +3172,42 @@ IFrame.config = {
3143
3172
  })
3144
3173
  };
3145
3174
 
3146
- var _path$u;
3147
- function _extends$v() { _extends$v = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$v.apply(this, arguments); }
3175
+ var _path$v;
3176
+ function _extends$w() { _extends$w = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$w.apply(this, arguments); }
3148
3177
  var SvgButton = function SvgButton(props) {
3149
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$v({
3178
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$w({
3150
3179
  xmlns: "http://www.w3.org/2000/svg",
3151
3180
  width: 54,
3152
3181
  height: 54,
3153
3182
  fill: "currentcolor"
3154
- }, props), _path$u || (_path$u = /*#__PURE__*/React__namespace.createElement("path", {
3183
+ }, props), _path$v || (_path$v = /*#__PURE__*/React__namespace.createElement("path", {
3155
3184
  fillRule: "evenodd",
3156
3185
  d: "M45 17a3 3 0 0 1 3 3v14a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V20a3 3 0 0 1 3-3zm-9 8.889H18v2.222h18z"
3157
3186
  })));
3158
3187
  };
3159
3188
 
3160
- var _path$t;
3161
- function _extends$u() { _extends$u = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$u.apply(this, arguments); }
3189
+ var _path$u;
3190
+ function _extends$v() { _extends$v = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$v.apply(this, arguments); }
3162
3191
  var SvgCheckbox = function SvgCheckbox(props) {
3163
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$u({
3192
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$v({
3164
3193
  xmlns: "http://www.w3.org/2000/svg",
3165
3194
  width: 54,
3166
3195
  height: 54,
3167
3196
  fill: "currentcolor"
3168
- }, props), _path$t || (_path$t = /*#__PURE__*/React__namespace.createElement("path", {
3197
+ }, props), _path$u || (_path$u = /*#__PURE__*/React__namespace.createElement("path", {
3169
3198
  d: "M34 18H20a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V20a2 2 0 0 0-2-2m-9 14-5-5 1.41-1.41L25 29.17l7.59-7.59L34 23z"
3170
3199
  })));
3171
3200
  };
3172
3201
 
3173
- var _path$s;
3174
- function _extends$t() { _extends$t = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$t.apply(this, arguments); }
3202
+ var _path$t;
3203
+ function _extends$u() { _extends$u = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$u.apply(this, arguments); }
3175
3204
  var SvgChecklist = function SvgChecklist(props) {
3176
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$t({
3205
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$u({
3177
3206
  xmlns: "http://www.w3.org/2000/svg",
3178
3207
  width: 54,
3179
3208
  height: 54,
3180
3209
  fill: "none"
3181
- }, props), _path$s || (_path$s = /*#__PURE__*/React__namespace.createElement("path", {
3210
+ }, props), _path$t || (_path$t = /*#__PURE__*/React__namespace.createElement("path", {
3182
3211
  fill: "currentColor",
3183
3212
  fillRule: "evenodd",
3184
3213
  d: "M14.35 24.75H19v4.65h-4.65zm-1.414-1.414a2 2 0 0 1 1.414-.586H19a2 2 0 0 1 2 2v4.65a2 2 0 0 1-2 2h-4.65a2 2 0 0 1-2-2v-4.65a2 2 0 0 1 .586-1.414M14.35 37.05H19v4.65h-4.65zm-1.414-1.414a2 2 0 0 1 1.414-.586H19a2 2 0 0 1 2 2v4.65a2 2 0 0 1-2 2h-4.65a2 2 0 0 1-2-2v-4.65a2 2 0 0 1 .586-1.414M14.35 12.45H19v4.65h-4.65zm-1.414-1.414a2 2 0 0 1 1.414-.586H19a2 2 0 0 1 2 2v4.65a2 2 0 0 1-2 2h-4.65a2 2 0 0 1-2-2v-4.65a2 2 0 0 1 .586-1.414m12.007 14.977a1 1 0 0 0-.293.707v.65a1 1 0 0 0 1 1h15a1 1 0 0 0 1-1v-.65a1 1 0 0 0-1-1h-15a1 1 0 0 0-.707.293m0 12.3a1 1 0 0 0-.293.707v.65a1 1 0 0 0 1 1h15a1 1 0 0 0 1-1v-.65a1 1 0 0 0-1-1h-15a1 1 0 0 0-.707.293m0-24.6a1 1 0 0 0-.293.707v.65a1 1 0 0 0 1 1h15a1 1 0 0 0 1-1v-.65a1 1 0 0 0-1-1h-15a1 1 0 0 0-.707.293",
@@ -3186,15 +3215,15 @@ var SvgChecklist = function SvgChecklist(props) {
3186
3215
  })));
3187
3216
  };
3188
3217
 
3189
- var _path$r, _path2$3, _path3;
3190
- function _extends$s() { _extends$s = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$s.apply(this, arguments); }
3218
+ var _path$s, _path2$3, _path3;
3219
+ function _extends$t() { _extends$t = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$t.apply(this, arguments); }
3191
3220
  var SvgDatetime = function SvgDatetime(props) {
3192
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$s({
3221
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$t({
3193
3222
  xmlns: "http://www.w3.org/2000/svg",
3194
3223
  width: 54,
3195
3224
  height: 54,
3196
3225
  fill: "currentcolor"
3197
- }, props), _path$r || (_path$r = /*#__PURE__*/React__namespace.createElement("path", {
3226
+ }, props), _path$s || (_path$s = /*#__PURE__*/React__namespace.createElement("path", {
3198
3227
  fillRule: "evenodd",
3199
3228
  d: "M37.908 13.418h-5.004v-2.354h-1.766v2.354H21.13v-2.354h-1.766v2.354H14.36a2.07 2.07 0 0 0-2.06 2.06v23.549a2.07 2.07 0 0 0 2.06 2.06h6.77v-1.766h-6.358a.707.707 0 0 1-.706-.706V15.89c0-.39.316-.707.706-.707h4.592v2.355h1.766v-2.355h10.008v2.355h1.766v-2.355h4.592a.71.71 0 0 1 .707.707v6.358h1.765v-6.77c0-1.133-.927-2.06-2.06-2.06"
3200
3229
  })), _path2$3 || (_path2$3 = /*#__PURE__*/React__namespace.createElement("path", {
@@ -3205,15 +3234,15 @@ var SvgDatetime = function SvgDatetime(props) {
3205
3234
  })));
3206
3235
  };
3207
3236
 
3208
- var _path$q, _path2$2;
3209
- function _extends$r() { _extends$r = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$r.apply(this, arguments); }
3237
+ var _path$r, _path2$2;
3238
+ function _extends$s() { _extends$s = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$s.apply(this, arguments); }
3210
3239
  var SvgTaglist = function SvgTaglist(props) {
3211
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$r({
3240
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$s({
3212
3241
  xmlns: "http://www.w3.org/2000/svg",
3213
3242
  width: 54,
3214
3243
  height: 54,
3215
3244
  fill: "currentcolor"
3216
- }, props), _path$q || (_path$q = /*#__PURE__*/React__namespace.createElement("path", {
3245
+ }, props), _path$r || (_path$r = /*#__PURE__*/React__namespace.createElement("path", {
3217
3246
  fillRule: "evenodd",
3218
3247
  d: "M45 16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V19a3 3 0 0 1 3-3zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1"
3219
3248
  })), _path2$2 || (_path2$2 = /*#__PURE__*/React__namespace.createElement("path", {
@@ -3222,9 +3251,9 @@ var SvgTaglist = function SvgTaglist(props) {
3222
3251
  };
3223
3252
 
3224
3253
  var _rect, _rect2, _rect3;
3225
- function _extends$q() { _extends$q = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$q.apply(this, arguments); }
3254
+ function _extends$r() { _extends$r = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$r.apply(this, arguments); }
3226
3255
  var SvgForm = function SvgForm(props) {
3227
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$q({
3256
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$r({
3228
3257
  xmlns: "http://www.w3.org/2000/svg",
3229
3258
  width: 54,
3230
3259
  height: 54
@@ -3249,15 +3278,15 @@ var SvgForm = function SvgForm(props) {
3249
3278
  })));
3250
3279
  };
3251
3280
 
3252
- var _path$p;
3253
- function _extends$p() { _extends$p = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$p.apply(this, arguments); }
3281
+ var _path$q;
3282
+ function _extends$q() { _extends$q = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$q.apply(this, arguments); }
3254
3283
  var SvgGroup = function SvgGroup(props) {
3255
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$p({
3284
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$q({
3256
3285
  xmlns: "http://www.w3.org/2000/svg",
3257
3286
  width: 54,
3258
3287
  height: 54,
3259
3288
  fill: "none"
3260
- }, props), _path$p || (_path$p = /*#__PURE__*/React__namespace.createElement("path", {
3289
+ }, props), _path$q || (_path$q = /*#__PURE__*/React__namespace.createElement("path", {
3261
3290
  fill: "#000",
3262
3291
  fillRule: "evenodd",
3263
3292
  d: "M4.05 42.132v1.164c0 .693.604 1.254 1.35 1.254h1.35v-2.507h-2.7v.09Zm0-2.328h2.7v-2.328h-2.7zm0-4.656h2.7V32.82h-2.7zm0-4.656h2.7v-2.328h-2.7zm0-4.656h2.7v-2.328h-2.7zm0-4.656h2.7v-2.328h-2.7zm0-4.656h2.7v-2.328h-2.7zm0-4.656v.09h2.7V9.45H5.4c-.746 0-1.35.561-1.35 1.254zm5.4-2.418v2.507h2.7V9.45zm5.4 0v2.507h2.7V9.45zm5.4 0v2.507h2.7V9.45zm5.4 0v2.507h2.7V9.45zm5.4 0v2.507h2.7V9.45zm5.4 0v2.507h2.7V9.45zm5.4 0v2.507h2.7V9.45zm5.4 0v2.507h2.7v-1.253c0-.693-.604-1.254-1.35-1.254zm2.7 4.746h-2.7v2.328h2.7zm0 4.656h-2.7v2.328h2.7zm0 4.656h-2.7v2.328h2.7zm0 4.656h-2.7v2.328h2.7zm0 4.656h-2.7v2.328h2.7zm0 4.656h-2.7v2.328h2.7zm0 4.656v-.09h-2.7v2.508h1.35c.746 0 1.35-.561 1.35-1.254zm-5.4 2.418v-2.507h-2.7v2.507zm-5.4 0v-2.507h-2.7v2.507zm-5.4 0v-2.507h-2.7v2.507zm-5.4 0v-2.507h-2.7v2.507zm-5.4 0v-2.507h-2.7v2.507zm-5.4 0v-2.507h-2.7v2.507zm-5.4 0v-2.507h-2.7v2.507z",
@@ -3265,50 +3294,64 @@ var SvgGroup = function SvgGroup(props) {
3265
3294
  })));
3266
3295
  };
3267
3296
 
3297
+ var _path$p;
3298
+ function _extends$p() { _extends$p = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$p.apply(this, arguments); }
3299
+ var SvgNumber = function SvgNumber(props) {
3300
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$p({
3301
+ xmlns: "http://www.w3.org/2000/svg",
3302
+ width: 54,
3303
+ height: 54,
3304
+ fill: "currentcolor"
3305
+ }, props), _path$p || (_path$p = /*#__PURE__*/React__namespace.createElement("path", {
3306
+ fillRule: "evenodd",
3307
+ d: "M45 16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V19a3 3 0 0 1 3-3zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1M35 28.444h7l-3.5 4zM35 26h7l-3.5-4z"
3308
+ })));
3309
+ };
3310
+
3268
3311
  var _path$o;
3269
3312
  function _extends$o() { _extends$o = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$o.apply(this, arguments); }
3270
- var SvgNumber = function SvgNumber(props) {
3313
+ var SvgRadio = function SvgRadio(props) {
3271
3314
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$o({
3272
3315
  xmlns: "http://www.w3.org/2000/svg",
3273
3316
  width: 54,
3274
3317
  height: 54,
3275
3318
  fill: "currentcolor"
3276
3319
  }, props), _path$o || (_path$o = /*#__PURE__*/React__namespace.createElement("path", {
3277
- fillRule: "evenodd",
3278
- d: "M45 16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V19a3 3 0 0 1 3-3zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1M35 28.444h7l-3.5 4zM35 26h7l-3.5-4z"
3320
+ d: "M27 22c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5m0-5c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10m0 18a8 8 0 1 1 0-16 8 8 0 1 1 0 16"
3279
3321
  })));
3280
3322
  };
3281
3323
 
3282
3324
  var _path$n;
3283
3325
  function _extends$n() { _extends$n = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$n.apply(this, arguments); }
3284
- var SvgRadio = function SvgRadio(props) {
3326
+ var SvgSelect = function SvgSelect(props) {
3285
3327
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$n({
3286
3328
  xmlns: "http://www.w3.org/2000/svg",
3287
3329
  width: 54,
3288
3330
  height: 54,
3289
3331
  fill: "currentcolor"
3290
3332
  }, props), _path$n || (_path$n = /*#__PURE__*/React__namespace.createElement("path", {
3291
- d: "M27 22c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5m0-5c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10m0 18a8 8 0 1 1 0-16 8 8 0 1 1 0 16"
3333
+ fillRule: "evenodd",
3334
+ d: "M45 16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V19a3 3 0 0 1 3-3zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1m-12 7h9l-4.5 6z"
3292
3335
  })));
3293
3336
  };
3294
3337
 
3295
3338
  var _path$m;
3296
3339
  function _extends$m() { _extends$m = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$m.apply(this, arguments); }
3297
- var SvgSelect = function SvgSelect(props) {
3340
+ var SvgSeparator = function SvgSeparator(props) {
3298
3341
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$m({
3299
3342
  xmlns: "http://www.w3.org/2000/svg",
3300
3343
  width: 54,
3301
3344
  height: 54,
3302
- fill: "currentcolor"
3345
+ fill: "none"
3303
3346
  }, props), _path$m || (_path$m = /*#__PURE__*/React__namespace.createElement("path", {
3304
- fillRule: "evenodd",
3305
- d: "M45 16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V19a3 3 0 0 1 3-3zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1m-12 7h9l-4.5 6z"
3347
+ fill: "currentColor",
3348
+ d: "M26.293 16.293a1 1 0 0 1 1.414 0l4 4a1 1 0 0 1-1.414 1.414L27 18.414l-3.293 3.293a1 1 0 0 1-1.414-1.414zM9 26h36v2H9zm13.293 7.707 4 4a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L27 35.586l-3.293-3.293a1 1 0 0 0-1.414 1.414"
3306
3349
  })));
3307
3350
  };
3308
3351
 
3309
3352
  var _path$l;
3310
3353
  function _extends$l() { _extends$l = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$l.apply(this, arguments); }
3311
- var SvgSeparator = function SvgSeparator(props) {
3354
+ var SvgSpacer = function SvgSpacer(props) {
3312
3355
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$l({
3313
3356
  xmlns: "http://www.w3.org/2000/svg",
3314
3357
  width: 54,
@@ -3316,13 +3359,13 @@ var SvgSeparator = function SvgSeparator(props) {
3316
3359
  fill: "none"
3317
3360
  }, props), _path$l || (_path$l = /*#__PURE__*/React__namespace.createElement("path", {
3318
3361
  fill: "currentColor",
3319
- d: "M26.293 16.293a1 1 0 0 1 1.414 0l4 4a1 1 0 0 1-1.414 1.414L27 18.414l-3.293 3.293a1 1 0 0 1-1.414-1.414zM9 26h36v2H9zm13.293 7.707 4 4a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L27 35.586l-3.293-3.293a1 1 0 0 0-1.414 1.414"
3362
+ d: "M9 15v2h36v-2zm0 22v2h36v-2zm17.293-17.707a1 1 0 0 1 1.414 0l4 4a1 1 0 0 1-1.414 1.414L27 21.414l-3.293 3.293a1 1 0 0 1-1.414-1.414zm-4 11.414 4 4a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L27 32.586l-3.293-3.293a1 1 0 0 0-1.414 1.414"
3320
3363
  })));
3321
3364
  };
3322
3365
 
3323
3366
  var _path$k;
3324
3367
  function _extends$k() { _extends$k = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$k.apply(this, arguments); }
3325
- var SvgSpacer = function SvgSpacer(props) {
3368
+ var SvgDynamicList = function SvgDynamicList(props) {
3326
3369
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$k({
3327
3370
  xmlns: "http://www.w3.org/2000/svg",
3328
3371
  width: 54,
@@ -3330,74 +3373,74 @@ var SvgSpacer = function SvgSpacer(props) {
3330
3373
  fill: "none"
3331
3374
  }, props), _path$k || (_path$k = /*#__PURE__*/React__namespace.createElement("path", {
3332
3375
  fill: "currentColor",
3333
- d: "M9 15v2h36v-2zm0 22v2h36v-2zm17.293-17.707a1 1 0 0 1 1.414 0l4 4a1 1 0 0 1-1.414 1.414L27 21.414l-3.293 3.293a1 1 0 0 1-1.414-1.414zm-4 11.414 4 4a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L27 32.586l-3.293-3.293a1 1 0 0 0-1.414 1.414"
3376
+ fillRule: "evenodd",
3377
+ d: "M2.7 43.296v1.254c0 .746.604 1.35 1.35 1.35h1.275v-1.795q.074.211.075.445v-1.254h-.075V43.2H4.05c.177 0 .347.034.502.096zm2.7-2.507v-2.507H2.7v2.507zm0-5.014v-2.507H2.7v2.507zm0-5.014v-2.507H2.7v2.507zm0-5.015V23.24H2.7v2.507h2.7Zm0-5.014v-2.507H2.7v2.507zm0-5.014V13.21H2.7v2.507zm-2.7-5.014h1.852a1.4 1.4 0 0 1-.502.096h1.275v-.096H5.4V9.45q0 .235-.075.445V8.1H4.05A1.35 1.35 0 0 0 2.7 9.45zm5.175.096h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1-2.7v1.795a1.4 1.4 0 0 1-.075-.445v1.254h.075v.096h1.275a1.4 1.4 0 0 1-.502-.096H51.3V9.45a1.35 1.35 0 0 0-1.35-1.35zm-.075 5.11v2.508h2.7V13.21zm0 5.015v2.507h2.7v-2.507zm0 5.014v2.507h2.7V23.24zm0 5.015v2.507h2.7v-2.507zm0 5.014v2.507h2.7v-2.507zm0 5.014v2.507h2.7v-2.507zm2.7 5.014h-1.852a1.4 1.4 0 0 1 .502-.096h-1.275v.096H48.6v1.254q0-.235.075-.445V45.9h1.275a1.35 1.35 0 0 0 1.35-1.35zm-5.175-.096h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zM16.2 17.55a4.05 4.05 0 0 1 4.05 4.05v1.35A4.05 4.05 0 0 1 16.2 27h-1.35a4.05 4.05 0 0 1-4.05-4.05V21.6a4.05 4.05 0 0 1 4.05-4.05zm0 2.7h-1.35a1.35 1.35 0 0 0-1.35 1.35v1.35c0 .746.604 1.35 1.35 1.35h1.35a1.35 1.35 0 0 0 1.35-1.35V21.6a1.35 1.35 0 0 0-1.35-1.35m27 1.35a4.05 4.05 0 0 0-4.05-4.05H29.7a4.05 4.05 0 0 0-4.05 4.05v1.35A4.05 4.05 0 0 0 29.7 27h9.45a4.05 4.05 0 0 0 4.05-4.05zm-13.5-1.35h9.45c.746 0 1.35.604 1.35 1.35v1.35a1.35 1.35 0 0 1-1.35 1.35H29.7a1.35 1.35 0 0 1-1.35-1.35V21.6c0-.746.604-1.35 1.35-1.35M43.2 37.8a4.05 4.05 0 0 0-4.05-4.05H29.7a4.05 4.05 0 0 0-4.05 4.05v1.35h2.7V37.8c0-.746.604-1.35 1.35-1.35h9.45c.746 0 1.35.604 1.35 1.35v1.35h2.7zm-27-4.05a4.05 4.05 0 0 1 4.05 4.05v1.35h-2.7V37.8a1.35 1.35 0 0 0-1.35-1.35h-1.35a1.35 1.35 0 0 0-1.35 1.35v1.35h-2.7V37.8a4.05 4.05 0 0 1 4.05-4.05z",
3378
+ clipRule: "evenodd"
3334
3379
  })));
3335
3380
  };
3336
3381
 
3337
3382
  var _path$j;
3338
3383
  function _extends$j() { _extends$j = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$j.apply(this, arguments); }
3339
- var SvgDynamicList = function SvgDynamicList(props) {
3384
+ var SvgText = function SvgText(props) {
3340
3385
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$j({
3341
3386
  xmlns: "http://www.w3.org/2000/svg",
3342
3387
  width: 54,
3343
3388
  height: 54,
3344
- fill: "none"
3389
+ fill: "currentcolor"
3345
3390
  }, props), _path$j || (_path$j = /*#__PURE__*/React__namespace.createElement("path", {
3346
- fill: "currentColor",
3347
- fillRule: "evenodd",
3348
- d: "M2.7 43.296v1.254c0 .746.604 1.35 1.35 1.35h1.275v-1.795q.074.211.075.445v-1.254h-.075V43.2H4.05c.177 0 .347.034.502.096zm2.7-2.507v-2.507H2.7v2.507zm0-5.014v-2.507H2.7v2.507zm0-5.014v-2.507H2.7v2.507zm0-5.015V23.24H2.7v2.507h2.7Zm0-5.014v-2.507H2.7v2.507zm0-5.014V13.21H2.7v2.507zm-2.7-5.014h1.852a1.4 1.4 0 0 1-.502.096h1.275v-.096H5.4V9.45q0 .235-.075.445V8.1H4.05A1.35 1.35 0 0 0 2.7 9.45zm5.175.096h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1 0h2.55V8.1h-2.55zm5.1-2.7v1.795a1.4 1.4 0 0 1-.075-.445v1.254h.075v.096h1.275a1.4 1.4 0 0 1-.502-.096H51.3V9.45a1.35 1.35 0 0 0-1.35-1.35zm-.075 5.11v2.508h2.7V13.21zm0 5.015v2.507h2.7v-2.507zm0 5.014v2.507h2.7V23.24zm0 5.015v2.507h2.7v-2.507zm0 5.014v2.507h2.7v-2.507zm0 5.014v2.507h2.7v-2.507zm2.7 5.014h-1.852a1.4 1.4 0 0 1 .502-.096h-1.275v.096H48.6v1.254q0-.235.075-.445V45.9h1.275a1.35 1.35 0 0 0 1.35-1.35zm-5.175-.096h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zm-5.1 0h-2.55v2.7h2.55zM16.2 17.55a4.05 4.05 0 0 1 4.05 4.05v1.35A4.05 4.05 0 0 1 16.2 27h-1.35a4.05 4.05 0 0 1-4.05-4.05V21.6a4.05 4.05 0 0 1 4.05-4.05zm0 2.7h-1.35a1.35 1.35 0 0 0-1.35 1.35v1.35c0 .746.604 1.35 1.35 1.35h1.35a1.35 1.35 0 0 0 1.35-1.35V21.6a1.35 1.35 0 0 0-1.35-1.35m27 1.35a4.05 4.05 0 0 0-4.05-4.05H29.7a4.05 4.05 0 0 0-4.05 4.05v1.35A4.05 4.05 0 0 0 29.7 27h9.45a4.05 4.05 0 0 0 4.05-4.05zm-13.5-1.35h9.45c.746 0 1.35.604 1.35 1.35v1.35a1.35 1.35 0 0 1-1.35 1.35H29.7a1.35 1.35 0 0 1-1.35-1.35V21.6c0-.746.604-1.35 1.35-1.35M43.2 37.8a4.05 4.05 0 0 0-4.05-4.05H29.7a4.05 4.05 0 0 0-4.05 4.05v1.35h2.7V37.8c0-.746.604-1.35 1.35-1.35h9.45c.746 0 1.35.604 1.35 1.35v1.35h2.7zm-27-4.05a4.05 4.05 0 0 1 4.05 4.05v1.35h-2.7V37.8a1.35 1.35 0 0 0-1.35-1.35h-1.35a1.35 1.35 0 0 0-1.35 1.35v1.35h-2.7V37.8a4.05 4.05 0 0 1 4.05-4.05z",
3349
- clipRule: "evenodd"
3391
+ d: "M20.58 33.77h-3l-1.18-3.08H11l-1.1 3.08H7l5.27-13.54h2.89zm-5-5.36-1.86-5-1.83 5zM22 20.23h5.41a15.5 15.5 0 0 1 2.4.14 3.4 3.4 0 0 1 1.41.55 3.5 3.5 0 0 1 1 1.14 3 3 0 0 1 .42 1.58 3.26 3.26 0 0 1-1.91 2.94 3.63 3.63 0 0 1 1.91 1.22 3.28 3.28 0 0 1 .66 2 4 4 0 0 1-.43 1.8 3.6 3.6 0 0 1-1.09 1.4 3.9 3.9 0 0 1-1.83.65q-.69.07-3.3.09H22zm2.73 2.25v3.13h3.8a1.8 1.8 0 0 0 1.1-.49 1.4 1.4 0 0 0 .41-1 1.5 1.5 0 0 0-.35-1 1.54 1.54 0 0 0-1-.48c-.27 0-1.05-.05-2.34-.05zm0 5.39v3.62h2.57a11.5 11.5 0 0 0 1.88-.09 1.65 1.65 0 0 0 1-.54 1.6 1.6 0 0 0 .38-1.14 1.75 1.75 0 0 0-.29-1 1.7 1.7 0 0 0-.86-.62 9.3 9.3 0 0 0-2.41-.23zm19.62.92 2.65.84a5.94 5.94 0 0 1-2 3.29A5.74 5.74 0 0 1 41.38 34a5.87 5.87 0 0 1-4.44-1.84 7.1 7.1 0 0 1-1.73-5A7.43 7.43 0 0 1 37 21.87 6 6 0 0 1 41.54 20a5.64 5.64 0 0 1 4 1.47A5.33 5.33 0 0 1 47 24l-2.7.65a2.8 2.8 0 0 0-2.86-2.27A3.09 3.09 0 0 0 39 23.42a5.3 5.3 0 0 0-.93 3.5 5.62 5.62 0 0 0 .93 3.65 3 3 0 0 0 2.4 1.09 2.72 2.72 0 0 0 1.82-.66 4 4 0 0 0 1.13-2.21"
3350
3392
  })));
3351
3393
  };
3352
3394
 
3353
3395
  var _path$i;
3354
3396
  function _extends$i() { _extends$i = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$i.apply(this, arguments); }
3355
- var SvgText = function SvgText(props) {
3397
+ var SvgHtml = function SvgHtml(props) {
3356
3398
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$i({
3357
3399
  xmlns: "http://www.w3.org/2000/svg",
3358
3400
  width: 54,
3359
3401
  height: 54,
3360
- fill: "currentcolor"
3402
+ fill: "none"
3361
3403
  }, props), _path$i || (_path$i = /*#__PURE__*/React__namespace.createElement("path", {
3362
- d: "M20.58 33.77h-3l-1.18-3.08H11l-1.1 3.08H7l5.27-13.54h2.89zm-5-5.36-1.86-5-1.83 5zM22 20.23h5.41a15.5 15.5 0 0 1 2.4.14 3.4 3.4 0 0 1 1.41.55 3.5 3.5 0 0 1 1 1.14 3 3 0 0 1 .42 1.58 3.26 3.26 0 0 1-1.91 2.94 3.63 3.63 0 0 1 1.91 1.22 3.28 3.28 0 0 1 .66 2 4 4 0 0 1-.43 1.8 3.6 3.6 0 0 1-1.09 1.4 3.9 3.9 0 0 1-1.83.65q-.69.07-3.3.09H22zm2.73 2.25v3.13h3.8a1.8 1.8 0 0 0 1.1-.49 1.4 1.4 0 0 0 .41-1 1.5 1.5 0 0 0-.35-1 1.54 1.54 0 0 0-1-.48c-.27 0-1.05-.05-2.34-.05zm0 5.39v3.62h2.57a11.5 11.5 0 0 0 1.88-.09 1.65 1.65 0 0 0 1-.54 1.6 1.6 0 0 0 .38-1.14 1.75 1.75 0 0 0-.29-1 1.7 1.7 0 0 0-.86-.62 9.3 9.3 0 0 0-2.41-.23zm19.62.92 2.65.84a5.94 5.94 0 0 1-2 3.29A5.74 5.74 0 0 1 41.38 34a5.87 5.87 0 0 1-4.44-1.84 7.1 7.1 0 0 1-1.73-5A7.43 7.43 0 0 1 37 21.87 6 6 0 0 1 41.54 20a5.64 5.64 0 0 1 4 1.47A5.33 5.33 0 0 1 47 24l-2.7.65a2.8 2.8 0 0 0-2.86-2.27A3.09 3.09 0 0 0 39 23.42a5.3 5.3 0 0 0-.93 3.5 5.62 5.62 0 0 0 .93 3.65 3 3 0 0 0 2.4 1.09 2.72 2.72 0 0 0 1.82-.66 4 4 0 0 0 1.13-2.21"
3404
+ fill: "currentColor",
3405
+ fillRule: "evenodd",
3406
+ d: "M47.008 12.15c1.625 0 2.942 1.36 2.942 3.039v23.622c0 1.678-1.317 3.039-2.942 3.039H6.992c-1.625 0-2.942-1.36-2.942-3.039V15.189c0-1.678 1.317-3.039 2.942-3.039zm0 2.026H6.992c-.542 0-.98.454-.98 1.013V16.2h-.004v2.7h.003v19.911c0 .56.44 1.013.98 1.013h40.017c.542 0 .98-.453.98-1.013V18.9h.005v-2.7h-.004v-1.011c0-.56-.44-1.013-.98-1.013M14.934 26.055v-3.78h2.194v9.45h-2.194v-3.78h-3.29v3.78H9.45v-9.45h2.194v3.78zm4.388-1.89h2.194v7.56h2.193v-7.56h2.194v-1.89h-6.581zm14.26-1.89h2.193v9.45h-2.194V25.11l-1.645 3.78-1.645-3.78v6.615h-2.194v-9.45h2.194l1.645 3.78zm4.387 0h2.194v7.56h4.387v1.89h-6.581z",
3407
+ clipRule: "evenodd"
3363
3408
  })));
3364
3409
  };
3365
3410
 
3366
3411
  var _path$h;
3367
3412
  function _extends$h() { _extends$h = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$h.apply(this, arguments); }
3368
- var SvgHtml = function SvgHtml(props) {
3413
+ var SvgExpressionField = function SvgExpressionField(props) {
3369
3414
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$h({
3370
3415
  xmlns: "http://www.w3.org/2000/svg",
3371
3416
  width: 54,
3372
3417
  height: 54,
3373
3418
  fill: "none"
3374
3419
  }, props), _path$h || (_path$h = /*#__PURE__*/React__namespace.createElement("path", {
3375
- fill: "currentColor",
3420
+ fill: "currentcolor",
3376
3421
  fillRule: "evenodd",
3377
- d: "M47.008 12.15c1.625 0 2.942 1.36 2.942 3.039v23.622c0 1.678-1.317 3.039-2.942 3.039H6.992c-1.625 0-2.942-1.36-2.942-3.039V15.189c0-1.678 1.317-3.039 2.942-3.039zm0 2.026H6.992c-.542 0-.98.454-.98 1.013V16.2h-.004v2.7h.003v19.911c0 .56.44 1.013.98 1.013h40.017c.542 0 .98-.453.98-1.013V18.9h.005v-2.7h-.004v-1.011c0-.56-.44-1.013-.98-1.013M14.934 26.055v-3.78h2.194v9.45h-2.194v-3.78h-3.29v3.78H9.45v-9.45h2.194v3.78zm4.388-1.89h2.194v7.56h2.193v-7.56h2.194v-1.89h-6.581zm14.26-1.89h2.193v9.45h-2.194V25.11l-1.645 3.78-1.645-3.78v6.615h-2.194v-9.45h2.194l1.645 3.78zm4.387 0h2.194v7.56h4.387v1.89h-6.581z",
3422
+ d: "M12.78 16.2v6.75c0 1.619-.635 3.059-1.618 4.05.983.991 1.618 2.431 1.618 4.05v6.75h3.51v2.7h-3.51c-1.289 0-2.34-1.213-2.34-2.7v-6.75c0-1.487-1.051-2.7-2.34-2.7v-2.7c1.289 0 2.34-1.213 2.34-2.7V16.2c0-1.487 1.051-2.7 2.34-2.7h3.51v2.7zm30.78 0v6.75c0 1.487 1.051 2.7 2.34 2.7v2.7c-1.289 0-2.34 1.213-2.34 2.7v6.75c0 1.487-1.051 2.7-2.34 2.7h-3.51v-2.7h3.51v-6.75c0-1.619.635-3.059 1.618-4.05-.983-.991-1.618-2.431-1.618-4.05V16.2h-3.51v-2.7h3.51c1.289 0 2.34 1.213 2.34 2.7M21.8 34.531q.7-.569.959-1.758l1.788-8.34h1.585l.387-1.828h-1.585l.405-1.878h1.585l.387-1.827H25.69q-1.271 0-1.972.569-.681.569-.94 1.758l-.294 1.378H21.34l-.387 1.827h1.142l-1.898 8.841h-1.585l-.387 1.827h1.622q1.272 0 1.953-.569m7.248-7.686-3.797 4.808h2.599l2.12-3.016h.22l.885 3.016h2.599l-1.677-4.36 3.778-4.688h-2.599l-2.12 2.947h-.22l-.885-2.947h-2.599z",
3378
3423
  clipRule: "evenodd"
3379
3424
  })));
3380
3425
  };
3381
3426
 
3382
3427
  var _path$g;
3383
3428
  function _extends$g() { _extends$g = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$g.apply(this, arguments); }
3384
- var SvgExpressionField = function SvgExpressionField(props) {
3429
+ var SvgTextfield = function SvgTextfield(props) {
3385
3430
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$g({
3386
3431
  xmlns: "http://www.w3.org/2000/svg",
3387
3432
  width: 54,
3388
3433
  height: 54,
3389
- fill: "none"
3434
+ fill: "currentcolor"
3390
3435
  }, props), _path$g || (_path$g = /*#__PURE__*/React__namespace.createElement("path", {
3391
- fill: "currentcolor",
3392
3436
  fillRule: "evenodd",
3393
- d: "M12.78 16.2v6.75c0 1.619-.635 3.059-1.618 4.05.983.991 1.618 2.431 1.618 4.05v6.75h3.51v2.7h-3.51c-1.289 0-2.34-1.213-2.34-2.7v-6.75c0-1.487-1.051-2.7-2.34-2.7v-2.7c1.289 0 2.34-1.213 2.34-2.7V16.2c0-1.487 1.051-2.7 2.34-2.7h3.51v2.7zm30.78 0v6.75c0 1.487 1.051 2.7 2.34 2.7v2.7c-1.289 0-2.34 1.213-2.34 2.7v6.75c0 1.487-1.051 2.7-2.34 2.7h-3.51v-2.7h3.51v-6.75c0-1.619.635-3.059 1.618-4.05-.983-.991-1.618-2.431-1.618-4.05V16.2h-3.51v-2.7h3.51c1.289 0 2.34 1.213 2.34 2.7M21.8 34.531q.7-.569.959-1.758l1.788-8.34h1.585l.387-1.828h-1.585l.405-1.878h1.585l.387-1.827H25.69q-1.271 0-1.972.569-.681.569-.94 1.758l-.294 1.378H21.34l-.387 1.827h1.142l-1.898 8.841h-1.585l-.387 1.827h1.622q1.272 0 1.953-.569m7.248-7.686-3.797 4.808h2.599l2.12-3.016h.22l.885 3.016h2.599l-1.677-4.36 3.778-4.688h-2.599l-2.12 2.947h-.22l-.885-2.947h-2.599z",
3394
- clipRule: "evenodd"
3437
+ d: "M45 16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V19a3 3 0 0 1 3-3zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1m-32 4v10h-2V22z"
3395
3438
  })));
3396
3439
  };
3397
3440
 
3398
3441
  var _path$f;
3399
3442
  function _extends$f() { _extends$f = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$f.apply(this, arguments); }
3400
- var SvgTextfield = function SvgTextfield(props) {
3443
+ var SvgTextarea = function SvgTextarea(props) {
3401
3444
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$f({
3402
3445
  xmlns: "http://www.w3.org/2000/svg",
3403
3446
  width: 54,
@@ -3405,70 +3448,72 @@ var SvgTextfield = function SvgTextfield(props) {
3405
3448
  fill: "currentcolor"
3406
3449
  }, props), _path$f || (_path$f = /*#__PURE__*/React__namespace.createElement("path", {
3407
3450
  fillRule: "evenodd",
3408
- d: "M45 16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V19a3 3 0 0 1 3-3zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1m-32 4v10h-2V22z"
3451
+ d: "M45 13a3 3 0 0 1 3 3v22a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V16a3 3 0 0 1 3-3zm0 2H9a1 1 0 0 0-1 1v22a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V16a1 1 0 0 0-1-1m-1.136 15.5.849.849-6.364 6.364-.849-.849zm.264 3.5.849.849-2.828 2.828-.849-.849zM13 19v10h-2V19z"
3409
3452
  })));
3410
3453
  };
3411
3454
 
3412
3455
  var _path$e;
3413
3456
  function _extends$e() { _extends$e = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$e.apply(this, arguments); }
3414
- var SvgTextarea = function SvgTextarea(props) {
3457
+ var SvgIFrame = function SvgIFrame(props) {
3415
3458
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$e({
3416
3459
  xmlns: "http://www.w3.org/2000/svg",
3417
3460
  width: 54,
3418
3461
  height: 54,
3419
- fill: "currentcolor"
3462
+ fill: "none"
3420
3463
  }, props), _path$e || (_path$e = /*#__PURE__*/React__namespace.createElement("path", {
3464
+ fill: "currentColor",
3421
3465
  fillRule: "evenodd",
3422
- d: "M45 13a3 3 0 0 1 3 3v22a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V16a3 3 0 0 1 3-3zm0 2H9a1 1 0 0 0-1 1v22a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V16a1 1 0 0 0-1-1m-1.136 15.5.849.849-6.364 6.364-.849-.849zm.264 3.5.849.849-2.828 2.828-.849-.849zM13 19v10h-2V19z"
3466
+ d: "M45.658 9.45c1.625 0 2.942 1.36 2.942 3.039V22.95h-1.961v-4.383H7.36V41.51c0 .56.44 1.013.98 1.013H27v2.026H8.342c-1.625 0-2.942-1.36-2.942-3.039V12.489c0-1.678 1.317-3.039 2.942-3.039zm0 2.026H8.342c-.542 0-.98.454-.98 1.013v4.052h39.277v-4.052c0-.56-.44-1.013-.98-1.013ZM31.05 35.775A8.77 8.77 0 0 1 39.825 27a8.77 8.77 0 0 1 8.775 8.775 8.77 8.77 0 0 1-8.775 8.775 8.77 8.77 0 0 1-8.775-8.775m12.388-.516h3.097c-.206-2.581-1.858-4.646-4.026-5.678.62 1.548.93 3.613.93 5.678Zm-5.162 2.065c.207 3.303 1.136 4.955 1.549 5.161.413-.206 1.239-1.858 1.445-5.161zm1.446-8.26c-.31.207-1.342 2.272-1.446 6.195h2.994c-.103-3.923-1.135-5.988-1.548-6.194Zm-3.51 6.195c.103-2.065.31-4.13.929-5.678-2.168 1.032-3.82 3.097-4.026 5.678zm0 2.065h-2.89c.515 2.064 1.96 3.82 3.819 4.645-.516-1.342-.826-2.994-.93-4.645Zm7.226 0q-.155 2.632-.929 4.645c1.858-.826 3.304-2.58 3.923-4.645z",
3467
+ clipRule: "evenodd"
3423
3468
  })));
3424
3469
  };
3425
3470
 
3426
- var _path$d;
3471
+ var _path$d, _path2$1;
3427
3472
  function _extends$d() { _extends$d = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$d.apply(this, arguments); }
3428
- var SvgIFrame = function SvgIFrame(props) {
3473
+ var SvgImage = function SvgImage(props) {
3429
3474
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$d({
3430
3475
  xmlns: "http://www.w3.org/2000/svg",
3431
3476
  width: 54,
3432
3477
  height: 54,
3433
- fill: "none"
3478
+ fill: "currentcolor"
3434
3479
  }, props), _path$d || (_path$d = /*#__PURE__*/React__namespace.createElement("path", {
3435
- fill: "currentColor",
3436
3480
  fillRule: "evenodd",
3437
- d: "M45.658 9.45c1.625 0 2.942 1.36 2.942 3.039V22.95h-1.961v-4.383H7.36V41.51c0 .56.44 1.013.98 1.013H27v2.026H8.342c-1.625 0-2.942-1.36-2.942-3.039V12.489c0-1.678 1.317-3.039 2.942-3.039zm0 2.026H8.342c-.542 0-.98.454-.98 1.013v4.052h39.277v-4.052c0-.56-.44-1.013-.98-1.013ZM31.05 35.775A8.77 8.77 0 0 1 39.825 27a8.77 8.77 0 0 1 8.775 8.775 8.77 8.77 0 0 1-8.775 8.775 8.77 8.77 0 0 1-8.775-8.775m12.388-.516h3.097c-.206-2.581-1.858-4.646-4.026-5.678.62 1.548.93 3.613.93 5.678Zm-5.162 2.065c.207 3.303 1.136 4.955 1.549 5.161.413-.206 1.239-1.858 1.445-5.161zm1.446-8.26c-.31.207-1.342 2.272-1.446 6.195h2.994c-.103-3.923-1.135-5.988-1.548-6.194Zm-3.51 6.195c.103-2.065.31-4.13.929-5.678-2.168 1.032-3.82 3.097-4.026 5.678zm0 2.065h-2.89c.515 2.064 1.96 3.82 3.819 4.645-.516-1.342-.826-2.994-.93-4.645Zm7.226 0q-.155 2.632-.929 4.645c1.858-.826 3.304-2.58 3.923-4.645z",
3481
+ d: "M34.636 21.91A3.818 3.818 0 1 1 27 21.908a3.818 3.818 0 0 1 7.636 0Zm-2 0A1.818 1.818 0 1 1 29 21.908a1.818 1.818 0 0 1 3.636 0Z",
3482
+ clipRule: "evenodd"
3483
+ })), _path2$1 || (_path2$1 = /*#__PURE__*/React__namespace.createElement("path", {
3484
+ fillRule: "evenodd",
3485
+ d: "M15 13a2 2 0 0 0-2 2v24a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V15a2 2 0 0 0-2-2zm24 2H15v12.45l4.71-4.709a1.91 1.91 0 0 1 2.702 0l6.695 6.695 2.656-1.77a1.91 1.91 0 0 1 2.411.239L39 32.73zM15 39v-8.754a1 1 0 0 0 .168-.135l5.893-5.893 6.684 6.685a1.91 1.91 0 0 0 2.41.238l2.657-1.77 6.02 6.02q.078.077.168.135V39z",
3438
3486
  clipRule: "evenodd"
3439
3487
  })));
3440
3488
  };
3441
3489
 
3442
- var _path$c, _path2$1;
3490
+ var _path$c;
3443
3491
  function _extends$c() { _extends$c = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$c.apply(this, arguments); }
3444
- var SvgImage = function SvgImage(props) {
3492
+ var SvgTable = function SvgTable(props) {
3445
3493
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$c({
3446
3494
  xmlns: "http://www.w3.org/2000/svg",
3447
- width: 54,
3448
- height: 54,
3449
- fill: "currentcolor"
3495
+ fill: "none",
3496
+ viewBox: "0 0 54 54"
3450
3497
  }, props), _path$c || (_path$c = /*#__PURE__*/React__namespace.createElement("path", {
3498
+ fill: "currentcolor",
3451
3499
  fillRule: "evenodd",
3452
- d: "M34.636 21.91A3.818 3.818 0 1 1 27 21.908a3.818 3.818 0 0 1 7.636 0Zm-2 0A1.818 1.818 0 1 1 29 21.908a1.818 1.818 0 0 1 3.636 0Z",
3453
- clipRule: "evenodd"
3454
- })), _path2$1 || (_path2$1 = /*#__PURE__*/React__namespace.createElement("path", {
3455
- fillRule: "evenodd",
3456
- d: "M15 13a2 2 0 0 0-2 2v24a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V15a2 2 0 0 0-2-2zm24 2H15v12.45l4.71-4.709a1.91 1.91 0 0 1 2.702 0l6.695 6.695 2.656-1.77a1.91 1.91 0 0 1 2.411.239L39 32.73zM15 39v-8.754a1 1 0 0 0 .168-.135l5.893-5.893 6.684 6.685a1.91 1.91 0 0 0 2.41.238l2.657-1.77 6.02 6.02q.078.077.168.135V39z",
3500
+ d: "M42.545 12.273A2.455 2.455 0 0 1 45 14.727v24.546a2.455 2.455 0 0 1-2.455 2.454h-31.09A2.455 2.455 0 0 1 9 39.273V14.727a2.455 2.455 0 0 1 2.455-2.454zM27.818 40.09h14.727a.82.82 0 0 0 .819-.818v-4.91H27.818Zm-1.636-5.727v5.727H11.455a.82.82 0 0 1-.819-.818v-4.91zm1.636-1.637h15.546V27H27.818ZM26.182 27v5.727H10.636V27zm1.636-1.636h15.546v-5.728H27.818Zm-1.636-5.728v5.728H10.636v-5.728z",
3457
3501
  clipRule: "evenodd"
3458
3502
  })));
3459
3503
  };
3460
3504
 
3461
3505
  var _path$b;
3462
3506
  function _extends$b() { _extends$b = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$b.apply(this, arguments); }
3463
- var SvgTable = function SvgTable(props) {
3507
+ var SvgFilePicker = function SvgFilePicker(props) {
3464
3508
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$b({
3465
3509
  xmlns: "http://www.w3.org/2000/svg",
3466
- fill: "none",
3467
- viewBox: "0 0 54 54"
3510
+ width: 54,
3511
+ height: 54,
3512
+ fill: "none"
3468
3513
  }, props), _path$b || (_path$b = /*#__PURE__*/React__namespace.createElement("path", {
3469
3514
  fill: "currentcolor",
3470
3515
  fillRule: "evenodd",
3471
- d: "M42.545 12.273A2.455 2.455 0 0 1 45 14.727v24.546a2.455 2.455 0 0 1-2.455 2.454h-31.09A2.455 2.455 0 0 1 9 39.273V14.727a2.455 2.455 0 0 1 2.455-2.454zM27.818 40.09h14.727a.82.82 0 0 0 .819-.818v-4.91H27.818Zm-1.636-5.727v5.727H11.455a.82.82 0 0 1-.819-.818v-4.91zm1.636-1.637h15.546V27H27.818ZM26.182 27v5.727H10.636V27zm1.636-1.636h15.546v-5.728H27.818Zm-1.636-5.728v5.728H10.636v-5.728z",
3516
+ d: "M17.55 41.175H27v2.362h-9.45a2.37 2.37 0 0 1-2.363-2.362v-28.35a2.37 2.37 0 0 1 2.363-2.363h11.813a1.07 1.07 0 0 1 .826.355l8.27 8.269a1.07 1.07 0 0 1 .353.826v5.907H36.45v-3.544h-7.088A2.37 2.37 0 0 1 27 19.912v-7.087h-9.45zm18.427-21.263-6.614-6.615v6.615zm4.253 18.664 3.308 3.308-1.654 1.653-3.308-3.307a6.35 6.35 0 0 1-3.307.945c-3.308 0-5.906-2.599-5.906-5.906 0-3.308 2.598-5.907 5.906-5.907s5.906 2.6 5.906 5.907a6.35 6.35 0 0 1-.945 3.307m-4.961-6.851c-2.008 0-3.544 1.536-3.544 3.544s1.536 3.543 3.544 3.543 3.544-1.535 3.544-3.543-1.536-3.544-3.544-3.544",
3472
3517
  clipRule: "evenodd"
3473
3518
  })));
3474
3519
  };
@@ -3496,11 +3541,12 @@ const iconsByType = type => {
3496
3541
  textfield: SvgTextfield,
3497
3542
  textarea: SvgTextarea,
3498
3543
  table: SvgTable,
3544
+ filepicker: SvgFilePicker,
3499
3545
  default: SvgForm
3500
3546
  }[type];
3501
3547
  };
3502
3548
 
3503
- const type$c = 'image';
3549
+ const type$d = 'image';
3504
3550
  function Image(props) {
3505
3551
  const {
3506
3552
  field
@@ -3522,7 +3568,7 @@ function Image(props) {
3522
3568
  formId
3523
3569
  } = hooks.useContext(FormContext);
3524
3570
  return jsxRuntime.jsxs("div", {
3525
- class: formFieldClasses(type$c),
3571
+ class: formFieldClasses(type$d),
3526
3572
  children: [safeSource && jsxRuntime.jsx("div", {
3527
3573
  class: "fjs-image-container",
3528
3574
  children: jsxRuntime.jsx("img", {
@@ -3546,7 +3592,7 @@ function Image(props) {
3546
3592
  });
3547
3593
  }
3548
3594
  Image.config = {
3549
- type: type$c,
3595
+ type: type$d,
3550
3596
  keyed: false,
3551
3597
  label: 'Image view',
3552
3598
  group: 'presentation',
@@ -3636,7 +3682,7 @@ function isNullEquivalentValue(value) {
3636
3682
  return value === undefined || value === null || value === '';
3637
3683
  }
3638
3684
 
3639
- const type$b = 'number';
3685
+ const type$c = 'number';
3640
3686
  function Numberfield(props) {
3641
3687
  const {
3642
3688
  disabled,
@@ -3781,7 +3827,7 @@ function Numberfield(props) {
3781
3827
  const descriptionId = `${domId}-description`;
3782
3828
  const errorMessageId = `${domId}-error-message`;
3783
3829
  return jsxRuntime.jsxs("div", {
3784
- class: formFieldClasses(type$b, {
3830
+ class: formFieldClasses(type$c, {
3785
3831
  errors,
3786
3832
  disabled,
3787
3833
  readonly
@@ -3857,7 +3903,7 @@ function Numberfield(props) {
3857
3903
  });
3858
3904
  }
3859
3905
  Numberfield.config = {
3860
- type: type$b,
3906
+ type: type$c,
3861
3907
  keyed: true,
3862
3908
  label: 'Number',
3863
3909
  group: 'basic-input',
@@ -3877,7 +3923,7 @@ Numberfield.config = {
3877
3923
  })
3878
3924
  };
3879
3925
 
3880
- const type$a = 'radio';
3926
+ const type$b = 'radio';
3881
3927
  function Radio(props) {
3882
3928
  const {
3883
3929
  disabled,
@@ -3929,7 +3975,7 @@ function Radio(props) {
3929
3975
  const descriptionId = `${domId}-description`;
3930
3976
  const errorMessageId = `${domId}-error-message`;
3931
3977
  return jsxRuntime.jsxs("div", {
3932
- class: formFieldClasses(type$a, {
3978
+ class: formFieldClasses(type$b, {
3933
3979
  errors,
3934
3980
  disabled,
3935
3981
  readonly
@@ -3973,7 +4019,7 @@ function Radio(props) {
3973
4019
  });
3974
4020
  }
3975
4021
  Radio.config = {
3976
- type: type$a,
4022
+ type: type$b,
3977
4023
  keyed: true,
3978
4024
  label: 'Radio group',
3979
4025
  group: 'selection',
@@ -4283,7 +4329,7 @@ function SimpleSelect(props) {
4283
4329
  });
4284
4330
  }
4285
4331
 
4286
- const type$9 = 'select';
4332
+ const type$a = 'select';
4287
4333
  function Select(props) {
4288
4334
  const {
4289
4335
  disabled,
@@ -4322,7 +4368,7 @@ function Select(props) {
4322
4368
  'aria-describedby': [descriptionId, errorMessageId].join(' ')
4323
4369
  };
4324
4370
  return jsxRuntime.jsxs("div", {
4325
- class: formFieldClasses(type$9, {
4371
+ class: formFieldClasses(type$a, {
4326
4372
  errors,
4327
4373
  disabled,
4328
4374
  readonly
@@ -4351,7 +4397,7 @@ function Select(props) {
4351
4397
  });
4352
4398
  }
4353
4399
  Select.config = {
4354
- type: type$9,
4400
+ type: type$a,
4355
4401
  keyed: true,
4356
4402
  label: 'Select',
4357
4403
  group: 'selection',
@@ -4360,15 +4406,15 @@ Select.config = {
4360
4406
  create: createEmptyOptions
4361
4407
  };
4362
4408
 
4363
- const type$8 = 'separator';
4409
+ const type$9 = 'separator';
4364
4410
  function Separator() {
4365
4411
  return jsxRuntime.jsx("div", {
4366
- class: formFieldClasses(type$8),
4412
+ class: formFieldClasses(type$9),
4367
4413
  children: jsxRuntime.jsx("hr", {})
4368
4414
  });
4369
4415
  }
4370
4416
  Separator.config = {
4371
- type: type$8,
4417
+ type: type$9,
4372
4418
  keyed: false,
4373
4419
  label: 'Separator',
4374
4420
  group: 'presentation',
@@ -4377,7 +4423,7 @@ Separator.config = {
4377
4423
  })
4378
4424
  };
4379
4425
 
4380
- const type$7 = 'spacer';
4426
+ const type$8 = 'spacer';
4381
4427
  function Spacer(props) {
4382
4428
  const {
4383
4429
  field
@@ -4386,14 +4432,14 @@ function Spacer(props) {
4386
4432
  height = 60
4387
4433
  } = field;
4388
4434
  return jsxRuntime.jsx("div", {
4389
- class: formFieldClasses(type$7),
4435
+ class: formFieldClasses(type$8),
4390
4436
  style: {
4391
4437
  height: height
4392
4438
  }
4393
4439
  });
4394
4440
  }
4395
4441
  Spacer.config = {
4396
- type: type$7,
4442
+ type: type$8,
4397
4443
  keyed: false,
4398
4444
  label: 'Spacer',
4399
4445
  group: 'presentation',
@@ -4474,7 +4520,7 @@ function SkipLink(props) {
4474
4520
  });
4475
4521
  }
4476
4522
 
4477
- const type$6 = 'taglist';
4523
+ const type$7 = 'taglist';
4478
4524
  function Taglist(props) {
4479
4525
  const {
4480
4526
  disabled,
@@ -4616,7 +4662,7 @@ function Taglist(props) {
4616
4662
  const errorMessageId = `${domId}-error-message`;
4617
4663
  return jsxRuntime.jsxs("div", {
4618
4664
  ref: focusScopeRef,
4619
- class: formFieldClasses(type$6, {
4665
+ class: formFieldClasses(type$7, {
4620
4666
  errors,
4621
4667
  disabled,
4622
4668
  readonly
@@ -4701,7 +4747,7 @@ function Taglist(props) {
4701
4747
  });
4702
4748
  }
4703
4749
  Taglist.config = {
4704
- type: type$6,
4750
+ type: type$7,
4705
4751
  keyed: true,
4706
4752
  label: 'Tag list',
4707
4753
  group: 'selection',
@@ -4822,7 +4868,7 @@ function isValidAttribute(lcTag, lcName, value) {
4822
4868
  return true;
4823
4869
  }
4824
4870
 
4825
- const type$5 = 'text';
4871
+ const type$6 = 'text';
4826
4872
  function Text(props) {
4827
4873
  const form = useService('form');
4828
4874
  const {
@@ -4869,12 +4915,12 @@ function Text(props) {
4869
4915
  sanitizeStyleTags: false
4870
4916
  });
4871
4917
  return jsxRuntime.jsx("div", {
4872
- class: formFieldClasses(type$5),
4918
+ class: formFieldClasses(type$6),
4873
4919
  dangerouslySetInnerHTML: dangerouslySetInnerHTML
4874
4920
  });
4875
4921
  }
4876
4922
  Text.config = {
4877
- type: type$5,
4923
+ type: type$6,
4878
4924
  keyed: false,
4879
4925
  label: 'Text view',
4880
4926
  group: 'presentation',
@@ -4884,7 +4930,7 @@ Text.config = {
4884
4930
  })
4885
4931
  };
4886
4932
 
4887
- const type$4 = 'html';
4933
+ const type$5 = 'html';
4888
4934
  function Html(props) {
4889
4935
  const form = useService('form');
4890
4936
  const {
@@ -4935,12 +4981,12 @@ function Html(props) {
4935
4981
  sanitizeStyleTags: false
4936
4982
  });
4937
4983
  return jsxRuntime.jsx("div", {
4938
- class: classNames(formFieldClasses(type$4), styleScope),
4984
+ class: classNames(formFieldClasses(type$5), styleScope),
4939
4985
  dangerouslySetInnerHTML: dangerouslySetInnerHTML
4940
4986
  });
4941
4987
  }
4942
4988
  Html.config = {
4943
- type: type$4,
4989
+ type: type$5,
4944
4990
  keyed: false,
4945
4991
  label: 'HTML view',
4946
4992
  group: 'presentation',
@@ -4950,7 +4996,7 @@ Html.config = {
4950
4996
  })
4951
4997
  };
4952
4998
 
4953
- const type$3 = 'expression';
4999
+ const type$4 = 'expression';
4954
5000
  function ExpressionField(props) {
4955
5001
  const {
4956
5002
  field,
@@ -4987,7 +5033,7 @@ function ExpressionField(props) {
4987
5033
  return null;
4988
5034
  }
4989
5035
  ExpressionField.config = {
4990
- type: type$3,
5036
+ type: type$4,
4991
5037
  label: 'Expression',
4992
5038
  group: 'basic-input',
4993
5039
  keyed: true,
@@ -4999,7 +5045,7 @@ ExpressionField.config = {
4999
5045
  })
5000
5046
  };
5001
5047
 
5002
- const type$2 = 'textfield';
5048
+ const type$3 = 'textfield';
5003
5049
  function Textfield(props) {
5004
5050
  const {
5005
5051
  disabled,
@@ -5041,7 +5087,7 @@ function Textfield(props) {
5041
5087
  const descriptionId = `${domId}-description`;
5042
5088
  const errorMessageId = `${domId}-error-message`;
5043
5089
  return jsxRuntime.jsxs("div", {
5044
- class: formFieldClasses(type$2, {
5090
+ class: formFieldClasses(type$3, {
5045
5091
  errors,
5046
5092
  disabled,
5047
5093
  readonly
@@ -5079,7 +5125,7 @@ function Textfield(props) {
5079
5125
  });
5080
5126
  }
5081
5127
  Textfield.config = {
5082
- type: type$2,
5128
+ type: type$3,
5083
5129
  keyed: true,
5084
5130
  label: 'Text field',
5085
5131
  group: 'basic-input',
@@ -5102,7 +5148,7 @@ Textfield.config = {
5102
5148
  })
5103
5149
  };
5104
5150
 
5105
- const type$1 = 'textarea';
5151
+ const type$2 = 'textarea';
5106
5152
  function Textarea(props) {
5107
5153
  const {
5108
5154
  disabled,
@@ -5152,7 +5198,7 @@ function Textarea(props) {
5152
5198
  const descriptionId = `${domId}-description`;
5153
5199
  const errorMessageId = `${domId}-error-message`;
5154
5200
  return jsxRuntime.jsxs("div", {
5155
- class: formFieldClasses(type$1, {
5201
+ class: formFieldClasses(type$2, {
5156
5202
  errors,
5157
5203
  disabled,
5158
5204
  readonly
@@ -5184,7 +5230,7 @@ function Textarea(props) {
5184
5230
  });
5185
5231
  }
5186
5232
  Textarea.config = {
5187
- type: type$1,
5233
+ type: type$2,
5188
5234
  keyed: true,
5189
5235
  label: 'Text area',
5190
5236
  group: 'basic-input',
@@ -5265,7 +5311,7 @@ var SvgCaretRight = function SvgCaretRight(props) {
5265
5311
  })));
5266
5312
  };
5267
5313
 
5268
- const type = 'table';
5314
+ const type$1 = 'table';
5269
5315
 
5270
5316
  /**
5271
5317
  * @typedef {('asc'|'desc')} Direction
@@ -5342,7 +5388,7 @@ function Table(props) {
5342
5388
  });
5343
5389
  }
5344
5390
  return jsxRuntime.jsxs("div", {
5345
- class: formFieldClasses(type),
5391
+ class: formFieldClasses(type$1),
5346
5392
  children: [jsxRuntime.jsx(Label, {
5347
5393
  htmlFor: prefixId(id),
5348
5394
  label: label
@@ -5439,7 +5485,7 @@ function Table(props) {
5439
5485
  });
5440
5486
  }
5441
5487
  Table.config = {
5442
- type,
5488
+ type: type$1,
5443
5489
  keyed: false,
5444
5490
  label: 'Table',
5445
5491
  group: 'presentation',
@@ -5591,6 +5637,161 @@ function getHeaderAriaLabel(sortBy, key, label) {
5591
5637
  return `Click to sort by ${label} ascending`;
5592
5638
  }
5593
5639
 
5640
+ const FILE_PICKER_FILE_KEY_PREFIX = 'files::';
5641
+
5642
+ const type = 'filepicker';
5643
+ const ids$1 = new Ids();
5644
+ const EMPTY_ARRAY$1 = [];
5645
+
5646
+ /**
5647
+ * @typedef Props
5648
+ * @property {(props: { value: string }) => void} onChange
5649
+ * @property {string} domId
5650
+ * @property {string[]} errors
5651
+ * @property {boolean} disabled
5652
+ * @property {boolean} readonly
5653
+ * @property {boolean} required
5654
+ * @property {Object} field
5655
+ * @property {string} field.id
5656
+ * @property {string} [field.label]
5657
+ * @property {string} [field.accept]
5658
+ * @property {string|boolean} [field.multiple]
5659
+ * @property {string} [value]
5660
+ *
5661
+ * @param {Props} props
5662
+ * @returns {import("preact").JSX.Element}
5663
+ */
5664
+ function FilePicker(props) {
5665
+ /** @type {import("preact/hooks").Ref<HTMLInputElement>} */
5666
+ const fileInputRef = hooks.useRef(null);
5667
+ /** @type {import('../../FileRegistry').FileRegistry} */
5668
+ const fileRegistry = useService('fileRegistry', false);
5669
+ const {
5670
+ field,
5671
+ onChange,
5672
+ domId,
5673
+ errors = [],
5674
+ disabled,
5675
+ readonly,
5676
+ required,
5677
+ value: filesKey = ''
5678
+ } = props;
5679
+ const {
5680
+ label,
5681
+ multiple = false,
5682
+ accept = ''
5683
+ } = field;
5684
+ /** @type {string} */
5685
+ const evaluatedAccept = useSingleLineTemplateEvaluation(accept);
5686
+ const evaluatedMultiple = useBooleanExpressionEvaluation(multiple);
5687
+ const errorMessageId = `${domId}-error-message`;
5688
+ /** @type {File[]} */
5689
+ const selectedFiles = fileRegistry === null ? EMPTY_ARRAY$1 : fileRegistry.getFiles(filesKey);
5690
+ hooks.useEffect(() => {
5691
+ if (filesKey && fileRegistry !== null && !fileRegistry.hasKey(filesKey)) {
5692
+ onChange({
5693
+ value: null
5694
+ });
5695
+ }
5696
+ }, [fileRegistry, filesKey, onChange, selectedFiles.length]);
5697
+ hooks.useEffect(() => {
5698
+ const data = new DataTransfer();
5699
+ selectedFiles.forEach(file => data.items.add(file));
5700
+ fileInputRef.current.files = data.files;
5701
+ }, [selectedFiles]);
5702
+
5703
+ /**
5704
+ * @type import("preact").JSX.GenericEventHandler<HTMLInputElement>
5705
+ */
5706
+ const onFileChange = event => {
5707
+ const input = /** @type {HTMLInputElement} */event.target;
5708
+
5709
+ // if we have an associated file key but no files are selected, clear the file key and associated files
5710
+ if ((input.files === null || input.files.length === 0) && filesKey !== '') {
5711
+ fileRegistry.deleteFiles(filesKey);
5712
+ onChange({
5713
+ value: null
5714
+ });
5715
+ return;
5716
+ }
5717
+ const files = Array.from(input.files);
5718
+
5719
+ // ensure fileKey exists
5720
+ const updatedFilesKey = filesKey || ids$1.nextPrefixed(FILE_PICKER_FILE_KEY_PREFIX);
5721
+ fileRegistry.setFiles(updatedFilesKey, files);
5722
+ onChange({
5723
+ value: updatedFilesKey
5724
+ });
5725
+ };
5726
+ const isInputDisabled = disabled || readonly || fileRegistry === null;
5727
+ return jsxRuntime.jsxs("div", {
5728
+ className: formFieldClasses(type, {
5729
+ errors,
5730
+ disabled,
5731
+ readonly
5732
+ }),
5733
+ children: [jsxRuntime.jsx(Label, {
5734
+ htmlFor: domId,
5735
+ label: label,
5736
+ required: required
5737
+ }), jsxRuntime.jsx("input", {
5738
+ type: "file",
5739
+ className: "fjs-hidden",
5740
+ ref: fileInputRef,
5741
+ id: domId,
5742
+ name: domId,
5743
+ disabled: isInputDisabled,
5744
+ multiple: evaluatedMultiple || undefined,
5745
+ accept: evaluatedAccept || undefined,
5746
+ onChange: onFileChange
5747
+ }), jsxRuntime.jsxs("div", {
5748
+ className: "fjs-filepicker-container",
5749
+ children: [jsxRuntime.jsx("button", {
5750
+ type: "button",
5751
+ disabled: isInputDisabled,
5752
+ readonly: readonly,
5753
+ className: "fjs-button fjs-filepicker-button",
5754
+ onClick: () => {
5755
+ fileInputRef.current.click();
5756
+ },
5757
+ children: "Browse"
5758
+ }), jsxRuntime.jsx("span", {
5759
+ className: "fjs-form-field-label",
5760
+ children: getSelectedFilesLabel(selectedFiles)
5761
+ })]
5762
+ }), jsxRuntime.jsx(Errors, {
5763
+ id: errorMessageId,
5764
+ errors: errors
5765
+ })]
5766
+ });
5767
+ }
5768
+ FilePicker.config = {
5769
+ type: 'filepicker',
5770
+ keyed: true,
5771
+ label: 'File picker',
5772
+ group: 'basic-input',
5773
+ emptyValue: null,
5774
+ create: (options = {}) => ({
5775
+ ...options
5776
+ })
5777
+ };
5778
+
5779
+ // helper //////////
5780
+
5781
+ /**
5782
+ * @param {File[]} files
5783
+ * @returns {string}
5784
+ */
5785
+ function getSelectedFilesLabel(files) {
5786
+ if (files.length === 0) {
5787
+ return 'No files selected';
5788
+ }
5789
+ if (files.length === 1) {
5790
+ return files[0].name;
5791
+ }
5792
+ return `${files.length} files selected`;
5793
+ }
5794
+
5594
5795
  /**
5595
5796
  * This file must not be changed or exchanged.
5596
5797
  *
@@ -5727,7 +5928,7 @@ function FormComponent(props) {
5727
5928
  }
5728
5929
 
5729
5930
  const formFields = [/* Input */
5730
- Textfield, Textarea, Numberfield, Datetime, ExpressionField, /* Selection */
5931
+ Textfield, Textarea, Numberfield, Datetime, ExpressionField, FilePicker, /* Selection */
5731
5932
  Checkbox, Checklist, Radio, Select, Taglist, /* Presentation */
5732
5933
  Text, Image, Table, Html, Spacer, Separator, /* Containers */
5733
5934
  Group, DynamicList, IFrame, /* Other */
@@ -5748,7 +5949,7 @@ class FormFields {
5748
5949
  }
5749
5950
  }
5750
5951
 
5751
- const EXPRESSION_PROPERTIES = ['alt', 'appearance.prefixAdorner', 'appearance.suffixAdorner', 'conditional.hide', 'description', 'label', 'source', 'readonly', 'text', 'validate.min', 'validate.max', 'validate.minLength', 'validate.maxLength', 'valuesExpression', 'url', 'dataSource', 'columnsExpression', 'expression'];
5952
+ const EXPRESSION_PROPERTIES = ['alt', 'appearance.prefixAdorner', 'appearance.suffixAdorner', 'conditional.hide', 'description', 'label', 'source', 'readonly', 'text', 'validate.min', 'validate.max', 'validate.minLength', 'validate.maxLength', 'valuesExpression', 'url', 'dataSource', 'columnsExpression', 'expression', 'accept', 'multiple'];
5752
5953
  const TEMPLATE_PROPERTIES = ['alt', 'appearance.prefixAdorner', 'appearance.suffixAdorner', 'description', 'label', 'source', 'text', 'content', 'url'];
5753
5954
 
5754
5955
  /**
@@ -5966,11 +6167,21 @@ class ConditionChecker {
5966
6167
  // if we have a hidden repeatable field, and the data structure allows, we clear it directly at the root and stop recursion
5967
6168
  if (context.isHidden && isRepeatable) {
5968
6169
  context.preventRecursion = true;
6170
+ this._eventBus.fire('conditionChecker.remove', {
6171
+ item: {
6172
+ [field.key]: minDash.get(workingData, getFilterPath(field, indexes))
6173
+ }
6174
+ });
5969
6175
  this._cleanlyClearDataAtPath(getFilterPath(field, indexes), workingData);
5970
6176
  }
5971
6177
 
5972
6178
  // for simple leaf fields, we always clear
5973
6179
  if (context.isHidden && isClosed) {
6180
+ this._eventBus.fire('conditionChecker.remove', {
6181
+ item: {
6182
+ [field.key]: minDash.get(workingData, getFilterPath(field, indexes))
6183
+ }
6184
+ });
5974
6185
  this._cleanlyClearDataAtPath(getFilterPath(field, indexes), workingData);
5975
6186
  }
5976
6187
  });
@@ -6764,11 +6975,16 @@ var SvgDelete = function SvgDelete(props) {
6764
6975
  /* eslint-disable react-hooks/rules-of-hooks */
6765
6976
 
6766
6977
  class RepeatRenderManager {
6767
- constructor(form, formFields, formFieldRegistry, pathRegistry) {
6978
+ constructor(form, formFields, formFieldRegistry, pathRegistry, eventBus) {
6768
6979
  this._form = form;
6980
+ /** @type {import('../../render/FormFields').FormFields} */
6769
6981
  this._formFields = formFields;
6982
+ /** @type {import('../../core/FormFieldRegistry').FormFieldRegistry} */
6770
6983
  this._formFieldRegistry = formFieldRegistry;
6984
+ /** @type {import('../../core/PathRegistry').PathRegistry} */
6771
6985
  this._pathRegistry = pathRegistry;
6986
+ /** @type {import('../../core/EventBus').EventBus} */
6987
+ this._eventBus = eventBus;
6772
6988
  this.Repeater = this.Repeater.bind(this);
6773
6989
  this.RepeatFooter = this.RepeatFooter.bind(this);
6774
6990
  }
@@ -6808,11 +7024,18 @@ class RepeatRenderManager {
6808
7024
  const isCollapsed = collapseEnabled && sharedRepeatState.isCollapsed;
6809
7025
  const hasChildren = repeaterField.components && repeaterField.components.length > 0;
6810
7026
  const showRemove = repeaterField.allowAddRemove && hasChildren;
6811
- const displayValues = isCollapsed ? values.slice(0, nonCollapsedItems) : values;
6812
- const hiddenValues = isCollapsed ? values.slice(nonCollapsedItems) : [];
7027
+
7028
+ /**
7029
+ * @param {number} index
7030
+ */
6813
7031
  const onDeleteItem = index => {
6814
7032
  const updatedValues = values.slice();
6815
- updatedValues.splice(index, 1);
7033
+ const removedItem = updatedValues.splice(index, 1)[0];
7034
+ this._eventBus.fire('repeatRenderManager.remove', {
7035
+ dataPath,
7036
+ index,
7037
+ item: removedItem
7038
+ });
6816
7039
  props.onChange({
6817
7040
  field: repeaterField,
6818
7041
  value: updatedValues,
@@ -6820,21 +7043,13 @@ class RepeatRenderManager {
6820
7043
  });
6821
7044
  };
6822
7045
  const parentExpressionContextInfo = hooks.useContext(LocalExpressionContext);
6823
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
6824
- children: [displayValues.map((itemValue, itemIndex) => jsxRuntime.jsx(RepetitionScaffold, {
6825
- itemIndex: itemIndex,
6826
- itemValue: itemValue,
6827
- parentExpressionContextInfo: parentExpressionContextInfo,
6828
- repeaterField: repeaterField,
6829
- RowsRenderer: RowsRenderer,
6830
- indexes: indexes,
6831
- onDeleteItem: onDeleteItem,
6832
- showRemove: showRemove,
6833
- ...restProps
6834
- }, itemIndex)), hiddenValues.length > 0 ? jsxRuntime.jsx("div", {
6835
- className: "fjs-repeat-row-collapsed",
6836
- children: hiddenValues.map((itemValue, itemIndex) => jsxRuntime.jsx(RepetitionScaffold, {
6837
- itemIndex: itemIndex + nonCollapsedItems,
7046
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {
7047
+ children: values.map((itemValue, itemIndex) => jsxRuntime.jsx("div", {
7048
+ class: classNames({
7049
+ 'fjs-repeat-row-collapsed': isCollapsed ? itemIndex >= nonCollapsedItems : false
7050
+ }),
7051
+ children: jsxRuntime.jsx(RepetitionScaffold, {
7052
+ itemIndex: itemIndex,
6838
7053
  itemValue: itemValue,
6839
7054
  parentExpressionContextInfo: parentExpressionContextInfo,
6840
7055
  repeaterField: repeaterField,
@@ -6843,8 +7058,8 @@ class RepeatRenderManager {
6843
7058
  onDeleteItem: onDeleteItem,
6844
7059
  showRemove: showRemove,
6845
7060
  ...restProps
6846
- }, itemIndex))
6847
- }) : null]
7061
+ })
7062
+ }))
6848
7063
  });
6849
7064
  }
6850
7065
  RepeatFooter(props) {
@@ -6887,6 +7102,11 @@ class RepeatRenderManager {
6887
7102
  });
6888
7103
  updatedValues.push(newItem);
6889
7104
  shouldScroll.current = true;
7105
+ this._eventBus.fire('repeatRenderManager.add', {
7106
+ dataPath,
7107
+ index: updatedValues.length - 1,
7108
+ item: newItem
7109
+ });
6890
7110
  props.onChange({
6891
7111
  value: updatedValues
6892
7112
  });
@@ -6919,7 +7139,7 @@ class RepeatRenderManager {
6919
7139
  class: "fjs-repeat-render-collapse",
6920
7140
  onClick: toggle,
6921
7141
  children: isCollapsed ? jsxRuntime.jsxs(jsxRuntime.Fragment, {
6922
- children: [jsxRuntime.jsx(SvgExpand, {}), " ", `Expand all (${values.length})`]
7142
+ children: [jsxRuntime.jsx(SvgExpand, {}), " ", `Expand all (${values.length - 1})`]
6923
7143
  }) : jsxRuntime.jsxs(jsxRuntime.Fragment, {
6924
7144
  children: [jsxRuntime.jsx(SvgCollapse, {}), " ", 'Collapse']
6925
7145
  })
@@ -7004,7 +7224,7 @@ const RepetitionScaffold = props => {
7004
7224
  })]
7005
7225
  });
7006
7226
  };
7007
- RepeatRenderManager.$inject = ['form', 'formFields', 'formFieldRegistry', 'pathRegistry'];
7227
+ RepeatRenderManager.$inject = ['form', 'formFields', 'formFieldRegistry', 'pathRegistry', 'eventBus'];
7008
7228
 
7009
7229
  const RepeatRenderModule = {
7010
7230
  __init__: ['repeatRenderManager'],
@@ -8395,39 +8615,52 @@ class FormFieldInstanceRegistry {
8395
8615
  this._formFieldInstances = {};
8396
8616
  eventBus.on('form.clear', () => this.clear());
8397
8617
  }
8398
- add(instance) {
8618
+ syncInstance(instanceId, formFieldInfo) {
8399
8619
  const {
8400
- id,
8401
- expressionContextInfo,
8402
- valuePath,
8403
- indexes
8404
- } = instance;
8405
- const instanceId = [id, ...Object.values(indexes || {})].join('_');
8406
- if (this._formFieldInstances[instanceId]) {
8407
- throw new Error('this form field instance is already registered');
8620
+ hidden,
8621
+ ...restInfo
8622
+ } = formFieldInfo;
8623
+ const isInstanceExpected = !hidden;
8624
+ const doesInstanceExist = this._formFieldInstances[instanceId];
8625
+ if (isInstanceExpected && !doesInstanceExist) {
8626
+ this._formFieldInstances[instanceId] = {
8627
+ instanceId,
8628
+ ...restInfo
8629
+ };
8630
+ this._eventBus.fire('formFieldInstance.added', {
8631
+ instanceId
8632
+ });
8633
+ } else if (!isInstanceExpected && doesInstanceExist) {
8634
+ delete this._formFieldInstances[instanceId];
8635
+ this._eventBus.fire('formFieldInstance.removed', {
8636
+ instanceId
8637
+ });
8638
+ } else if (isInstanceExpected && doesInstanceExist) {
8639
+ const wasInstanceChaged = Object.keys(restInfo).some(key => {
8640
+ return this._formFieldInstances[instanceId][key] !== restInfo[key];
8641
+ });
8642
+ if (wasInstanceChaged) {
8643
+ this._formFieldInstances[instanceId] = {
8644
+ instanceId,
8645
+ ...restInfo
8646
+ };
8647
+ this._eventBus.fire('formFieldInstance.changed', {
8648
+ instanceId
8649
+ });
8650
+ }
8408
8651
  }
8409
- this._formFieldInstances[instanceId] = {
8410
- id,
8411
- instanceId,
8412
- expressionContextInfo,
8413
- valuePath,
8414
- indexes
8415
- };
8416
- this._eventBus.fire('formFieldInstanceRegistry.changed', {
8417
- instanceId,
8418
- action: 'added'
8419
- });
8420
8652
  return instanceId;
8421
8653
  }
8422
- remove(instanceId) {
8423
- if (!this._formFieldInstances[instanceId]) {
8424
- return;
8654
+ cleanupInstance(instanceId) {
8655
+ if (this._formFieldInstances[instanceId]) {
8656
+ delete this._formFieldInstances[instanceId];
8657
+ this._eventBus.fire('formFieldInstance.removed', {
8658
+ instanceId
8659
+ });
8425
8660
  }
8426
- delete this._formFieldInstances[instanceId];
8427
- this._eventBus.fire('formFieldInstanceRegistry.changed', {
8428
- instanceId,
8429
- action: 'removed'
8430
- });
8661
+ }
8662
+ get(instanceId) {
8663
+ return this._formFieldInstances[instanceId];
8431
8664
  }
8432
8665
  getAll() {
8433
8666
  return Object.values(this._formFieldInstances);
@@ -8507,10 +8740,122 @@ function Renderer(config, eventBus, form, injector) {
8507
8740
  }
8508
8741
  Renderer.$inject = ['config.renderer', 'eventBus', 'form', 'injector'];
8509
8742
 
8743
+ /**
8744
+ * @typedef {Record<PropertyKey, unknown>} RemovedData
8745
+ * @param {RemovedData} removedData
8746
+ * @returns {string[]}
8747
+ */
8748
+ const extractFileReferencesFromRemovedData = removedData => {
8749
+ /** @type {string[]} */
8750
+ const fileReferences = [];
8751
+ if (removedData === null) {
8752
+ return fileReferences;
8753
+ }
8754
+ Object.values(removedData).forEach(value => {
8755
+ if (value === null) {
8756
+ return;
8757
+ }
8758
+ if (typeof value === 'object') {
8759
+ fileReferences.push(...extractFileReferencesFromRemovedData( /** @type {RemovedData} */value));
8760
+ } else if (Array.isArray(value)) {
8761
+ fileReferences.push(...value.map(extractFileReferencesFromRemovedData).flat());
8762
+ } else if (typeof value === 'string' && value.startsWith(FILE_PICKER_FILE_KEY_PREFIX)) {
8763
+ fileReferences.push(value);
8764
+ }
8765
+ });
8766
+ return fileReferences;
8767
+ };
8768
+
8769
+ const fileRegistry = Symbol('fileRegistry');
8770
+ const eventBusSymbol = Symbol('eventBus');
8771
+ const formFieldRegistrySymbol = Symbol('formFieldRegistry');
8772
+ const formFieldInstanceRegistrySymbol = Symbol('formFieldInstanceRegistry');
8773
+ const EMPTY_ARRAY = [];
8774
+ class FileRegistry {
8775
+ /**
8776
+ * @param {import('../core/EventBus').EventBus} eventBus
8777
+ * @param {import('../core/FormFieldRegistry').FormFieldRegistry} formFieldRegistry
8778
+ * @param {import('../core/FormFieldInstanceRegistry').FormFieldInstanceRegistry} formFieldInstanceRegistry
8779
+ */
8780
+ constructor(eventBus, formFieldRegistry, formFieldInstanceRegistry) {
8781
+ /** @type {Map<string, File[]>} */
8782
+ this[fileRegistry] = new Map();
8783
+ /** @type {import('../core/EventBus').EventBus} */
8784
+ this[eventBusSymbol] = eventBus;
8785
+ /** @type {import('../core/FormFieldRegistry').FormFieldRegistry} */
8786
+ this[formFieldRegistrySymbol] = formFieldRegistry;
8787
+ /** @type {import('../core/FormFieldInstanceRegistry').FormFieldInstanceRegistry} */
8788
+ this[formFieldInstanceRegistrySymbol] = formFieldInstanceRegistry;
8789
+ const removeFileHandler = ({
8790
+ item
8791
+ }) => {
8792
+ const fileReferences = extractFileReferencesFromRemovedData(item);
8793
+
8794
+ // Remove all file references from the registry
8795
+ fileReferences.forEach(fileReference => {
8796
+ this.deleteFiles(fileReference);
8797
+ });
8798
+ };
8799
+ eventBus.on('form.clear', () => this.clear());
8800
+ eventBus.on('conditionChecker.remove', removeFileHandler);
8801
+ eventBus.on('repeatRenderManager.remove', removeFileHandler);
8802
+ }
8803
+
8804
+ /**
8805
+ * @param {string} id
8806
+ * @param {File[]} files
8807
+ */
8808
+ setFiles(id, files) {
8809
+ this[fileRegistry].set(id, files);
8810
+ }
8811
+
8812
+ /**
8813
+ * @param {string} id
8814
+ * @returns {File[]}
8815
+ */
8816
+ getFiles(id) {
8817
+ return this[fileRegistry].get(id) || EMPTY_ARRAY;
8818
+ }
8819
+
8820
+ /**
8821
+ * @returns {string[]}
8822
+ */
8823
+ getKeys() {
8824
+ return Array.from(this[fileRegistry].keys());
8825
+ }
8826
+
8827
+ /**
8828
+ * @param {string} id
8829
+ * @returns {boolean}
8830
+ */
8831
+ hasKey(id) {
8832
+ return this[fileRegistry].has(id);
8833
+ }
8834
+
8835
+ /**
8836
+ * @param {string} id
8837
+ */
8838
+ deleteFiles(id) {
8839
+ this[fileRegistry].delete(id);
8840
+ }
8841
+
8842
+ /**
8843
+ * @returns {Map<string, File[]>}
8844
+ */
8845
+ getAllFiles() {
8846
+ return new Map(this[fileRegistry]);
8847
+ }
8848
+ clear() {
8849
+ this[fileRegistry].clear();
8850
+ }
8851
+ }
8852
+ FileRegistry.$inject = ['eventBus', 'formFieldRegistry', 'formFieldInstanceRegistry'];
8853
+
8510
8854
  const RenderModule = {
8511
8855
  __init__: ['formFields', 'renderer'],
8512
8856
  formFields: ['type', FormFields],
8513
- renderer: ['type', Renderer]
8857
+ renderer: ['type', Renderer],
8858
+ fileRegistry: ['type', FileRegistry]
8514
8859
  };
8515
8860
 
8516
8861
  const CoreModule = {
@@ -8663,7 +9008,7 @@ class Form {
8663
9008
  /**
8664
9009
  * Submit the form, triggering all field validations.
8665
9010
  *
8666
- * @returns { { data: Data, errors: Errors } }
9011
+ * @returns { { data: Data, errors: Errors, files: Map<string, File[]> } }
8667
9012
  */
8668
9013
  submit() {
8669
9014
  const {
@@ -8675,9 +9020,11 @@ class Form {
8675
9020
  this._emit('presubmit');
8676
9021
  const data = this._getSubmitData();
8677
9022
  const errors = this.validate();
9023
+ const files = this.get('fileRegistry').getAllFiles();
8678
9024
  const result = {
8679
9025
  data,
8680
- errors
9026
+ errors,
9027
+ files
8681
9028
  };
8682
9029
  this._emit('submit', result);
8683
9030
  return result;
@@ -9043,6 +9390,7 @@ exports.ExpressionLoopPreventer = ExpressionLoopPreventer;
9043
9390
  exports.FeelExpressionLanguage = FeelExpressionLanguage;
9044
9391
  exports.FeelersTemplating = FeelersTemplating;
9045
9392
  exports.FieldFactory = FieldFactory;
9393
+ exports.FilePicker = FilePicker;
9046
9394
  exports.Form = Form;
9047
9395
  exports.FormComponent = FormComponent;
9048
9396
  exports.FormContext = FormContext;