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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/assets/form-js-base.css +24 -0
  2. package/dist/assets/form-js.css +457 -654
  3. package/dist/index.cjs +389 -227
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.es.js +386 -229
  6. package/dist/index.es.js.map +1 -1
  7. package/dist/types/core/FieldFactory.d.ts +1 -1
  8. package/dist/types/core/FormFieldRegistry.d.ts +1 -1
  9. package/dist/types/core/FormLayouter.d.ts +2 -2
  10. package/dist/types/core/Importer.d.ts +1 -1
  11. package/dist/types/core/PathRegistry.d.ts +1 -1
  12. package/dist/types/core/Validator.d.ts +1 -1
  13. package/dist/types/core/index.d.ts +8 -8
  14. package/dist/types/features/expression-language/ConditionChecker.d.ts +1 -1
  15. package/dist/types/features/expression-language/FeelExpressionLanguage.d.ts +1 -1
  16. package/dist/types/features/expression-language/FeelersTemplating.d.ts +1 -1
  17. package/dist/types/features/expression-language/index.d.ts +4 -4
  18. package/dist/types/features/markdown/MarkdownRenderer.d.ts +1 -1
  19. package/dist/types/features/markdown/index.d.ts +2 -2
  20. package/dist/types/features/viewerCommands/ViewerCommands.d.ts +1 -1
  21. package/dist/types/features/viewerCommands/cmd/UpdateFieldValidationHandler.d.ts +1 -1
  22. package/dist/types/features/viewerCommands/index.d.ts +3 -3
  23. package/dist/types/index.d.ts +1 -1
  24. package/dist/types/render/Renderer.d.ts +1 -1
  25. package/dist/types/render/components/Sanitizer.d.ts +8 -0
  26. package/dist/types/render/components/form-fields/Button.d.ts +3 -3
  27. package/dist/types/render/components/form-fields/Checkbox.d.ts +4 -4
  28. package/dist/types/render/components/form-fields/Checklist.d.ts +5 -5
  29. package/dist/types/render/components/form-fields/Datetime.d.ts +4 -4
  30. package/dist/types/render/components/form-fields/Default.d.ts +4 -4
  31. package/dist/types/render/components/form-fields/Group.d.ts +4 -4
  32. package/dist/types/render/components/form-fields/IFrame.d.ts +12 -0
  33. package/dist/types/render/components/form-fields/Image.d.ts +3 -3
  34. package/dist/types/render/components/form-fields/Number.d.ts +4 -4
  35. package/dist/types/render/components/form-fields/Radio.d.ts +5 -5
  36. package/dist/types/render/components/form-fields/Select.d.ts +5 -5
  37. package/dist/types/render/components/form-fields/Separator.d.ts +3 -3
  38. package/dist/types/render/components/form-fields/Spacer.d.ts +3 -3
  39. package/dist/types/render/components/form-fields/Taglist.d.ts +5 -5
  40. package/dist/types/render/components/form-fields/Text.d.ts +3 -3
  41. package/dist/types/render/components/form-fields/Textarea.d.ts +4 -4
  42. package/dist/types/render/components/form-fields/Textfield.d.ts +4 -4
  43. package/dist/types/render/components/index.d.ts +3 -2
  44. package/dist/types/render/components/util/optionsUtil.d.ts +8 -0
  45. package/dist/types/render/hooks/useCleanupMultiSelectValues.d.ts +1 -0
  46. package/dist/types/render/hooks/useCleanupSingleSelectValue.d.ts +1 -0
  47. package/dist/types/render/hooks/useOptionsAsync.d.ts +28 -0
  48. package/dist/types/render/index.d.ts +4 -3
  49. package/dist/types/util/constants/DatetimeConstants.d.ts +6 -6
  50. package/dist/types/util/constants/ValuesSourceConstants.d.ts +3 -3
  51. package/package.json +4 -4
  52. package/dist/types/render/components/util/valuesUtil.d.ts +0 -8
  53. package/dist/types/render/hooks/useValuesAsync.d.ts +0 -28
package/dist/index.cjs CHANGED
@@ -445,7 +445,7 @@ function prefixId(id, formId) {
445
445
  return `fjs-form-${id}`;
446
446
  }
447
447
 
448
- const type$d = 'button';
448
+ const type$e = 'button';
449
449
  function Button(props) {
450
450
  const {
451
451
  disabled,
@@ -457,7 +457,7 @@ function Button(props) {
457
457
  action = 'submit'
458
458
  } = field;
459
459
  return jsxRuntime.jsx("div", {
460
- class: formFieldClasses(type$d),
460
+ class: formFieldClasses(type$e),
461
461
  children: jsxRuntime.jsx("button", {
462
462
  class: "fjs-button",
463
463
  type: action,
@@ -469,7 +469,7 @@ function Button(props) {
469
469
  });
470
470
  }
471
471
  Button.config = {
472
- type: type$d,
472
+ type: type$e,
473
473
  keyed: false,
474
474
  label: 'Button',
475
475
  group: 'action',
@@ -767,7 +767,7 @@ function Label(props) {
767
767
  });
768
768
  }
769
769
 
770
- const type$c = 'checkbox';
770
+ const type$d = 'checkbox';
771
771
  function Checkbox(props) {
772
772
  const {
773
773
  disabled,
@@ -800,7 +800,7 @@ function Checkbox(props) {
800
800
  } = hooks.useContext(FormContext$1);
801
801
  const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
802
802
  return jsxRuntime.jsxs("div", {
803
- class: classNames(formFieldClasses(type$c, {
803
+ class: classNames(formFieldClasses(type$d, {
804
804
  errors,
805
805
  disabled,
806
806
  readonly
@@ -832,7 +832,7 @@ function Checkbox(props) {
832
832
  });
833
833
  }
834
834
  Checkbox.config = {
835
- type: type$c,
835
+ type: type$d,
836
836
  keyed: true,
837
837
  label: 'Checkbox',
838
838
  group: 'selection',
@@ -846,54 +846,54 @@ Checkbox.config = {
846
846
  };
847
847
 
848
848
  // parses the options data from the provided form field and form data
849
- function getValuesData(formField, formData) {
849
+ function getOptionsData(formField, formData) {
850
850
  const {
851
- valuesKey,
852
- values
851
+ valuesKey: optionsKey,
852
+ values: staticOptions
853
853
  } = formField;
854
- return valuesKey ? minDash.get(formData, [valuesKey]) : values;
854
+ return optionsKey ? minDash.get(formData, [optionsKey]) : staticOptions;
855
855
  }
856
856
 
857
857
  // transforms the provided options into a normalized format, trimming invalid options
858
- function normalizeValuesData(valuesData) {
859
- return valuesData.filter(_isValueSomething).map(v => _normalizeValueData(v)).filter(v => v);
858
+ function normalizeOptionsData(optionsData) {
859
+ return optionsData.filter(_isOptionSomething).map(v => _normalizeOptionsData(v)).filter(v => v);
860
860
  }
861
- function _normalizeValueData(valueData) {
862
- if (_isAllowedValue(valueData)) {
861
+ function _normalizeOptionsData(optionData) {
862
+ if (_isAllowedOption(optionData)) {
863
863
  // if a primitive is provided, use it as label and value
864
864
  return {
865
- value: valueData,
866
- label: `${valueData}`
865
+ value: optionData,
866
+ label: `${optionData}`
867
867
  };
868
868
  }
869
- if (typeof valueData === 'object') {
870
- if (!valueData.label && _isAllowedValue(valueData.value)) {
869
+ if (typeof optionData === 'object') {
870
+ if (!optionData.label && _isAllowedOption(optionData.value)) {
871
871
  // if no label is provided, use the value as label
872
872
  return {
873
- value: valueData.value,
874
- label: `${valueData.value}`
873
+ value: optionData.value,
874
+ label: `${optionData.value}`
875
875
  };
876
876
  }
877
- if (_isValueSomething(valueData.value) && _isAllowedValue(valueData.label)) {
877
+ if (_isOptionSomething(optionData.value) && _isAllowedOption(optionData.label)) {
878
878
  // if both value and label are provided, use them as is, in this scenario, the value may also be an object
879
- return valueData;
879
+ return optionData;
880
880
  }
881
881
  }
882
882
  return null;
883
883
  }
884
- function _isAllowedValue(value) {
885
- return _isReadableType(value) && _isValueSomething(value);
884
+ function _isAllowedOption(option) {
885
+ return _isReadableType(option) && _isOptionSomething(option);
886
886
  }
887
- function _isReadableType(value) {
888
- return ['number', 'string', 'boolean'].includes(typeof value);
887
+ function _isReadableType(option) {
888
+ return ['number', 'string', 'boolean'].includes(typeof option);
889
889
  }
890
- function _isValueSomething(value) {
891
- return value || value === 0 || value === false;
890
+ function _isOptionSomething(option) {
891
+ return option || option === 0 || option === false;
892
892
  }
893
893
  function createEmptyOptions(options = {}) {
894
894
  const defaults = {};
895
895
 
896
- // provide default values if valuesKey and valuesExpression are not set
896
+ // provide default options if valuesKey and valuesExpression are not set
897
897
  if (!options.valuesKey && !options.valuesExpression) {
898
898
  defaults.values = [{
899
899
  label: 'Value',
@@ -916,72 +916,96 @@ const LOAD_STATES = {
916
916
  };
917
917
 
918
918
  /**
919
- * @typedef {Object} ValuesGetter
920
- * @property {Object[]} values - The values data
921
- * @property {(LOAD_STATES)} state - The values data's loading state, to use for conditional rendering
919
+ * @typedef {Object} OptionsGetter
920
+ * @property {Object[]} options - The options data
921
+ * @property {(LOAD_STATES)} loadState - The options data's loading state, to use for conditional rendering
922
922
  */
923
923
 
924
924
  /**
925
- * A hook to load values for single and multiselect components.
925
+ * A hook to load options for single and multiselect components.
926
926
  *
927
- * @param {Object} field - The form field to handle values for
928
- * @return {ValuesGetter} valuesGetter - A values getter object providing loading state and values
927
+ * @param {Object} field - The form field to handle options for
928
+ * @return {OptionsGetter} optionsGetter - A options getter object providing loading state and options
929
929
  */
930
- function useValuesAsync (field) {
930
+ function useOptionsAsync (field) {
931
931
  const {
932
- valuesExpression,
933
- valuesKey,
934
- values: staticValues
932
+ valuesExpression: optionsExpression,
933
+ valuesKey: optionsKey,
934
+ values: staticOptions
935
935
  } = field;
936
- const [valuesGetter, setValuesGetter] = hooks.useState({
937
- values: [],
936
+ const [optionsGetter, setOptionsGetter] = hooks.useState({
937
+ options: [],
938
938
  error: undefined,
939
- state: LOAD_STATES.LOADING
939
+ loadState: LOAD_STATES.LOADING
940
940
  });
941
941
  const initialData = useService('form')._getState().initialData;
942
- const expressionEvaluation = useExpressionEvaluation(valuesExpression);
943
- const evaluatedValues = useDeepCompareState(expressionEvaluation || [], []);
942
+ const expressionEvaluation = useExpressionEvaluation(optionsExpression);
943
+ const evaluatedOptions = useDeepCompareState(expressionEvaluation || [], []);
944
944
  hooks.useEffect(() => {
945
- let values = [];
945
+ let options = [];
946
946
 
947
- // dynamic values
948
- if (valuesKey !== undefined) {
949
- const keyedValues = (initialData || {})[valuesKey];
950
- if (keyedValues && Array.isArray(keyedValues)) {
951
- values = keyedValues;
947
+ // dynamic options
948
+ if (optionsKey !== undefined) {
949
+ const keyedOptions = (initialData || {})[optionsKey];
950
+ if (keyedOptions && Array.isArray(keyedOptions)) {
951
+ options = keyedOptions;
952
952
  }
953
953
 
954
- // static values
955
- } else if (staticValues !== undefined) {
956
- values = Array.isArray(staticValues) ? staticValues : [];
954
+ // static options
955
+ } else if (staticOptions !== undefined) {
956
+ options = Array.isArray(staticOptions) ? staticOptions : [];
957
957
 
958
958
  // expression
959
- } else if (valuesExpression) {
960
- if (evaluatedValues && Array.isArray(evaluatedValues)) {
961
- values = evaluatedValues;
959
+ } else if (optionsExpression) {
960
+ if (evaluatedOptions && Array.isArray(evaluatedOptions)) {
961
+ options = evaluatedOptions;
962
962
  }
963
963
  } else {
964
- setValuesGetter(buildErrorState('No values source defined in the form definition'));
964
+ setOptionsGetter(buildErrorState('No options source defined in the form definition'));
965
965
  return;
966
966
  }
967
967
 
968
968
  // normalize data to support primitives and partially defined objects
969
- values = normalizeValuesData(values);
970
- setValuesGetter(buildLoadedState(values));
971
- }, [valuesKey, staticValues, initialData, valuesExpression, evaluatedValues]);
972
- return valuesGetter;
969
+ options = normalizeOptionsData(options);
970
+ setOptionsGetter(buildLoadedState(options));
971
+ }, [optionsKey, staticOptions, initialData, optionsExpression, evaluatedOptions]);
972
+ return optionsGetter;
973
973
  }
974
974
  const buildErrorState = error => ({
975
- values: [],
975
+ options: [],
976
976
  error,
977
- state: LOAD_STATES.ERROR
977
+ loadState: LOAD_STATES.ERROR
978
978
  });
979
- const buildLoadedState = values => ({
980
- values,
979
+ const buildLoadedState = options => ({
980
+ options,
981
981
  error: undefined,
982
- state: LOAD_STATES.LOADED
982
+ loadState: LOAD_STATES.LOADED
983
983
  });
984
984
 
985
+ function useCleanupMultiSelectValues (props) {
986
+ const {
987
+ field,
988
+ options,
989
+ loadState,
990
+ onChange,
991
+ values
992
+ } = props;
993
+
994
+ // Ensures that the values are always a subset of the possible options
995
+ hooks.useEffect(() => {
996
+ if (loadState !== LOAD_STATES.LOADED) {
997
+ return;
998
+ }
999
+ const hasValuesNotInOptions = values.some(v => !options.map(o => o.value).includes(v));
1000
+ if (hasValuesNotInOptions) {
1001
+ onChange({
1002
+ field,
1003
+ value: values.filter(v => options.map(o => o.value).includes(v))
1004
+ });
1005
+ }
1006
+ }, [field, options, onChange, JSON.stringify(values), loadState]);
1007
+ }
1008
+
985
1009
  // config ///////////////////
986
1010
 
987
1011
  const MINUTES_IN_DAY = 60 * 24;
@@ -1195,7 +1219,7 @@ function sanitizeSingleSelectValue(options) {
1195
1219
  value
1196
1220
  } = options;
1197
1221
  try {
1198
- const validValues = normalizeValuesData(getValuesData(formField, data)).map(v => v.value);
1222
+ const validValues = normalizeOptionsData(getOptionsData(formField, data)).map(v => v.value);
1199
1223
  return validValues.includes(value) ? value : null;
1200
1224
  } catch (error) {
1201
1225
  // use default value in case of formatting error
@@ -1210,7 +1234,7 @@ function sanitizeMultiSelectValue(options) {
1210
1234
  value
1211
1235
  } = options;
1212
1236
  try {
1213
- const validValues = normalizeValuesData(getValuesData(formField, data)).map(v => v.value);
1237
+ const validValues = normalizeOptionsData(getOptionsData(formField, data)).map(v => v.value);
1214
1238
  return value.filter(v => validValues.includes(v));
1215
1239
  } catch (error) {
1216
1240
  // use default value in case of formatting error
@@ -1219,7 +1243,7 @@ function sanitizeMultiSelectValue(options) {
1219
1243
  }
1220
1244
  }
1221
1245
 
1222
- const type$b = 'checklist';
1246
+ const type$c = 'checklist';
1223
1247
  function Checklist(props) {
1224
1248
  const {
1225
1249
  disabled,
@@ -1228,7 +1252,7 @@ function Checklist(props) {
1228
1252
  onFocus,
1229
1253
  field,
1230
1254
  readonly,
1231
- value = []
1255
+ value: values = []
1232
1256
  } = props;
1233
1257
  const {
1234
1258
  description,
@@ -1241,7 +1265,7 @@ function Checklist(props) {
1241
1265
  required
1242
1266
  } = validate;
1243
1267
  const toggleCheckbox = v => {
1244
- let newValue = [...value];
1268
+ let newValue = [...values];
1245
1269
  if (!newValue.includes(v)) {
1246
1270
  newValue.push(v);
1247
1271
  } else {
@@ -1265,15 +1289,22 @@ function Checklist(props) {
1265
1289
  onFocus && onFocus();
1266
1290
  };
1267
1291
  const {
1268
- state: loadState,
1269
- values: options
1270
- } = useValuesAsync(field);
1292
+ loadState,
1293
+ options
1294
+ } = useOptionsAsync(field);
1295
+ useCleanupMultiSelectValues({
1296
+ field,
1297
+ loadState,
1298
+ options,
1299
+ values,
1300
+ onChange: props.onChange
1301
+ });
1271
1302
  const {
1272
1303
  formId
1273
1304
  } = hooks.useContext(FormContext$1);
1274
1305
  const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
1275
1306
  return jsxRuntime.jsxs("div", {
1276
- class: classNames(formFieldClasses(type$b, {
1307
+ class: classNames(formFieldClasses(type$c, {
1277
1308
  errors,
1278
1309
  disabled,
1279
1310
  readonly
@@ -1287,11 +1318,11 @@ function Checklist(props) {
1287
1318
  id: prefixId(`${id}-${index}`, formId),
1288
1319
  label: v.label,
1289
1320
  class: classNames({
1290
- 'fjs-checked': value.includes(v.value)
1321
+ 'fjs-checked': values.includes(v.value)
1291
1322
  }),
1292
1323
  required: false,
1293
1324
  children: jsxRuntime.jsx("input", {
1294
- checked: value.includes(v.value),
1325
+ checked: values.includes(v.value),
1295
1326
  class: "fjs-input",
1296
1327
  disabled: disabled,
1297
1328
  readOnly: readonly,
@@ -1312,9 +1343,9 @@ function Checklist(props) {
1312
1343
  });
1313
1344
  }
1314
1345
  Checklist.config = {
1315
- type: type$b,
1346
+ type: type$c,
1316
1347
  keyed: true,
1317
- label: 'Checklist',
1348
+ label: 'Checkbox group',
1318
1349
  group: 'selection',
1319
1350
  emptyValue: [],
1320
1351
  sanitizeValue: sanitizeMultiSelectValue,
@@ -1464,16 +1495,16 @@ FormComponent$1.config = {
1464
1495
  })
1465
1496
  };
1466
1497
 
1467
- var _path$i;
1468
- 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); }
1498
+ var _path$k;
1499
+ 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); }
1469
1500
  var SvgCalendar = function SvgCalendar(props) {
1470
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$l({
1501
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$m({
1471
1502
  xmlns: "http://www.w3.org/2000/svg",
1472
1503
  width: 14,
1473
1504
  height: 15,
1474
1505
  fill: "none",
1475
1506
  viewBox: "0 0 28 30"
1476
- }, props), _path$i || (_path$i = /*#__PURE__*/React__namespace.createElement("path", {
1507
+ }, props), _path$k || (_path$k = /*#__PURE__*/React__namespace.createElement("path", {
1477
1508
  fill: "currentColor",
1478
1509
  fillRule: "evenodd",
1479
1510
  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-2v2ZM7 7V4H2v5h24V4h-5v3h-2V4H9v3H7Zm-5 4v17h24V11H2Z",
@@ -1736,19 +1767,19 @@ function Datepicker(props) {
1736
1767
  });
1737
1768
  }
1738
1769
 
1739
- var _path$h, _path2$3;
1740
- 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); }
1770
+ var _path$j, _path2$4;
1771
+ 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); }
1741
1772
  var SvgClock = function SvgClock(props) {
1742
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$k({
1773
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$l({
1743
1774
  xmlns: "http://www.w3.org/2000/svg",
1744
1775
  width: 16,
1745
1776
  height: 16,
1746
1777
  fill: "none",
1747
1778
  viewBox: "0 0 28 29"
1748
- }, props), _path$h || (_path$h = /*#__PURE__*/React__namespace.createElement("path", {
1779
+ }, props), _path$j || (_path$j = /*#__PURE__*/React__namespace.createElement("path", {
1749
1780
  fill: "currentColor",
1750
1781
  d: "M13 14.41 18.59 20 20 18.59l-5-5.01V5h-2v9.41Z"
1751
- })), _path2$3 || (_path2$3 = /*#__PURE__*/React__namespace.createElement("path", {
1782
+ })), _path2$4 || (_path2$4 = /*#__PURE__*/React__namespace.createElement("path", {
1752
1783
  fill: "currentColor",
1753
1784
  fillRule: "evenodd",
1754
1785
  d: "M6.222 25.64A14 14 0 1 0 21.778 2.36 14 14 0 0 0 6.222 25.64ZM7.333 4.023a12 12 0 1 1 13.334 19.955A12 12 0 0 1 7.333 4.022Z",
@@ -2019,7 +2050,7 @@ function Timepicker(props) {
2019
2050
  });
2020
2051
  }
2021
2052
 
2022
- const type$a = 'datetime';
2053
+ const type$b = 'datetime';
2023
2054
  function Datetime(props) {
2024
2055
  const {
2025
2056
  disabled,
@@ -2191,7 +2222,7 @@ function Datetime(props) {
2191
2222
  'aria-describedby': errorMessageId
2192
2223
  };
2193
2224
  return jsxRuntime.jsxs("div", {
2194
- class: formFieldClasses(type$a, {
2225
+ class: formFieldClasses(type$b, {
2195
2226
  errors: allErrors,
2196
2227
  disabled,
2197
2228
  readonly
@@ -2215,7 +2246,7 @@ function Datetime(props) {
2215
2246
  });
2216
2247
  }
2217
2248
  Datetime.config = {
2218
- type: type$a,
2249
+ type: type$b,
2219
2250
  keyed: true,
2220
2251
  label: 'Date time',
2221
2252
  group: 'basic-input',
@@ -2395,7 +2426,7 @@ Group.config = {
2395
2426
  type: 'group',
2396
2427
  pathed: true,
2397
2428
  label: 'Group',
2398
- group: 'presentation',
2429
+ group: 'container',
2399
2430
  create: (options = {}) => ({
2400
2431
  components: [],
2401
2432
  showOutline: true,
@@ -2409,6 +2440,7 @@ const ALLOWED_NODES = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'em', 'a', 'p
2409
2440
  const ALLOWED_ATTRIBUTES = ['align', 'alt', 'class', 'href', 'id', 'name', 'rel', 'target', 'src'];
2410
2441
  const ALLOWED_URI_PATTERN = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i; // eslint-disable-line no-useless-escape
2411
2442
  const ALLOWED_IMAGE_SRC_PATTERN = /^(https?|data):.*/i; // eslint-disable-line no-useless-escape
2443
+ const ALLOWED_IFRAME_SRC_PATTERN = /^(https):\/\/*/i; // eslint-disable-line no-useless-escape
2412
2444
  const ATTR_WHITESPACE_PATTERN = /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g; // eslint-disable-line no-control-regex
2413
2445
 
2414
2446
  const FORM_ELEMENT = document.createElement('form');
@@ -2449,6 +2481,18 @@ function sanitizeImageSource(src) {
2449
2481
  return valid ? src : '';
2450
2482
  }
2451
2483
 
2484
+ /**
2485
+ * Sanitizes an iframe source to ensure we only allow for links
2486
+ * that start with http(s).
2487
+ *
2488
+ * @param {string} src
2489
+ * @returns {string}
2490
+ */
2491
+ function sanitizeIFrameSource(src) {
2492
+ const valid = ALLOWED_IFRAME_SRC_PATTERN.test(src);
2493
+ return valid ? src : '';
2494
+ }
2495
+
2452
2496
  /**
2453
2497
  * Recursively sanitize a HTML node, potentially
2454
2498
  * removing it, its children or attributes.
@@ -2530,9 +2574,77 @@ function isValidAttribute(lcTag, lcName, value) {
2530
2574
  return true;
2531
2575
  }
2532
2576
 
2533
- 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); }
2577
+ const type$a = 'iframe';
2578
+ const DEFAULT_HEIGHT = 300;
2579
+ function IFrame(props) {
2580
+ const {
2581
+ field,
2582
+ disabled,
2583
+ readonly
2584
+ } = props;
2585
+ const {
2586
+ height = DEFAULT_HEIGHT,
2587
+ id,
2588
+ label,
2589
+ url
2590
+ } = field;
2591
+ const evaluatedUrl = useSingleLineTemplateEvaluation(url, {
2592
+ debug: true
2593
+ });
2594
+ const safeUrl = hooks.useMemo(() => sanitizeIFrameSource(evaluatedUrl), [evaluatedUrl]);
2595
+ const evaluatedLabel = useSingleLineTemplateEvaluation(label, {
2596
+ debug: true
2597
+ });
2598
+ const {
2599
+ formId
2600
+ } = hooks.useContext(FormContext$1);
2601
+ return jsxRuntime.jsxs("div", {
2602
+ class: formFieldClasses(type$a, {
2603
+ disabled,
2604
+ readonly
2605
+ }),
2606
+ children: [jsxRuntime.jsx(Label, {
2607
+ id: prefixId(id, formId),
2608
+ label: evaluatedLabel
2609
+ }), !evaluatedUrl && jsxRuntime.jsx(IFramePlaceholder, {
2610
+ text: "No content to show."
2611
+ }), evaluatedUrl && safeUrl && jsxRuntime.jsx("iframe", {
2612
+ src: safeUrl,
2613
+ title: evaluatedLabel,
2614
+ height: height,
2615
+ class: "fjs-iframe",
2616
+ id: prefixId(id, formId),
2617
+ sandbox: ""
2618
+ }), evaluatedUrl && !safeUrl && jsxRuntime.jsx(IFramePlaceholder, {
2619
+ text: "External content couldn't be loaded."
2620
+ })]
2621
+ });
2622
+ }
2623
+ function IFramePlaceholder(props) {
2624
+ const {
2625
+ text = 'iFrame'
2626
+ } = props;
2627
+ return jsxRuntime.jsx("div", {
2628
+ class: "fjs-iframe-placeholder",
2629
+ children: jsxRuntime.jsx("p", {
2630
+ class: "fjs-iframe-placeholder-text",
2631
+ children: text
2632
+ })
2633
+ });
2634
+ }
2635
+ IFrame.config = {
2636
+ type: type$a,
2637
+ keyed: false,
2638
+ label: 'iFrame',
2639
+ group: 'container',
2640
+ create: (options = {}) => ({
2641
+ ...options
2642
+ })
2643
+ };
2644
+
2645
+ 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); }
2534
2646
  var SvgImagePlaceholder = function SvgImagePlaceholder(props) {
2535
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$j({
2647
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$k({
2536
2648
  xmlns: "http://www.w3.org/2000/svg",
2537
2649
  xmlSpace: "preserve",
2538
2650
  width: 64,
@@ -2637,14 +2749,14 @@ function TemplatedInputAdorner(props) {
2637
2749
  });
2638
2750
  }
2639
2751
 
2640
- var _path$g;
2641
- 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); }
2752
+ var _path$i;
2753
+ 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); }
2642
2754
  var SvgAngelDown = function SvgAngelDown(props) {
2643
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$i({
2755
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$j({
2644
2756
  xmlns: "http://www.w3.org/2000/svg",
2645
2757
  width: 8,
2646
2758
  height: 8
2647
- }, props), _path$g || (_path$g = /*#__PURE__*/React__namespace.createElement("path", {
2759
+ }, props), _path$i || (_path$i = /*#__PURE__*/React__namespace.createElement("path", {
2648
2760
  fill: "currentColor",
2649
2761
  fillRule: "evenodd",
2650
2762
  stroke: "currentColor",
@@ -2655,14 +2767,14 @@ var SvgAngelDown = function SvgAngelDown(props) {
2655
2767
  };
2656
2768
  var AngelDownIcon = SvgAngelDown;
2657
2769
 
2658
- var _path$f;
2659
- 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); }
2770
+ var _path$h;
2771
+ 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); }
2660
2772
  var SvgAngelUp = function SvgAngelUp(props) {
2661
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$h({
2773
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$i({
2662
2774
  xmlns: "http://www.w3.org/2000/svg",
2663
2775
  width: 8,
2664
2776
  height: 8
2665
- }, props), _path$f || (_path$f = /*#__PURE__*/React__namespace.createElement("path", {
2777
+ }, props), _path$h || (_path$h = /*#__PURE__*/React__namespace.createElement("path", {
2666
2778
  fill: "currentColor",
2667
2779
  fillRule: "evenodd",
2668
2780
  stroke: "currentColor",
@@ -2919,13 +3031,10 @@ Numberfield.config = {
2919
3031
  value,
2920
3032
  formField
2921
3033
  }) => {
2922
- // null state is allowed
2923
- if (isNullEquivalentValue(value)) return null;
3034
+ // invalid value types are sanitized to null
3035
+ if (isNullEquivalentValue(value) || !isValidNumber(value)) return null;
2924
3036
 
2925
- // if data cannot be parsed as a valid number, go into invalid NaN state
2926
- if (!isValidNumber(value)) return 'NaN';
2927
-
2928
- // otherwise parse to formatting type
3037
+ // otherwise, we return a string or a number depending on the form field configuration
2929
3038
  return formField.serializeToString ? value.toString() : Number(value);
2930
3039
  },
2931
3040
  create: (options = {}) => ({
@@ -2933,6 +3042,30 @@ Numberfield.config = {
2933
3042
  })
2934
3043
  };
2935
3044
 
3045
+ function useCleanupSingleSelectValue (props) {
3046
+ const {
3047
+ field,
3048
+ options,
3049
+ loadState,
3050
+ onChange,
3051
+ value
3052
+ } = props;
3053
+
3054
+ // Ensures that the value is always one of the possible options
3055
+ hooks.useEffect(() => {
3056
+ if (loadState !== LOAD_STATES.LOADED) {
3057
+ return;
3058
+ }
3059
+ const hasValueNotInOptions = value && !options.map(o => o.value).includes(value);
3060
+ if (hasValueNotInOptions) {
3061
+ onChange({
3062
+ field,
3063
+ value: null
3064
+ });
3065
+ }
3066
+ }, [field, options, onChange, value, loadState]);
3067
+ }
3068
+
2936
3069
  const type$7 = 'radio';
2937
3070
  function Radio(props) {
2938
3071
  const {
@@ -2973,9 +3106,16 @@ function Radio(props) {
2973
3106
  onFocus && onFocus();
2974
3107
  };
2975
3108
  const {
2976
- state: loadState,
2977
- values: options
2978
- } = useValuesAsync(field);
3109
+ loadState,
3110
+ options
3111
+ } = useOptionsAsync(field);
3112
+ useCleanupSingleSelectValue({
3113
+ field,
3114
+ loadState,
3115
+ options,
3116
+ value,
3117
+ onChange: props.onChange
3118
+ });
2979
3119
  const {
2980
3120
  formId
2981
3121
  } = hooks.useContext(FormContext$1);
@@ -3022,21 +3162,21 @@ function Radio(props) {
3022
3162
  Radio.config = {
3023
3163
  type: type$7,
3024
3164
  keyed: true,
3025
- label: 'Radio',
3165
+ label: 'Radio group',
3026
3166
  group: 'selection',
3027
3167
  emptyValue: null,
3028
3168
  sanitizeValue: sanitizeSingleSelectValue,
3029
3169
  create: createEmptyOptions
3030
3170
  };
3031
3171
 
3032
- var _path$e;
3033
- 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); }
3172
+ var _path$g;
3173
+ 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); }
3034
3174
  var SvgXMark = function SvgXMark(props) {
3035
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$g({
3175
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$h({
3036
3176
  xmlns: "http://www.w3.org/2000/svg",
3037
3177
  width: 8,
3038
3178
  height: 8
3039
- }, props), _path$e || (_path$e = /*#__PURE__*/React__namespace.createElement("path", {
3179
+ }, props), _path$g || (_path$g = /*#__PURE__*/React__namespace.createElement("path", {
3040
3180
  fill: "currentColor",
3041
3181
  fillRule: "evenodd",
3042
3182
  stroke: "currentColor",
@@ -3068,9 +3208,16 @@ function SearchableSelect(props) {
3068
3208
  const searchbarRef = hooks.useRef();
3069
3209
  const eventBus = useService('eventBus');
3070
3210
  const {
3071
- state: loadState,
3072
- values: options
3073
- } = useValuesAsync(field);
3211
+ loadState,
3212
+ options
3213
+ } = useOptionsAsync(field);
3214
+ useCleanupSingleSelectValue({
3215
+ field,
3216
+ loadState,
3217
+ options,
3218
+ value,
3219
+ onChange: props.onChange
3220
+ });
3074
3221
 
3075
3222
  // We cache a map of option values to their index so that we don't need to search the whole options array every time to correlate the label
3076
3223
  const valueToOptionMap = hooks.useMemo(() => Object.assign({}, ...options.map((o, x) => ({
@@ -3230,9 +3377,16 @@ function SimpleSelect(props) {
3230
3377
  const selectRef = hooks.useRef();
3231
3378
  const inputRef = hooks.useRef();
3232
3379
  const {
3233
- state: loadState,
3234
- values: options
3235
- } = useValuesAsync(field);
3380
+ loadState,
3381
+ options
3382
+ } = useOptionsAsync(field);
3383
+ useCleanupSingleSelectValue({
3384
+ field,
3385
+ loadState,
3386
+ options,
3387
+ value,
3388
+ onChange: props.onChange
3389
+ });
3236
3390
 
3237
3391
  // We cache a map of option values to their index so that we don't need to search the whole options array every time to correlate the label
3238
3392
  const valueToOptionMap = hooks.useMemo(() => Object.assign({}, ...options.map((o, x) => ({
@@ -3494,34 +3648,36 @@ function Taglist(props) {
3494
3648
  } = hooks.useContext(FormContext$1);
3495
3649
  const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
3496
3650
  const [filter, setFilter] = hooks.useState('');
3497
- const [filteredOptions, setFilteredOptions] = hooks.useState([]);
3498
3651
  const [isDropdownExpanded, setIsDropdownExpanded] = hooks.useState(false);
3499
- const [hasOptionsLeft, setHasOptionsLeft] = hooks.useState(true);
3500
3652
  const [isEscapeClosed, setIsEscapeClose] = hooks.useState(false);
3501
3653
  const focusScopeRef = hooks.useRef();
3502
3654
  const inputRef = hooks.useRef();
3503
3655
  const eventBus = useService('eventBus');
3504
3656
  const {
3505
- state: loadState,
3506
- values: options
3507
- } = useValuesAsync(field);
3657
+ loadState,
3658
+ options
3659
+ } = useOptionsAsync(field);
3660
+ useCleanupMultiSelectValues({
3661
+ field,
3662
+ loadState,
3663
+ options,
3664
+ values,
3665
+ onChange: props.onChange
3666
+ });
3508
3667
 
3509
3668
  // We cache a map of option values to their index so that we don't need to search the whole options array every time to correlate the label
3510
3669
  const valueToOptionMap = hooks.useMemo(() => Object.assign({}, ...options.map((o, x) => ({
3511
3670
  [o.value]: options[x]
3512
3671
  }))), [options]);
3672
+ const hasOptionsLeft = hooks.useMemo(() => options.length > values.length, [options.length, values.length]);
3513
3673
 
3514
3674
  // Usage of stringify is necessary here because we want this effect to only trigger when there is a value change to the array
3515
- hooks.useEffect(() => {
3516
- if (loadState === LOAD_STATES.LOADED) {
3517
- setFilteredOptions(options.filter(o => o.label && o.value && o.label.toLowerCase().includes(filter.toLowerCase()) && !values.includes(o.value)));
3518
- } else {
3519
- setFilteredOptions([]);
3675
+ const filteredOptions = hooks.useMemo(() => {
3676
+ if (loadState !== LOAD_STATES.LOADED) {
3677
+ return [];
3520
3678
  }
3521
- }, [filter, JSON.stringify(values), options, loadState]);
3522
- hooks.useEffect(() => {
3523
- setHasOptionsLeft(options.length > values.length);
3524
- }, [options.length, values.length]);
3679
+ return options.filter(o => o.label && o.value && o.label.toLowerCase().includes(filter.toLowerCase()) && !values.includes(o.value));
3680
+ }, [filter, options, JSON.stringify(values), loadState]);
3525
3681
  const selectValue = value => {
3526
3682
  if (filter) {
3527
3683
  setFilter('');
@@ -3648,7 +3804,7 @@ function Taglist(props) {
3648
3804
  onMouseDown: e => e.preventDefault(),
3649
3805
  children: [jsxRuntime.jsx("span", {
3650
3806
  class: "fjs-taglist-tag-label",
3651
- children: valueToOptionMap[v] ? valueToOptionMap[v].label : `unexpected value{${v}}`
3807
+ children: valueToOptionMap[v] ? valueToOptionMap[v].label : undefined
3652
3808
  }), !disabled && !readonly && jsxRuntime.jsx("button", {
3653
3809
  type: "button",
3654
3810
  title: "Remove tag",
@@ -3869,7 +4025,7 @@ Textfield.config = {
3869
4025
  sanitizeValue: ({
3870
4026
  value
3871
4027
  }) => {
3872
- if (minDash.isArray(value) || minDash.isObject(value)) {
4028
+ if (minDash.isArray(value) || minDash.isObject(value) || minDash.isNil(value)) {
3873
4029
  return '';
3874
4030
  }
3875
4031
 
@@ -3960,7 +4116,7 @@ Textarea.config = {
3960
4116
  emptyValue: '',
3961
4117
  sanitizeValue: ({
3962
4118
  value
3963
- }) => minDash.isArray(value) || minDash.isObject(value) ? '' : String(value),
4119
+ }) => minDash.isArray(value) || minDash.isObject(value) || minDash.isNil(value) ? '' : String(value),
3964
4120
  create: (options = {}) => ({
3965
4121
  ...options
3966
4122
  })
@@ -3984,84 +4140,64 @@ const autoSizeTextarea = textarea => {
3984
4140
  textarea.style.overflow = calculatedHeight > maxHeight ? 'visible' : 'hidden';
3985
4141
  };
3986
4142
 
3987
- var _path$d;
3988
- 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); }
4143
+ var _path$f;
4144
+ 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); }
3989
4145
  var SvgButton = function SvgButton(props) {
3990
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$f({
4146
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$g({
3991
4147
  xmlns: "http://www.w3.org/2000/svg",
3992
4148
  width: 54,
3993
4149
  height: 54,
3994
4150
  fill: "currentcolor"
3995
- }, props), _path$d || (_path$d = /*#__PURE__*/React__namespace.createElement("path", {
4151
+ }, props), _path$f || (_path$f = /*#__PURE__*/React__namespace.createElement("path", {
3996
4152
  fillRule: "evenodd",
3997
4153
  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-3h36zm-9 8.889H18v2.222h18v-2.222z"
3998
4154
  })));
3999
4155
  };
4000
4156
  var ButtonIcon = SvgButton;
4001
4157
 
4002
- var _path$c;
4003
- 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); }
4158
+ var _path$e;
4159
+ 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); }
4004
4160
  var SvgCheckbox = function SvgCheckbox(props) {
4005
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$e({
4161
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$f({
4006
4162
  xmlns: "http://www.w3.org/2000/svg",
4007
4163
  width: 54,
4008
4164
  height: 54,
4009
4165
  fill: "currentcolor"
4010
- }, props), _path$c || (_path$c = /*#__PURE__*/React__namespace.createElement("path", {
4166
+ }, props), _path$e || (_path$e = /*#__PURE__*/React__namespace.createElement("path", {
4011
4167
  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-2zm-9 14-5-5 1.41-1.41L25 29.17l7.59-7.59L34 23l-9 9z"
4012
4168
  })));
4013
4169
  };
4014
4170
  var CheckboxIcon = SvgCheckbox;
4015
4171
 
4016
- var _g, _use, _use2, _use3, _defs;
4017
- 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); }
4172
+ var _path$d;
4173
+ 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); }
4018
4174
  var SvgChecklist = function SvgChecklist(props) {
4019
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$d({
4175
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$e({
4020
4176
  xmlns: "http://www.w3.org/2000/svg",
4021
- xmlnsXlink: "http://www.w3.org/1999/xlink",
4022
4177
  width: 54,
4023
4178
  height: 54,
4024
- fill: "currentcolor"
4025
- }, props), _g || (_g = /*#__PURE__*/React__namespace.createElement("g", {
4026
- fillRule: "evenodd"
4027
- }, /*#__PURE__*/React__namespace.createElement("use", {
4028
- xlinkHref: "#Checklist_svg__a"
4029
- }), /*#__PURE__*/React__namespace.createElement("use", {
4030
- xlinkHref: "#Checklist_svg__a",
4031
- y: 24
4032
- }), /*#__PURE__*/React__namespace.createElement("use", {
4033
- xlinkHref: "#Checklist_svg__a",
4034
- y: 12
4035
- }))), _use || (_use = /*#__PURE__*/React__namespace.createElement("use", {
4036
- xlinkHref: "#Checklist_svg__b"
4037
- })), _use2 || (_use2 = /*#__PURE__*/React__namespace.createElement("use", {
4038
- xlinkHref: "#Checklist_svg__b",
4039
- y: 12
4040
- })), _use3 || (_use3 = /*#__PURE__*/React__namespace.createElement("use", {
4041
- xlinkHref: "#Checklist_svg__b",
4042
- y: 24
4043
- })), _defs || (_defs = /*#__PURE__*/React__namespace.createElement("defs", null, /*#__PURE__*/React__namespace.createElement("path", {
4044
- id: "Checklist_svg__a",
4045
- d: "M18 12h-6v6h6v-6zm-6-2a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2h-6z"
4046
- }), /*#__PURE__*/React__namespace.createElement("path", {
4047
- id: "Checklist_svg__b",
4048
- d: "M23 14.5a1 1 0 0 1 1-1h19a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H24a1 1 0 0 1-1-1v-1z"
4049
- }))));
4179
+ fill: "none"
4180
+ }, props), _path$d || (_path$d = /*#__PURE__*/React__namespace.createElement("path", {
4181
+ fill: "currentColor",
4182
+ fillRule: "evenodd",
4183
+ d: "M14.35 24.75H19v4.65h-4.65v-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.414ZM14.35 37.05H19v4.65h-4.65v-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.414ZM14.35 12.45H19v4.65h-4.65v-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.414Zm12.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.293Zm0 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.293Zm0-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.293Z",
4184
+ clipRule: "evenodd"
4185
+ })));
4050
4186
  };
4051
4187
  var ChecklistIcon = SvgChecklist;
4052
4188
 
4053
- var _path$b, _path2$2, _path3;
4054
- 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); }
4189
+ var _path$c, _path2$3, _path3;
4190
+ 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); }
4055
4191
  var SvgDatetime = function SvgDatetime(props) {
4056
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$c({
4192
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$d({
4057
4193
  xmlns: "http://www.w3.org/2000/svg",
4058
4194
  width: 54,
4059
4195
  height: 54,
4060
4196
  fill: "currentcolor"
4061
- }, props), _path$b || (_path$b = /*#__PURE__*/React__namespace.createElement("path", {
4197
+ }, props), _path$c || (_path$c = /*#__PURE__*/React__namespace.createElement("path", {
4062
4198
  fillRule: "evenodd",
4063
4199
  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.06z"
4064
- })), _path2$2 || (_path2$2 = /*#__PURE__*/React__namespace.createElement("path", {
4200
+ })), _path2$3 || (_path2$3 = /*#__PURE__*/React__namespace.createElement("path", {
4065
4201
  d: "m35.13 37.603 1.237-1.237-3.468-3.475v-5.926h-1.754v6.654l3.984 3.984Z"
4066
4202
  })), _path3 || (_path3 = /*#__PURE__*/React__namespace.createElement("path", {
4067
4203
  fillRule: "evenodd",
@@ -4070,27 +4206,27 @@ var SvgDatetime = function SvgDatetime(props) {
4070
4206
  };
4071
4207
  var DatetimeIcon = SvgDatetime;
4072
4208
 
4073
- var _path$a, _path2$1;
4074
- 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); }
4209
+ var _path$b, _path2$2;
4210
+ 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); }
4075
4211
  var SvgTaglist = function SvgTaglist(props) {
4076
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$b({
4212
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$c({
4077
4213
  xmlns: "http://www.w3.org/2000/svg",
4078
4214
  width: 54,
4079
4215
  height: 54,
4080
4216
  fill: "currentcolor"
4081
- }, props), _path$a || (_path$a = /*#__PURE__*/React__namespace.createElement("path", {
4217
+ }, props), _path$b || (_path$b = /*#__PURE__*/React__namespace.createElement("path", {
4082
4218
  fillRule: "evenodd",
4083
4219
  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-3h36Zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1Z"
4084
- })), _path2$1 || (_path2$1 = /*#__PURE__*/React__namespace.createElement("path", {
4220
+ })), _path2$2 || (_path2$2 = /*#__PURE__*/React__namespace.createElement("path", {
4085
4221
  d: "M11 22a1 1 0 0 1 1-1h19a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H12a1 1 0 0 1-1-1V22Z"
4086
4222
  })));
4087
4223
  };
4088
4224
  var TaglistIcon = SvgTaglist;
4089
4225
 
4090
4226
  var _rect, _rect2, _rect3;
4091
- function _extends$a() { _extends$a = 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$a.apply(this, arguments); }
4227
+ 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); }
4092
4228
  var SvgForm = function SvgForm(props) {
4093
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$a({
4229
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$b({
4094
4230
  xmlns: "http://www.w3.org/2000/svg",
4095
4231
  width: 54,
4096
4232
  height: 54
@@ -4116,9 +4252,24 @@ var SvgForm = function SvgForm(props) {
4116
4252
  };
4117
4253
  var FormIcon = SvgForm;
4118
4254
 
4255
+ var _path$a;
4256
+ function _extends$a() { _extends$a = 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$a.apply(this, arguments); }
4257
+ var SvgGroup = function SvgGroup(props) {
4258
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$a({
4259
+ xmlns: "http://www.w3.org/2000/svg",
4260
+ width: 54,
4261
+ height: 54,
4262
+ fill: "currentcolor"
4263
+ }, props), _path$a || (_path$a = /*#__PURE__*/React__namespace.createElement("path", {
4264
+ fillRule: "evenodd",
4265
+ d: "M8 33v5a1 1 0 0 0 1 1h4v2H9a3 3 0 0 1-3-3v-5h2Zm18 6v2H15v-2h11Zm13 0v2H28v-2h11Zm9-6v5a3 3 0 0 1-3 3h-4v-2h4a1 1 0 0 0 .993-.883L46 38v-5h2ZM8 22v9H6v-9h2Zm40 0v9h-2v-9h2Zm-35-9v2H9a1 1 0 0 0-.993.883L8 16v4H6v-4a3 3 0 0 1 3-3h4Zm32 0a3 3 0 0 1 3 3v4h-2v-4a1 1 0 0 0-.883-.993L45 15h-4v-2h4Zm-6 0v2H28v-2h11Zm-13 0v2H15v-2h11Z"
4266
+ })));
4267
+ };
4268
+ var GroupIcon = SvgGroup;
4269
+
4119
4270
  var _path$9;
4120
4271
  function _extends$9() { _extends$9 = 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$9.apply(this, arguments); }
4121
- var SvgGroup = function SvgGroup(props) {
4272
+ var SvgNumber = function SvgNumber(props) {
4122
4273
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$9({
4123
4274
  xmlns: "http://www.w3.org/2000/svg",
4124
4275
  width: 54,
@@ -4126,58 +4277,58 @@ var SvgGroup = function SvgGroup(props) {
4126
4277
  fill: "currentcolor"
4127
4278
  }, props), _path$9 || (_path$9 = /*#__PURE__*/React__namespace.createElement("path", {
4128
4279
  fillRule: "evenodd",
4129
- d: "M8 33v5a1 1 0 0 0 1 1h4v2H9a3 3 0 0 1-3-3v-5h2Zm18 6v2H15v-2h11Zm13 0v2H28v-2h11Zm9-6v5a3 3 0 0 1-3 3h-4v-2h4a1 1 0 0 0 .993-.883L46 38v-5h2ZM8 22v9H6v-9h2Zm40 0v9h-2v-9h2Zm-35-9v2H9a1 1 0 0 0-.993.883L8 16v4H6v-4a3 3 0 0 1 3-3h4Zm32 0a3 3 0 0 1 3 3v4h-2v-4a1 1 0 0 0-.883-.993L45 15h-4v-2h4Zm-6 0v2H28v-2h11Zm-13 0v2H15v-2h11Z"
4280
+ 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-3h36zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1zM35 28.444h7l-3.5 4-3.5-4zM35 26h7l-3.5-4-3.5 4z"
4130
4281
  })));
4131
4282
  };
4132
- var GroupIcon = SvgGroup;
4283
+ var NumberIcon = SvgNumber;
4133
4284
 
4134
4285
  var _path$8;
4135
4286
  function _extends$8() { _extends$8 = 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$8.apply(this, arguments); }
4136
- var SvgNumber = function SvgNumber(props) {
4287
+ var SvgRadio = function SvgRadio(props) {
4137
4288
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$8({
4138
4289
  xmlns: "http://www.w3.org/2000/svg",
4139
4290
  width: 54,
4140
4291
  height: 54,
4141
4292
  fill: "currentcolor"
4142
4293
  }, props), _path$8 || (_path$8 = /*#__PURE__*/React__namespace.createElement("path", {
4143
- fillRule: "evenodd",
4144
- 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-3h36zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1zM35 28.444h7l-3.5 4-3.5-4zM35 26h7l-3.5-4-3.5 4z"
4294
+ d: "M27 22c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18a8 8 0 1 1 0-16 8 8 0 1 1 0 16z"
4145
4295
  })));
4146
4296
  };
4147
- var NumberIcon = SvgNumber;
4297
+ var RadioIcon = SvgRadio;
4148
4298
 
4149
4299
  var _path$7;
4150
4300
  function _extends$7() { _extends$7 = 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$7.apply(this, arguments); }
4151
- var SvgRadio = function SvgRadio(props) {
4301
+ var SvgSelect = function SvgSelect(props) {
4152
4302
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$7({
4153
4303
  xmlns: "http://www.w3.org/2000/svg",
4154
4304
  width: 54,
4155
4305
  height: 54,
4156
4306
  fill: "currentcolor"
4157
4307
  }, props), _path$7 || (_path$7 = /*#__PURE__*/React__namespace.createElement("path", {
4158
- d: "M27 22c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18a8 8 0 1 1 0-16 8 8 0 1 1 0 16z"
4308
+ fillRule: "evenodd",
4309
+ 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-3h36zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1zm-12 7h9l-4.5 6-4.5-6z"
4159
4310
  })));
4160
4311
  };
4161
- var RadioIcon = SvgRadio;
4312
+ var SelectIcon = SvgSelect;
4162
4313
 
4163
4314
  var _path$6;
4164
4315
  function _extends$6() { _extends$6 = 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$6.apply(this, arguments); }
4165
- var SvgSelect = function SvgSelect(props) {
4316
+ var SvgSeparator = function SvgSeparator(props) {
4166
4317
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$6({
4167
4318
  xmlns: "http://www.w3.org/2000/svg",
4168
4319
  width: 54,
4169
4320
  height: 54,
4170
- fill: "currentcolor"
4321
+ fill: "none"
4171
4322
  }, props), _path$6 || (_path$6 = /*#__PURE__*/React__namespace.createElement("path", {
4172
- fillRule: "evenodd",
4173
- 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-3h36zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1zm-12 7h9l-4.5 6-4.5-6z"
4323
+ fill: "currentColor",
4324
+ 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.414l4-4ZM9 26h36v2H9v-2Zm13.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.414Z"
4174
4325
  })));
4175
4326
  };
4176
- var SelectIcon = SvgSelect;
4327
+ var SeparatorIcon = SvgSeparator;
4177
4328
 
4178
4329
  var _path$5;
4179
4330
  function _extends$5() { _extends$5 = 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$5.apply(this, arguments); }
4180
- var SvgSeparator = function SvgSeparator(props) {
4331
+ var SvgSpacer = function SvgSpacer(props) {
4181
4332
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$5({
4182
4333
  xmlns: "http://www.w3.org/2000/svg",
4183
4334
  width: 54,
@@ -4185,43 +4336,43 @@ var SvgSeparator = function SvgSeparator(props) {
4185
4336
  fill: "none"
4186
4337
  }, props), _path$5 || (_path$5 = /*#__PURE__*/React__namespace.createElement("path", {
4187
4338
  fill: "currentColor",
4188
- 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.414l4-4ZM9 26h36v2H9v-2Zm13.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.414Z"
4339
+ d: "M9 15v2h36v-2H9Zm0 22v2h36v-2H9Zm17.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.414l4-4Zm-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.414Z"
4189
4340
  })));
4190
4341
  };
4191
- var SeparatorIcon = SvgSeparator;
4342
+ var SpacerIcon = SvgSpacer;
4192
4343
 
4193
4344
  var _path$4;
4194
4345
  function _extends$4() { _extends$4 = 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$4.apply(this, arguments); }
4195
- var SvgSpacer = function SvgSpacer(props) {
4346
+ var SvgText = function SvgText(props) {
4196
4347
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$4({
4197
4348
  xmlns: "http://www.w3.org/2000/svg",
4198
4349
  width: 54,
4199
4350
  height: 54,
4200
- fill: "none"
4351
+ fill: "currentcolor"
4201
4352
  }, props), _path$4 || (_path$4 = /*#__PURE__*/React__namespace.createElement("path", {
4202
- fill: "currentColor",
4203
- d: "M9 15v2h36v-2H9Zm0 22v2h36v-2H9Zm17.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.414l4-4Zm-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.414Z"
4353
+ 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.47 15.47 0 0 1 2.4.14 3.42 3.42 0 0 1 1.41.55 3.47 3.47 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.63 3.63 0 0 1-1.09 1.4 3.89 3.89 0 0 1-1.83.65q-.69.07-3.3.09H22zm2.73 2.25v3.13h3.8a1.79 1.79 0 0 0 1.1-.49 1.41 1.41 0 0 0 .41-1 1.49 1.49 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.52 11.52 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.69 1.69 0 0 0-.86-.62 9.28 9.28 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.09 7.09 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.31 5.31 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.21z"
4204
4354
  })));
4205
4355
  };
4206
- var SpacerIcon = SvgSpacer;
4356
+ var TextIcon = SvgText;
4207
4357
 
4208
4358
  var _path$3;
4209
4359
  function _extends$3() { _extends$3 = 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$3.apply(this, arguments); }
4210
- var SvgText = function SvgText(props) {
4360
+ var SvgTextfield = function SvgTextfield(props) {
4211
4361
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$3({
4212
4362
  xmlns: "http://www.w3.org/2000/svg",
4213
4363
  width: 54,
4214
4364
  height: 54,
4215
4365
  fill: "currentcolor"
4216
4366
  }, props), _path$3 || (_path$3 = /*#__PURE__*/React__namespace.createElement("path", {
4217
- 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.47 15.47 0 0 1 2.4.14 3.42 3.42 0 0 1 1.41.55 3.47 3.47 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.63 3.63 0 0 1-1.09 1.4 3.89 3.89 0 0 1-1.83.65q-.69.07-3.3.09H22zm2.73 2.25v3.13h3.8a1.79 1.79 0 0 0 1.1-.49 1.41 1.41 0 0 0 .41-1 1.49 1.49 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.52 11.52 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.69 1.69 0 0 0-.86-.62 9.28 9.28 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.09 7.09 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.31 5.31 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.21z"
4367
+ fillRule: "evenodd",
4368
+ 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-3h36zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1zm-32 4v10h-2V22h2z"
4218
4369
  })));
4219
4370
  };
4220
- var TextIcon = SvgText;
4371
+ var TextfieldIcon = SvgTextfield;
4221
4372
 
4222
4373
  var _path$2;
4223
4374
  function _extends$2() { _extends$2 = 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$2.apply(this, arguments); }
4224
- var SvgTextfield = function SvgTextfield(props) {
4375
+ var SvgTextarea = function SvgTextarea(props) {
4225
4376
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$2({
4226
4377
  xmlns: "http://www.w3.org/2000/svg",
4227
4378
  width: 54,
@@ -4229,25 +4380,30 @@ var SvgTextfield = function SvgTextfield(props) {
4229
4380
  fill: "currentcolor"
4230
4381
  }, props), _path$2 || (_path$2 = /*#__PURE__*/React__namespace.createElement("path", {
4231
4382
  fillRule: "evenodd",
4232
- 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-3h36zm0 2H9a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V19a1 1 0 0 0-1-1zm-32 4v10h-2V22h2z"
4383
+ 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-3h36zm0 2H9a1 1 0 0 0-1 1v22a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V16a1 1 0 0 0-1-1zm-1.136 15.5.849.849-6.364 6.364-.849-.849 6.364-6.364zm.264 3.5.849.849-2.828 2.828-.849-.849L44.128 34zM13 19v10h-2V19h2z"
4233
4384
  })));
4234
4385
  };
4235
- var TextfieldIcon = SvgTextfield;
4386
+ var TextareaIcon = SvgTextarea;
4236
4387
 
4237
- var _path$1;
4388
+ var _path$1, _path2$1;
4238
4389
  function _extends$1() { _extends$1 = 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$1.apply(this, arguments); }
4239
- var SvgTextarea = function SvgTextarea(props) {
4390
+ var SvgIFrame = function SvgIFrame(props) {
4240
4391
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$1({
4241
4392
  xmlns: "http://www.w3.org/2000/svg",
4242
4393
  width: 54,
4243
4394
  height: 54,
4244
- fill: "currentcolor"
4395
+ fill: "none"
4245
4396
  }, props), _path$1 || (_path$1 = /*#__PURE__*/React__namespace.createElement("path", {
4397
+ fill: "currentcolor",
4398
+ d: "M34.467 37.3 41 31l-6.533-6.3-1.32 1.273L38.36 31l-5.213 5.027 1.32 1.273ZM19.533 24.7 13 31l6.533 6.3 1.32-1.273L15.64 31l5.214-5.027-1.32-1.273Zm4.127 14.832 1.805.468 4.875-17.532L28.535 22 23.66 39.532Z"
4399
+ })), _path2$1 || (_path2$1 = /*#__PURE__*/React__namespace.createElement("path", {
4400
+ fill: "currentcolor",
4246
4401
  fillRule: "evenodd",
4247
- 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-3h36zm0 2H9a1 1 0 0 0-1 1v22a1 1 0 0 0 1 1h36a1 1 0 0 0 1-1V16a1 1 0 0 0-1-1zm-1.136 15.5.849.849-6.364 6.364-.849-.849 6.364-6.364zm.264 3.5.849.849-2.828 2.828-.849-.849L44.128 34zM13 19v10h-2V19h2z"
4402
+ d: "M46 9a3 3 0 0 1 3 3v30a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3V12a3 3 0 0 1 3-3h38Zm0 2H8a1 1 0 0 0-1 1v4h40v-4a1 1 0 0 0-1-1ZM7 42V18h40v24a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1Z",
4403
+ clipRule: "evenodd"
4248
4404
  })));
4249
4405
  };
4250
- var TextareaIcon = SvgTextarea;
4406
+ var IFrameIcon = SvgIFrame;
4251
4407
 
4252
4408
  var _path, _path2;
4253
4409
  function _extends() { _extends = 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.apply(this, arguments); }
@@ -4277,6 +4433,7 @@ const iconsByType = type => {
4277
4433
  columns: GroupIcon,
4278
4434
  datetime: DatetimeIcon,
4279
4435
  group: GroupIcon,
4436
+ iframe: IFrameIcon,
4280
4437
  image: ImageIcon,
4281
4438
  number: NumberIcon,
4282
4439
  radio: RadioIcon,
@@ -4291,7 +4448,7 @@ const iconsByType = type => {
4291
4448
  }[type];
4292
4449
  };
4293
4450
 
4294
- const formFields = [Button, Checkbox, Checklist, FormComponent$1, Group, Image, Numberfield, Datetime, Radio, Select, Spacer, Separator, Taglist, Text, Textfield, Textarea];
4451
+ const formFields = [Button, Checkbox, Checklist, FormComponent$1, Group, IFrame, Image, Numberfield, Datetime, Radio, Select, Spacer, Separator, Taglist, Text, Textfield, Textarea];
4295
4452
 
4296
4453
  class FormFields {
4297
4454
  constructor() {
@@ -4363,8 +4520,8 @@ function createFormContainer(prefix = 'fjs') {
4363
4520
  return container;
4364
4521
  }
4365
4522
 
4366
- const EXPRESSION_PROPERTIES = ['alt', 'appearance.prefixAdorner', 'appearance.suffixAdorner', 'conditional.hide', 'description', 'label', 'source', 'readonly', 'text', 'validate.min', 'validate.max', 'validate.minLength', 'validate.maxLength', 'valuesExpression'];
4367
- const TEMPLATE_PROPERTIES = ['alt', 'appearance.prefixAdorner', 'appearance.suffixAdorner', 'description', 'label', 'source', 'text'];
4523
+ 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'];
4524
+ const TEMPLATE_PROPERTIES = ['alt', 'appearance.prefixAdorner', 'appearance.suffixAdorner', 'description', 'label', 'source', 'text', 'url'];
4368
4525
  function isRequired(field) {
4369
4526
  return field.required;
4370
4527
  }
@@ -6859,7 +7016,7 @@ class Form {
6859
7016
  }
6860
7017
  }
6861
7018
 
6862
- const schemaVersion = 12;
7019
+ const schemaVersion = 13;
6863
7020
 
6864
7021
  /**
6865
7022
  * @typedef { import('./types').CreateFormOptions } CreateFormOptions
@@ -6910,6 +7067,7 @@ exports.FormFields = FormFields;
6910
7067
  exports.FormLayouter = FormLayouter;
6911
7068
  exports.FormRenderContext = FormRenderContext$1;
6912
7069
  exports.Group = Group;
7070
+ exports.IFrame = IFrame;
6913
7071
  exports.Image = Image;
6914
7072
  exports.Importer = Importer;
6915
7073
  exports.Label = Label;
@@ -6954,6 +7112,10 @@ exports.pathParse = pathParse;
6954
7112
  exports.pathsEqual = pathsEqual;
6955
7113
  exports.runRecursively = runRecursively;
6956
7114
  exports.sanitizeHTML = sanitizeHTML;
7115
+ exports.sanitizeIFrameSource = sanitizeIFrameSource;
6957
7116
  exports.sanitizeImageSource = sanitizeImageSource;
6958
7117
  exports.schemaVersion = schemaVersion;
7118
+ exports.useExpressionEvaluation = useExpressionEvaluation;
7119
+ exports.useSingleLineTemplateEvaluation = useSingleLineTemplateEvaluation;
7120
+ exports.useTemplateEvaluation = useTemplateEvaluation;
6959
7121
  //# sourceMappingURL=index.cjs.map