@opengeoweb/sigmet-airmet 5.0.1 → 5.1.1

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 (118) hide show
  1. package/README.md +0 -0
  2. package/index.js +101 -20
  3. package/package.json +8 -8
  4. package/src/index.d.ts +0 -0
  5. package/src/lib/AirmetDemo.stories.d.ts +0 -0
  6. package/src/lib/SigmetDemo.stories.d.ts +0 -0
  7. package/src/lib/components/ComponentsLookUp/AirmetComponentsLookUp.d.ts +0 -0
  8. package/src/lib/components/ComponentsLookUp/AirmetComponentsLookUp.spec.d.ts +0 -0
  9. package/src/lib/components/ComponentsLookUp/AviationProductApiWrapper.d.ts +0 -0
  10. package/src/lib/components/ComponentsLookUp/AviationProductApiWrapper.spec.d.ts +0 -0
  11. package/src/lib/components/ComponentsLookUp/SigmetComponentsLookUp.d.ts +0 -0
  12. package/src/lib/components/ComponentsLookUp/SigmetComponentsLookUp.spec.d.ts +0 -0
  13. package/src/lib/components/ComponentsLookUp/index.d.ts +0 -0
  14. package/src/lib/components/ContentDialog/ContentDialog.d.ts +0 -0
  15. package/src/lib/components/ContentDialog/ContentDialog.spec.d.ts +0 -0
  16. package/src/lib/components/ContentDialog/ContentDialog.stories.d.ts +0 -0
  17. package/src/lib/components/ContentDialog/index.d.ts +0 -0
  18. package/src/lib/components/MapViewGeoJson/MapViewGeoJson.d.ts +0 -0
  19. package/src/lib/components/MapViewGeoJson/MapViewGeoJson.spec.d.ts +0 -0
  20. package/src/lib/components/MapViewGeoJson/MapViewGeoJson.stories.d.ts +0 -0
  21. package/src/lib/components/MapViewGeoJson/constants.d.ts +0 -0
  22. package/src/lib/components/MapViewGeoJson/index.d.ts +0 -0
  23. package/src/lib/components/MapViewGeoJson/utils.d.ts +0 -0
  24. package/src/lib/components/MapViewGeoJson/utils.spec.d.ts +0 -0
  25. package/src/lib/components/MetInfoWrapper/DownloadSigmetAirmetConfigWrapper.d.ts +0 -0
  26. package/src/lib/components/MetInfoWrapper/DownloadSigmetAirmetConfigWrapper.spec.d.ts +0 -0
  27. package/src/lib/components/MetInfoWrapper/MetInfoWrapper.d.ts +0 -0
  28. package/src/lib/components/MetInfoWrapper/MetInfoWrapper.spec.d.ts +0 -0
  29. package/src/lib/components/MetInfoWrapper/MetInfoWrapper.stories.d.ts +0 -0
  30. package/src/lib/components/MetInfoWrapper/MetInfoWrapper.tac.spec.d.ts +0 -0
  31. package/src/lib/components/MetInfoWrapper/index.d.ts +0 -0
  32. package/src/lib/components/MetInfoWrapper/utils.d.ts +0 -0
  33. package/src/lib/components/MetInfoWrapper/utils.spec.d.ts +0 -0
  34. package/src/lib/components/ProductForms/AirmetForm/AirmetForm.d.ts +0 -0
  35. package/src/lib/components/ProductForms/AirmetForm/AirmetForm.spec.d.ts +0 -0
  36. package/src/lib/components/ProductForms/AirmetForm/AirmetForm.stories.d.ts +0 -0
  37. package/src/lib/components/ProductForms/AirmetForm/AirmetForm.validations.spec.d.ts +0 -0
  38. package/src/lib/components/ProductForms/ProductForm.styles.d.ts +0 -0
  39. package/src/lib/components/ProductForms/ProductFormDialog.Airmet.stories.d.ts +0 -0
  40. package/src/lib/components/ProductForms/ProductFormDialog.Draw.stories.d.ts +0 -0
  41. package/src/lib/components/ProductForms/ProductFormDialog.Sigmet.stories.d.ts +0 -0
  42. package/src/lib/components/ProductForms/ProductFormDialog.actions.spec.d.ts +0 -0
  43. package/src/lib/components/ProductForms/ProductFormDialog.d.ts +0 -0
  44. package/src/lib/components/ProductForms/ProductFormDialog.spec.d.ts +0 -0
  45. package/src/lib/components/ProductForms/ProductFormDialogContent.d.ts +0 -0
  46. package/src/lib/components/ProductForms/ProductFormDialogContent.spec.d.ts +0 -0
  47. package/src/lib/components/ProductForms/ProductFormFields/Change.d.ts +0 -0
  48. package/src/lib/components/ProductForms/ProductFormFields/Change.spec.d.ts +0 -0
  49. package/src/lib/components/ProductForms/ProductFormFields/CloudLevels.d.ts +0 -0
  50. package/src/lib/components/ProductForms/ProductFormFields/CloudLevels.spec.d.ts +0 -0
  51. package/src/lib/components/ProductForms/ProductFormFields/DrawTools.d.ts +0 -0
  52. package/src/lib/components/ProductForms/ProductFormFields/DrawTools.spec.d.ts +0 -0
  53. package/src/lib/components/ProductForms/ProductFormFields/IssuedAt.d.ts +0 -0
  54. package/src/lib/components/ProductForms/ProductFormFields/IssuedAt.spec.d.ts +0 -0
  55. package/src/lib/components/ProductForms/ProductFormFields/Levels.d.ts +0 -0
  56. package/src/lib/components/ProductForms/ProductFormFields/Levels.spec.d.ts +0 -0
  57. package/src/lib/components/ProductForms/ProductFormFields/ObservationForecast.d.ts +0 -0
  58. package/src/lib/components/ProductForms/ProductFormFields/ObservationForecast.spec.d.ts +0 -0
  59. package/src/lib/components/ProductForms/ProductFormFields/ObservationForecastTime.d.ts +0 -0
  60. package/src/lib/components/ProductForms/ProductFormFields/ObservationForecastTime.spec.d.ts +0 -0
  61. package/src/lib/components/ProductForms/ProductFormFields/Phenomenon.d.ts +0 -0
  62. package/src/lib/components/ProductForms/ProductFormFields/Phenomenon.spec.d.ts +0 -0
  63. package/src/lib/components/ProductForms/ProductFormFields/ProductFormFieldLayout.d.ts +0 -0
  64. package/src/lib/components/ProductForms/ProductFormFields/ProductFormFieldLayout.spec.d.ts +0 -0
  65. package/src/lib/components/ProductForms/ProductFormFields/Progress.d.ts +0 -0
  66. package/src/lib/components/ProductForms/ProductFormFields/Progress.spec.d.ts +0 -0
  67. package/src/lib/components/ProductForms/ProductFormFields/RadioButtonAndLabel.d.ts +0 -0
  68. package/src/lib/components/ProductForms/ProductFormFields/RadioButtonAndLabel.spec.d.ts +0 -0
  69. package/src/lib/components/ProductForms/ProductFormFields/SelectFIR.d.ts +0 -0
  70. package/src/lib/components/ProductForms/ProductFormFields/SelectFIR.spec.d.ts +0 -0
  71. package/src/lib/components/ProductForms/ProductFormFields/StartGeometry.d.ts +0 -0
  72. package/src/lib/components/ProductForms/ProductFormFields/StartGeometry.spec.d.ts +0 -0
  73. package/src/lib/components/ProductForms/ProductFormFields/SurfaceVisibility.d.ts +0 -0
  74. package/src/lib/components/ProductForms/ProductFormFields/SurfaceVisibility.spec.d.ts +0 -0
  75. package/src/lib/components/ProductForms/ProductFormFields/SurfaceWind.d.ts +0 -0
  76. package/src/lib/components/ProductForms/ProductFormFields/SurfaceWind.spec.d.ts +0 -0
  77. package/src/lib/components/ProductForms/ProductFormFields/Tac.d.ts +0 -0
  78. package/src/lib/components/ProductForms/ProductFormFields/Tac.spec.d.ts +0 -0
  79. package/src/lib/components/ProductForms/ProductFormFields/Type.d.ts +0 -0
  80. package/src/lib/components/ProductForms/ProductFormFields/Type.spec.d.ts +0 -0
  81. package/src/lib/components/ProductForms/ProductFormFields/ValidFrom.d.ts +0 -0
  82. package/src/lib/components/ProductForms/ProductFormFields/ValidFrom.spec.d.ts +0 -0
  83. package/src/lib/components/ProductForms/ProductFormFields/ValidUntil.d.ts +0 -0
  84. package/src/lib/components/ProductForms/ProductFormFields/ValidUntil.spec.d.ts +0 -0
  85. package/src/lib/components/ProductForms/ProductFormFields/VolcanicFields.d.ts +0 -0
  86. package/src/lib/components/ProductForms/ProductFormFields/VolcanicFields.spec.d.ts +0 -0
  87. package/src/lib/components/ProductForms/ProductFormFields/index.d.ts +0 -0
  88. package/src/lib/components/ProductForms/ProductFormLayout.d.ts +0 -0
  89. package/src/lib/components/ProductForms/ProductFormLayout.spec.d.ts +0 -0
  90. package/src/lib/components/ProductForms/ProductFormTac.d.ts +0 -0
  91. package/src/lib/components/ProductForms/ProductFormTac.spec.d.ts +0 -0
  92. package/src/lib/components/ProductForms/SigmetForm/SigmetCancelVolcanicMovements.d.ts +0 -0
  93. package/src/lib/components/ProductForms/SigmetForm/SigmetForm.d.ts +0 -0
  94. package/src/lib/components/ProductForms/SigmetForm/SigmetForm.spec.d.ts +0 -0
  95. package/src/lib/components/ProductForms/SigmetForm/SigmetForm.stories.d.ts +0 -0
  96. package/src/lib/components/ProductForms/SigmetForm/SigmetForm.validations.spec.d.ts +0 -0
  97. package/src/lib/components/ProductForms/index.d.ts +0 -0
  98. package/src/lib/components/ProductForms/utils.d.ts +0 -0
  99. package/src/lib/components/ProductForms/utils.spec.d.ts +0 -0
  100. package/src/lib/components/ProductList/ProductList.d.ts +0 -0
  101. package/src/lib/components/ProductList/ProductList.spec.d.ts +0 -0
  102. package/src/lib/components/ProductList/ProductList.stories.d.ts +0 -0
  103. package/src/lib/components/ProductList/ProductListRow.d.ts +0 -0
  104. package/src/lib/components/ProductList/ProductListRow.spec.d.ts +0 -0
  105. package/src/lib/components/ProductList/index.d.ts +0 -0
  106. package/src/lib/storyshots/Storyshots.spec.d.ts +0 -0
  107. package/src/lib/types.d.ts +0 -0
  108. package/src/lib/utils/api.d.ts +0 -0
  109. package/src/lib/utils/api.spec.d.ts +0 -0
  110. package/src/lib/utils/config/config.d.ts +0 -0
  111. package/src/lib/utils/config/config.spec.d.ts +0 -0
  112. package/src/lib/utils/config/index.d.ts +0 -0
  113. package/src/lib/utils/fakeApi.d.ts +0 -0
  114. package/src/lib/utils/fakeApi.spec.d.ts +0 -0
  115. package/src/lib/utils/mockdata/fakeAirmetList.d.ts +0 -0
  116. package/src/lib/utils/mockdata/fakeSigmetList.d.ts +0 -0
  117. package/src/lib/utils/store.d.ts +0 -0
  118. package/src/lib/utils/testUtils.d.ts +0 -0
package/README.md CHANGED
File without changes
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import React__default, { createContext, useContext, useDebugValue, forwardRef, createElement, Fragment } from 'react';
2
+ import React__default, { createContext, version, useContext, useRef, useCallback, useDebugValue, forwardRef, createElement, Fragment } from 'react';
3
3
  import { Box as Box$2, Button, FormControlLabel, Radio, Grid, Typography, Checkbox, MenuItem, FormHelperText, useTheme as useTheme$2, Dialog, DialogTitle, DialogContent, Card, LinearProgress, List, ListItemButton, Backdrop, CircularProgress } from '@mui/material';
4
4
  import { useFormContext } from 'react-hook-form';
5
5
  import { useDraftFormHelpers, ReactHookFormRadioGroup, ReactHookFormSelect, ReactHookFormNumberField, isInteger, isValidMax, isValidMin, isEmpty, ReactHookFormDateTime, isValidDate, isBefore, isBetween, hasMaxFeaturePoints, hasMulitpleIntersections, ReactHookFormHiddenInput, isMaximumOneDrawing, hasIntersectionWithFIR, isValidGeoJsonCoordinates, isXHoursBefore, isAfter, isXHoursAfter, ReactHookFormTextField, isLatitude, isNonOrBothCoordinates, isLongitude, ReactHookFormFormControl, isGeometryDirty, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
@@ -8,7 +8,7 @@ import * as turf from '@turf/turf';
8
8
  import { polygonToLineString, booleanClockwise, rewind } from '@turf/turf';
9
9
  import moment from 'moment';
10
10
  import { ToggleMenu, CustomTooltip, useIsMounted, StatusTag, AlertBanner, ConfirmationServiceProvider, usePreventBrowserClose, useConfirmationDialog, isAxiosError, getAxiosErrorMessage, usePoller, ErrorBoundary } from '@opengeoweb/shared';
11
- import { layerTypes, mapSelectors, generateMapId, generateTimesliderId, SyncGroups, generateLayerId, mapActions, publicLayers, MapControls, LayerManagerMapButtonConnect, LegendMapButtonConnect, MultiDimensionSelectMapButtonsConnect, MapViewConnect, MapViewLayer, TimeSliderConnect, LegendConnect, DockedLayerManagerConnect } from '@opengeoweb/core';
11
+ import { layerTypes, mapSelectors, generateMapId, generateTimesliderId, SyncGroups, generateLayerId, mapActions, publicLayers, MapControls, LayerManagerMapButtonConnect, LegendMapButtonConnect, MultiDimensionSelectMapButtonsConnect, MapViewConnect, MapViewLayer, TimeSliderConnect, LegendConnect, LayerManagerConnect } from '@opengeoweb/core';
12
12
  import { Location, DrawRegion, DrawPolygon, DrawFIRLand, Delete, ChevronLeft, Edit, Success, Clock } from '@opengeoweb/theme';
13
13
  import { debounce } from 'lodash';
14
14
  import 'react-dom';
@@ -4271,12 +4271,52 @@ if (process.env.NODE_ENV === 'production') {
4271
4271
  withSelector.exports = withSelector_development;
4272
4272
  }
4273
4273
 
4274
- const ReactReduxContext = /*#__PURE__*/createContext(null);
4274
+ const ContextKey = Symbol.for(`react-redux-context-${version}`);
4275
+ const gT = globalThis;
4275
4276
 
4276
- if (process.env.NODE_ENV !== 'production') {
4277
- ReactReduxContext.displayName = 'ReactRedux';
4277
+ function getContext() {
4278
+ let realContext = gT[ContextKey];
4279
+
4280
+ if (!realContext) {
4281
+ realContext = createContext(null);
4282
+
4283
+ if (process.env.NODE_ENV !== 'production') {
4284
+ realContext.displayName = 'ReactRedux';
4285
+ }
4286
+
4287
+ gT[ContextKey] = realContext;
4288
+ }
4289
+
4290
+ return realContext;
4278
4291
  }
4279
4292
 
4293
+ const ReactReduxContext = /*#__PURE__*/new Proxy({}, /*#__PURE__*/new Proxy({}, {
4294
+ get(_, handler) {
4295
+ const target = getContext(); // @ts-ignore
4296
+
4297
+ return (_target, ...args) => Reflect[handler](target, ...args);
4298
+ }
4299
+
4300
+ }));
4301
+
4302
+ /**
4303
+ * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level
4304
+ * hook that you should usually not need to call directly.
4305
+ *
4306
+ * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
4307
+ * @returns {Function} A `useReduxContext` hook bound to the specified context.
4308
+ */
4309
+ function createReduxContextHook(context = ReactReduxContext) {
4310
+ return function useReduxContext() {
4311
+ const contextValue = useContext(context);
4312
+
4313
+ if (process.env.NODE_ENV !== 'production' && !contextValue) {
4314
+ throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');
4315
+ }
4316
+
4317
+ return contextValue;
4318
+ };
4319
+ }
4280
4320
  /**
4281
4321
  * A hook to access the value of the `ReactReduxContext`. This is a low-level
4282
4322
  * hook that you should usually not need to call directly.
@@ -4293,15 +4333,8 @@ if (process.env.NODE_ENV !== 'production') {
4293
4333
  * return <div>{store.getState()}</div>
4294
4334
  * }
4295
4335
  */
4296
- function useReduxContext() {
4297
- const contextValue = useContext(ReactReduxContext);
4298
4336
 
4299
- if (process.env.NODE_ENV !== 'production' && !contextValue) {
4300
- throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');
4301
- }
4302
-
4303
- return contextValue;
4304
- }
4337
+ const useReduxContext = /*#__PURE__*/createReduxContextHook();
4305
4338
 
4306
4339
  const notInitialized = () => {
4307
4340
  throw new Error('uSES not initialized!');
@@ -4322,8 +4355,16 @@ const refEquality = (a, b) => a === b;
4322
4355
 
4323
4356
 
4324
4357
  function createSelectorHook(context = ReactReduxContext) {
4325
- const useReduxContext$1 = context === ReactReduxContext ? useReduxContext : () => useContext(context);
4326
- return function useSelector(selector, equalityFn = refEquality) {
4358
+ const useReduxContext$1 = context === ReactReduxContext ? useReduxContext : createReduxContextHook(context);
4359
+ return function useSelector(selector, equalityFnOrOptions = {}) {
4360
+ const {
4361
+ equalityFn = refEquality,
4362
+ stabilityCheck = undefined,
4363
+ noopCheck = undefined
4364
+ } = typeof equalityFnOrOptions === 'function' ? {
4365
+ equalityFn: equalityFnOrOptions
4366
+ } : equalityFnOrOptions;
4367
+
4327
4368
  if (process.env.NODE_ENV !== 'production') {
4328
4369
  if (!selector) {
4329
4370
  throw new Error(`You must pass a selector to useSelector`);
@@ -4341,9 +4382,47 @@ function createSelectorHook(context = ReactReduxContext) {
4341
4382
  const {
4342
4383
  store,
4343
4384
  subscription,
4344
- getServerState
4385
+ getServerState,
4386
+ stabilityCheck: globalStabilityCheck,
4387
+ noopCheck: globalNoopCheck
4345
4388
  } = useReduxContext$1();
4346
- const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, selector, equalityFn);
4389
+ const firstRun = useRef(true);
4390
+ const wrappedSelector = useCallback({
4391
+ [selector.name](state) {
4392
+ const selected = selector(state);
4393
+
4394
+ if (process.env.NODE_ENV !== 'production') {
4395
+ const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;
4396
+
4397
+ if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {
4398
+ const toCompare = selector(state);
4399
+
4400
+ if (!equalityFn(selected, toCompare)) {
4401
+ console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {
4402
+ state,
4403
+ selected,
4404
+ selected2: toCompare
4405
+ });
4406
+ }
4407
+ }
4408
+
4409
+ const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;
4410
+
4411
+ if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {
4412
+ // @ts-ignore
4413
+ if (selected === state) {
4414
+ console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.');
4415
+ }
4416
+ }
4417
+
4418
+ if (firstRun.current) firstRun.current = false;
4419
+ }
4420
+
4421
+ return selected;
4422
+ }
4423
+
4424
+ }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);
4425
+ const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);
4347
4426
  useDebugValue(selectedState);
4348
4427
  return selectedState;
4349
4428
  };
@@ -4905,7 +4984,8 @@ function shallowEqual(objA, objB) {
4905
4984
 
4906
4985
  function createStoreHook(context = ReactReduxContext) {
4907
4986
  const useReduxContext$1 = // @ts-ignore
4908
- context === ReactReduxContext ? useReduxContext : () => useContext(context);
4987
+ context === ReactReduxContext ? useReduxContext : // @ts-ignore
4988
+ createReduxContextHook(context);
4909
4989
  return function useStore() {
4910
4990
  const {
4911
4991
  store
@@ -5173,10 +5253,11 @@ var MapViewGeoJson = function MapViewGeoJson(_ref) {
5173
5253
  })), /*#__PURE__*/React.createElement(LegendConnect, {
5174
5254
  showMapId: true,
5175
5255
  mapId: mapId
5176
- }), /*#__PURE__*/React.createElement(DockedLayerManagerConnect, {
5256
+ }), /*#__PURE__*/React.createElement(LayerManagerConnect, {
5177
5257
  mapId: mapId,
5178
5258
  bounds: "parent",
5179
- source: "module"
5259
+ source: "module",
5260
+ isDocked: true
5180
5261
  }));
5181
5262
  };
5182
5263
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/sigmet-airmet",
3
- "version": "5.0.1",
3
+ "version": "5.1.1",
4
4
  "description": "GeoWeb Sigmet/Airmet library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -14,12 +14,12 @@
14
14
  "dependencies": {
15
15
  "@mui/material": "5.12.0",
16
16
  "@mui/system": "5.12.0",
17
- "@opengeoweb/api": "5.0.1",
18
- "@opengeoweb/authentication": "5.0.1",
19
- "@opengeoweb/core": "5.0.1",
20
- "@opengeoweb/form-fields": "5.0.1",
21
- "@opengeoweb/shared": "5.0.1",
22
- "@opengeoweb/theme": "5.0.1",
17
+ "@opengeoweb/api": "5.1.1",
18
+ "@opengeoweb/authentication": "5.1.1",
19
+ "@opengeoweb/core": "5.1.1",
20
+ "@opengeoweb/form-fields": "5.1.1",
21
+ "@opengeoweb/shared": "5.1.1",
22
+ "@opengeoweb/theme": "5.1.1",
23
23
  "@redux-eggs/redux-toolkit": "2.2.0",
24
24
  "@redux-eggs/saga-extension": "2.2.0",
25
25
  "@reduxjs/toolkit": "1.9.5",
@@ -30,7 +30,7 @@
30
30
  "moment": "2.29.4",
31
31
  "react": "18.2.0",
32
32
  "react-hook-form": "7.41.5",
33
- "react-redux": "8.0.4"
33
+ "react-redux": "8.1.1"
34
34
  },
35
35
  "peerDependencies": {}
36
36
  }
package/src/index.d.ts CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes