@opengeoweb/warnings 8.4.1 → 9.1.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 (20) hide show
  1. package/index.esm.js +875 -381
  2. package/package.json +3 -24
  3. package/src/index.d.ts +1 -1
  4. package/src/lib/components/ObjectManager/ObjectManager.stories.d.ts +4 -0
  5. package/src/lib/components/PublicWarningsForm/AreaField.d.ts +1 -4
  6. package/src/lib/components/PublicWarningsForm/LevelField.d.ts +9 -0
  7. package/src/lib/components/PublicWarningsForm/Phenomenon.d.ts +8 -0
  8. package/src/lib/components/PublicWarningsForm/PublicWarningsForm.d.ts +9 -13
  9. package/src/lib/components/{PublicWarnings/PublicWarnings.d.ts → PublicWarningsFormDialog/PublicWarningsFormDialog.d.ts} +1 -1
  10. package/src/lib/components/{PublicWarnings/PublicWarnings.stories.d.ts → PublicWarningsFormDialog/PublicWarningsFormDialog.stories.d.ts} +3 -3
  11. package/src/lib/components/{PublicWarnings/PublicWarningsConnect.d.ts → PublicWarningsFormDialog/PublicWarningsFormDialogConnect.d.ts} +1 -1
  12. package/src/lib/components/PublicWarningsFormDialog/index.d.ts +2 -0
  13. package/src/lib/store/drawings/types.d.ts +0 -11
  14. package/src/lib/store/publicWarningForm/reducer.d.ts +5 -3
  15. package/src/lib/store/publicWarningForm/selectors.d.ts +1 -1
  16. package/src/lib/store/publicWarningForm/types.d.ts +15 -0
  17. package/src/lib/components/PublicWarnings/index.d.ts +0 -2
  18. /package/src/lib/components/{PublicWarnings/PublicWarnings.spec.d.ts → PublicWarningsFormDialog/PublicWarningsFormDialog.spec.d.ts} +0 -0
  19. /package/src/lib/components/{PublicWarnings/PublicWarningsConnect.spec.d.ts → PublicWarningsFormDialog/PublicWarningsFormDialogConnect.spec.d.ts} +0 -0
  20. /package/src/lib/components/{PublicWarnings/PublicWarningsConnect.stories.d.ts → PublicWarningsFormDialog/PublicWarningsFormDialogConnect.stories.d.ts} +0 -0
package/index.esm.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import * as React from 'react';
2
- import React__default, { useContext, useRef, useCallback, useDebugValue, createElement, PureComponent, useState, useEffect } from 'react';
2
+ import React__default, { useContext, useRef, useCallback, useDebugValue, createElement, PureComponent, Component, useState, useEffect } from 'react';
3
3
  import 'react-dom';
4
- import { Polygons, Share, ExitDomain, Edit, Delete, DrawPolygon, Visibility, Add, breakpoints, CoastalEvent, Fog, TemperatureHigh, TemperatureLow, Rain, Snow, Lightning, Wind } from '@opengeoweb/theme';
5
- import { uiActions, uiTypes, getSingularDrawtoolDrawLayerId, drawtoolSelectors, layerSelectors, uiSelectors, mapStoreActions, drawtoolActions, layerActions, snackbarActions } from '@opengeoweb/store';
6
- import { emptyGeoJSON, MapControlButton, getGeoJSONPropertyValue, getIcon, currentlySupportedDrawModes } from '@opengeoweb/webmap-react';
7
- import { useSetupDialog } from '@opengeoweb/core';
8
- import { dateUtils, ToggleMenu, getHeight, calculateStartSize, ToolContainerDraggable, AlertBanner, ConfirmationDialog, getAxiosErrorMessage, CustomIconButton, SwitchButton, isAxiosError } from '@opengeoweb/shared';
9
- import { Box, Typography, ListItem, Paper, ListItemButton, Stack, LinearProgress, Button, Grid, FormHelperText, MenuItem, Tabs, Tab, FormControl, Card, CardContent, styled, ListItemIcon, FormControlLabel, Radio } from '@mui/material';
4
+ import { Polygons, Share, ExitDomain, Edit, Delete, DrawPolygon, Visibility, Add, Wind, Fog, Lightning, Snow, Rain, TemperatureHigh, FunnelCloud, TemperatureLow, CoastalEvent, breakpoints } from '@opengeoweb/theme';
5
+ import { uiActions, uiTypes, getSingularDrawtoolDrawLayerId, drawtoolSelectors, layerSelectors, uiSelectors, mapStoreActions, drawtoolActions, layerActions, useSetupDialog } from '@opengeoweb/store';
6
+ import { emptyGeoJSON, MapControlButton, getGeoJSONPropertyValue, getIcon, rewindGeometry, currentlySupportedDrawModes } from '@opengeoweb/webmap-react';
7
+ import { snackbarActions } from '@opengeoweb/snackbar';
8
+ import { dateUtils, ToggleMenu, calculateStartSize, ToolContainerDraggable, AlertBanner, ConfirmationDialog, getAxiosErrorMessage, CustomIconButton, SwitchButton, isAxiosError } from '@opengeoweb/shared';
9
+ import { styled, Box, Typography, ListItem, Grid, Paper, ListItemButton, Stack, LinearProgress, Button, FormHelperText, MenuItem, Tabs, Tab, FormControl, Card, CardContent, ListItemIcon } from '@mui/material';
10
10
  import { getApi, createApiInstance, createNonAuthApiInstance, createFakeApiInstance, ApiProvider } from '@opengeoweb/api';
11
- import { ReactHookFormProvider, defaultFormOptions, ReactHookFormHiddenInput, isValidGeoJsonCoordinates, ReactHookFormSelect, ReactHookFormTextField, ReactHookFormDateTime, ReactHookFormRadioGroup } from '@opengeoweb/form-fields';
11
+ import { ReactHookFormProvider, defaultFormOptions, ReactHookFormHiddenInput, isValidGeoJsonCoordinates, ReactHookFormSelect, ReactHookFormTextField, useDraftFormHelpers, errorMessages, ReactHookFormDateTime } from '@opengeoweb/form-fields';
12
12
 
13
13
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
14
14
 
@@ -4163,6 +4163,381 @@ var VariableSizeList = /*#__PURE__*/createListComponent({
4163
4163
  }
4164
4164
  });
4165
4165
 
4166
+ /**
4167
+ * Detect Element Resize.
4168
+ * https://github.com/sdecima/javascript-detect-element-resize
4169
+ * Sebastian Decima
4170
+ *
4171
+ * Forked from version 0.5.3; includes the following modifications:
4172
+ * 1) Guard against unsafe 'window' and 'document' references (to support SSR).
4173
+ * 2) Defer initialization code via a top-level function wrapper (to support SSR).
4174
+ * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.
4175
+ * 4) Add nonce for style element.
4176
+ * 5) Use 'export' statement over 'module.exports' assignment
4177
+ **/
4178
+
4179
+ // Check `document` and `window` in case of server-side rendering
4180
+ let windowObject;
4181
+ if (typeof window !== "undefined") {
4182
+ windowObject = window;
4183
+
4184
+ // eslint-disable-next-line no-restricted-globals
4185
+ } else if (typeof self !== "undefined") {
4186
+ // eslint-disable-next-line no-restricted-globals
4187
+ windowObject = self;
4188
+ } else {
4189
+ windowObject = global;
4190
+ }
4191
+ let cancelFrame = null;
4192
+ let requestFrame = null;
4193
+ const TIMEOUT_DURATION = 20;
4194
+ const clearTimeoutFn = windowObject.clearTimeout;
4195
+ const setTimeoutFn = windowObject.setTimeout;
4196
+ const cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;
4197
+ const requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;
4198
+ if (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {
4199
+ // For environments that don't support animation frame,
4200
+ // fallback to a setTimeout based approach.
4201
+ cancelFrame = clearTimeoutFn;
4202
+ requestFrame = function requestAnimationFrameViaSetTimeout(callback) {
4203
+ return setTimeoutFn(callback, TIMEOUT_DURATION);
4204
+ };
4205
+ } else {
4206
+ // Counter intuitively, environments that support animation frames can be trickier.
4207
+ // Chrome's "Throttle non-visible cross-origin iframes" flag can prevent rAFs from being called.
4208
+ // In this case, we should fallback to a setTimeout() implementation.
4209
+ cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {
4210
+ cancelAnimationFrameFn(animationFrameID);
4211
+ clearTimeoutFn(timeoutID);
4212
+ };
4213
+ requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {
4214
+ const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {
4215
+ clearTimeoutFn(timeoutID);
4216
+ callback();
4217
+ });
4218
+ const timeoutID = setTimeoutFn(function timeoutCallback() {
4219
+ cancelAnimationFrameFn(animationFrameID);
4220
+ callback();
4221
+ }, TIMEOUT_DURATION);
4222
+ return [animationFrameID, timeoutID];
4223
+ };
4224
+ }
4225
+ function createDetectElementResize(nonce) {
4226
+ let animationKeyframes;
4227
+ let animationName;
4228
+ let animationStartEvent;
4229
+ let animationStyle;
4230
+ let checkTriggers;
4231
+ let resetTriggers;
4232
+ let scrollListener;
4233
+ const attachEvent = typeof document !== "undefined" && document.attachEvent;
4234
+ if (!attachEvent) {
4235
+ resetTriggers = function (element) {
4236
+ const triggers = element.__resizeTriggers__,
4237
+ expand = triggers.firstElementChild,
4238
+ contract = triggers.lastElementChild,
4239
+ expandChild = expand.firstElementChild;
4240
+ contract.scrollLeft = contract.scrollWidth;
4241
+ contract.scrollTop = contract.scrollHeight;
4242
+ expandChild.style.width = expand.offsetWidth + 1 + "px";
4243
+ expandChild.style.height = expand.offsetHeight + 1 + "px";
4244
+ expand.scrollLeft = expand.scrollWidth;
4245
+ expand.scrollTop = expand.scrollHeight;
4246
+ };
4247
+ checkTriggers = function (element) {
4248
+ return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;
4249
+ };
4250
+ scrollListener = function (e) {
4251
+ // Don't measure (which forces) reflow for scrolls that happen inside of children!
4252
+ if (e.target.className && typeof e.target.className.indexOf === "function" && e.target.className.indexOf("contract-trigger") < 0 && e.target.className.indexOf("expand-trigger") < 0) {
4253
+ return;
4254
+ }
4255
+ const element = this;
4256
+ resetTriggers(this);
4257
+ if (this.__resizeRAF__) {
4258
+ cancelFrame(this.__resizeRAF__);
4259
+ }
4260
+ this.__resizeRAF__ = requestFrame(function animationFrame() {
4261
+ if (checkTriggers(element)) {
4262
+ element.__resizeLast__.width = element.offsetWidth;
4263
+ element.__resizeLast__.height = element.offsetHeight;
4264
+ element.__resizeListeners__.forEach(function forEachResizeListener(fn) {
4265
+ fn.call(element, e);
4266
+ });
4267
+ }
4268
+ });
4269
+ };
4270
+
4271
+ /* Detect CSS Animations support to detect element display/re-attach */
4272
+ let animation = false;
4273
+ let keyframeprefix = "";
4274
+ animationStartEvent = "animationstart";
4275
+ const domPrefixes = "Webkit Moz O ms".split(" ");
4276
+ let startEvents = "webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" ");
4277
+ let pfx = "";
4278
+ {
4279
+ const elm = document.createElement("fakeelement");
4280
+ if (elm.style.animationName !== undefined) {
4281
+ animation = true;
4282
+ }
4283
+ if (animation === false) {
4284
+ for (let i = 0; i < domPrefixes.length; i++) {
4285
+ if (elm.style[domPrefixes[i] + "AnimationName"] !== undefined) {
4286
+ pfx = domPrefixes[i];
4287
+ keyframeprefix = "-" + pfx.toLowerCase() + "-";
4288
+ animationStartEvent = startEvents[i];
4289
+ animation = true;
4290
+ break;
4291
+ }
4292
+ }
4293
+ }
4294
+ }
4295
+ animationName = "resizeanim";
4296
+ animationKeyframes = "@" + keyframeprefix + "keyframes " + animationName + " { from { opacity: 0; } to { opacity: 0; } } ";
4297
+ animationStyle = keyframeprefix + "animation: 1ms " + animationName + "; ";
4298
+ }
4299
+ const createStyles = function (doc) {
4300
+ if (!doc.getElementById("detectElementResize")) {
4301
+ //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
4302
+ const css = (animationKeyframes ? animationKeyframes : "") + ".resize-triggers { " + (animationStyle ? animationStyle : "") + "visibility: hidden; opacity: 0; } " + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
4303
+ head = doc.head || doc.getElementsByTagName("head")[0],
4304
+ style = doc.createElement("style");
4305
+ style.id = "detectElementResize";
4306
+ style.type = "text/css";
4307
+ if (nonce != null) {
4308
+ style.setAttribute("nonce", nonce);
4309
+ }
4310
+ if (style.styleSheet) {
4311
+ style.styleSheet.cssText = css;
4312
+ } else {
4313
+ style.appendChild(doc.createTextNode(css));
4314
+ }
4315
+ head.appendChild(style);
4316
+ }
4317
+ };
4318
+ const addResizeListener = function (element, fn) {
4319
+ if (attachEvent) {
4320
+ element.attachEvent("onresize", fn);
4321
+ } else {
4322
+ if (!element.__resizeTriggers__) {
4323
+ const doc = element.ownerDocument;
4324
+ const elementStyle = windowObject.getComputedStyle(element);
4325
+ if (elementStyle && elementStyle.position === "static") {
4326
+ element.style.position = "relative";
4327
+ }
4328
+ createStyles(doc);
4329
+ element.__resizeLast__ = {};
4330
+ element.__resizeListeners__ = [];
4331
+ (element.__resizeTriggers__ = doc.createElement("div")).className = "resize-triggers";
4332
+ const expandTrigger = doc.createElement("div");
4333
+ expandTrigger.className = "expand-trigger";
4334
+ expandTrigger.appendChild(doc.createElement("div"));
4335
+ const contractTrigger = doc.createElement("div");
4336
+ contractTrigger.className = "contract-trigger";
4337
+ element.__resizeTriggers__.appendChild(expandTrigger);
4338
+ element.__resizeTriggers__.appendChild(contractTrigger);
4339
+ element.appendChild(element.__resizeTriggers__);
4340
+ resetTriggers(element);
4341
+ element.addEventListener("scroll", scrollListener, true);
4342
+
4343
+ /* Listen for a css animation to detect element display/re-attach */
4344
+ if (animationStartEvent) {
4345
+ element.__resizeTriggers__.__animationListener__ = function animationListener(e) {
4346
+ if (e.animationName === animationName) {
4347
+ resetTriggers(element);
4348
+ }
4349
+ };
4350
+ element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);
4351
+ }
4352
+ }
4353
+ element.__resizeListeners__.push(fn);
4354
+ }
4355
+ };
4356
+ const removeResizeListener = function (element, fn) {
4357
+ if (attachEvent) {
4358
+ element.detachEvent("onresize", fn);
4359
+ } else {
4360
+ element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
4361
+ if (!element.__resizeListeners__.length) {
4362
+ element.removeEventListener("scroll", scrollListener, true);
4363
+ if (element.__resizeTriggers__.__animationListener__) {
4364
+ element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);
4365
+ element.__resizeTriggers__.__animationListener__ = null;
4366
+ }
4367
+ try {
4368
+ element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
4369
+ } catch (e) {
4370
+ // Preact compat; see developit/preact-compat/issues/228
4371
+ }
4372
+ }
4373
+ }
4374
+ };
4375
+ return {
4376
+ addResizeListener,
4377
+ removeResizeListener
4378
+ };
4379
+ }
4380
+
4381
+ class AutoSizer extends Component {
4382
+ constructor(...args) {
4383
+ super(...args);
4384
+ this.state = {
4385
+ height: this.props.defaultHeight || 0,
4386
+ scaledHeight: this.props.defaultHeight || 0,
4387
+ scaledWidth: this.props.defaultWidth || 0,
4388
+ width: this.props.defaultWidth || 0
4389
+ };
4390
+ this._autoSizer = null;
4391
+ this._detectElementResize = null;
4392
+ this._parentNode = null;
4393
+ this._resizeObserver = null;
4394
+ this._timeoutId = null;
4395
+ this._onResize = () => {
4396
+ this._timeoutId = null;
4397
+ const {
4398
+ disableHeight,
4399
+ disableWidth,
4400
+ onResize
4401
+ } = this.props;
4402
+ if (this._parentNode) {
4403
+ var _style$paddingLeft, _style$paddingRight, _style$paddingTop, _style$paddingBottom;
4404
+ // Guard against AutoSizer component being removed from the DOM immediately after being added.
4405
+ // This can result in invalid style values which can result in NaN values if we don't handle them.
4406
+ // See issue #150 for more context.
4407
+
4408
+ const style = window.getComputedStyle(this._parentNode) || {};
4409
+ const paddingLeft = parseFloat((_style$paddingLeft = style.paddingLeft) !== null && _style$paddingLeft !== void 0 ? _style$paddingLeft : "0");
4410
+ const paddingRight = parseFloat((_style$paddingRight = style.paddingRight) !== null && _style$paddingRight !== void 0 ? _style$paddingRight : "0");
4411
+ const paddingTop = parseFloat((_style$paddingTop = style.paddingTop) !== null && _style$paddingTop !== void 0 ? _style$paddingTop : "0");
4412
+ const paddingBottom = parseFloat((_style$paddingBottom = style.paddingBottom) !== null && _style$paddingBottom !== void 0 ? _style$paddingBottom : "0");
4413
+ const rect = this._parentNode.getBoundingClientRect();
4414
+ const scaledHeight = rect.height - paddingTop - paddingBottom;
4415
+ const scaledWidth = rect.width - paddingLeft - paddingRight;
4416
+ const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;
4417
+ const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;
4418
+ if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {
4419
+ this.setState({
4420
+ height,
4421
+ width,
4422
+ scaledHeight,
4423
+ scaledWidth
4424
+ });
4425
+ if (typeof onResize === "function") {
4426
+ onResize({
4427
+ height,
4428
+ scaledHeight,
4429
+ scaledWidth,
4430
+ width
4431
+ });
4432
+ }
4433
+ }
4434
+ }
4435
+ };
4436
+ this._setRef = autoSizer => {
4437
+ this._autoSizer = autoSizer;
4438
+ };
4439
+ }
4440
+ componentDidMount() {
4441
+ const {
4442
+ nonce
4443
+ } = this.props;
4444
+ if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {
4445
+ // Delay access of parentNode until mount.
4446
+ // This handles edge-cases where the component has already been unmounted before its ref has been set,
4447
+ // As well as libraries like react-lite which have a slightly different lifecycle.
4448
+ this._parentNode = this._autoSizer.parentNode;
4449
+
4450
+ // Defer requiring resize handler in order to support server-side rendering.
4451
+ // See issue #41
4452
+ if (this._parentNode != null) {
4453
+ if (typeof ResizeObserver !== "undefined") {
4454
+ this._resizeObserver = new ResizeObserver(() => {
4455
+ // Guard against "ResizeObserver loop limit exceeded" error;
4456
+ // could be triggered if the state update causes the ResizeObserver handler to run long.
4457
+ // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55
4458
+ this._timeoutId = setTimeout(this._onResize, 0);
4459
+ });
4460
+ this._resizeObserver.observe(this._parentNode);
4461
+ } else {
4462
+ this._detectElementResize = createDetectElementResize(nonce);
4463
+ this._detectElementResize.addResizeListener(this._parentNode, this._onResize);
4464
+ }
4465
+ this._onResize();
4466
+ }
4467
+ }
4468
+ }
4469
+ componentWillUnmount() {
4470
+ if (this._parentNode) {
4471
+ if (this._detectElementResize) {
4472
+ this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);
4473
+ }
4474
+ if (this._timeoutId !== null) {
4475
+ clearTimeout(this._timeoutId);
4476
+ }
4477
+ if (this._resizeObserver) {
4478
+ this._resizeObserver.observe(this._parentNode);
4479
+ this._resizeObserver.disconnect();
4480
+ }
4481
+ }
4482
+ }
4483
+ render() {
4484
+ const {
4485
+ children,
4486
+ defaultHeight,
4487
+ defaultWidth,
4488
+ disableHeight = false,
4489
+ disableWidth = false,
4490
+ nonce,
4491
+ onResize,
4492
+ style = {},
4493
+ tagName = "div",
4494
+ ...rest
4495
+ } = this.props;
4496
+ const {
4497
+ height,
4498
+ scaledHeight,
4499
+ scaledWidth,
4500
+ width
4501
+ } = this.state;
4502
+
4503
+ // Outer div should not force width/height since that may prevent containers from shrinking.
4504
+ // Inner component should overflow and use calculated width/height.
4505
+ // See issue #68 for more information.
4506
+ const outerStyle = {
4507
+ overflow: "visible"
4508
+ };
4509
+ const childParams = {};
4510
+
4511
+ // Avoid rendering children before the initial measurements have been collected.
4512
+ // At best this would just be wasting cycles.
4513
+ let bailoutOnChildren = false;
4514
+ if (!disableHeight) {
4515
+ if (height === 0) {
4516
+ bailoutOnChildren = true;
4517
+ }
4518
+ outerStyle.height = 0;
4519
+ childParams.height = height;
4520
+ childParams.scaledHeight = scaledHeight;
4521
+ }
4522
+ if (!disableWidth) {
4523
+ if (width === 0) {
4524
+ bailoutOnChildren = true;
4525
+ }
4526
+ outerStyle.width = 0;
4527
+ childParams.width = width;
4528
+ childParams.scaledWidth = scaledWidth;
4529
+ }
4530
+ return createElement(tagName, {
4531
+ ref: this._setRef,
4532
+ style: {
4533
+ ...outerStyle,
4534
+ ...style
4535
+ },
4536
+ ...rest
4537
+ }, !bailoutOnChildren && children(childParams));
4538
+ }
4539
+ }
4540
+
4166
4541
  /* *
4167
4542
  * Licensed under the Apache License, Version 2.0 (the "License");
4168
4543
  * you may not use this file except in compliance with the License.
@@ -4183,52 +4558,11 @@ var DATE_FORMAT = 'dd/MM/yyyy HH:mm';
4183
4558
  var DATE_FORMAT_UTC = "yyyy-MM-dd'T'HH:mm:ss'Z'";
4184
4559
  var DATE_FORMAT_HEADER = 'EEEE, MMMM dd';
4185
4560
 
4186
- var DEFAULT_DIALOG_HEIGHT = 500;
4187
4561
  var DEFAULT_ADD_BUTTON_HEIGHT = 80;
4188
- var DEFAULT_PADDING_TOP = 6;
4189
4562
  var OBJECT_ITEM_SIZE = 50;
4190
- var HEADER_ITEM_SIZE = 23;
4191
- var MIN_HEIGHT_SCROLLABLE_LIST = 90; // Slightly less than 2 rows
4192
- var useGetRequiredHeights = function useGetRequiredHeights() {
4193
- var listRef = React__default.useRef(null);
4194
- // Used to store the height of the list dialog content
4195
- var _React$useState = React__default.useState(DEFAULT_DIALOG_HEIGHT),
4196
- _React$useState2 = _slicedToArray(_React$useState, 2),
4197
- dialogHeight = _React$useState2[0],
4198
- setDialogHeight = _React$useState2[1];
4199
- // Used to store the height of the "Add new object" button
4200
- var _React$useState3 = React__default.useState(DEFAULT_ADD_BUTTON_HEIGHT),
4201
- _React$useState4 = _slicedToArray(_React$useState3, 2),
4202
- addButtonHeight = _React$useState4[0],
4203
- setAddButtonHeight = _React$useState4[1];
4204
- // Obtain the height of of the list dialog content
4205
- React__default.useLayoutEffect(function () {
4206
- var _a;
4207
- var dialogElement = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.parentElement;
4208
- (dialogElement === null || dialogElement === void 0 ? void 0 : dialogElement.offsetHeight) && setDialogHeight(dialogElement === null || dialogElement === void 0 ? void 0 : dialogElement.offsetHeight);
4209
- var observer = new ResizeObserver(function () {
4210
- var height = getHeight(dialogElement);
4211
- height && setDialogHeight(height);
4212
- });
4213
- observer.observe(dialogElement);
4214
- return function () {
4215
- observer.disconnect();
4216
- };
4217
- }, [listRef]);
4218
- // Obtain height of the "Add new object" button
4219
- React__default.useEffect(function () {
4220
- var _a, _b;
4221
- var buttonElement = (_b = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.lastChild;
4222
- var height = getHeight(buttonElement);
4223
- height && setAddButtonHeight(height);
4224
- }, []);
4225
- var availableSpaceForList = dialogHeight - addButtonHeight - DEFAULT_PADDING_TOP;
4226
- var listHeight = availableSpaceForList && availableSpaceForList < MIN_HEIGHT_SCROLLABLE_LIST ? MIN_HEIGHT_SCROLLABLE_LIST : availableSpaceForList;
4227
- return {
4228
- listRef: listRef,
4229
- listHeight: listHeight
4230
- };
4231
- };
4563
+ var OBJECT_ITEM_SIZE_SMALL_WIDTH = 72;
4564
+ var HEADER_ITEM_SIZE = 28;
4565
+ var BREAKPOINT = 320;
4232
4566
  var NO_OBJECTS_FOUND = 'No objects found';
4233
4567
  var BUTTON_EDIT$1 = 'Edit';
4234
4568
  var BUTTON_DELETE$1 = 'Delete';
@@ -4264,146 +4598,216 @@ var getListInclHeaders = function getListInclHeaders(objects) {
4264
4598
  headerList: headerList
4265
4599
  };
4266
4600
  };
4267
- var Objects = function Objects(_ref) {
4268
- var objects = _ref.objects,
4269
- onClickObject = _ref.onClickObject,
4270
- onClickEdit = _ref.onClickEdit,
4271
- onClickDelete = _ref.onClickDelete,
4272
- onClickShare = _ref.onClickShare,
4273
- activeObject = _ref.activeObject,
4274
- _ref$isLoading = _ref.isLoading,
4275
- isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading;
4276
- // Used to store the height of the list dialog content
4277
- var _useGetRequiredHeight = useGetRequiredHeights(),
4278
- listRef = _useGetRequiredHeight.listRef,
4279
- listHeight = _useGetRequiredHeight.listHeight;
4601
+ var ContainerDiv = styled('div')(function () {
4602
+ return _defineProperty({
4603
+ '.objectActions': {
4604
+ width: '100%',
4605
+ minWidth: '100%'
4606
+ },
4607
+ '& .MuiListItemSecondaryAction-root': {
4608
+ width: '24px',
4609
+ right: '8px'
4610
+ },
4611
+ '& .MuiPaper-root': {
4612
+ height: '100%'
4613
+ },
4614
+ '& .MuiListItemButton-root': {
4615
+ height: '100%'
4616
+ },
4617
+ '& .MuiStack-root': {
4618
+ paddingRight: '32px',
4619
+ width: '100%',
4620
+ overflowWrap: 'anywhere',
4621
+ overflow: 'hidden'
4622
+ }
4623
+ }, "@container objectList (min-width: ".concat(BREAKPOINT, "px)"), {
4624
+ '.objectActions': {
4625
+ width: '50%',
4626
+ minWidth: '50%'
4627
+ },
4628
+ '& .MuiListItemSecondaryAction-root': {
4629
+ width: '56px'
4630
+ },
4631
+ '& .MuiStack-root': {
4632
+ paddingRight: '64px'
4633
+ }
4634
+ });
4635
+ });
4636
+ var Objects = function Objects(_ref2) {
4637
+ var objects = _ref2.objects,
4638
+ onClickObject = _ref2.onClickObject,
4639
+ onClickEdit = _ref2.onClickEdit,
4640
+ onClickDelete = _ref2.onClickDelete,
4641
+ onClickShare = _ref2.onClickShare,
4642
+ activeObject = _ref2.activeObject,
4643
+ _ref2$isLoading = _ref2.isLoading,
4644
+ isLoading = _ref2$isLoading === void 0 ? false : _ref2$isLoading;
4645
+ var listRef = React__default.useRef(null);
4280
4646
  var _getListInclHeaders = getListInclHeaders(objects),
4281
4647
  listInclHeaders = _getListInclHeaders.listInclHeaders,
4282
4648
  headerList = _getListInclHeaders.headerList;
4283
- var getItemSize = function getItemSize(index) {
4649
+ var getItemSize = function getItemSize(width, index) {
4284
4650
  var item = listInclHeaders[index];
4285
4651
  if (item.isObject) {
4286
- return OBJECT_ITEM_SIZE;
4652
+ return width < BREAKPOINT ? OBJECT_ITEM_SIZE_SMALL_WIDTH : OBJECT_ITEM_SIZE;
4287
4653
  }
4288
4654
  return HEADER_ITEM_SIZE;
4289
4655
  };
4290
- return /*#__PURE__*/React__default.createElement(Box, {
4291
- ref: listRef,
4292
- sx: {
4293
- paddingTop: 0.75
4294
- }
4295
- }, !isLoading && objects.length === 0 ? /*#__PURE__*/React__default.createElement(Typography, {
4296
- sx: {
4297
- paddingLeft: '16px',
4298
- paddingTop: '8px'
4299
- },
4300
- variant: "body1"
4301
- }, NO_OBJECTS_FOUND) : /*#__PURE__*/React__default.createElement(VariableSizeList, {
4302
- height: listHeight,
4303
- itemCount: listInclHeaders.length,
4304
- itemSize: getItemSize,
4305
- width: "100%"
4306
- }, function (_ref2) {
4307
- var index = _ref2.index,
4308
- style = _ref2.style;
4309
- var listItem = listInclHeaders[index];
4310
- if (!listItem.isObject) {
4311
- var header = headerList[listItem.index];
4312
- return /*#__PURE__*/React__default.createElement(Typography, {
4313
- style: style,
4314
- key: listItem.index,
4315
- sx: {
4316
- paddingLeft: 2.5,
4317
- paddingBottom: 0.5,
4318
- paddingTop: 0.5,
4319
- opacity: 0.67
4320
- },
4321
- variant: "caption"
4322
- }, header);
4323
- }
4324
- var object = objects[listItem.index];
4325
- var objectDate = dateUtils.isoStringToDate(object.lastUpdatedTime);
4326
- return /*#__PURE__*/React__default.createElement(ListItem, {
4327
- style: style,
4328
- disablePadding: true,
4329
- key: object.id,
4330
- sx: {
4331
- '& .MuiListItemSecondaryAction-root': {
4332
- right: '8px'
4333
- }
4334
- },
4335
- secondaryAction: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ToggleMenu, {
4336
- buttonSx: {
4337
- marginRight: object.scope === 'user' ? 1 : 4
4338
- },
4339
- buttonIcon: /*#__PURE__*/React__default.createElement(Share, null),
4340
- menuTitle: MENU_SHARE,
4341
- tooltipTitle: BUTTON_SHARE,
4342
- menuPosition: "bottom",
4343
- "aria-label": BUTTON_SHARE,
4344
- menuItems: [{
4345
- text: BUTTON_AIRMET,
4346
- action: function action() {},
4347
- icon: /*#__PURE__*/React__default.createElement(ExitDomain, null),
4348
- isDisabled: true
4349
- }, {
4350
- text: BUTTON_SIGMET,
4351
- action: function action() {},
4352
- icon: /*#__PURE__*/React__default.createElement(ExitDomain, null),
4353
- isDisabled: true
4354
- }, {
4355
- text: BUTTON_PUBLIC_WARNING,
4356
- action: function action() {
4357
- onClickShare(object);
4358
- },
4359
- icon: /*#__PURE__*/React__default.createElement(ExitDomain, null)
4360
- }]
4361
- }), object.scope === 'user' && /*#__PURE__*/React__default.createElement(ToggleMenu, {
4362
- menuTitle: "Object options",
4363
- tooltipTitle: "Object options",
4364
- menuPosition: "bottom",
4365
- "aria-label": "Options",
4366
- menuItems: [{
4367
- text: BUTTON_EDIT$1,
4368
- action: function action() {
4369
- onClickEdit(object.id);
4370
- },
4371
- icon: /*#__PURE__*/React__default.createElement(Edit, null)
4372
- }, {
4373
- text: BUTTON_DELETE$1,
4374
- action: function action() {
4375
- onClickDelete(object.id);
4376
- },
4377
- icon: /*#__PURE__*/React__default.createElement(Delete, null)
4378
- }]
4379
- }))
4380
- }, /*#__PURE__*/React__default.createElement(Paper, {
4381
- elevation: 0,
4382
- sx: {
4383
- width: '100%',
4384
- margin: 0.25,
4385
- backgroundColor: 'geowebColors.background.surface',
4386
- border: 'solid 1px',
4387
- borderColor: 'geowebColors.cards.cardContainerBorder'
4388
- }
4389
- }, /*#__PURE__*/React__default.createElement(ListItemButton, {
4390
- onClick: function onClick() {
4391
- onClickObject(object);
4392
- },
4393
- selected: activeObject === object.id,
4656
+ return /*#__PURE__*/React__default.createElement(AutoSizer, {
4657
+ onResize: function onResize() {
4658
+ if (listRef.current !== null) {
4659
+ listRef.current.resetAfterIndex(0, true);
4660
+ }
4661
+ }
4662
+ }, function (_ref3) {
4663
+ var _ref3$height = _ref3.height,
4664
+ height = _ref3$height === void 0 ? 0 : _ref3$height,
4665
+ _ref3$width = _ref3.width,
4666
+ width = _ref3$width === void 0 ? 0 : _ref3$width;
4667
+ return /*#__PURE__*/React__default.createElement(Box, {
4394
4668
  sx: {
4395
- padding: 1,
4396
- height: '44px'
4669
+ width: width
4397
4670
  }
4398
- }, /*#__PURE__*/React__default.createElement(Stack, null, /*#__PURE__*/React__default.createElement(Typography, {
4399
- variant: "caption"
4400
- }, object.objectName), /*#__PURE__*/React__default.createElement(Typography, {
4401
- variant: "caption",
4671
+ }, !isLoading && objects.length === 0 ? /*#__PURE__*/React__default.createElement(Typography, {
4402
4672
  sx: {
4403
- opacity: 0.67
4673
+ paddingLeft: '16px',
4674
+ paddingTop: '8px'
4675
+ },
4676
+ variant: "body1"
4677
+ }, NO_OBJECTS_FOUND) : /*#__PURE__*/React__default.createElement(VariableSizeList, {
4678
+ height: height - DEFAULT_ADD_BUTTON_HEIGHT,
4679
+ width: width,
4680
+ itemCount: listInclHeaders.length,
4681
+ itemSize: function itemSize(index) {
4682
+ return getItemSize(width, index);
4683
+ },
4684
+ style: {
4685
+ containerType: 'inline-size',
4686
+ containerName: 'objectList'
4687
+ },
4688
+ ref: listRef
4689
+ }, function (_ref4) {
4690
+ var index = _ref4.index,
4691
+ style = _ref4.style;
4692
+ var listItem = listInclHeaders[index];
4693
+ if (!listItem.isObject) {
4694
+ var header = headerList[listItem.index];
4695
+ return /*#__PURE__*/React__default.createElement(Typography, {
4696
+ style: style,
4697
+ key: listItem.index,
4698
+ sx: {
4699
+ paddingLeft: 2.5,
4700
+ paddingBottom: 0.5,
4701
+ paddingTop: 1,
4702
+ opacity: 0.67,
4703
+ lineHeight: '16px',
4704
+ overflow: 'hidden',
4705
+ whiteSpace: 'nowrap',
4706
+ textOverflow: 'ellipsis'
4707
+ },
4708
+ variant: "caption"
4709
+ }, header);
4404
4710
  }
4405
- }, object.scope === 'global' && 'Global: ', dateUtils.dateToString(objectDate, DATE_FORMAT, true), ' ', "UTC")))));
4406
- }));
4711
+ var object = objects[listItem.index];
4712
+ var objectDate = dateUtils.isoStringToDate(object.lastUpdatedTime);
4713
+ return /*#__PURE__*/React__default.createElement(ContainerDiv, null, /*#__PURE__*/React__default.createElement(ListItem, {
4714
+ style: style,
4715
+ disablePadding: true,
4716
+ key: object.id,
4717
+ secondaryAction: /*#__PURE__*/React__default.createElement(Grid, {
4718
+ container: true,
4719
+ rowSpacing: 1
4720
+ }, /*#__PURE__*/React__default.createElement(Grid, {
4721
+ item: true,
4722
+ className: "objectActions"
4723
+ }, /*#__PURE__*/React__default.createElement(ToggleMenu, {
4724
+ buttonSx: _defineProperty({
4725
+ // position the share button for scope global
4726
+ marginBottom: object.scope === 'user' ? 0 : 4
4727
+ }, "@container objectList (min-width: ".concat(BREAKPOINT, "px)"), {
4728
+ marginBottom: 0,
4729
+ marginRight: object.scope === 'user' ? 1 : 4
4730
+ }),
4731
+ buttonIcon: /*#__PURE__*/React__default.createElement(Share, null),
4732
+ menuTitle: MENU_SHARE,
4733
+ tooltipTitle: BUTTON_SHARE,
4734
+ menuPosition: "bottom",
4735
+ "aria-label": BUTTON_SHARE,
4736
+ menuItems: [{
4737
+ text: BUTTON_AIRMET,
4738
+ action: function action() {},
4739
+ icon: /*#__PURE__*/React__default.createElement(ExitDomain, null),
4740
+ isDisabled: true
4741
+ }, {
4742
+ text: BUTTON_SIGMET,
4743
+ action: function action() {},
4744
+ icon: /*#__PURE__*/React__default.createElement(ExitDomain, null),
4745
+ isDisabled: true
4746
+ }, {
4747
+ text: BUTTON_PUBLIC_WARNING,
4748
+ action: function action() {
4749
+ onClickShare(object);
4750
+ },
4751
+ icon: /*#__PURE__*/React__default.createElement(ExitDomain, null)
4752
+ }]
4753
+ })), object.scope === 'user' && /*#__PURE__*/React__default.createElement(Grid, {
4754
+ item: true,
4755
+ className: "objectActions"
4756
+ }, /*#__PURE__*/React__default.createElement(ToggleMenu, {
4757
+ menuTitle: "Object options",
4758
+ tooltipTitle: "Object options",
4759
+ menuPosition: "bottom",
4760
+ "aria-label": "Options",
4761
+ menuItems: [{
4762
+ text: BUTTON_EDIT$1,
4763
+ action: function action() {
4764
+ onClickEdit(object.id);
4765
+ },
4766
+ icon: /*#__PURE__*/React__default.createElement(Edit, null)
4767
+ }, {
4768
+ text: BUTTON_DELETE$1,
4769
+ action: function action() {
4770
+ onClickDelete(object.id);
4771
+ },
4772
+ icon: /*#__PURE__*/React__default.createElement(Delete, null)
4773
+ }]
4774
+ })))
4775
+ }, /*#__PURE__*/React__default.createElement(Paper, {
4776
+ elevation: 0,
4777
+ sx: {
4778
+ width: '100%',
4779
+ margin: 0.25,
4780
+ backgroundColor: 'geowebColors.background.surface',
4781
+ border: 'solid 1px',
4782
+ borderColor: 'geowebColors.cards.cardContainerBorder'
4783
+ }
4784
+ }, /*#__PURE__*/React__default.createElement(ListItemButton, {
4785
+ onClick: function onClick() {
4786
+ onClickObject(object);
4787
+ },
4788
+ selected: activeObject === object.id,
4789
+ sx: {
4790
+ padding: 1,
4791
+ height: '44px'
4792
+ }
4793
+ }, /*#__PURE__*/React__default.createElement(Stack, null, /*#__PURE__*/React__default.createElement(Typography, {
4794
+ variant: "caption",
4795
+ sx: {
4796
+ lineHeight: '16px',
4797
+ maxHeight: '32px',
4798
+ overflow: 'hidden'
4799
+ }
4800
+ }, object.objectName), /*#__PURE__*/React__default.createElement(Typography, {
4801
+ variant: "caption",
4802
+ sx: {
4803
+ opacity: 0.67,
4804
+ lineHeight: '16px',
4805
+ maxHeight: '32px',
4806
+ overflow: 'hidden'
4807
+ }
4808
+ }, object.scope === 'global' && 'Global: ', dateUtils.dateToString(objectDate, DATE_FORMAT, true), ' ', "UTC"))))));
4809
+ }));
4810
+ });
4407
4811
  };
4408
4812
 
4409
4813
  var DEFAULT_OBJECT_MANAGER_SIZE = {
@@ -4415,7 +4819,7 @@ var DEFAULT_OBJECT_MANAGER_POSITION = {
4415
4819
  left: 50
4416
4820
  };
4417
4821
  var DEFAULT_OBJECT_MANAGER_MIN_SIZE = {
4418
- width: 200,
4822
+ width: 160,
4419
4823
  height: 300
4420
4824
  };
4421
4825
  var BUTTON_ADD_OBJECT$1 = 'Add a new object';
@@ -4937,11 +5341,7 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
4937
5341
  };
4938
5342
  var onShareObject = function onShareObject(object) {
4939
5343
  dispatch(publicWarningActions.setFormValues({
4940
- object: {
4941
- id: object.id,
4942
- lastUpdatedTime: object.lastUpdatedTime,
4943
- objectName: object.objectName
4944
- }
5344
+ object: object
4945
5345
  }));
4946
5346
  dispatch(uiActions.setToggleOpenDialog({
4947
5347
  setOpen: true,
@@ -23385,9 +23785,13 @@ var DrawingToolForm = function DrawingToolForm(_ref) {
23385
23785
  handleSubmit(function (formValues) {
23386
23786
  // remove unneeded properties
23387
23787
  formValues.opacity;
23388
- var allFormValues = __rest(formValues, ["opacity"]);
23788
+ var geoJSON = formValues.geoJSON,
23789
+ allFormValues = __rest(formValues, ["opacity", "geoJSON"]);
23790
+ // rewind geometry
23791
+ var rewindedGeometry = rewindGeometry(geoJSON);
23389
23792
  onSubmitForm(Object.assign(Object.assign({}, allFormValues), {
23390
- id: id
23793
+ id: id,
23794
+ geoJSON: rewindedGeometry
23391
23795
  }));
23392
23796
  })();
23393
23797
  };
@@ -23600,7 +24004,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
23600
24004
  });
23601
24005
  var onSubmitForm = function onSubmitForm(formValues) {
23602
24006
  dispatch(drawActions.submitDrawValues({
23603
- geoJSON: layerFeatureGeoJSON,
24007
+ geoJSON: formValues.geoJSON,
23604
24008
  objectName: formValues.objectName,
23605
24009
  scope: 'user',
23606
24010
  id: drawing === null || drawing === void 0 ? void 0 : drawing.id
@@ -23719,7 +24123,7 @@ var DrawingToolConnect = function DrawingToolConnect(_ref) {
23719
24123
  React.useEffect(function () {
23720
24124
  dispatch(drawtoolActions.registerDrawTool({
23721
24125
  drawToolId: drawingDialogType,
23722
- drawModes: currentlySupportedDrawModes
24126
+ defaultDrawModes: currentlySupportedDrawModes
23723
24127
  }));
23724
24128
  return function () {
23725
24129
  dispatch(drawtoolActions.unregisterDrawTool({
@@ -23762,7 +24166,7 @@ var DEFAULT_WARNING_DIALOG_MIN_SIZE = {
23762
24166
  height: 300
23763
24167
  };
23764
24168
  var DIALOG_TITLE = 'Public Warning';
23765
- var PublicWarnings = function PublicWarnings(_ref) {
24169
+ var PublicWarningsFormDialog = function PublicWarningsFormDialog(_ref) {
23766
24170
  var bounds = _ref.bounds,
23767
24171
  onClose = _ref.onClose,
23768
24172
  _ref$title = _ref.title,
@@ -23963,7 +24367,7 @@ var BUTTON_DELETE = 'Delete';
23963
24367
  var BUTTON_VIEW = 'View';
23964
24368
  var BUTTON_EDIT = 'Edit';
23965
24369
  var OBJECTS_MENU = 'Object options';
23966
- var NO_OBJECT = 'No object selected';
24370
+ var NO_OBJECT = '(no object selected)';
23967
24371
  var formatDate = function formatDate(lastUpdatedTime) {
23968
24372
  return dateUtils.dateToString(dateUtils.isoStringToDate(lastUpdatedTime), "".concat(DATE_FORMAT, " 'UTC'"));
23969
24373
  };
@@ -23977,24 +24381,34 @@ var AreaField = function AreaField(_ref) {
23977
24381
  _ref$onAddObject = _ref.onAddObject,
23978
24382
  onAddObject = _ref$onAddObject === void 0 ? function () {} : _ref$onAddObject,
23979
24383
  _ref$isDisabled = _ref.isDisabled,
23980
- isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
23981
- _ref$id = _ref.id,
23982
- id = _ref$id === void 0 ? '' : _ref$id,
23983
- _ref$lastUpdatedTime = _ref.lastUpdatedTime,
23984
- lastUpdatedTime = _ref$lastUpdatedTime === void 0 ? '' : _ref$lastUpdatedTime,
23985
- _ref$objectName = _ref.objectName,
23986
- objectName = _ref$objectName === void 0 ? NO_OBJECT : _ref$objectName;
23987
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
24384
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled;
24385
+ var _useFormContext = useFormContext(),
24386
+ getValues = _useFormContext.getValues,
24387
+ errors = _useFormContext.formState.errors;
24388
+ var _useDraftFormHelpers = useDraftFormHelpers(),
24389
+ isRequired = _useDraftFormHelpers.isRequired;
24390
+ var lastUpdatedTime = getValues('object.lastUpdatedTime');
24391
+ var objectName = getValues('object.objectName') || NO_OBJECT;
24392
+ var hasObject = getValues('object') !== undefined;
24393
+ var hasErrors = (errors === null || errors === void 0 ? void 0 : errors.geoJSON) !== undefined;
24394
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, Object.assign({
23988
24395
  variant: "h3",
23989
24396
  color: "text.secondary",
23990
- sx: {
24397
+ sx: Object.assign({
23991
24398
  fontSize: '0.75rem',
23992
24399
  fontWeight: 'normal',
23993
24400
  lineHeight: 1.83,
23994
24401
  paddingLeft: 1.5
23995
- }
23996
- }, LABEL_AREA), /*#__PURE__*/React__default.createElement(Card, {
23997
- elevation: 0
24402
+ }, hasErrors && {
24403
+ color: 'geowebColors.captions.captionError.color'
24404
+ })
24405
+ }, hasErrors && {
24406
+ 'aria-errormessage': errorMessages.required
24407
+ }), LABEL_AREA), /*#__PURE__*/React__default.createElement(Card, {
24408
+ elevation: 0,
24409
+ sx: Object.assign({}, !hasObject && {
24410
+ background: 'none'
24411
+ })
23998
24412
  }, /*#__PURE__*/React__default.createElement(CardContent, {
23999
24413
  sx: {
24000
24414
  position: 'relative',
@@ -24015,7 +24429,7 @@ var AreaField = function AreaField(_ref) {
24015
24429
  }, objectName), /*#__PURE__*/React__default.createElement(Typography, {
24016
24430
  variant: "body2",
24017
24431
  color: "text.secondary"
24018
- }, lastUpdatedTime ? formatDate(lastUpdatedTime) : ''), id ? /*#__PURE__*/React__default.createElement(ToggleMenu, {
24432
+ }, lastUpdatedTime ? formatDate(lastUpdatedTime) : ''), hasObject ? /*#__PURE__*/React__default.createElement(ToggleMenu, {
24019
24433
  menuTitle: OBJECTS_MENU,
24020
24434
  tooltipTitle: OBJECTS_MENU,
24021
24435
  buttonSx: {
@@ -24042,7 +24456,12 @@ var AreaField = function AreaField(_ref) {
24042
24456
  icon: /*#__PURE__*/React__default.createElement(Delete, null)
24043
24457
  }]
24044
24458
  }) : null)), /*#__PURE__*/React__default.createElement(ReactHookFormHiddenInput, {
24045
- name: "objectId"
24459
+ rules: {
24460
+ validate: {
24461
+ isRequired: isRequired
24462
+ }
24463
+ },
24464
+ name: "geoJSON"
24046
24465
  }), /*#__PURE__*/React__default.createElement(Button, {
24047
24466
  sx: {
24048
24467
  marginTop: 1
@@ -24055,86 +24474,207 @@ var AreaField = function AreaField(_ref) {
24055
24474
  }, BUTTON_ADD_OBJECT));
24056
24475
  };
24057
24476
 
24058
- var getEmptyPublicWarning = function getEmptyPublicWarning(object) {
24477
+ /* *
24478
+ * Licensed under the Apache License, Version 2.0 (the "License");
24479
+ * you may not use this file except in compliance with the License.
24480
+ * You may obtain a copy of the License at
24481
+ *
24482
+ * http://www.apache.org/licenses/LICENSE-2.0
24483
+ *
24484
+ * Unless required by applicable law or agreed to in writing, software
24485
+ * distributed under the License is distributed on an "AS IS" BASIS,
24486
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24487
+ * See the License for the specific language governing permissions and
24488
+ * limitations under the License.
24489
+ *
24490
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
24491
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
24492
+ * */
24493
+ var LABEL_PHENOMENON = 'Phenomenon';
24494
+ var warningPhenomena = [{
24495
+ title: 'Wind',
24496
+ key: 'wind',
24497
+ icon: /*#__PURE__*/React.createElement(Wind, null)
24498
+ }, {
24499
+ title: 'Fog',
24500
+ key: 'fog',
24501
+ icon: /*#__PURE__*/React.createElement(Fog, null)
24502
+ }, {
24503
+ title: 'Thunderstorm',
24504
+ key: 'thunderstorm',
24505
+ icon: /*#__PURE__*/React.createElement(Lightning, null)
24506
+ }, {
24507
+ title: 'Snow/ice',
24508
+ key: 'snowIce',
24509
+ icon: /*#__PURE__*/React.createElement(Snow, null)
24510
+ }, {
24511
+ title: 'Rain',
24512
+ key: 'rain',
24513
+ icon: /*#__PURE__*/React.createElement(Rain, null)
24514
+ }, {
24515
+ title: 'High temperature',
24516
+ key: 'highTemp',
24517
+ icon: /*#__PURE__*/React.createElement(TemperatureHigh, null)
24518
+ }, {
24519
+ title: 'Funnel cloud',
24520
+ key: 'funnelCloud',
24521
+ icon: /*#__PURE__*/React.createElement(FunnelCloud, null)
24522
+ }, {
24523
+ title: 'Low temperature',
24524
+ key: 'lowTemp',
24525
+ icon: /*#__PURE__*/React.createElement(TemperatureLow, null)
24526
+ }, {
24527
+ title: 'Coastal event',
24528
+ key: 'coastalEvent',
24529
+ icon: /*#__PURE__*/React.createElement(CoastalEvent, null)
24530
+ }];
24531
+ var Phenomenon = function Phenomenon() {
24532
+ var _useDraftFormHelpers = useDraftFormHelpers(),
24533
+ isRequired = _useDraftFormHelpers.isRequired;
24534
+ return /*#__PURE__*/React.createElement(ReactHookFormSelect, {
24535
+ name: "phenomenon",
24536
+ label: LABEL_PHENOMENON,
24537
+ rules: {
24538
+ validate: {
24539
+ isRequired: isRequired
24540
+ }
24541
+ }
24542
+ }, warningPhenomena.map(function (phenomenon) {
24543
+ return /*#__PURE__*/React.createElement(MenuItem, {
24544
+ key: phenomenon.key,
24545
+ value: phenomenon.key
24546
+ }, /*#__PURE__*/React.createElement(Grid, {
24547
+ container: true,
24548
+ justifyContent: "space-between"
24549
+ }, /*#__PURE__*/React.createElement(Grid, {
24550
+ item: true
24551
+ }, phenomenon.title), /*#__PURE__*/React.createElement(Grid, {
24552
+ item: true
24553
+ }, /*#__PURE__*/React.createElement(ListItemIcon, null, phenomenon.icon))));
24554
+ }));
24555
+ };
24556
+
24557
+ /* *
24558
+ * Licensed under the Apache License, Version 2.0 (the "License");
24559
+ * you may not use this file except in compliance with the License.
24560
+ * You may obtain a copy of the License at
24561
+ *
24562
+ * http://www.apache.org/licenses/LICENSE-2.0
24563
+ *
24564
+ * Unless required by applicable law or agreed to in writing, software
24565
+ * distributed under the License is distributed on an "AS IS" BASIS,
24566
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24567
+ * See the License for the specific language governing permissions and
24568
+ * limitations under the License.
24569
+ *
24570
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
24571
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
24572
+ * */
24573
+ var LABEL_LEVEL = 'Level';
24574
+ var levelOptions = [{
24575
+ title: 'Moderate',
24576
+ key: 'moderate',
24577
+ color: '#FAE21E',
24578
+ textColor: '#051039'
24579
+ }, {
24580
+ title: 'Severe',
24581
+ key: 'severe',
24582
+ color: '#E27000',
24583
+ textColor: '#051039'
24584
+ }, {
24585
+ title: 'Extreme',
24586
+ key: 'extreme',
24587
+ color: '#D62A20',
24588
+ textColor: '#ffffff'
24589
+ }];
24590
+ var LevelField = function LevelField() {
24591
+ var _useDraftFormHelpers = useDraftFormHelpers(),
24592
+ isRequired = _useDraftFormHelpers.isRequired;
24593
+ var _useFormContext = useFormContext(),
24594
+ watch = _useFormContext.watch;
24595
+ var selectedLevel = watch('level');
24596
+ var levelDetails = levelOptions.find(function (level) {
24597
+ return level.key === selectedLevel;
24598
+ });
24599
+ return /*#__PURE__*/React.createElement(ReactHookFormSelect, {
24600
+ name: "level",
24601
+ label: LABEL_LEVEL,
24602
+ rules: {
24603
+ validate: {
24604
+ isRequired: isRequired
24605
+ }
24606
+ },
24607
+ sx: {
24608
+ '& .MuiSelect-select.MuiSelect-filled': {
24609
+ color: (levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.textColor) || 'none',
24610
+ backgroundColor: (levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.color) || 'none',
24611
+ backgroundClip: 'content-box'
24612
+ }
24613
+ }
24614
+ }, levelOptions.map(function (level) {
24615
+ return /*#__PURE__*/React.createElement(MenuItem, {
24616
+ value: level.key,
24617
+ key: level.key,
24618
+ sx: {
24619
+ '&.MuiMenuItem-root ': {
24620
+ color: level.textColor,
24621
+ background: level.color,
24622
+ backgroundClip: 'content-box',
24623
+ padding: '12px 8px',
24624
+ '&:hover': {
24625
+ backgroundColor: "".concat(level.color),
24626
+ backgroundClip: 'content-box',
24627
+ boxShadow: function boxShadow(theme) {
24628
+ return "inset -8px -12px ".concat(theme.palette.geowebColors.cards.cardContainerMouseOver, ", inset 8px 12px ").concat(theme.palette.geowebColors.cards.cardContainerMouseOver);
24629
+ }
24630
+ },
24631
+ '&.Mui-selected': {
24632
+ backgroundColor: "".concat(level.color),
24633
+ '&:hover': {
24634
+ boxShadow: function boxShadow(theme) {
24635
+ return "inset 4px 0px 0px 0px ".concat(theme.palette.geowebColors.typographyAndIcons.iconLinkActive, ", inset -8px -12px ").concat(theme.palette.geowebColors.cards.cardContainerMouseOver, ", inset 8px 12px ").concat(theme.palette.geowebColors.cards.cardContainerMouseOver);
24636
+ }
24637
+ }
24638
+ }
24639
+ }
24640
+ }
24641
+ }, "\xA0", level.title);
24642
+ }));
24643
+ };
24644
+
24645
+ var getEmptyPublicWarning = function getEmptyPublicWarning() {
24059
24646
  var currentTime = new Date();
24060
24647
  var validToTime = dateUtils.add(currentTime, {
24061
24648
  hours: 6
24062
24649
  });
24063
24650
  return {
24651
+ id: '',
24064
24652
  phenomenon: '',
24065
24653
  validFrom: dateUtils.dateToString(currentTime, DATE_FORMAT_UTC, true),
24066
24654
  validUntil: dateUtils.dateToString(validToTime, DATE_FORMAT_UTC, true),
24067
- leadtime: LABEL_CURRENT,
24068
24655
  level: '',
24069
24656
  probability: 30,
24070
24657
  descriptionOriginal: '',
24071
24658
  descriptionTranslation: '',
24072
- objectId: (object === null || object === void 0 ? void 0 : object.id) || ''
24659
+ geoJSON: null
24073
24660
  };
24074
24661
  };
24662
+ var getFormData = function getFormData(publicWarningsDetails, object) {
24663
+ var data = Object.assign(Object.assign({}, publicWarningsDetails ? Object.assign({}, publicWarningsDetails) : getEmptyPublicWarning()), {
24664
+ geoJSON: object === null || object === void 0 ? void 0 : object.geoJSON
24665
+ });
24666
+ return data;
24667
+ };
24075
24668
  // tablet breakpoint - 2 padding * 2 for both sides
24076
24669
  var containerQueryBreakpoint = "@container (min-width: ".concat(breakpoints.tablet - 32, "px)");
24077
- var LABEL_PHENOMENON = 'Phenomenon';
24078
24670
  var LABEL_VALID_FROM = 'Valid from';
24079
24671
  var LABEL_VALID_UNTIL = 'Valid until';
24080
- var LABEL_CURRENT = 'Current';
24081
- var LABEL_EARLY = 'Early';
24082
- var LABEL_LEVEL = 'Level';
24083
24672
  var LABEL_PROBABILITY = 'Probability';
24084
24673
  var BUTTON_CLEAR = 'Clear';
24085
24674
  var BUTTON_SAVE = 'Save';
24086
24675
  var BUTTON_PUBLISH = 'Publish';
24087
24676
  var dateFormat = 'DD/MM/YYYY HH:mm';
24088
24677
  var probablityOptions = [100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 0];
24089
- var levelOptions = [{
24090
- title: 'Moderate',
24091
- key: 'moderate',
24092
- color: '#FAE21E',
24093
- textColor: '#051039'
24094
- }, {
24095
- title: 'Severe',
24096
- key: 'severe',
24097
- color: '#E27000',
24098
- textColor: '#051039'
24099
- }, {
24100
- title: 'Extreme',
24101
- key: 'extreme',
24102
- color: '#D62A20',
24103
- textColor: '#ffffff'
24104
- }];
24105
- var warningPhenomena = [{
24106
- title: 'Coastal event',
24107
- key: 'coastalEvent',
24108
- icon: /*#__PURE__*/React.createElement(CoastalEvent, null)
24109
- }, {
24110
- title: 'Fog',
24111
- key: 'fog',
24112
- icon: /*#__PURE__*/React.createElement(Fog, null)
24113
- }, {
24114
- title: 'High temperature',
24115
- key: 'highTemp',
24116
- icon: /*#__PURE__*/React.createElement(TemperatureHigh, null)
24117
- }, {
24118
- title: 'Low temperature',
24119
- key: 'lowTemp',
24120
- icon: /*#__PURE__*/React.createElement(TemperatureLow, null)
24121
- }, {
24122
- title: 'Rain',
24123
- key: 'rain',
24124
- icon: /*#__PURE__*/React.createElement(Rain, null)
24125
- }, {
24126
- title: 'Snow/ice',
24127
- key: 'snowIce',
24128
- icon: /*#__PURE__*/React.createElement(Snow, null)
24129
- }, {
24130
- title: 'Thunderstorm',
24131
- key: 'thunderstorm',
24132
- icon: /*#__PURE__*/React.createElement(Lightning, null)
24133
- }, {
24134
- title: 'Wind',
24135
- key: 'wind',
24136
- icon: /*#__PURE__*/React.createElement(Wind, null)
24137
- }];
24138
24678
  var ContainerWrapper = styled('div')(function () {
24139
24679
  return {
24140
24680
  containerType: 'size',
@@ -24170,39 +24710,70 @@ var ContainerGrid = styled('div')(function (_ref3) {
24170
24710
  }
24171
24711
  });
24172
24712
  });
24713
+ var prepareFormValues = function prepareFormValues(data) {
24714
+ data.IS_DRAFT;
24715
+ data.object;
24716
+ data['translation-select'];
24717
+ var productToPost = __rest(data, ["IS_DRAFT", "object", 'translation-select']);
24718
+ return productToPost;
24719
+ };
24173
24720
  var Form = function Form(_ref5) {
24174
24721
  var _ref5$isDisabled = _ref5.isDisabled,
24175
24722
  isDisabled = _ref5$isDisabled === void 0 ? false : _ref5$isDisabled,
24176
- object = _ref5.object;
24723
+ _ref5$onSaveForm = _ref5.onSaveForm,
24724
+ onSaveForm = _ref5$onSaveForm === void 0 ? function () {} : _ref5$onSaveForm,
24725
+ _ref5$onPublishForm = _ref5.onPublishForm,
24726
+ onPublishForm = _ref5$onPublishForm === void 0 ? function () {} : _ref5$onPublishForm;
24177
24727
  var _useFormContext = useFormContext(),
24178
- watch = _useFormContext.watch;
24179
- var selectedLevel = watch('level');
24180
- var levelDetails = levelOptions.find(function (level) {
24181
- return level.key === selectedLevel;
24182
- });
24728
+ handleSubmit = _useFormContext.handleSubmit,
24729
+ reset = _useFormContext.reset;
24730
+ var _useDraftFormHelpers = useDraftFormHelpers(),
24731
+ toggleIsDraft = _useDraftFormHelpers.toggleIsDraft,
24732
+ DraftFieldHelper = _useDraftFormHelpers.DraftFieldHelper;
24733
+ var onPressPublish = function onPressPublish() {
24734
+ // TODO: enable publish
24735
+ toggleIsDraft(false);
24736
+ handleSubmit(function (data) {
24737
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
24738
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
24739
+ while (1) switch (_context.prev = _context.next) {
24740
+ case 0:
24741
+ onPublishForm(prepareFormValues(data));
24742
+ case 1:
24743
+ case "end":
24744
+ return _context.stop();
24745
+ }
24746
+ }, _callee);
24747
+ }));
24748
+ })();
24749
+ };
24750
+ var onPressSave = function onPressSave() {
24751
+ // TODO: enable save
24752
+ toggleIsDraft(true);
24753
+ handleSubmit(function (data) {
24754
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
24755
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
24756
+ while (1) switch (_context2.prev = _context2.next) {
24757
+ case 0:
24758
+ onSaveForm(prepareFormValues(data));
24759
+ case 1:
24760
+ case "end":
24761
+ return _context2.stop();
24762
+ }
24763
+ }, _callee2);
24764
+ }));
24765
+ })();
24766
+ };
24767
+ var onPressClear = function onPressClear() {
24768
+ reset(getEmptyPublicWarning());
24769
+ };
24183
24770
  return /*#__PURE__*/React.createElement(ContainerWrapper, null, /*#__PURE__*/React.createElement(ContainerFormWrapper, null, /*#__PURE__*/React.createElement(ContainerGrid, null, /*#__PURE__*/React.createElement(Grid, {
24184
24771
  container: true,
24185
24772
  rowSpacing: 2
24186
24773
  }, /*#__PURE__*/React.createElement(Grid, {
24187
24774
  item: true,
24188
24775
  xs: 12
24189
- }, /*#__PURE__*/React.createElement(ReactHookFormSelect, {
24190
- name: "phenomenon",
24191
- label: LABEL_PHENOMENON,
24192
- rules: {}
24193
- }, warningPhenomena.map(function (phenomenon) {
24194
- return /*#__PURE__*/React.createElement(MenuItem, {
24195
- key: phenomenon.key,
24196
- value: phenomenon.key
24197
- }, /*#__PURE__*/React.createElement(Grid, {
24198
- container: true,
24199
- justifyContent: "space-between"
24200
- }, /*#__PURE__*/React.createElement(Grid, {
24201
- item: true
24202
- }, phenomenon.title), /*#__PURE__*/React.createElement(Grid, {
24203
- item: true
24204
- }, /*#__PURE__*/React.createElement(ListItemIcon, null, phenomenon.icon))));
24205
- }))), /*#__PURE__*/React.createElement(Grid, {
24776
+ }, /*#__PURE__*/React.createElement(Phenomenon, null)), /*#__PURE__*/React.createElement(Grid, {
24206
24777
  item: true,
24207
24778
  xs: 12
24208
24779
  }, /*#__PURE__*/React.createElement(Grid, {
@@ -24213,10 +24784,7 @@ var Form = function Form(_ref5) {
24213
24784
  onEditObject: function onEditObject() {},
24214
24785
  onViewObject: function onViewObject() {},
24215
24786
  onDeleteObject: function onDeleteObject() {},
24216
- onAddObject: function onAddObject() {},
24217
- id: object === null || object === void 0 ? void 0 : object.id,
24218
- objectName: object === null || object === void 0 ? void 0 : object.objectName,
24219
- lastUpdatedTime: object === null || object === void 0 ? void 0 : object.lastUpdatedTime
24787
+ onAddObject: function onAddObject() {}
24220
24788
  }))), /*#__PURE__*/React.createElement(Grid, {
24221
24789
  item: true,
24222
24790
  xs: 12,
@@ -24240,48 +24808,7 @@ var Form = function Form(_ref5) {
24240
24808
  rules: {},
24241
24809
  label: LABEL_VALID_UNTIL,
24242
24810
  format: dateFormat
24243
- }))), /*#__PURE__*/React.createElement(ReactHookFormRadioGroup, {
24244
- name: "leadtime",
24245
- rules: {},
24246
- sx: {
24247
- marginBottom: -1
24248
- }
24249
- }, /*#__PURE__*/React.createElement(Grid, {
24250
- item: true,
24251
- xs: 12,
24252
- container: true,
24253
- spacing: 2
24254
- }, /*#__PURE__*/React.createElement(Grid, {
24255
- item: true,
24256
- xs: 6
24257
- }, /*#__PURE__*/React.createElement(FormControlLabel, {
24258
- sx: {
24259
- padding: 1,
24260
- paddingBottom: 0
24261
- },
24262
- control: /*#__PURE__*/React.createElement(Radio, {
24263
- style: {
24264
- pointerEvents: 'auto'
24265
- }
24266
- }),
24267
- label: LABEL_CURRENT,
24268
- value: LABEL_CURRENT
24269
- })), /*#__PURE__*/React.createElement(Grid, {
24270
- item: true,
24271
- xs: 6
24272
- }, /*#__PURE__*/React.createElement(FormControlLabel, {
24273
- sx: {
24274
- padding: 1,
24275
- paddingBottom: 0
24276
- },
24277
- control: /*#__PURE__*/React.createElement(Radio, {
24278
- style: {
24279
- pointerEvents: 'auto'
24280
- }
24281
- }),
24282
- label: LABEL_EARLY,
24283
- value: LABEL_EARLY
24284
- })))), /*#__PURE__*/React.createElement(Grid, {
24811
+ }))), /*#__PURE__*/React.createElement(Grid, {
24285
24812
  item: true,
24286
24813
  xs: 12,
24287
24814
  container: true,
@@ -24290,46 +24817,7 @@ var Form = function Form(_ref5) {
24290
24817
  item: true,
24291
24818
  xs: 12,
24292
24819
  sm: 6
24293
- }, /*#__PURE__*/React.createElement(ReactHookFormSelect, {
24294
- name: "level",
24295
- label: LABEL_LEVEL,
24296
- rules: {},
24297
- sx: {
24298
- '& .MuiSelect-select.MuiSelect-filled': {
24299
- color: (levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.textColor) || 'none',
24300
- backgroundColor: (levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.color) || 'none',
24301
- backgroundClip: 'content-box'
24302
- }
24303
- }
24304
- }, levelOptions.map(function (level) {
24305
- return /*#__PURE__*/React.createElement(MenuItem, {
24306
- value: level.key,
24307
- key: level.key,
24308
- sx: {
24309
- '&.MuiMenuItem-root ': {
24310
- color: level.textColor,
24311
- background: level.color,
24312
- backgroundClip: 'content-box',
24313
- padding: '12px 8px',
24314
- '&:hover': {
24315
- backgroundColor: "".concat(level.color),
24316
- backgroundClip: 'content-box',
24317
- boxShadow: function boxShadow(theme) {
24318
- return "inset -8px -12px ".concat(theme.palette.geowebColors.cards.cardContainerMouseOver, ", inset 8px 12px ").concat(theme.palette.geowebColors.cards.cardContainerMouseOver);
24319
- }
24320
- },
24321
- '&.Mui-selected': {
24322
- backgroundColor: "".concat(level.color),
24323
- '&:hover': {
24324
- boxShadow: function boxShadow(theme) {
24325
- return "inset 4px 0px 0px 0px ".concat(theme.palette.geowebColors.typographyAndIcons.iconLinkActive, ", inset -8px -12px ").concat(theme.palette.geowebColors.cards.cardContainerMouseOver, ", inset 8px 12px ").concat(theme.palette.geowebColors.cards.cardContainerMouseOver);
24326
- }
24327
- }
24328
- }
24329
- }
24330
- }
24331
- }, "\xA0", level.title);
24332
- }))), /*#__PURE__*/React.createElement(Grid, {
24820
+ }, /*#__PURE__*/React.createElement(LevelField, null)), /*#__PURE__*/React.createElement(Grid, {
24333
24821
  item: true,
24334
24822
  xs: 12,
24335
24823
  sm: 6
@@ -24350,7 +24838,9 @@ var Form = function Form(_ref5) {
24350
24838
  }, /*#__PURE__*/React.createElement(Grid, {
24351
24839
  item: true,
24352
24840
  xs: 12
24353
- }, /*#__PURE__*/React.createElement(DescriptionField, null)))))), /*#__PURE__*/React.createElement(Box, {
24841
+ }, /*#__PURE__*/React.createElement(DescriptionField, null))))), /*#__PURE__*/React.createElement(DraftFieldHelper, null), /*#__PURE__*/React.createElement(ReactHookFormHiddenInput, {
24842
+ name: "id"
24843
+ })), /*#__PURE__*/React.createElement(Box, {
24354
24844
  sx: {
24355
24845
  padding: '24px 10px 14px 10px',
24356
24846
  position: 'absolute',
@@ -24373,7 +24863,8 @@ var Form = function Form(_ref5) {
24373
24863
  width: '100%',
24374
24864
  marginBottom: 1
24375
24865
  },
24376
- disabled: isDisabled
24866
+ disabled: isDisabled,
24867
+ onClick: onPressClear
24377
24868
  }, BUTTON_CLEAR)), /*#__PURE__*/React.createElement(Grid, {
24378
24869
  item: true,
24379
24870
  xs: 12,
@@ -24384,7 +24875,8 @@ var Form = function Form(_ref5) {
24384
24875
  width: '100%',
24385
24876
  marginBottom: 1
24386
24877
  },
24387
- disabled: isDisabled
24878
+ disabled: isDisabled,
24879
+ onClick: onPressSave
24388
24880
  }, BUTTON_SAVE)), /*#__PURE__*/React.createElement(Grid, {
24389
24881
  item: true,
24390
24882
  xs: 12,
@@ -24394,16 +24886,19 @@ var Form = function Form(_ref5) {
24394
24886
  sx: {
24395
24887
  width: '100%'
24396
24888
  },
24397
- disabled: isDisabled
24889
+ disabled: isDisabled,
24890
+ onClick: onPressPublish
24398
24891
  }, BUTTON_PUBLISH))))));
24399
24892
  };
24400
24893
  var PublicWarningsForm = function PublicWarningsForm(props) {
24401
24894
  var object = props.object,
24402
24895
  publicWarningDetails = props.publicWarningDetails;
24403
- var publicWarningFormData = publicWarningDetails || getEmptyPublicWarning(object);
24896
+ var publicWarningFormData = getFormData(publicWarningDetails, object);
24404
24897
  return /*#__PURE__*/React.createElement(ReactHookFormProvider, {
24405
24898
  options: Object.assign(Object.assign({}, defaultFormOptions), {
24406
- defaultValues: publicWarningFormData
24899
+ defaultValues: Object.assign(Object.assign({}, publicWarningFormData), {
24900
+ object: object
24901
+ })
24407
24902
  })
24408
24903
  }, /*#__PURE__*/React.createElement(Form, Object.assign({}, props)));
24409
24904
  };
@@ -24455,7 +24950,6 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect() {
24455
24950
  return getPublicWarningObject(store);
24456
24951
  });
24457
24952
  return /*#__PURE__*/React.createElement(PublicWarningsForm, {
24458
- isDisabled: true,
24459
24953
  object: publicWarningObject
24460
24954
  });
24461
24955
  };
@@ -24476,7 +24970,7 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect() {
24476
24970
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
24477
24971
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
24478
24972
  * */
24479
- var PublicWarningsConnect = function PublicWarningsConnect(_ref) {
24973
+ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_ref) {
24480
24974
  var bounds = _ref.bounds,
24481
24975
  _ref$source = _ref.source,
24482
24976
  source = _ref$source === void 0 ? 'app' : _ref$source,
@@ -24490,7 +24984,7 @@ var PublicWarningsConnect = function PublicWarningsConnect(_ref) {
24490
24984
  if (!isDialogOpen) {
24491
24985
  return null;
24492
24986
  }
24493
- return /*#__PURE__*/React__default.createElement(PublicWarnings, {
24987
+ return /*#__PURE__*/React__default.createElement(PublicWarningsFormDialog, {
24494
24988
  isOpen: isDialogOpen,
24495
24989
  onClose: onCloseDialog,
24496
24990
  order: dialogOrder,
@@ -25074,4 +25568,4 @@ var drawingModuleConfig = {
25074
25568
  sagas: [drawingSaga]
25075
25569
  };
25076
25570
 
25077
- export { DIALOG_TITLE, DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarnings, PublicWarningsConnect, WarningsModuleProvider, drawingModuleConfig, useObjectDrawDialogAction };
25571
+ export { DIALOG_TITLE, DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarningsFormDialog, PublicWarningsFormDialogConnect, WarningsModuleProvider, drawingModuleConfig, useObjectDrawDialogAction };