@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.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import Ids from 'ids';
2
- import { isString, get, isNumber, set, findIndex, isArray, isObject, values, uniqueBy, isFunction, bind, assign, isNil, groupBy, flatten, isUndefined } from 'min-dash';
2
+ import { isString, get, isNumber, set, findIndex, isArray, isObject, isNil, values, uniqueBy, isFunction, bind, assign, groupBy, flatten, isUndefined } from 'min-dash';
3
3
  import Big from 'big.js';
4
4
  import { parseExpression, parseUnaryTests, evaluate, unaryTest } from 'feelin';
5
5
  import { evaluate as evaluate$1, parser, buildSimpleTree } from 'feelers';
@@ -425,7 +425,7 @@ function prefixId(id, formId) {
425
425
  return `fjs-form-${id}`;
426
426
  }
427
427
 
428
- const type$d = 'button';
428
+ const type$e = 'button';
429
429
  function Button(props) {
430
430
  const {
431
431
  disabled,
@@ -437,7 +437,7 @@ function Button(props) {
437
437
  action = 'submit'
438
438
  } = field;
439
439
  return jsx("div", {
440
- class: formFieldClasses(type$d),
440
+ class: formFieldClasses(type$e),
441
441
  children: jsx("button", {
442
442
  class: "fjs-button",
443
443
  type: action,
@@ -449,7 +449,7 @@ function Button(props) {
449
449
  });
450
450
  }
451
451
  Button.config = {
452
- type: type$d,
452
+ type: type$e,
453
453
  keyed: false,
454
454
  label: 'Button',
455
455
  group: 'action',
@@ -747,7 +747,7 @@ function Label(props) {
747
747
  });
748
748
  }
749
749
 
750
- const type$c = 'checkbox';
750
+ const type$d = 'checkbox';
751
751
  function Checkbox(props) {
752
752
  const {
753
753
  disabled,
@@ -780,7 +780,7 @@ function Checkbox(props) {
780
780
  } = useContext(FormContext$1);
781
781
  const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
782
782
  return jsxs("div", {
783
- class: classNames(formFieldClasses(type$c, {
783
+ class: classNames(formFieldClasses(type$d, {
784
784
  errors,
785
785
  disabled,
786
786
  readonly
@@ -812,7 +812,7 @@ function Checkbox(props) {
812
812
  });
813
813
  }
814
814
  Checkbox.config = {
815
- type: type$c,
815
+ type: type$d,
816
816
  keyed: true,
817
817
  label: 'Checkbox',
818
818
  group: 'selection',
@@ -826,54 +826,54 @@ Checkbox.config = {
826
826
  };
827
827
 
828
828
  // parses the options data from the provided form field and form data
829
- function getValuesData(formField, formData) {
829
+ function getOptionsData(formField, formData) {
830
830
  const {
831
- valuesKey,
832
- values
831
+ valuesKey: optionsKey,
832
+ values: staticOptions
833
833
  } = formField;
834
- return valuesKey ? get(formData, [valuesKey]) : values;
834
+ return optionsKey ? get(formData, [optionsKey]) : staticOptions;
835
835
  }
836
836
 
837
837
  // transforms the provided options into a normalized format, trimming invalid options
838
- function normalizeValuesData(valuesData) {
839
- return valuesData.filter(_isValueSomething).map(v => _normalizeValueData(v)).filter(v => v);
838
+ function normalizeOptionsData(optionsData) {
839
+ return optionsData.filter(_isOptionSomething).map(v => _normalizeOptionsData(v)).filter(v => v);
840
840
  }
841
- function _normalizeValueData(valueData) {
842
- if (_isAllowedValue(valueData)) {
841
+ function _normalizeOptionsData(optionData) {
842
+ if (_isAllowedOption(optionData)) {
843
843
  // if a primitive is provided, use it as label and value
844
844
  return {
845
- value: valueData,
846
- label: `${valueData}`
845
+ value: optionData,
846
+ label: `${optionData}`
847
847
  };
848
848
  }
849
- if (typeof valueData === 'object') {
850
- if (!valueData.label && _isAllowedValue(valueData.value)) {
849
+ if (typeof optionData === 'object') {
850
+ if (!optionData.label && _isAllowedOption(optionData.value)) {
851
851
  // if no label is provided, use the value as label
852
852
  return {
853
- value: valueData.value,
854
- label: `${valueData.value}`
853
+ value: optionData.value,
854
+ label: `${optionData.value}`
855
855
  };
856
856
  }
857
- if (_isValueSomething(valueData.value) && _isAllowedValue(valueData.label)) {
857
+ if (_isOptionSomething(optionData.value) && _isAllowedOption(optionData.label)) {
858
858
  // if both value and label are provided, use them as is, in this scenario, the value may also be an object
859
- return valueData;
859
+ return optionData;
860
860
  }
861
861
  }
862
862
  return null;
863
863
  }
864
- function _isAllowedValue(value) {
865
- return _isReadableType(value) && _isValueSomething(value);
864
+ function _isAllowedOption(option) {
865
+ return _isReadableType(option) && _isOptionSomething(option);
866
866
  }
867
- function _isReadableType(value) {
868
- return ['number', 'string', 'boolean'].includes(typeof value);
867
+ function _isReadableType(option) {
868
+ return ['number', 'string', 'boolean'].includes(typeof option);
869
869
  }
870
- function _isValueSomething(value) {
871
- return value || value === 0 || value === false;
870
+ function _isOptionSomething(option) {
871
+ return option || option === 0 || option === false;
872
872
  }
873
873
  function createEmptyOptions(options = {}) {
874
874
  const defaults = {};
875
875
 
876
- // provide default values if valuesKey and valuesExpression are not set
876
+ // provide default options if valuesKey and valuesExpression are not set
877
877
  if (!options.valuesKey && !options.valuesExpression) {
878
878
  defaults.values = [{
879
879
  label: 'Value',
@@ -896,72 +896,96 @@ const LOAD_STATES = {
896
896
  };
897
897
 
898
898
  /**
899
- * @typedef {Object} ValuesGetter
900
- * @property {Object[]} values - The values data
901
- * @property {(LOAD_STATES)} state - The values data's loading state, to use for conditional rendering
899
+ * @typedef {Object} OptionsGetter
900
+ * @property {Object[]} options - The options data
901
+ * @property {(LOAD_STATES)} loadState - The options data's loading state, to use for conditional rendering
902
902
  */
903
903
 
904
904
  /**
905
- * A hook to load values for single and multiselect components.
905
+ * A hook to load options for single and multiselect components.
906
906
  *
907
- * @param {Object} field - The form field to handle values for
908
- * @return {ValuesGetter} valuesGetter - A values getter object providing loading state and values
907
+ * @param {Object} field - The form field to handle options for
908
+ * @return {OptionsGetter} optionsGetter - A options getter object providing loading state and options
909
909
  */
910
- function useValuesAsync (field) {
910
+ function useOptionsAsync (field) {
911
911
  const {
912
- valuesExpression,
913
- valuesKey,
914
- values: staticValues
912
+ valuesExpression: optionsExpression,
913
+ valuesKey: optionsKey,
914
+ values: staticOptions
915
915
  } = field;
916
- const [valuesGetter, setValuesGetter] = useState({
917
- values: [],
916
+ const [optionsGetter, setOptionsGetter] = useState({
917
+ options: [],
918
918
  error: undefined,
919
- state: LOAD_STATES.LOADING
919
+ loadState: LOAD_STATES.LOADING
920
920
  });
921
921
  const initialData = useService('form')._getState().initialData;
922
- const expressionEvaluation = useExpressionEvaluation(valuesExpression);
923
- const evaluatedValues = useDeepCompareState(expressionEvaluation || [], []);
922
+ const expressionEvaluation = useExpressionEvaluation(optionsExpression);
923
+ const evaluatedOptions = useDeepCompareState(expressionEvaluation || [], []);
924
924
  useEffect(() => {
925
- let values = [];
925
+ let options = [];
926
926
 
927
- // dynamic values
928
- if (valuesKey !== undefined) {
929
- const keyedValues = (initialData || {})[valuesKey];
930
- if (keyedValues && Array.isArray(keyedValues)) {
931
- values = keyedValues;
927
+ // dynamic options
928
+ if (optionsKey !== undefined) {
929
+ const keyedOptions = (initialData || {})[optionsKey];
930
+ if (keyedOptions && Array.isArray(keyedOptions)) {
931
+ options = keyedOptions;
932
932
  }
933
933
 
934
- // static values
935
- } else if (staticValues !== undefined) {
936
- values = Array.isArray(staticValues) ? staticValues : [];
934
+ // static options
935
+ } else if (staticOptions !== undefined) {
936
+ options = Array.isArray(staticOptions) ? staticOptions : [];
937
937
 
938
938
  // expression
939
- } else if (valuesExpression) {
940
- if (evaluatedValues && Array.isArray(evaluatedValues)) {
941
- values = evaluatedValues;
939
+ } else if (optionsExpression) {
940
+ if (evaluatedOptions && Array.isArray(evaluatedOptions)) {
941
+ options = evaluatedOptions;
942
942
  }
943
943
  } else {
944
- setValuesGetter(buildErrorState('No values source defined in the form definition'));
944
+ setOptionsGetter(buildErrorState('No options source defined in the form definition'));
945
945
  return;
946
946
  }
947
947
 
948
948
  // normalize data to support primitives and partially defined objects
949
- values = normalizeValuesData(values);
950
- setValuesGetter(buildLoadedState(values));
951
- }, [valuesKey, staticValues, initialData, valuesExpression, evaluatedValues]);
952
- return valuesGetter;
949
+ options = normalizeOptionsData(options);
950
+ setOptionsGetter(buildLoadedState(options));
951
+ }, [optionsKey, staticOptions, initialData, optionsExpression, evaluatedOptions]);
952
+ return optionsGetter;
953
953
  }
954
954
  const buildErrorState = error => ({
955
- values: [],
955
+ options: [],
956
956
  error,
957
- state: LOAD_STATES.ERROR
957
+ loadState: LOAD_STATES.ERROR
958
958
  });
959
- const buildLoadedState = values => ({
960
- values,
959
+ const buildLoadedState = options => ({
960
+ options,
961
961
  error: undefined,
962
- state: LOAD_STATES.LOADED
962
+ loadState: LOAD_STATES.LOADED
963
963
  });
964
964
 
965
+ function useCleanupMultiSelectValues (props) {
966
+ const {
967
+ field,
968
+ options,
969
+ loadState,
970
+ onChange,
971
+ values
972
+ } = props;
973
+
974
+ // Ensures that the values are always a subset of the possible options
975
+ useEffect(() => {
976
+ if (loadState !== LOAD_STATES.LOADED) {
977
+ return;
978
+ }
979
+ const hasValuesNotInOptions = values.some(v => !options.map(o => o.value).includes(v));
980
+ if (hasValuesNotInOptions) {
981
+ onChange({
982
+ field,
983
+ value: values.filter(v => options.map(o => o.value).includes(v))
984
+ });
985
+ }
986
+ }, [field, options, onChange, JSON.stringify(values), loadState]);
987
+ }
988
+
965
989
  // config ///////////////////
966
990
 
967
991
  const MINUTES_IN_DAY = 60 * 24;
@@ -1175,7 +1199,7 @@ function sanitizeSingleSelectValue(options) {
1175
1199
  value
1176
1200
  } = options;
1177
1201
  try {
1178
- const validValues = normalizeValuesData(getValuesData(formField, data)).map(v => v.value);
1202
+ const validValues = normalizeOptionsData(getOptionsData(formField, data)).map(v => v.value);
1179
1203
  return validValues.includes(value) ? value : null;
1180
1204
  } catch (error) {
1181
1205
  // use default value in case of formatting error
@@ -1190,7 +1214,7 @@ function sanitizeMultiSelectValue(options) {
1190
1214
  value
1191
1215
  } = options;
1192
1216
  try {
1193
- const validValues = normalizeValuesData(getValuesData(formField, data)).map(v => v.value);
1217
+ const validValues = normalizeOptionsData(getOptionsData(formField, data)).map(v => v.value);
1194
1218
  return value.filter(v => validValues.includes(v));
1195
1219
  } catch (error) {
1196
1220
  // use default value in case of formatting error
@@ -1199,7 +1223,7 @@ function sanitizeMultiSelectValue(options) {
1199
1223
  }
1200
1224
  }
1201
1225
 
1202
- const type$b = 'checklist';
1226
+ const type$c = 'checklist';
1203
1227
  function Checklist(props) {
1204
1228
  const {
1205
1229
  disabled,
@@ -1208,7 +1232,7 @@ function Checklist(props) {
1208
1232
  onFocus,
1209
1233
  field,
1210
1234
  readonly,
1211
- value = []
1235
+ value: values = []
1212
1236
  } = props;
1213
1237
  const {
1214
1238
  description,
@@ -1221,7 +1245,7 @@ function Checklist(props) {
1221
1245
  required
1222
1246
  } = validate;
1223
1247
  const toggleCheckbox = v => {
1224
- let newValue = [...value];
1248
+ let newValue = [...values];
1225
1249
  if (!newValue.includes(v)) {
1226
1250
  newValue.push(v);
1227
1251
  } else {
@@ -1245,15 +1269,22 @@ function Checklist(props) {
1245
1269
  onFocus && onFocus();
1246
1270
  };
1247
1271
  const {
1248
- state: loadState,
1249
- values: options
1250
- } = useValuesAsync(field);
1272
+ loadState,
1273
+ options
1274
+ } = useOptionsAsync(field);
1275
+ useCleanupMultiSelectValues({
1276
+ field,
1277
+ loadState,
1278
+ options,
1279
+ values,
1280
+ onChange: props.onChange
1281
+ });
1251
1282
  const {
1252
1283
  formId
1253
1284
  } = useContext(FormContext$1);
1254
1285
  const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
1255
1286
  return jsxs("div", {
1256
- class: classNames(formFieldClasses(type$b, {
1287
+ class: classNames(formFieldClasses(type$c, {
1257
1288
  errors,
1258
1289
  disabled,
1259
1290
  readonly
@@ -1267,11 +1298,11 @@ function Checklist(props) {
1267
1298
  id: prefixId(`${id}-${index}`, formId),
1268
1299
  label: v.label,
1269
1300
  class: classNames({
1270
- 'fjs-checked': value.includes(v.value)
1301
+ 'fjs-checked': values.includes(v.value)
1271
1302
  }),
1272
1303
  required: false,
1273
1304
  children: jsx("input", {
1274
- checked: value.includes(v.value),
1305
+ checked: values.includes(v.value),
1275
1306
  class: "fjs-input",
1276
1307
  disabled: disabled,
1277
1308
  readOnly: readonly,
@@ -1292,9 +1323,9 @@ function Checklist(props) {
1292
1323
  });
1293
1324
  }
1294
1325
  Checklist.config = {
1295
- type: type$b,
1326
+ type: type$c,
1296
1327
  keyed: true,
1297
- label: 'Checklist',
1328
+ label: 'Checkbox group',
1298
1329
  group: 'selection',
1299
1330
  emptyValue: [],
1300
1331
  sanitizeValue: sanitizeMultiSelectValue,
@@ -1444,16 +1475,16 @@ FormComponent$1.config = {
1444
1475
  })
1445
1476
  };
1446
1477
 
1447
- var _path$i;
1448
- 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); }
1478
+ var _path$k;
1479
+ 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); }
1449
1480
  var SvgCalendar = function SvgCalendar(props) {
1450
- return /*#__PURE__*/React.createElement("svg", _extends$l({
1481
+ return /*#__PURE__*/React.createElement("svg", _extends$m({
1451
1482
  xmlns: "http://www.w3.org/2000/svg",
1452
1483
  width: 14,
1453
1484
  height: 15,
1454
1485
  fill: "none",
1455
1486
  viewBox: "0 0 28 30"
1456
- }, props), _path$i || (_path$i = /*#__PURE__*/React.createElement("path", {
1487
+ }, props), _path$k || (_path$k = /*#__PURE__*/React.createElement("path", {
1457
1488
  fill: "currentColor",
1458
1489
  fillRule: "evenodd",
1459
1490
  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",
@@ -1716,19 +1747,19 @@ function Datepicker(props) {
1716
1747
  });
1717
1748
  }
1718
1749
 
1719
- var _path$h, _path2$3;
1720
- 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); }
1750
+ var _path$j, _path2$4;
1751
+ 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); }
1721
1752
  var SvgClock = function SvgClock(props) {
1722
- return /*#__PURE__*/React.createElement("svg", _extends$k({
1753
+ return /*#__PURE__*/React.createElement("svg", _extends$l({
1723
1754
  xmlns: "http://www.w3.org/2000/svg",
1724
1755
  width: 16,
1725
1756
  height: 16,
1726
1757
  fill: "none",
1727
1758
  viewBox: "0 0 28 29"
1728
- }, props), _path$h || (_path$h = /*#__PURE__*/React.createElement("path", {
1759
+ }, props), _path$j || (_path$j = /*#__PURE__*/React.createElement("path", {
1729
1760
  fill: "currentColor",
1730
1761
  d: "M13 14.41 18.59 20 20 18.59l-5-5.01V5h-2v9.41Z"
1731
- })), _path2$3 || (_path2$3 = /*#__PURE__*/React.createElement("path", {
1762
+ })), _path2$4 || (_path2$4 = /*#__PURE__*/React.createElement("path", {
1732
1763
  fill: "currentColor",
1733
1764
  fillRule: "evenodd",
1734
1765
  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",
@@ -1999,7 +2030,7 @@ function Timepicker(props) {
1999
2030
  });
2000
2031
  }
2001
2032
 
2002
- const type$a = 'datetime';
2033
+ const type$b = 'datetime';
2003
2034
  function Datetime(props) {
2004
2035
  const {
2005
2036
  disabled,
@@ -2171,7 +2202,7 @@ function Datetime(props) {
2171
2202
  'aria-describedby': errorMessageId
2172
2203
  };
2173
2204
  return jsxs("div", {
2174
- class: formFieldClasses(type$a, {
2205
+ class: formFieldClasses(type$b, {
2175
2206
  errors: allErrors,
2176
2207
  disabled,
2177
2208
  readonly
@@ -2195,7 +2226,7 @@ function Datetime(props) {
2195
2226
  });
2196
2227
  }
2197
2228
  Datetime.config = {
2198
- type: type$a,
2229
+ type: type$b,
2199
2230
  keyed: true,
2200
2231
  label: 'Date time',
2201
2232
  group: 'basic-input',
@@ -2375,7 +2406,7 @@ Group.config = {
2375
2406
  type: 'group',
2376
2407
  pathed: true,
2377
2408
  label: 'Group',
2378
- group: 'presentation',
2409
+ group: 'container',
2379
2410
  create: (options = {}) => ({
2380
2411
  components: [],
2381
2412
  showOutline: true,
@@ -2389,6 +2420,7 @@ const ALLOWED_NODES = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'em', 'a', 'p
2389
2420
  const ALLOWED_ATTRIBUTES = ['align', 'alt', 'class', 'href', 'id', 'name', 'rel', 'target', 'src'];
2390
2421
  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
2391
2422
  const ALLOWED_IMAGE_SRC_PATTERN = /^(https?|data):.*/i; // eslint-disable-line no-useless-escape
2423
+ const ALLOWED_IFRAME_SRC_PATTERN = /^(https):\/\/*/i; // eslint-disable-line no-useless-escape
2392
2424
  const ATTR_WHITESPACE_PATTERN = /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g; // eslint-disable-line no-control-regex
2393
2425
 
2394
2426
  const FORM_ELEMENT = document.createElement('form');
@@ -2429,6 +2461,18 @@ function sanitizeImageSource(src) {
2429
2461
  return valid ? src : '';
2430
2462
  }
2431
2463
 
2464
+ /**
2465
+ * Sanitizes an iframe source to ensure we only allow for links
2466
+ * that start with http(s).
2467
+ *
2468
+ * @param {string} src
2469
+ * @returns {string}
2470
+ */
2471
+ function sanitizeIFrameSource(src) {
2472
+ const valid = ALLOWED_IFRAME_SRC_PATTERN.test(src);
2473
+ return valid ? src : '';
2474
+ }
2475
+
2432
2476
  /**
2433
2477
  * Recursively sanitize a HTML node, potentially
2434
2478
  * removing it, its children or attributes.
@@ -2510,9 +2554,77 @@ function isValidAttribute(lcTag, lcName, value) {
2510
2554
  return true;
2511
2555
  }
2512
2556
 
2513
- 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); }
2557
+ const type$a = 'iframe';
2558
+ const DEFAULT_HEIGHT = 300;
2559
+ function IFrame(props) {
2560
+ const {
2561
+ field,
2562
+ disabled,
2563
+ readonly
2564
+ } = props;
2565
+ const {
2566
+ height = DEFAULT_HEIGHT,
2567
+ id,
2568
+ label,
2569
+ url
2570
+ } = field;
2571
+ const evaluatedUrl = useSingleLineTemplateEvaluation(url, {
2572
+ debug: true
2573
+ });
2574
+ const safeUrl = useMemo(() => sanitizeIFrameSource(evaluatedUrl), [evaluatedUrl]);
2575
+ const evaluatedLabel = useSingleLineTemplateEvaluation(label, {
2576
+ debug: true
2577
+ });
2578
+ const {
2579
+ formId
2580
+ } = useContext(FormContext$1);
2581
+ return jsxs("div", {
2582
+ class: formFieldClasses(type$a, {
2583
+ disabled,
2584
+ readonly
2585
+ }),
2586
+ children: [jsx(Label, {
2587
+ id: prefixId(id, formId),
2588
+ label: evaluatedLabel
2589
+ }), !evaluatedUrl && jsx(IFramePlaceholder, {
2590
+ text: "No content to show."
2591
+ }), evaluatedUrl && safeUrl && jsx("iframe", {
2592
+ src: safeUrl,
2593
+ title: evaluatedLabel,
2594
+ height: height,
2595
+ class: "fjs-iframe",
2596
+ id: prefixId(id, formId),
2597
+ sandbox: ""
2598
+ }), evaluatedUrl && !safeUrl && jsx(IFramePlaceholder, {
2599
+ text: "External content couldn't be loaded."
2600
+ })]
2601
+ });
2602
+ }
2603
+ function IFramePlaceholder(props) {
2604
+ const {
2605
+ text = 'iFrame'
2606
+ } = props;
2607
+ return jsx("div", {
2608
+ class: "fjs-iframe-placeholder",
2609
+ children: jsx("p", {
2610
+ class: "fjs-iframe-placeholder-text",
2611
+ children: text
2612
+ })
2613
+ });
2614
+ }
2615
+ IFrame.config = {
2616
+ type: type$a,
2617
+ keyed: false,
2618
+ label: 'iFrame',
2619
+ group: 'container',
2620
+ create: (options = {}) => ({
2621
+ ...options
2622
+ })
2623
+ };
2624
+
2625
+ 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); }
2514
2626
  var SvgImagePlaceholder = function SvgImagePlaceholder(props) {
2515
- return /*#__PURE__*/React.createElement("svg", _extends$j({
2627
+ return /*#__PURE__*/React.createElement("svg", _extends$k({
2516
2628
  xmlns: "http://www.w3.org/2000/svg",
2517
2629
  xmlSpace: "preserve",
2518
2630
  width: 64,
@@ -2617,14 +2729,14 @@ function TemplatedInputAdorner(props) {
2617
2729
  });
2618
2730
  }
2619
2731
 
2620
- var _path$g;
2621
- 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); }
2732
+ var _path$i;
2733
+ 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); }
2622
2734
  var SvgAngelDown = function SvgAngelDown(props) {
2623
- return /*#__PURE__*/React.createElement("svg", _extends$i({
2735
+ return /*#__PURE__*/React.createElement("svg", _extends$j({
2624
2736
  xmlns: "http://www.w3.org/2000/svg",
2625
2737
  width: 8,
2626
2738
  height: 8
2627
- }, props), _path$g || (_path$g = /*#__PURE__*/React.createElement("path", {
2739
+ }, props), _path$i || (_path$i = /*#__PURE__*/React.createElement("path", {
2628
2740
  fill: "currentColor",
2629
2741
  fillRule: "evenodd",
2630
2742
  stroke: "currentColor",
@@ -2635,14 +2747,14 @@ var SvgAngelDown = function SvgAngelDown(props) {
2635
2747
  };
2636
2748
  var AngelDownIcon = SvgAngelDown;
2637
2749
 
2638
- var _path$f;
2639
- 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); }
2750
+ var _path$h;
2751
+ 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); }
2640
2752
  var SvgAngelUp = function SvgAngelUp(props) {
2641
- return /*#__PURE__*/React.createElement("svg", _extends$h({
2753
+ return /*#__PURE__*/React.createElement("svg", _extends$i({
2642
2754
  xmlns: "http://www.w3.org/2000/svg",
2643
2755
  width: 8,
2644
2756
  height: 8
2645
- }, props), _path$f || (_path$f = /*#__PURE__*/React.createElement("path", {
2757
+ }, props), _path$h || (_path$h = /*#__PURE__*/React.createElement("path", {
2646
2758
  fill: "currentColor",
2647
2759
  fillRule: "evenodd",
2648
2760
  stroke: "currentColor",
@@ -2899,13 +3011,10 @@ Numberfield.config = {
2899
3011
  value,
2900
3012
  formField
2901
3013
  }) => {
2902
- // null state is allowed
2903
- if (isNullEquivalentValue(value)) return null;
3014
+ // invalid value types are sanitized to null
3015
+ if (isNullEquivalentValue(value) || !isValidNumber(value)) return null;
2904
3016
 
2905
- // if data cannot be parsed as a valid number, go into invalid NaN state
2906
- if (!isValidNumber(value)) return 'NaN';
2907
-
2908
- // otherwise parse to formatting type
3017
+ // otherwise, we return a string or a number depending on the form field configuration
2909
3018
  return formField.serializeToString ? value.toString() : Number(value);
2910
3019
  },
2911
3020
  create: (options = {}) => ({
@@ -2913,6 +3022,30 @@ Numberfield.config = {
2913
3022
  })
2914
3023
  };
2915
3024
 
3025
+ function useCleanupSingleSelectValue (props) {
3026
+ const {
3027
+ field,
3028
+ options,
3029
+ loadState,
3030
+ onChange,
3031
+ value
3032
+ } = props;
3033
+
3034
+ // Ensures that the value is always one of the possible options
3035
+ useEffect(() => {
3036
+ if (loadState !== LOAD_STATES.LOADED) {
3037
+ return;
3038
+ }
3039
+ const hasValueNotInOptions = value && !options.map(o => o.value).includes(value);
3040
+ if (hasValueNotInOptions) {
3041
+ onChange({
3042
+ field,
3043
+ value: null
3044
+ });
3045
+ }
3046
+ }, [field, options, onChange, value, loadState]);
3047
+ }
3048
+
2916
3049
  const type$7 = 'radio';
2917
3050
  function Radio(props) {
2918
3051
  const {
@@ -2953,9 +3086,16 @@ function Radio(props) {
2953
3086
  onFocus && onFocus();
2954
3087
  };
2955
3088
  const {
2956
- state: loadState,
2957
- values: options
2958
- } = useValuesAsync(field);
3089
+ loadState,
3090
+ options
3091
+ } = useOptionsAsync(field);
3092
+ useCleanupSingleSelectValue({
3093
+ field,
3094
+ loadState,
3095
+ options,
3096
+ value,
3097
+ onChange: props.onChange
3098
+ });
2959
3099
  const {
2960
3100
  formId
2961
3101
  } = useContext(FormContext$1);
@@ -3002,21 +3142,21 @@ function Radio(props) {
3002
3142
  Radio.config = {
3003
3143
  type: type$7,
3004
3144
  keyed: true,
3005
- label: 'Radio',
3145
+ label: 'Radio group',
3006
3146
  group: 'selection',
3007
3147
  emptyValue: null,
3008
3148
  sanitizeValue: sanitizeSingleSelectValue,
3009
3149
  create: createEmptyOptions
3010
3150
  };
3011
3151
 
3012
- var _path$e;
3013
- 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); }
3152
+ var _path$g;
3153
+ 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); }
3014
3154
  var SvgXMark = function SvgXMark(props) {
3015
- return /*#__PURE__*/React.createElement("svg", _extends$g({
3155
+ return /*#__PURE__*/React.createElement("svg", _extends$h({
3016
3156
  xmlns: "http://www.w3.org/2000/svg",
3017
3157
  width: 8,
3018
3158
  height: 8
3019
- }, props), _path$e || (_path$e = /*#__PURE__*/React.createElement("path", {
3159
+ }, props), _path$g || (_path$g = /*#__PURE__*/React.createElement("path", {
3020
3160
  fill: "currentColor",
3021
3161
  fillRule: "evenodd",
3022
3162
  stroke: "currentColor",
@@ -3048,9 +3188,16 @@ function SearchableSelect(props) {
3048
3188
  const searchbarRef = useRef();
3049
3189
  const eventBus = useService('eventBus');
3050
3190
  const {
3051
- state: loadState,
3052
- values: options
3053
- } = useValuesAsync(field);
3191
+ loadState,
3192
+ options
3193
+ } = useOptionsAsync(field);
3194
+ useCleanupSingleSelectValue({
3195
+ field,
3196
+ loadState,
3197
+ options,
3198
+ value,
3199
+ onChange: props.onChange
3200
+ });
3054
3201
 
3055
3202
  // 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
3056
3203
  const valueToOptionMap = useMemo(() => Object.assign({}, ...options.map((o, x) => ({
@@ -3210,9 +3357,16 @@ function SimpleSelect(props) {
3210
3357
  const selectRef = useRef();
3211
3358
  const inputRef = useRef();
3212
3359
  const {
3213
- state: loadState,
3214
- values: options
3215
- } = useValuesAsync(field);
3360
+ loadState,
3361
+ options
3362
+ } = useOptionsAsync(field);
3363
+ useCleanupSingleSelectValue({
3364
+ field,
3365
+ loadState,
3366
+ options,
3367
+ value,
3368
+ onChange: props.onChange
3369
+ });
3216
3370
 
3217
3371
  // 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
3218
3372
  const valueToOptionMap = useMemo(() => Object.assign({}, ...options.map((o, x) => ({
@@ -3474,34 +3628,36 @@ function Taglist(props) {
3474
3628
  } = useContext(FormContext$1);
3475
3629
  const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
3476
3630
  const [filter, setFilter] = useState('');
3477
- const [filteredOptions, setFilteredOptions] = useState([]);
3478
3631
  const [isDropdownExpanded, setIsDropdownExpanded] = useState(false);
3479
- const [hasOptionsLeft, setHasOptionsLeft] = useState(true);
3480
3632
  const [isEscapeClosed, setIsEscapeClose] = useState(false);
3481
3633
  const focusScopeRef = useRef();
3482
3634
  const inputRef = useRef();
3483
3635
  const eventBus = useService('eventBus');
3484
3636
  const {
3485
- state: loadState,
3486
- values: options
3487
- } = useValuesAsync(field);
3637
+ loadState,
3638
+ options
3639
+ } = useOptionsAsync(field);
3640
+ useCleanupMultiSelectValues({
3641
+ field,
3642
+ loadState,
3643
+ options,
3644
+ values,
3645
+ onChange: props.onChange
3646
+ });
3488
3647
 
3489
3648
  // 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
3490
3649
  const valueToOptionMap = useMemo(() => Object.assign({}, ...options.map((o, x) => ({
3491
3650
  [o.value]: options[x]
3492
3651
  }))), [options]);
3652
+ const hasOptionsLeft = useMemo(() => options.length > values.length, [options.length, values.length]);
3493
3653
 
3494
3654
  // Usage of stringify is necessary here because we want this effect to only trigger when there is a value change to the array
3495
- useEffect(() => {
3496
- if (loadState === LOAD_STATES.LOADED) {
3497
- setFilteredOptions(options.filter(o => o.label && o.value && o.label.toLowerCase().includes(filter.toLowerCase()) && !values.includes(o.value)));
3498
- } else {
3499
- setFilteredOptions([]);
3655
+ const filteredOptions = useMemo(() => {
3656
+ if (loadState !== LOAD_STATES.LOADED) {
3657
+ return [];
3500
3658
  }
3501
- }, [filter, JSON.stringify(values), options, loadState]);
3502
- useEffect(() => {
3503
- setHasOptionsLeft(options.length > values.length);
3504
- }, [options.length, values.length]);
3659
+ return options.filter(o => o.label && o.value && o.label.toLowerCase().includes(filter.toLowerCase()) && !values.includes(o.value));
3660
+ }, [filter, options, JSON.stringify(values), loadState]);
3505
3661
  const selectValue = value => {
3506
3662
  if (filter) {
3507
3663
  setFilter('');
@@ -3628,7 +3784,7 @@ function Taglist(props) {
3628
3784
  onMouseDown: e => e.preventDefault(),
3629
3785
  children: [jsx("span", {
3630
3786
  class: "fjs-taglist-tag-label",
3631
- children: valueToOptionMap[v] ? valueToOptionMap[v].label : `unexpected value{${v}}`
3787
+ children: valueToOptionMap[v] ? valueToOptionMap[v].label : undefined
3632
3788
  }), !disabled && !readonly && jsx("button", {
3633
3789
  type: "button",
3634
3790
  title: "Remove tag",
@@ -3849,7 +4005,7 @@ Textfield.config = {
3849
4005
  sanitizeValue: ({
3850
4006
  value
3851
4007
  }) => {
3852
- if (isArray(value) || isObject(value)) {
4008
+ if (isArray(value) || isObject(value) || isNil(value)) {
3853
4009
  return '';
3854
4010
  }
3855
4011
 
@@ -3940,7 +4096,7 @@ Textarea.config = {
3940
4096
  emptyValue: '',
3941
4097
  sanitizeValue: ({
3942
4098
  value
3943
- }) => isArray(value) || isObject(value) ? '' : String(value),
4099
+ }) => isArray(value) || isObject(value) || isNil(value) ? '' : String(value),
3944
4100
  create: (options = {}) => ({
3945
4101
  ...options
3946
4102
  })
@@ -3964,84 +4120,64 @@ const autoSizeTextarea = textarea => {
3964
4120
  textarea.style.overflow = calculatedHeight > maxHeight ? 'visible' : 'hidden';
3965
4121
  };
3966
4122
 
3967
- var _path$d;
3968
- 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); }
4123
+ var _path$f;
4124
+ 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); }
3969
4125
  var SvgButton = function SvgButton(props) {
3970
- return /*#__PURE__*/React.createElement("svg", _extends$f({
4126
+ return /*#__PURE__*/React.createElement("svg", _extends$g({
3971
4127
  xmlns: "http://www.w3.org/2000/svg",
3972
4128
  width: 54,
3973
4129
  height: 54,
3974
4130
  fill: "currentcolor"
3975
- }, props), _path$d || (_path$d = /*#__PURE__*/React.createElement("path", {
4131
+ }, props), _path$f || (_path$f = /*#__PURE__*/React.createElement("path", {
3976
4132
  fillRule: "evenodd",
3977
4133
  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"
3978
4134
  })));
3979
4135
  };
3980
4136
  var ButtonIcon = SvgButton;
3981
4137
 
3982
- var _path$c;
3983
- 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); }
4138
+ var _path$e;
4139
+ 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); }
3984
4140
  var SvgCheckbox = function SvgCheckbox(props) {
3985
- return /*#__PURE__*/React.createElement("svg", _extends$e({
4141
+ return /*#__PURE__*/React.createElement("svg", _extends$f({
3986
4142
  xmlns: "http://www.w3.org/2000/svg",
3987
4143
  width: 54,
3988
4144
  height: 54,
3989
4145
  fill: "currentcolor"
3990
- }, props), _path$c || (_path$c = /*#__PURE__*/React.createElement("path", {
4146
+ }, props), _path$e || (_path$e = /*#__PURE__*/React.createElement("path", {
3991
4147
  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"
3992
4148
  })));
3993
4149
  };
3994
4150
  var CheckboxIcon = SvgCheckbox;
3995
4151
 
3996
- var _g, _use, _use2, _use3, _defs;
3997
- 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); }
4152
+ var _path$d;
4153
+ 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); }
3998
4154
  var SvgChecklist = function SvgChecklist(props) {
3999
- return /*#__PURE__*/React.createElement("svg", _extends$d({
4155
+ return /*#__PURE__*/React.createElement("svg", _extends$e({
4000
4156
  xmlns: "http://www.w3.org/2000/svg",
4001
- xmlnsXlink: "http://www.w3.org/1999/xlink",
4002
4157
  width: 54,
4003
4158
  height: 54,
4004
- fill: "currentcolor"
4005
- }, props), _g || (_g = /*#__PURE__*/React.createElement("g", {
4006
- fillRule: "evenodd"
4007
- }, /*#__PURE__*/React.createElement("use", {
4008
- xlinkHref: "#Checklist_svg__a"
4009
- }), /*#__PURE__*/React.createElement("use", {
4010
- xlinkHref: "#Checklist_svg__a",
4011
- y: 24
4012
- }), /*#__PURE__*/React.createElement("use", {
4013
- xlinkHref: "#Checklist_svg__a",
4014
- y: 12
4015
- }))), _use || (_use = /*#__PURE__*/React.createElement("use", {
4016
- xlinkHref: "#Checklist_svg__b"
4017
- })), _use2 || (_use2 = /*#__PURE__*/React.createElement("use", {
4018
- xlinkHref: "#Checklist_svg__b",
4019
- y: 12
4020
- })), _use3 || (_use3 = /*#__PURE__*/React.createElement("use", {
4021
- xlinkHref: "#Checklist_svg__b",
4022
- y: 24
4023
- })), _defs || (_defs = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("path", {
4024
- id: "Checklist_svg__a",
4025
- 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"
4026
- }), /*#__PURE__*/React.createElement("path", {
4027
- id: "Checklist_svg__b",
4028
- 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"
4029
- }))));
4159
+ fill: "none"
4160
+ }, props), _path$d || (_path$d = /*#__PURE__*/React.createElement("path", {
4161
+ fill: "currentColor",
4162
+ fillRule: "evenodd",
4163
+ 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",
4164
+ clipRule: "evenodd"
4165
+ })));
4030
4166
  };
4031
4167
  var ChecklistIcon = SvgChecklist;
4032
4168
 
4033
- var _path$b, _path2$2, _path3;
4034
- 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); }
4169
+ var _path$c, _path2$3, _path3;
4170
+ 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); }
4035
4171
  var SvgDatetime = function SvgDatetime(props) {
4036
- return /*#__PURE__*/React.createElement("svg", _extends$c({
4172
+ return /*#__PURE__*/React.createElement("svg", _extends$d({
4037
4173
  xmlns: "http://www.w3.org/2000/svg",
4038
4174
  width: 54,
4039
4175
  height: 54,
4040
4176
  fill: "currentcolor"
4041
- }, props), _path$b || (_path$b = /*#__PURE__*/React.createElement("path", {
4177
+ }, props), _path$c || (_path$c = /*#__PURE__*/React.createElement("path", {
4042
4178
  fillRule: "evenodd",
4043
4179
  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"
4044
- })), _path2$2 || (_path2$2 = /*#__PURE__*/React.createElement("path", {
4180
+ })), _path2$3 || (_path2$3 = /*#__PURE__*/React.createElement("path", {
4045
4181
  d: "m35.13 37.603 1.237-1.237-3.468-3.475v-5.926h-1.754v6.654l3.984 3.984Z"
4046
4182
  })), _path3 || (_path3 = /*#__PURE__*/React.createElement("path", {
4047
4183
  fillRule: "evenodd",
@@ -4050,27 +4186,27 @@ var SvgDatetime = function SvgDatetime(props) {
4050
4186
  };
4051
4187
  var DatetimeIcon = SvgDatetime;
4052
4188
 
4053
- var _path$a, _path2$1;
4054
- 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); }
4189
+ var _path$b, _path2$2;
4190
+ 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); }
4055
4191
  var SvgTaglist = function SvgTaglist(props) {
4056
- return /*#__PURE__*/React.createElement("svg", _extends$b({
4192
+ return /*#__PURE__*/React.createElement("svg", _extends$c({
4057
4193
  xmlns: "http://www.w3.org/2000/svg",
4058
4194
  width: 54,
4059
4195
  height: 54,
4060
4196
  fill: "currentcolor"
4061
- }, props), _path$a || (_path$a = /*#__PURE__*/React.createElement("path", {
4197
+ }, props), _path$b || (_path$b = /*#__PURE__*/React.createElement("path", {
4062
4198
  fillRule: "evenodd",
4063
4199
  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"
4064
- })), _path2$1 || (_path2$1 = /*#__PURE__*/React.createElement("path", {
4200
+ })), _path2$2 || (_path2$2 = /*#__PURE__*/React.createElement("path", {
4065
4201
  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"
4066
4202
  })));
4067
4203
  };
4068
4204
  var TaglistIcon = SvgTaglist;
4069
4205
 
4070
4206
  var _rect, _rect2, _rect3;
4071
- 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); }
4207
+ 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); }
4072
4208
  var SvgForm = function SvgForm(props) {
4073
- return /*#__PURE__*/React.createElement("svg", _extends$a({
4209
+ return /*#__PURE__*/React.createElement("svg", _extends$b({
4074
4210
  xmlns: "http://www.w3.org/2000/svg",
4075
4211
  width: 54,
4076
4212
  height: 54
@@ -4096,9 +4232,24 @@ var SvgForm = function SvgForm(props) {
4096
4232
  };
4097
4233
  var FormIcon = SvgForm;
4098
4234
 
4235
+ var _path$a;
4236
+ 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); }
4237
+ var SvgGroup = function SvgGroup(props) {
4238
+ return /*#__PURE__*/React.createElement("svg", _extends$a({
4239
+ xmlns: "http://www.w3.org/2000/svg",
4240
+ width: 54,
4241
+ height: 54,
4242
+ fill: "currentcolor"
4243
+ }, props), _path$a || (_path$a = /*#__PURE__*/React.createElement("path", {
4244
+ fillRule: "evenodd",
4245
+ 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"
4246
+ })));
4247
+ };
4248
+ var GroupIcon = SvgGroup;
4249
+
4099
4250
  var _path$9;
4100
4251
  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); }
4101
- var SvgGroup = function SvgGroup(props) {
4252
+ var SvgNumber = function SvgNumber(props) {
4102
4253
  return /*#__PURE__*/React.createElement("svg", _extends$9({
4103
4254
  xmlns: "http://www.w3.org/2000/svg",
4104
4255
  width: 54,
@@ -4106,58 +4257,58 @@ var SvgGroup = function SvgGroup(props) {
4106
4257
  fill: "currentcolor"
4107
4258
  }, props), _path$9 || (_path$9 = /*#__PURE__*/React.createElement("path", {
4108
4259
  fillRule: "evenodd",
4109
- 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"
4260
+ 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"
4110
4261
  })));
4111
4262
  };
4112
- var GroupIcon = SvgGroup;
4263
+ var NumberIcon = SvgNumber;
4113
4264
 
4114
4265
  var _path$8;
4115
4266
  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); }
4116
- var SvgNumber = function SvgNumber(props) {
4267
+ var SvgRadio = function SvgRadio(props) {
4117
4268
  return /*#__PURE__*/React.createElement("svg", _extends$8({
4118
4269
  xmlns: "http://www.w3.org/2000/svg",
4119
4270
  width: 54,
4120
4271
  height: 54,
4121
4272
  fill: "currentcolor"
4122
4273
  }, props), _path$8 || (_path$8 = /*#__PURE__*/React.createElement("path", {
4123
- fillRule: "evenodd",
4124
- 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"
4274
+ 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"
4125
4275
  })));
4126
4276
  };
4127
- var NumberIcon = SvgNumber;
4277
+ var RadioIcon = SvgRadio;
4128
4278
 
4129
4279
  var _path$7;
4130
4280
  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); }
4131
- var SvgRadio = function SvgRadio(props) {
4281
+ var SvgSelect = function SvgSelect(props) {
4132
4282
  return /*#__PURE__*/React.createElement("svg", _extends$7({
4133
4283
  xmlns: "http://www.w3.org/2000/svg",
4134
4284
  width: 54,
4135
4285
  height: 54,
4136
4286
  fill: "currentcolor"
4137
4287
  }, props), _path$7 || (_path$7 = /*#__PURE__*/React.createElement("path", {
4138
- 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"
4288
+ fillRule: "evenodd",
4289
+ 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"
4139
4290
  })));
4140
4291
  };
4141
- var RadioIcon = SvgRadio;
4292
+ var SelectIcon = SvgSelect;
4142
4293
 
4143
4294
  var _path$6;
4144
4295
  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); }
4145
- var SvgSelect = function SvgSelect(props) {
4296
+ var SvgSeparator = function SvgSeparator(props) {
4146
4297
  return /*#__PURE__*/React.createElement("svg", _extends$6({
4147
4298
  xmlns: "http://www.w3.org/2000/svg",
4148
4299
  width: 54,
4149
4300
  height: 54,
4150
- fill: "currentcolor"
4301
+ fill: "none"
4151
4302
  }, props), _path$6 || (_path$6 = /*#__PURE__*/React.createElement("path", {
4152
- fillRule: "evenodd",
4153
- 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"
4303
+ fill: "currentColor",
4304
+ 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"
4154
4305
  })));
4155
4306
  };
4156
- var SelectIcon = SvgSelect;
4307
+ var SeparatorIcon = SvgSeparator;
4157
4308
 
4158
4309
  var _path$5;
4159
4310
  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); }
4160
- var SvgSeparator = function SvgSeparator(props) {
4311
+ var SvgSpacer = function SvgSpacer(props) {
4161
4312
  return /*#__PURE__*/React.createElement("svg", _extends$5({
4162
4313
  xmlns: "http://www.w3.org/2000/svg",
4163
4314
  width: 54,
@@ -4165,43 +4316,43 @@ var SvgSeparator = function SvgSeparator(props) {
4165
4316
  fill: "none"
4166
4317
  }, props), _path$5 || (_path$5 = /*#__PURE__*/React.createElement("path", {
4167
4318
  fill: "currentColor",
4168
- 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"
4319
+ 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"
4169
4320
  })));
4170
4321
  };
4171
- var SeparatorIcon = SvgSeparator;
4322
+ var SpacerIcon = SvgSpacer;
4172
4323
 
4173
4324
  var _path$4;
4174
4325
  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); }
4175
- var SvgSpacer = function SvgSpacer(props) {
4326
+ var SvgText = function SvgText(props) {
4176
4327
  return /*#__PURE__*/React.createElement("svg", _extends$4({
4177
4328
  xmlns: "http://www.w3.org/2000/svg",
4178
4329
  width: 54,
4179
4330
  height: 54,
4180
- fill: "none"
4331
+ fill: "currentcolor"
4181
4332
  }, props), _path$4 || (_path$4 = /*#__PURE__*/React.createElement("path", {
4182
- fill: "currentColor",
4183
- 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"
4333
+ 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"
4184
4334
  })));
4185
4335
  };
4186
- var SpacerIcon = SvgSpacer;
4336
+ var TextIcon = SvgText;
4187
4337
 
4188
4338
  var _path$3;
4189
4339
  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); }
4190
- var SvgText = function SvgText(props) {
4340
+ var SvgTextfield = function SvgTextfield(props) {
4191
4341
  return /*#__PURE__*/React.createElement("svg", _extends$3({
4192
4342
  xmlns: "http://www.w3.org/2000/svg",
4193
4343
  width: 54,
4194
4344
  height: 54,
4195
4345
  fill: "currentcolor"
4196
4346
  }, props), _path$3 || (_path$3 = /*#__PURE__*/React.createElement("path", {
4197
- 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"
4347
+ fillRule: "evenodd",
4348
+ 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"
4198
4349
  })));
4199
4350
  };
4200
- var TextIcon = SvgText;
4351
+ var TextfieldIcon = SvgTextfield;
4201
4352
 
4202
4353
  var _path$2;
4203
4354
  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); }
4204
- var SvgTextfield = function SvgTextfield(props) {
4355
+ var SvgTextarea = function SvgTextarea(props) {
4205
4356
  return /*#__PURE__*/React.createElement("svg", _extends$2({
4206
4357
  xmlns: "http://www.w3.org/2000/svg",
4207
4358
  width: 54,
@@ -4209,25 +4360,30 @@ var SvgTextfield = function SvgTextfield(props) {
4209
4360
  fill: "currentcolor"
4210
4361
  }, props), _path$2 || (_path$2 = /*#__PURE__*/React.createElement("path", {
4211
4362
  fillRule: "evenodd",
4212
- 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"
4363
+ 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"
4213
4364
  })));
4214
4365
  };
4215
- var TextfieldIcon = SvgTextfield;
4366
+ var TextareaIcon = SvgTextarea;
4216
4367
 
4217
- var _path$1;
4368
+ var _path$1, _path2$1;
4218
4369
  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); }
4219
- var SvgTextarea = function SvgTextarea(props) {
4370
+ var SvgIFrame = function SvgIFrame(props) {
4220
4371
  return /*#__PURE__*/React.createElement("svg", _extends$1({
4221
4372
  xmlns: "http://www.w3.org/2000/svg",
4222
4373
  width: 54,
4223
4374
  height: 54,
4224
- fill: "currentcolor"
4375
+ fill: "none"
4225
4376
  }, props), _path$1 || (_path$1 = /*#__PURE__*/React.createElement("path", {
4377
+ fill: "currentcolor",
4378
+ 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"
4379
+ })), _path2$1 || (_path2$1 = /*#__PURE__*/React.createElement("path", {
4380
+ fill: "currentcolor",
4226
4381
  fillRule: "evenodd",
4227
- 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"
4382
+ 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",
4383
+ clipRule: "evenodd"
4228
4384
  })));
4229
4385
  };
4230
- var TextareaIcon = SvgTextarea;
4386
+ var IFrameIcon = SvgIFrame;
4231
4387
 
4232
4388
  var _path, _path2;
4233
4389
  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); }
@@ -4257,6 +4413,7 @@ const iconsByType = type => {
4257
4413
  columns: GroupIcon,
4258
4414
  datetime: DatetimeIcon,
4259
4415
  group: GroupIcon,
4416
+ iframe: IFrameIcon,
4260
4417
  image: ImageIcon,
4261
4418
  number: NumberIcon,
4262
4419
  radio: RadioIcon,
@@ -4271,7 +4428,7 @@ const iconsByType = type => {
4271
4428
  }[type];
4272
4429
  };
4273
4430
 
4274
- const formFields = [Button, Checkbox, Checklist, FormComponent$1, Group, Image, Numberfield, Datetime, Radio, Select, Spacer, Separator, Taglist, Text, Textfield, Textarea];
4431
+ const formFields = [Button, Checkbox, Checklist, FormComponent$1, Group, IFrame, Image, Numberfield, Datetime, Radio, Select, Spacer, Separator, Taglist, Text, Textfield, Textarea];
4275
4432
 
4276
4433
  class FormFields {
4277
4434
  constructor() {
@@ -4343,8 +4500,8 @@ function createFormContainer(prefix = 'fjs') {
4343
4500
  return container;
4344
4501
  }
4345
4502
 
4346
- const EXPRESSION_PROPERTIES = ['alt', 'appearance.prefixAdorner', 'appearance.suffixAdorner', 'conditional.hide', 'description', 'label', 'source', 'readonly', 'text', 'validate.min', 'validate.max', 'validate.minLength', 'validate.maxLength', 'valuesExpression'];
4347
- const TEMPLATE_PROPERTIES = ['alt', 'appearance.prefixAdorner', 'appearance.suffixAdorner', 'description', 'label', 'source', 'text'];
4503
+ 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'];
4504
+ const TEMPLATE_PROPERTIES = ['alt', 'appearance.prefixAdorner', 'appearance.suffixAdorner', 'description', 'label', 'source', 'text', 'url'];
4348
4505
  function isRequired(field) {
4349
4506
  return field.required;
4350
4507
  }
@@ -6839,7 +6996,7 @@ class Form {
6839
6996
  }
6840
6997
  }
6841
6998
 
6842
- const schemaVersion = 12;
6999
+ const schemaVersion = 13;
6843
7000
 
6844
7001
  /**
6845
7002
  * @typedef { import('./types').CreateFormOptions } CreateFormOptions
@@ -6864,5 +7021,5 @@ function createForm(options) {
6864
7021
  });
6865
7022
  }
6866
7023
 
6867
- export { Button, Checkbox, Checklist, ConditionChecker, DATETIME_SUBTYPES, DATETIME_SUBTYPES_LABELS, DATETIME_SUBTYPE_PATH, DATE_DISALLOW_PAST_PATH, DATE_LABEL_PATH, Datetime, FormComponent$1 as Default, Description, Errors, ExpressionLanguageModule, FeelExpressionLanguage, FeelersTemplating, FieldFactory, Form, FormComponent, FormContext$1 as FormContext, FormField, FormFieldRegistry, FormFields, FormLayouter, FormRenderContext$1 as FormRenderContext, Group, Image, Importer, Label, MINUTES_IN_DAY, MarkdownModule, MarkdownRenderer, Numberfield, PathRegistry, Radio, Select, Separator, Spacer, TIME_INTERVAL_PATH, TIME_LABEL_PATH, TIME_SERIALISINGFORMAT_LABELS, TIME_SERIALISING_FORMATS, TIME_SERIALISING_FORMAT_PATH, TIME_USE24H_PATH, Taglist, Text, Textarea, Textfield, VALUES_SOURCES, VALUES_SOURCES_DEFAULTS, VALUES_SOURCES_LABELS, VALUES_SOURCES_PATHS, VALUES_SOURCE_DEFAULT, ViewerCommands, ViewerCommandsModule, clone, createForm, createFormContainer, createInjector, formFields, generateIdForType, generateIndexForType, getSchemaVariables, getValuesSource, iconsByType, isRequired, pathParse, pathsEqual, runRecursively, sanitizeHTML, sanitizeImageSource, schemaVersion };
7024
+ export { Button, Checkbox, Checklist, ConditionChecker, DATETIME_SUBTYPES, DATETIME_SUBTYPES_LABELS, DATETIME_SUBTYPE_PATH, DATE_DISALLOW_PAST_PATH, DATE_LABEL_PATH, Datetime, FormComponent$1 as Default, Description, Errors, ExpressionLanguageModule, FeelExpressionLanguage, FeelersTemplating, FieldFactory, Form, FormComponent, FormContext$1 as FormContext, FormField, FormFieldRegistry, FormFields, FormLayouter, FormRenderContext$1 as FormRenderContext, Group, IFrame, Image, Importer, Label, MINUTES_IN_DAY, MarkdownModule, MarkdownRenderer, Numberfield, PathRegistry, Radio, Select, Separator, Spacer, TIME_INTERVAL_PATH, TIME_LABEL_PATH, TIME_SERIALISINGFORMAT_LABELS, TIME_SERIALISING_FORMATS, TIME_SERIALISING_FORMAT_PATH, TIME_USE24H_PATH, Taglist, Text, Textarea, Textfield, VALUES_SOURCES, VALUES_SOURCES_DEFAULTS, VALUES_SOURCES_LABELS, VALUES_SOURCES_PATHS, VALUES_SOURCE_DEFAULT, ViewerCommands, ViewerCommandsModule, clone, createForm, createFormContainer, createInjector, formFields, generateIdForType, generateIndexForType, getSchemaVariables, getValuesSource, iconsByType, isRequired, pathParse, pathsEqual, runRecursively, sanitizeHTML, sanitizeIFrameSource, sanitizeImageSource, schemaVersion, useExpressionEvaluation, useSingleLineTemplateEvaluation, useTemplateEvaluation };
6868
7025
  //# sourceMappingURL=index.es.js.map