@helpwave/hightide 0.1.37 → 0.1.39

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 (144) hide show
  1. package/dist/components/date/DatePicker.js.map +1 -1
  2. package/dist/components/date/DatePicker.mjs.map +1 -1
  3. package/dist/components/date/DayPicker.js.map +1 -1
  4. package/dist/components/date/DayPicker.mjs.map +1 -1
  5. package/dist/components/date/TimeDisplay.js.map +1 -1
  6. package/dist/components/date/TimeDisplay.mjs.map +1 -1
  7. package/dist/components/date/YearMonthPicker.js.map +1 -1
  8. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  9. package/dist/components/date/index.js.map +1 -1
  10. package/dist/components/date/index.mjs.map +1 -1
  11. package/dist/components/dialog/ConfirmDialog.js +15 -9
  12. package/dist/components/dialog/ConfirmDialog.js.map +1 -1
  13. package/dist/components/dialog/ConfirmDialog.mjs +16 -10
  14. package/dist/components/dialog/ConfirmDialog.mjs.map +1 -1
  15. package/dist/components/dialog/Dialog.d.mts +4 -5
  16. package/dist/components/dialog/Dialog.d.ts +4 -5
  17. package/dist/components/dialog/Dialog.js +15 -9
  18. package/dist/components/dialog/Dialog.js.map +1 -1
  19. package/dist/components/dialog/Dialog.mjs +16 -10
  20. package/dist/components/dialog/Dialog.mjs.map +1 -1
  21. package/dist/components/dialog/DiscardChangesDialog.js +15 -9
  22. package/dist/components/dialog/DiscardChangesDialog.js.map +1 -1
  23. package/dist/components/dialog/DiscardChangesDialog.mjs +16 -10
  24. package/dist/components/dialog/DiscardChangesDialog.mjs.map +1 -1
  25. package/dist/components/dialog/InputDialog.js +15 -9
  26. package/dist/components/dialog/InputDialog.js.map +1 -1
  27. package/dist/components/dialog/InputDialog.mjs +16 -10
  28. package/dist/components/dialog/InputDialog.mjs.map +1 -1
  29. package/dist/components/dialog/LanguageDialog.js +188 -154
  30. package/dist/components/dialog/LanguageDialog.js.map +1 -1
  31. package/dist/components/dialog/LanguageDialog.mjs +151 -116
  32. package/dist/components/dialog/LanguageDialog.mjs.map +1 -1
  33. package/dist/components/dialog/ThemeDialog.js +191 -157
  34. package/dist/components/dialog/ThemeDialog.js.map +1 -1
  35. package/dist/components/dialog/ThemeDialog.mjs +151 -116
  36. package/dist/components/dialog/ThemeDialog.mjs.map +1 -1
  37. package/dist/components/dialog/index.js +205 -171
  38. package/dist/components/dialog/index.js.map +1 -1
  39. package/dist/components/dialog/index.mjs +152 -117
  40. package/dist/components/dialog/index.mjs.map +1 -1
  41. package/dist/components/index.js +337 -299
  42. package/dist/components/index.js.map +1 -1
  43. package/dist/components/index.mjs +198 -159
  44. package/dist/components/index.mjs.map +1 -1
  45. package/dist/components/layout/Carousel.d.mts +2 -1
  46. package/dist/components/layout/Carousel.d.ts +2 -1
  47. package/dist/components/layout/Carousel.js +4 -0
  48. package/dist/components/layout/Carousel.js.map +1 -1
  49. package/dist/components/layout/Carousel.mjs +4 -0
  50. package/dist/components/layout/Carousel.mjs.map +1 -1
  51. package/dist/components/layout/TextImage.js.map +1 -1
  52. package/dist/components/layout/TextImage.mjs.map +1 -1
  53. package/dist/components/layout/index.js +4 -0
  54. package/dist/components/layout/index.js.map +1 -1
  55. package/dist/components/layout/index.mjs +4 -0
  56. package/dist/components/layout/index.mjs.map +1 -1
  57. package/dist/components/loading-states/ErrorComponent.js.map +1 -1
  58. package/dist/components/loading-states/ErrorComponent.mjs.map +1 -1
  59. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  60. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -1
  61. package/dist/components/loading-states/index.js.map +1 -1
  62. package/dist/components/loading-states/index.mjs.map +1 -1
  63. package/dist/components/navigation/Pagination.js.map +1 -1
  64. package/dist/components/navigation/Pagination.mjs.map +1 -1
  65. package/dist/components/navigation/StepperBar.js.map +1 -1
  66. package/dist/components/navigation/StepperBar.mjs.map +1 -1
  67. package/dist/components/navigation/index.js.map +1 -1
  68. package/dist/components/navigation/index.mjs.map +1 -1
  69. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  70. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  71. package/dist/components/properties/DateProperty.js.map +1 -1
  72. package/dist/components/properties/DateProperty.mjs.map +1 -1
  73. package/dist/components/properties/MultiSelectProperty.js +129 -101
  74. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  75. package/dist/components/properties/MultiSelectProperty.mjs +131 -102
  76. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  77. package/dist/components/properties/NumberProperty.js.map +1 -1
  78. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  79. package/dist/components/properties/PropertyBase.js.map +1 -1
  80. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  81. package/dist/components/properties/SelectProperty.js +129 -101
  82. package/dist/components/properties/SelectProperty.js.map +1 -1
  83. package/dist/components/properties/SelectProperty.mjs +131 -102
  84. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  85. package/dist/components/properties/TextProperty.js.map +1 -1
  86. package/dist/components/properties/TextProperty.mjs.map +1 -1
  87. package/dist/components/properties/index.js +129 -101
  88. package/dist/components/properties/index.js.map +1 -1
  89. package/dist/components/properties/index.mjs +131 -102
  90. package/dist/components/properties/index.mjs.map +1 -1
  91. package/dist/components/table/Table.js.map +1 -1
  92. package/dist/components/table/Table.mjs.map +1 -1
  93. package/dist/components/table/TableFilterButton.js.map +1 -1
  94. package/dist/components/table/TableFilterButton.mjs.map +1 -1
  95. package/dist/components/table/index.js.map +1 -1
  96. package/dist/components/table/index.mjs.map +1 -1
  97. package/dist/components/user-action/CopyToClipboardWrapper.js.map +1 -1
  98. package/dist/components/user-action/CopyToClipboardWrapper.mjs.map +1 -1
  99. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  100. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  101. package/dist/components/user-action/SearchBar.js.map +1 -1
  102. package/dist/components/user-action/SearchBar.mjs.map +1 -1
  103. package/dist/components/user-action/index.js +129 -101
  104. package/dist/components/user-action/index.js.map +1 -1
  105. package/dist/components/user-action/index.mjs +131 -102
  106. package/dist/components/user-action/index.mjs.map +1 -1
  107. package/dist/components/user-action/select/Select.d.mts +2 -0
  108. package/dist/components/user-action/select/Select.d.ts +2 -0
  109. package/dist/components/user-action/select/Select.js +129 -101
  110. package/dist/components/user-action/select/Select.js.map +1 -1
  111. package/dist/components/user-action/select/Select.mjs +131 -102
  112. package/dist/components/user-action/select/Select.mjs.map +1 -1
  113. package/dist/components/user-action/select/index.js +129 -101
  114. package/dist/components/user-action/select/index.js.map +1 -1
  115. package/dist/components/user-action/select/index.mjs +131 -102
  116. package/dist/components/user-action/select/index.mjs.map +1 -1
  117. package/dist/hooks/index.js.map +1 -1
  118. package/dist/hooks/index.mjs.map +1 -1
  119. package/dist/hooks/useValidators.js.map +1 -1
  120. package/dist/hooks/useValidators.mjs.map +1 -1
  121. package/dist/index.js +362 -324
  122. package/dist/index.js.map +1 -1
  123. package/dist/index.mjs +206 -167
  124. package/dist/index.mjs.map +1 -1
  125. package/dist/localization/LanguageProvider.js +1 -1
  126. package/dist/localization/LanguageProvider.js.map +1 -1
  127. package/dist/localization/LanguageProvider.mjs +1 -1
  128. package/dist/localization/LanguageProvider.mjs.map +1 -1
  129. package/dist/localization/index.js +1 -1
  130. package/dist/localization/index.js.map +1 -1
  131. package/dist/localization/index.mjs +1 -1
  132. package/dist/localization/index.mjs.map +1 -1
  133. package/dist/localization/useTranslation.js.map +1 -1
  134. package/dist/localization/useTranslation.mjs.map +1 -1
  135. package/dist/style/globals.css +0 -3
  136. package/dist/theming/index.js +1 -1
  137. package/dist/theming/index.js.map +1 -1
  138. package/dist/theming/index.mjs +1 -1
  139. package/dist/theming/index.mjs.map +1 -1
  140. package/dist/theming/useTheme.js +1 -1
  141. package/dist/theming/useTheme.js.map +1 -1
  142. package/dist/theming/useTheme.mjs +1 -1
  143. package/dist/theming/useTheme.mjs.map +1 -1
  144. package/package.json +1 -1
@@ -3636,7 +3636,7 @@ function useFloatingElement({
3636
3636
  var import_react_dom2 = require("react-dom");
3637
3637
  var import_jsx_runtime25 = require("react/jsx-runtime");
3638
3638
  var defaultToggleOpenOptions = {
3639
- highlightStartPosition: "first"
3639
+ highlightStartPositionBehavior: "first"
3640
3640
  };
3641
3641
  var SelectContext = (0, import_react25.createContext)(null);
3642
3642
  function useSelectContext() {
@@ -3659,47 +3659,62 @@ var SelectRoot = ({
3659
3659
  isMultiSelect = false,
3660
3660
  iconAppearance = "left"
3661
3661
  }) => {
3662
- const [options, setOptions] = (0, import_react25.useState)([]);
3663
3662
  const triggerRef = (0, import_react25.useRef)(null);
3664
3663
  const generatedId = (0, import_react25.useId)();
3665
3664
  const usedId = id ?? generatedId;
3666
3665
  const [internalState, setInternalState] = (0, import_react25.useState)({
3667
- isOpen
3666
+ isOpen,
3667
+ options: []
3668
3668
  });
3669
- const selectedValues = isMultiSelect ? values ?? [] : [value].filter(Boolean);
3669
+ const selectedValues = (0, import_react25.useMemo)(
3670
+ () => isMultiSelect ? values ?? [] : [value].filter(Boolean),
3671
+ [isMultiSelect, value, values]
3672
+ );
3673
+ const selectedOptions = (0, import_react25.useMemo)(
3674
+ () => selectedValues.map((value2) => internalState.options.find((option) => value2 === option.value)).filter(Boolean),
3675
+ [selectedValues, internalState.options]
3676
+ );
3670
3677
  const state = {
3671
3678
  ...internalState,
3672
3679
  id: usedId,
3673
3680
  disabled,
3674
3681
  invalid,
3675
3682
  value: selectedValues,
3676
- options,
3677
- selectedOptions: selectedValues.map((value2) => options.find((option) => value2 === option.value)).filter(Boolean)
3683
+ selectedOptions
3678
3684
  };
3679
3685
  const config = {
3680
3686
  isMultiSelect,
3681
3687
  iconAppearance
3682
3688
  };
3683
3689
  const registerItem = (0, import_react25.useCallback)((item) => {
3684
- setOptions((prev) => {
3685
- const updated = [...prev, item];
3686
- updated.sort((a, b) => {
3690
+ setInternalState((prev) => {
3691
+ const updatedOptions = [...prev.options, item];
3692
+ updatedOptions.sort((a, b) => {
3687
3693
  const aEl = a.ref.current;
3688
3694
  const bEl = b.ref.current;
3689
3695
  if (!aEl || !bEl) return 0;
3690
3696
  return aEl.compareDocumentPosition(bEl) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
3691
3697
  });
3692
- return updated;
3698
+ return {
3699
+ ...prev,
3700
+ options: updatedOptions
3701
+ };
3693
3702
  });
3694
3703
  }, []);
3695
3704
  const unregisterItem = (0, import_react25.useCallback)((value2) => {
3696
- setOptions((prev) => prev.filter((i) => i.value !== value2));
3705
+ setInternalState((prev) => {
3706
+ const updatedOptions = prev.options.filter((i) => i.value !== value2);
3707
+ return {
3708
+ ...prev,
3709
+ options: updatedOptions
3710
+ };
3711
+ });
3697
3712
  }, []);
3698
3713
  const toggleSelection = (value2, isSelected) => {
3699
3714
  if (disabled) {
3700
3715
  return;
3701
3716
  }
3702
- const option = options.find((i) => i.value === value2);
3717
+ const option = state.options.find((i) => i.value === value2);
3703
3718
  if (!option) {
3704
3719
  console.error(`SelectOption with value: ${value2} not found`);
3705
3720
  return;
@@ -3742,35 +3757,40 @@ var SelectRoot = ({
3742
3757
  triggerRef.current = null;
3743
3758
  }, []);
3744
3759
  const toggleOpen = (isOpen2, toggleOpenOptions) => {
3745
- const { highlightStartPosition } = { ...defaultToggleOpenOptions, ...toggleOpenOptions };
3746
- let highlightedIndex;
3747
- if (highlightStartPosition === "first") {
3748
- highlightedIndex = options.findIndex((option) => !option.disabled);
3749
- } else {
3750
- highlightedIndex = options.length - 1 - [...options].reverse().findIndex((option) => !option.disabled);
3751
- }
3752
- if (highlightedIndex === -1 || highlightedIndex === options.length) {
3753
- highlightedIndex = 0;
3760
+ const { highlightStartPositionBehavior } = { ...defaultToggleOpenOptions, ...toggleOpenOptions };
3761
+ let firstSelectedValue;
3762
+ let firstEnabledValue;
3763
+ for (let i = 0; i < state.options.length; i++) {
3764
+ const currentOption = state.options[highlightStartPositionBehavior === "first" ? i : state.options.length - i - 1];
3765
+ if (!currentOption.disabled) {
3766
+ if (!firstEnabledValue) {
3767
+ firstEnabledValue = currentOption.value;
3768
+ }
3769
+ if (selectedValues.includes(currentOption.value)) {
3770
+ firstSelectedValue = currentOption.value;
3771
+ break;
3772
+ }
3773
+ }
3754
3774
  }
3755
3775
  setInternalState((prevState) => ({
3756
3776
  ...prevState,
3757
3777
  isOpen: isOpen2 ?? !prevState.isOpen,
3758
- highlightedValue: options[highlightedIndex].value
3778
+ highlightedValue: firstSelectedValue ?? firstEnabledValue
3759
3779
  }));
3760
3780
  };
3761
3781
  const moveHighlightedIndex = (delta) => {
3762
- let highlightedIndex = options.findIndex((value2) => value2.value === internalState.highlightedValue);
3782
+ let highlightedIndex = state.options.findIndex((value2) => value2.value === internalState.highlightedValue);
3763
3783
  if (highlightedIndex === -1) {
3764
3784
  highlightedIndex = 0;
3765
3785
  }
3766
- const optionLength = options.length;
3786
+ const optionLength = state.options.length;
3767
3787
  const startIndex = (highlightedIndex + delta % optionLength + optionLength) % optionLength;
3768
3788
  const isForward = delta >= 0;
3769
- let highlightedValue = options[startIndex].value;
3770
- for (let i = 0; i < options.length; i++) {
3789
+ let highlightedValue = state.options[startIndex].value;
3790
+ for (let i = 0; i < state.options.length; i++) {
3771
3791
  const index = (startIndex + (isForward ? i : -i) + optionLength) % optionLength;
3772
- if (!options[index].disabled) {
3773
- highlightedValue = options[index].value;
3792
+ if (!state.options[index].disabled) {
3793
+ highlightedValue = state.options[index].value;
3774
3794
  break;
3775
3795
  }
3776
3796
  }
@@ -3781,9 +3801,9 @@ var SelectRoot = ({
3781
3801
  };
3782
3802
  (0, import_react25.useEffect)(() => {
3783
3803
  if (!internalState.highlightedValue) return;
3784
- const highlighted = options.find((value2) => value2.value === internalState.highlightedValue);
3804
+ const highlighted = internalState.options.find((value2) => value2.value === internalState.highlightedValue);
3785
3805
  if (highlighted) {
3786
- highlighted.ref.current.scrollIntoView({ behavior: "instant", block: "nearest" });
3806
+ highlighted.ref.current?.scrollIntoView({ behavior: "instant", block: "nearest" });
3787
3807
  } else {
3788
3808
  console.error(`SelectRoot: Could not find highlighted value (${internalState.highlightedValue})`);
3789
3809
  }
@@ -3920,12 +3940,12 @@ var SelectButton = (0, import_react25.forwardRef)(function SelectButton2({ place
3920
3940
  props.onKeyDown?.(event);
3921
3941
  switch (event.key) {
3922
3942
  case "ArrowDown":
3923
- toggleOpen(true, { highlightStartPosition: "first" });
3943
+ toggleOpen(true, { highlightStartPositionBehavior: "first" });
3924
3944
  event.preventDefault();
3925
3945
  event.stopPropagation();
3926
3946
  break;
3927
3947
  case "ArrowUp":
3928
- toggleOpen(true, { highlightStartPosition: "last" });
3948
+ toggleOpen(true, { highlightStartPositionBehavior: "last" });
3929
3949
  event.preventDefault();
3930
3950
  event.stopPropagation();
3931
3951
  break;
@@ -4019,10 +4039,10 @@ var SelectChipDisplay = (0, import_react25.forwardRef)(function SelectChipDispla
4019
4039
  onKeyDown: (event) => {
4020
4040
  switch (event.key) {
4021
4041
  case "ArrowDown":
4022
- toggleOpen(true, { highlightStartPosition: "first" });
4042
+ toggleOpen(true, { highlightStartPositionBehavior: "first" });
4023
4043
  break;
4024
4044
  case "ArrowUp":
4025
- toggleOpen(true, { highlightStartPosition: "last" });
4045
+ toggleOpen(true, { highlightStartPositionBehavior: "last" });
4026
4046
  }
4027
4047
  },
4028
4048
  size: "small",
@@ -4043,6 +4063,7 @@ var SelectContent = (0, import_react25.forwardRef)(
4043
4063
  function SelectContent2({
4044
4064
  alignment,
4045
4065
  orientation = "vertical",
4066
+ containerClassName,
4046
4067
  ...props
4047
4068
  }, ref) {
4048
4069
  const innerRef = (0, import_react25.useRef)(null);
@@ -4059,76 +4080,83 @@ var SelectContent = (0, import_react25.forwardRef)(
4059
4080
  active: state.isOpen && !!position
4060
4081
  });
4061
4082
  return (0, import_react_dom2.createPortal)(
4062
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
4063
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4064
- "div",
4065
- {
4066
- hidden: !state.isOpen,
4067
- onClick: () => trigger.toggleOpen(false),
4068
- className: (0, import_clsx20.default)("fixed w-screen h-screen inset-0")
4069
- }
4070
- ),
4071
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4072
- "ul",
4073
- {
4074
- ...props,
4075
- id: `${state.id}-listbox`,
4076
- ref: innerRef,
4077
- hidden: !state.isOpen,
4078
- onKeyDown: (event) => {
4079
- switch (event.key) {
4080
- case "Escape":
4081
- trigger.toggleOpen(false);
4082
- event.preventDefault();
4083
- event.stopPropagation();
4084
- break;
4085
- case match(orientation, {
4086
- vertical: "ArrowDown",
4087
- horizontal: "ArrowUp"
4088
- }):
4089
- item.moveHighlightedIndex(1);
4090
- event.preventDefault();
4091
- break;
4092
- case match(orientation, {
4093
- vertical: "ArrowUp",
4094
- horizontal: "ArrowDown"
4095
- }):
4096
- item.moveHighlightedIndex(-1);
4097
- event.preventDefault();
4098
- break;
4099
- case "Home":
4100
- event.preventDefault();
4101
- break;
4102
- case "End":
4103
- event.preventDefault();
4104
- break;
4105
- case "Enter":
4106
- // Fall through
4107
- case " ":
4108
- if (state.highlightedValue) {
4109
- item.toggleSelection(state.highlightedValue);
4110
- if (!config.isMultiSelect) {
4083
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
4084
+ "div",
4085
+ {
4086
+ id: `select-container-${state.id}`,
4087
+ className: (0, import_clsx20.default)("fixed inset-0 w-screen h-screen", containerClassName),
4088
+ hidden: !state.isOpen,
4089
+ children: [
4090
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4091
+ "div",
4092
+ {
4093
+ id: `select-background-${state.id}`,
4094
+ onClick: () => trigger.toggleOpen(false),
4095
+ className: (0, import_clsx20.default)("fixed inset-0 w-screen h-screen")
4096
+ }
4097
+ ),
4098
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4099
+ "ul",
4100
+ {
4101
+ ...props,
4102
+ id: `${state.id}-listbox`,
4103
+ ref: innerRef,
4104
+ onKeyDown: (event) => {
4105
+ switch (event.key) {
4106
+ case "Escape":
4111
4107
  trigger.toggleOpen(false);
4112
- }
4113
- event.preventDefault();
4108
+ event.preventDefault();
4109
+ event.stopPropagation();
4110
+ break;
4111
+ case match(orientation, {
4112
+ vertical: "ArrowDown",
4113
+ horizontal: "ArrowUp"
4114
+ }):
4115
+ item.moveHighlightedIndex(1);
4116
+ event.preventDefault();
4117
+ break;
4118
+ case match(orientation, {
4119
+ vertical: "ArrowUp",
4120
+ horizontal: "ArrowDown"
4121
+ }):
4122
+ item.moveHighlightedIndex(-1);
4123
+ event.preventDefault();
4124
+ break;
4125
+ case "Home":
4126
+ event.preventDefault();
4127
+ break;
4128
+ case "End":
4129
+ event.preventDefault();
4130
+ break;
4131
+ case "Enter":
4132
+ // Fall through
4133
+ case " ":
4134
+ if (state.highlightedValue) {
4135
+ item.toggleSelection(state.highlightedValue);
4136
+ if (!config.isMultiSelect) {
4137
+ trigger.toggleOpen(false);
4138
+ }
4139
+ event.preventDefault();
4140
+ }
4141
+ break;
4114
4142
  }
4115
- break;
4143
+ },
4144
+ className: (0, import_clsx20.default)("flex-col-0 p-2 bg-menu-background text-menu-text rounded-md shadow-hw-bottom focus-style-within overflow-auto", props.className),
4145
+ style: {
4146
+ opacity: position ? void 0 : 0,
4147
+ position: "fixed",
4148
+ ...position
4149
+ },
4150
+ role: "listbox",
4151
+ "aria-multiselectable": config.isMultiSelect,
4152
+ "aria-orientation": orientation,
4153
+ tabIndex: position ? 0 : void 0,
4154
+ children: props.children
4116
4155
  }
4117
- },
4118
- className: (0, import_clsx20.default)("flex-col-0 p-2 bg-menu-background text-menu-text rounded-md shadow-hw-bottom focus-style-within overflow-auto", props.className),
4119
- style: {
4120
- opacity: position ? void 0 : 0,
4121
- position: "fixed",
4122
- ...position
4123
- },
4124
- role: "listbox",
4125
- "aria-multiselectable": config.isMultiSelect,
4126
- "aria-orientation": orientation,
4127
- tabIndex: position ? 0 : void 0,
4128
- children: props.children
4129
- }
4130
- )
4131
- ] }),
4156
+ )
4157
+ ]
4158
+ }
4159
+ ),
4132
4160
  document.body
4133
4161
  );
4134
4162
  }