@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
@@ -2158,7 +2158,7 @@ function useFloatingElement({
2158
2158
  var import_react_dom = require("react-dom");
2159
2159
  var import_jsx_runtime15 = require("react/jsx-runtime");
2160
2160
  var defaultToggleOpenOptions = {
2161
- highlightStartPosition: "first"
2161
+ highlightStartPositionBehavior: "first"
2162
2162
  };
2163
2163
  var SelectContext = (0, import_react13.createContext)(null);
2164
2164
  function useSelectContext() {
@@ -2181,47 +2181,62 @@ var SelectRoot = ({
2181
2181
  isMultiSelect = false,
2182
2182
  iconAppearance = "left"
2183
2183
  }) => {
2184
- const [options, setOptions] = (0, import_react13.useState)([]);
2185
2184
  const triggerRef = (0, import_react13.useRef)(null);
2186
2185
  const generatedId = (0, import_react13.useId)();
2187
2186
  const usedId = id ?? generatedId;
2188
2187
  const [internalState, setInternalState] = (0, import_react13.useState)({
2189
- isOpen
2188
+ isOpen,
2189
+ options: []
2190
2190
  });
2191
- const selectedValues = isMultiSelect ? values ?? [] : [value].filter(Boolean);
2191
+ const selectedValues = (0, import_react13.useMemo)(
2192
+ () => isMultiSelect ? values ?? [] : [value].filter(Boolean),
2193
+ [isMultiSelect, value, values]
2194
+ );
2195
+ const selectedOptions = (0, import_react13.useMemo)(
2196
+ () => selectedValues.map((value2) => internalState.options.find((option) => value2 === option.value)).filter(Boolean),
2197
+ [selectedValues, internalState.options]
2198
+ );
2192
2199
  const state = {
2193
2200
  ...internalState,
2194
2201
  id: usedId,
2195
2202
  disabled,
2196
2203
  invalid,
2197
2204
  value: selectedValues,
2198
- options,
2199
- selectedOptions: selectedValues.map((value2) => options.find((option) => value2 === option.value)).filter(Boolean)
2205
+ selectedOptions
2200
2206
  };
2201
2207
  const config = {
2202
2208
  isMultiSelect,
2203
2209
  iconAppearance
2204
2210
  };
2205
2211
  const registerItem = (0, import_react13.useCallback)((item) => {
2206
- setOptions((prev) => {
2207
- const updated = [...prev, item];
2208
- updated.sort((a, b) => {
2212
+ setInternalState((prev) => {
2213
+ const updatedOptions = [...prev.options, item];
2214
+ updatedOptions.sort((a, b) => {
2209
2215
  const aEl = a.ref.current;
2210
2216
  const bEl = b.ref.current;
2211
2217
  if (!aEl || !bEl) return 0;
2212
2218
  return aEl.compareDocumentPosition(bEl) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
2213
2219
  });
2214
- return updated;
2220
+ return {
2221
+ ...prev,
2222
+ options: updatedOptions
2223
+ };
2215
2224
  });
2216
2225
  }, []);
2217
2226
  const unregisterItem = (0, import_react13.useCallback)((value2) => {
2218
- setOptions((prev) => prev.filter((i) => i.value !== value2));
2227
+ setInternalState((prev) => {
2228
+ const updatedOptions = prev.options.filter((i) => i.value !== value2);
2229
+ return {
2230
+ ...prev,
2231
+ options: updatedOptions
2232
+ };
2233
+ });
2219
2234
  }, []);
2220
2235
  const toggleSelection = (value2, isSelected) => {
2221
2236
  if (disabled) {
2222
2237
  return;
2223
2238
  }
2224
- const option = options.find((i) => i.value === value2);
2239
+ const option = state.options.find((i) => i.value === value2);
2225
2240
  if (!option) {
2226
2241
  console.error(`SelectOption with value: ${value2} not found`);
2227
2242
  return;
@@ -2264,35 +2279,40 @@ var SelectRoot = ({
2264
2279
  triggerRef.current = null;
2265
2280
  }, []);
2266
2281
  const toggleOpen = (isOpen2, toggleOpenOptions) => {
2267
- const { highlightStartPosition } = { ...defaultToggleOpenOptions, ...toggleOpenOptions };
2268
- let highlightedIndex;
2269
- if (highlightStartPosition === "first") {
2270
- highlightedIndex = options.findIndex((option) => !option.disabled);
2271
- } else {
2272
- highlightedIndex = options.length - 1 - [...options].reverse().findIndex((option) => !option.disabled);
2273
- }
2274
- if (highlightedIndex === -1 || highlightedIndex === options.length) {
2275
- highlightedIndex = 0;
2282
+ const { highlightStartPositionBehavior } = { ...defaultToggleOpenOptions, ...toggleOpenOptions };
2283
+ let firstSelectedValue;
2284
+ let firstEnabledValue;
2285
+ for (let i = 0; i < state.options.length; i++) {
2286
+ const currentOption = state.options[highlightStartPositionBehavior === "first" ? i : state.options.length - i - 1];
2287
+ if (!currentOption.disabled) {
2288
+ if (!firstEnabledValue) {
2289
+ firstEnabledValue = currentOption.value;
2290
+ }
2291
+ if (selectedValues.includes(currentOption.value)) {
2292
+ firstSelectedValue = currentOption.value;
2293
+ break;
2294
+ }
2295
+ }
2276
2296
  }
2277
2297
  setInternalState((prevState) => ({
2278
2298
  ...prevState,
2279
2299
  isOpen: isOpen2 ?? !prevState.isOpen,
2280
- highlightedValue: options[highlightedIndex].value
2300
+ highlightedValue: firstSelectedValue ?? firstEnabledValue
2281
2301
  }));
2282
2302
  };
2283
2303
  const moveHighlightedIndex = (delta) => {
2284
- let highlightedIndex = options.findIndex((value2) => value2.value === internalState.highlightedValue);
2304
+ let highlightedIndex = state.options.findIndex((value2) => value2.value === internalState.highlightedValue);
2285
2305
  if (highlightedIndex === -1) {
2286
2306
  highlightedIndex = 0;
2287
2307
  }
2288
- const optionLength = options.length;
2308
+ const optionLength = state.options.length;
2289
2309
  const startIndex = (highlightedIndex + delta % optionLength + optionLength) % optionLength;
2290
2310
  const isForward = delta >= 0;
2291
- let highlightedValue = options[startIndex].value;
2292
- for (let i = 0; i < options.length; i++) {
2311
+ let highlightedValue = state.options[startIndex].value;
2312
+ for (let i = 0; i < state.options.length; i++) {
2293
2313
  const index = (startIndex + (isForward ? i : -i) + optionLength) % optionLength;
2294
- if (!options[index].disabled) {
2295
- highlightedValue = options[index].value;
2314
+ if (!state.options[index].disabled) {
2315
+ highlightedValue = state.options[index].value;
2296
2316
  break;
2297
2317
  }
2298
2318
  }
@@ -2303,9 +2323,9 @@ var SelectRoot = ({
2303
2323
  };
2304
2324
  (0, import_react13.useEffect)(() => {
2305
2325
  if (!internalState.highlightedValue) return;
2306
- const highlighted = options.find((value2) => value2.value === internalState.highlightedValue);
2326
+ const highlighted = internalState.options.find((value2) => value2.value === internalState.highlightedValue);
2307
2327
  if (highlighted) {
2308
- highlighted.ref.current.scrollIntoView({ behavior: "instant", block: "nearest" });
2328
+ highlighted.ref.current?.scrollIntoView({ behavior: "instant", block: "nearest" });
2309
2329
  } else {
2310
2330
  console.error(`SelectRoot: Could not find highlighted value (${internalState.highlightedValue})`);
2311
2331
  }
@@ -2442,12 +2462,12 @@ var SelectButton = (0, import_react13.forwardRef)(function SelectButton2({ place
2442
2462
  props.onKeyDown?.(event);
2443
2463
  switch (event.key) {
2444
2464
  case "ArrowDown":
2445
- toggleOpen(true, { highlightStartPosition: "first" });
2465
+ toggleOpen(true, { highlightStartPositionBehavior: "first" });
2446
2466
  event.preventDefault();
2447
2467
  event.stopPropagation();
2448
2468
  break;
2449
2469
  case "ArrowUp":
2450
- toggleOpen(true, { highlightStartPosition: "last" });
2470
+ toggleOpen(true, { highlightStartPositionBehavior: "last" });
2451
2471
  event.preventDefault();
2452
2472
  event.stopPropagation();
2453
2473
  break;
@@ -2541,10 +2561,10 @@ var SelectChipDisplay = (0, import_react13.forwardRef)(function SelectChipDispla
2541
2561
  onKeyDown: (event) => {
2542
2562
  switch (event.key) {
2543
2563
  case "ArrowDown":
2544
- toggleOpen(true, { highlightStartPosition: "first" });
2564
+ toggleOpen(true, { highlightStartPositionBehavior: "first" });
2545
2565
  break;
2546
2566
  case "ArrowUp":
2547
- toggleOpen(true, { highlightStartPosition: "last" });
2567
+ toggleOpen(true, { highlightStartPositionBehavior: "last" });
2548
2568
  }
2549
2569
  },
2550
2570
  size: "small",
@@ -2565,6 +2585,7 @@ var SelectContent = (0, import_react13.forwardRef)(
2565
2585
  function SelectContent2({
2566
2586
  alignment,
2567
2587
  orientation = "vertical",
2588
+ containerClassName,
2568
2589
  ...props
2569
2590
  }, ref) {
2570
2591
  const innerRef = (0, import_react13.useRef)(null);
@@ -2581,76 +2602,83 @@ var SelectContent = (0, import_react13.forwardRef)(
2581
2602
  active: state.isOpen && !!position
2582
2603
  });
2583
2604
  return (0, import_react_dom.createPortal)(
2584
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
2585
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2586
- "div",
2587
- {
2588
- hidden: !state.isOpen,
2589
- onClick: () => trigger.toggleOpen(false),
2590
- className: (0, import_clsx9.default)("fixed w-screen h-screen inset-0")
2591
- }
2592
- ),
2593
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2594
- "ul",
2595
- {
2596
- ...props,
2597
- id: `${state.id}-listbox`,
2598
- ref: innerRef,
2599
- hidden: !state.isOpen,
2600
- onKeyDown: (event) => {
2601
- switch (event.key) {
2602
- case "Escape":
2603
- trigger.toggleOpen(false);
2604
- event.preventDefault();
2605
- event.stopPropagation();
2606
- break;
2607
- case match(orientation, {
2608
- vertical: "ArrowDown",
2609
- horizontal: "ArrowUp"
2610
- }):
2611
- item.moveHighlightedIndex(1);
2612
- event.preventDefault();
2613
- break;
2614
- case match(orientation, {
2615
- vertical: "ArrowUp",
2616
- horizontal: "ArrowDown"
2617
- }):
2618
- item.moveHighlightedIndex(-1);
2619
- event.preventDefault();
2620
- break;
2621
- case "Home":
2622
- event.preventDefault();
2623
- break;
2624
- case "End":
2625
- event.preventDefault();
2626
- break;
2627
- case "Enter":
2628
- // Fall through
2629
- case " ":
2630
- if (state.highlightedValue) {
2631
- item.toggleSelection(state.highlightedValue);
2632
- if (!config.isMultiSelect) {
2605
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2606
+ "div",
2607
+ {
2608
+ id: `select-container-${state.id}`,
2609
+ className: (0, import_clsx9.default)("fixed inset-0 w-screen h-screen", containerClassName),
2610
+ hidden: !state.isOpen,
2611
+ children: [
2612
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2613
+ "div",
2614
+ {
2615
+ id: `select-background-${state.id}`,
2616
+ onClick: () => trigger.toggleOpen(false),
2617
+ className: (0, import_clsx9.default)("fixed inset-0 w-screen h-screen")
2618
+ }
2619
+ ),
2620
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2621
+ "ul",
2622
+ {
2623
+ ...props,
2624
+ id: `${state.id}-listbox`,
2625
+ ref: innerRef,
2626
+ onKeyDown: (event) => {
2627
+ switch (event.key) {
2628
+ case "Escape":
2633
2629
  trigger.toggleOpen(false);
2634
- }
2635
- event.preventDefault();
2630
+ event.preventDefault();
2631
+ event.stopPropagation();
2632
+ break;
2633
+ case match(orientation, {
2634
+ vertical: "ArrowDown",
2635
+ horizontal: "ArrowUp"
2636
+ }):
2637
+ item.moveHighlightedIndex(1);
2638
+ event.preventDefault();
2639
+ break;
2640
+ case match(orientation, {
2641
+ vertical: "ArrowUp",
2642
+ horizontal: "ArrowDown"
2643
+ }):
2644
+ item.moveHighlightedIndex(-1);
2645
+ event.preventDefault();
2646
+ break;
2647
+ case "Home":
2648
+ event.preventDefault();
2649
+ break;
2650
+ case "End":
2651
+ event.preventDefault();
2652
+ break;
2653
+ case "Enter":
2654
+ // Fall through
2655
+ case " ":
2656
+ if (state.highlightedValue) {
2657
+ item.toggleSelection(state.highlightedValue);
2658
+ if (!config.isMultiSelect) {
2659
+ trigger.toggleOpen(false);
2660
+ }
2661
+ event.preventDefault();
2662
+ }
2663
+ break;
2636
2664
  }
2637
- break;
2665
+ },
2666
+ className: (0, import_clsx9.default)("flex-col-0 p-2 bg-menu-background text-menu-text rounded-md shadow-hw-bottom focus-style-within overflow-auto", props.className),
2667
+ style: {
2668
+ opacity: position ? void 0 : 0,
2669
+ position: "fixed",
2670
+ ...position
2671
+ },
2672
+ role: "listbox",
2673
+ "aria-multiselectable": config.isMultiSelect,
2674
+ "aria-orientation": orientation,
2675
+ tabIndex: position ? 0 : void 0,
2676
+ children: props.children
2638
2677
  }
2639
- },
2640
- className: (0, import_clsx9.default)("flex-col-0 p-2 bg-menu-background text-menu-text rounded-md shadow-hw-bottom focus-style-within overflow-auto", props.className),
2641
- style: {
2642
- opacity: position ? void 0 : 0,
2643
- position: "fixed",
2644
- ...position
2645
- },
2646
- role: "listbox",
2647
- "aria-multiselectable": config.isMultiSelect,
2648
- "aria-orientation": orientation,
2649
- tabIndex: position ? 0 : void 0,
2650
- children: props.children
2651
- }
2652
- )
2653
- ] }),
2678
+ )
2679
+ ]
2680
+ }
2681
+ ),
2654
2682
  document.body
2655
2683
  );
2656
2684
  }