@atlaskit/editor-plugin-extension 5.2.4 → 5.2.6

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 (82) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/extensionPlugin.js +1 -1
  3. package/dist/cjs/pm-plugins/toolbar.js +5 -3
  4. package/dist/cjs/pm-plugins/utils.js +3 -5
  5. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +29 -10
  6. package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +7 -1
  7. package/dist/cjs/ui/ConfigPanel/FieldMessages.js +3 -3
  8. package/dist/cjs/ui/ConfigPanel/Fields/Boolean.js +10 -6
  9. package/dist/cjs/ui/ConfigPanel/Fields/CheckboxGroup.js +4 -2
  10. package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +6 -4
  11. package/dist/cjs/ui/ConfigPanel/Fields/CustomSelect.js +4 -2
  12. package/dist/cjs/ui/ConfigPanel/Fields/Date.js +4 -2
  13. package/dist/cjs/ui/ConfigPanel/Fields/DateRange.js +10 -5
  14. package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +2 -1
  15. package/dist/cjs/ui/ConfigPanel/Fields/Number.js +4 -2
  16. package/dist/cjs/ui/ConfigPanel/Fields/RadioGroup.js +2 -1
  17. package/dist/cjs/ui/ConfigPanel/Fields/Select.js +2 -1
  18. package/dist/cjs/ui/ConfigPanel/Fields/String.js +4 -2
  19. package/dist/cjs/ui/ConfigPanel/Fields/UserSelect.js +5 -3
  20. package/dist/cjs/ui/ConfigPanel/FormContent.js +18 -5
  21. package/dist/cjs/ui/ConfigPanel/FormErrorBoundary.js +3 -3
  22. package/dist/cjs/ui/ConfigPanel/LoadingState.js +28 -1
  23. package/dist/cjs/ui/useConfigPanelPluginHook.js +2 -2
  24. package/dist/es2019/extensionPlugin.js +1 -1
  25. package/dist/es2019/pm-plugins/toolbar.js +5 -4
  26. package/dist/es2019/pm-plugins/utils.js +3 -5
  27. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +18 -6
  28. package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +7 -1
  29. package/dist/es2019/ui/ConfigPanel/FieldMessages.js +1 -1
  30. package/dist/es2019/ui/ConfigPanel/Fields/Boolean.js +9 -5
  31. package/dist/es2019/ui/ConfigPanel/Fields/CheckboxGroup.js +4 -2
  32. package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +5 -3
  33. package/dist/es2019/ui/ConfigPanel/Fields/CustomSelect.js +4 -2
  34. package/dist/es2019/ui/ConfigPanel/Fields/Date.js +4 -2
  35. package/dist/es2019/ui/ConfigPanel/Fields/DateRange.js +10 -5
  36. package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +2 -1
  37. package/dist/es2019/ui/ConfigPanel/Fields/Number.js +4 -2
  38. package/dist/es2019/ui/ConfigPanel/Fields/RadioGroup.js +2 -1
  39. package/dist/es2019/ui/ConfigPanel/Fields/Select.js +2 -1
  40. package/dist/es2019/ui/ConfigPanel/Fields/String.js +4 -2
  41. package/dist/es2019/ui/ConfigPanel/Fields/UserSelect.js +5 -3
  42. package/dist/es2019/ui/ConfigPanel/FormContent.js +19 -5
  43. package/dist/es2019/ui/ConfigPanel/FormErrorBoundary.js +1 -1
  44. package/dist/es2019/ui/ConfigPanel/LoadingState.js +26 -1
  45. package/dist/es2019/ui/useConfigPanelPluginHook.js +1 -1
  46. package/dist/esm/extensionPlugin.js +1 -1
  47. package/dist/esm/pm-plugins/toolbar.js +5 -3
  48. package/dist/esm/pm-plugins/utils.js +3 -5
  49. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +29 -10
  50. package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +7 -1
  51. package/dist/esm/ui/ConfigPanel/FieldMessages.js +1 -1
  52. package/dist/esm/ui/ConfigPanel/Fields/Boolean.js +9 -5
  53. package/dist/esm/ui/ConfigPanel/Fields/CheckboxGroup.js +4 -2
  54. package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +5 -3
  55. package/dist/esm/ui/ConfigPanel/Fields/CustomSelect.js +4 -2
  56. package/dist/esm/ui/ConfigPanel/Fields/Date.js +4 -2
  57. package/dist/esm/ui/ConfigPanel/Fields/DateRange.js +10 -5
  58. package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +2 -1
  59. package/dist/esm/ui/ConfigPanel/Fields/Number.js +4 -2
  60. package/dist/esm/ui/ConfigPanel/Fields/RadioGroup.js +2 -1
  61. package/dist/esm/ui/ConfigPanel/Fields/Select.js +2 -1
  62. package/dist/esm/ui/ConfigPanel/Fields/String.js +4 -2
  63. package/dist/esm/ui/ConfigPanel/Fields/UserSelect.js +5 -3
  64. package/dist/esm/ui/ConfigPanel/FormContent.js +18 -5
  65. package/dist/esm/ui/ConfigPanel/FormErrorBoundary.js +1 -1
  66. package/dist/esm/ui/ConfigPanel/LoadingState.js +28 -1
  67. package/dist/esm/ui/useConfigPanelPluginHook.js +1 -1
  68. package/dist/types/extensionPluginType.d.ts +3 -1
  69. package/dist/types/pm-plugins/toolbar.d.ts +2 -1
  70. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +4 -3
  71. package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +2 -2
  72. package/dist/types/ui/ConfigPanel/FormContent.d.ts +1 -1
  73. package/dist/types/ui/ConfigPanel/LoadingState.d.ts +3 -1
  74. package/dist/types/ui/ConfigPanel/types.d.ts +1 -0
  75. package/dist/types-ts4.5/extensionPluginType.d.ts +3 -1
  76. package/dist/types-ts4.5/pm-plugins/toolbar.d.ts +3 -1
  77. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanel.d.ts +4 -3
  78. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +2 -2
  79. package/dist/types-ts4.5/ui/ConfigPanel/FormContent.d.ts +1 -1
  80. package/dist/types-ts4.5/ui/ConfigPanel/LoadingState.d.ts +3 -1
  81. package/dist/types-ts4.5/ui/ConfigPanel/types.d.ts +1 -0
  82. package/package.json +9 -8
@@ -183,6 +183,7 @@ var breakoutOptions = function breakoutOptions(state, formatMessage, extensionSt
183
183
  return editorExperiment('platform_editor_controls', 'variant1') ? breakoutDropdownOptions(state, formatMessage, breakoutEnabled, editorAnalyticsAPI) : breakoutButtonListOptions(state, formatMessage, extensionState, breakoutEnabled, editorAnalyticsAPI);
184
184
  };
185
185
  var editButton = function editButton(formatMessage, extensionState, applyChangeToContextPanel, editorAnalyticsAPI) {
186
+ var isDisabled = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
186
187
  if (!extensionState.showEditButton) {
187
188
  return [];
188
189
  }
@@ -202,7 +203,8 @@ var editButton = function editButton(formatMessage, extensionState, applyChangeT
202
203
  },
203
204
  title: formatMessage(messages.edit),
204
205
  tabIndex: null,
205
- focusEditoronEnter: true
206
+ focusEditoronEnter: true,
207
+ disabled: isDisabled
206
208
  }];
207
209
  if (editorExperiment('platform_editor_controls', 'variant1')) {
208
210
  editButtonItems.push({
@@ -262,7 +264,7 @@ export var getToolbarConfig = function getToolbarConfig(_ref) {
262
264
  editorAnalyticsAPI = _ref.editorAnalyticsAPI,
263
265
  extensionApi = _ref.extensionApi;
264
266
  return function (state, intl) {
265
- var _hoverDecoration5, _hoverDecoration6, _hoverDecoration7, _hoverDecoration8;
267
+ var _extensionApi$connect, _hoverDecoration5, _hoverDecoration6, _hoverDecoration7, _hoverDecoration8;
266
268
  var formatMessage = intl.formatMessage;
267
269
  var extensionState = getPluginState(state);
268
270
  if (fg('platform_editor_legacy_content_macro')) {
@@ -276,7 +278,7 @@ export var getToolbarConfig = function getToolbarConfig(_ref) {
276
278
  return;
277
279
  }
278
280
  var nodeType = [state.schema.nodes.extension, state.schema.nodes.inlineExtension, state.schema.nodes.bodiedExtension, state.schema.nodes.multiBodiedExtension];
279
- var editButtonItems = editButton(formatMessage, extensionState, applyChangeToContextPanel, editorAnalyticsAPI);
281
+ var editButtonItems = editButton(formatMessage, extensionState, applyChangeToContextPanel, editorAnalyticsAPI, editorExperiment('platform_editor_offline_editing_web', true) && (extensionApi === null || extensionApi === void 0 || (_extensionApi$connect = extensionApi.connectivity) === null || _extensionApi$connect === void 0 || (_extensionApi$connect = _extensionApi$connect.sharedState) === null || _extensionApi$connect === void 0 || (_extensionApi$connect = _extensionApi$connect.currentState()) === null || _extensionApi$connect === void 0 ? void 0 : _extensionApi$connect.mode) === 'offline');
280
282
  var breakoutItems = breakoutOptions(state, formatMessage, extensionState, breakoutEnabled, editorAnalyticsAPI);
281
283
  var extensionObj = getSelectedExtension(state, true);
282
284
 
@@ -42,11 +42,9 @@ export var getSelectedDomElement = function getSelectedDomElement(schema, domAtP
42
42
  var isContentExtension = selectedExtensionNode.node.type !== schema.nodes.bodiedExtension;
43
43
  return (
44
44
  // Content extension can be nested in bodied-extension, the following check is necessary for that case
45
- (isContentExtension ?
46
- // Search down
47
- selectedExtensionDomNode.querySelector('.extension-container') :
48
- // Try searching up and then down
49
- closestElement(selectedExtensionDomNode, '.extension-container') || selectedExtensionDomNode.querySelector('.extension-container')) || selectedExtensionDomNode
45
+ (isContentExtension // Search down
46
+ ? selectedExtensionDomNode.querySelector('.extension-container') // Try searching up and then down
47
+ : closestElement(selectedExtensionDomNode, '.extension-container') || selectedExtensionDomNode.querySelector('.extension-container')) || selectedExtensionDomNode
50
48
  );
51
49
  };
52
50
  export var getDataConsumerMark = function getDataConsumerMark(newNode) {
@@ -24,6 +24,7 @@ import { isTabGroup, configPanelMessages as messages } from '@atlaskit/editor-co
24
24
  import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
25
25
  import Form, { FormFooter } from '@atlaskit/form';
26
26
  import { fg } from '@atlaskit/platform-feature-flags';
27
+ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
27
28
  import { ALLOWED_LOGGED_MACRO_PARAMS } from './constants';
28
29
  import { DescriptionSummary } from './DescriptionSummary';
29
30
  import ErrorMessage from './ErrorMessage';
@@ -47,7 +48,8 @@ function ConfigForm(_ref) {
47
48
  parameters = _ref.parameters,
48
49
  submitting = _ref.submitting,
49
50
  contextIdentifierProvider = _ref.contextIdentifierProvider,
50
- featureFlags = _ref.featureFlags;
51
+ featureFlags = _ref.featureFlags,
52
+ disableFields = _ref.disableFields;
51
53
  useEffect(function () {
52
54
  if (fields) {
53
55
  var firstDuplicateField = findDuplicateFields(fields);
@@ -71,7 +73,8 @@ function ConfigForm(_ref) {
71
73
  onFieldChange: onFieldChange,
72
74
  firstVisibleFieldName: firstVisibleFieldName,
73
75
  contextIdentifierProvider: contextIdentifierProvider,
74
- featureFlags: featureFlags
76
+ featureFlags: featureFlags,
77
+ isDisabled: disableFields
75
78
  }), /*#__PURE__*/React.createElement("div", {
76
79
  style: canSave ? {} : {
77
80
  display: 'none'
@@ -200,20 +203,33 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
200
203
  return serialize(extensionManifest, _this.backfillTabFormData(fields, formData, _this.state.currentParameters), fields);
201
204
  case 7:
202
205
  serializedData = _context.sent;
206
+ if (!editorExperiment('platform_editor_offline_editing_web', true, {
207
+ exposure: true
208
+ })) {
209
+ _context.next = 13;
210
+ break;
211
+ }
212
+ _context.next = 11;
213
+ return onChange(serializedData);
214
+ case 11:
215
+ _context.next = 14;
216
+ break;
217
+ case 13:
203
218
  onChange(serializedData);
204
- _context.next = 15;
219
+ case 14:
220
+ _context.next = 20;
205
221
  break;
206
- case 11:
207
- _context.prev = 11;
222
+ case 16:
223
+ _context.prev = 16;
208
224
  _context.t0 = _context["catch"](4);
209
225
  autoSaveReject === null || autoSaveReject === void 0 || autoSaveReject(_context.t0);
210
226
  // eslint-disable-next-line no-console
211
227
  console.error("Error serializing parameters", _context.t0);
212
- case 15:
228
+ case 20:
213
229
  case "end":
214
230
  return _context.stop();
215
231
  }
216
- }, _callee, null, [[4, 11]]);
232
+ }, _callee, null, [[4, 16]]);
217
233
  }));
218
234
  return function (_x) {
219
235
  return _ref3.apply(this, arguments);
@@ -453,7 +469,8 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
453
469
  onFieldChange: onFieldChange,
454
470
  parameters: currentParameters,
455
471
  submitting: submitting,
456
- featureFlags: featureFlags
472
+ featureFlags: featureFlags,
473
+ disableFields: _this2.props.disableFields
457
474
  }))
458
475
  );
459
476
  });
@@ -474,7 +491,8 @@ function ConfigFormIntlWithBoundary(_ref6) {
474
491
  isLoading = _ref6.isLoading,
475
492
  hasParsedParameters = _ref6.hasParsedParameters,
476
493
  firstVisibleFieldName = _ref6.firstVisibleFieldName,
477
- errorMessage = _ref6.errorMessage;
494
+ errorMessage = _ref6.errorMessage,
495
+ disableFields = _ref6.disableFields;
478
496
  var _useSharedPluginState = useSharedPluginState(api, ['contextIdentifier']),
479
497
  contextIdentifierState = _useSharedPluginState.contextIdentifierState;
480
498
  var _ref7 = contextIdentifierState !== null && contextIdentifierState !== void 0 ? contextIdentifierState : {},
@@ -496,7 +514,8 @@ function ConfigFormIntlWithBoundary(_ref6) {
496
514
  parameters: parameters,
497
515
  submitting: submitting,
498
516
  contextIdentifierProvider: contextIdentifierProvider,
499
- featureFlags: featureFlags
517
+ featureFlags: featureFlags,
518
+ disableFields: disableFields
500
519
  }));
501
520
  }
502
521
  var result = withAnalyticsContext({
@@ -1,6 +1,8 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import React, { useEffect, useState } from 'react';
3
3
  import { bind } from 'bind-event-listener';
4
+ import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
5
+ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
4
6
  import ConfigPanel from './ConfigPanel';
5
7
  import { useStateFromPromise } from './use-state-from-promise';
6
8
  var getFieldsDefinitionFn = function getFieldsDefinitionFn(extensionManifest, nodeKey) {
@@ -116,6 +118,9 @@ export default function FieldsLoader(_ref) {
116
118
  _useState6 = _slicedToArray(_useState5, 2),
117
119
  errorMessage = _useState6[0],
118
120
  setErrorMessage = _useState6[1];
121
+ var connectivityState = useSharedPluginStateSelector(api, 'connectivity.mode', {
122
+ disabled: editorExperiment('platform_editor_offline_editing_web', false)
123
+ });
119
124
  return /*#__PURE__*/React.createElement(FieldDefinitionsPromiseResolver, {
120
125
  setErrorMessage: setErrorMessage,
121
126
  extensionManifest: extensionManifest,
@@ -138,7 +143,8 @@ export default function FieldsLoader(_ref) {
138
143
  featureFlags: featureFlags
139
144
  // Remove below prop when cleaning platform_editor_ai_object_sidebar_injection FG
140
145
  ,
141
- usingObjectSidebarPanel: usingObjectSidebarPanel
146
+ usingObjectSidebarPanel: usingObjectSidebarPanel,
147
+ disableFields: connectivityState === 'offline'
142
148
  });
143
149
  });
144
150
  }
@@ -2,7 +2,7 @@ import React, { Fragment, useMemo } from 'react';
2
2
  import { injectIntl } from 'react-intl-next';
3
3
  import { configPanelMessages as messages } from '@atlaskit/editor-common/extensions';
4
4
  import { ErrorMessage, HelperMessage } from '@atlaskit/form';
5
- import { Text } from '@atlaskit/primitives';
5
+ import { Text } from '@atlaskit/primitives/compiled';
6
6
  import { FieldTypeError, ValidationError } from './types';
7
7
 
8
8
  // sidestep XSS issues
@@ -12,7 +12,7 @@ import React, { Fragment } from 'react';
12
12
  import { css, jsx } from '@emotion/react';
13
13
  import { Checkbox as AKCheckbox } from '@atlaskit/checkbox';
14
14
  import { Field } from '@atlaskit/form';
15
- import { Text } from '@atlaskit/primitives';
15
+ import { Text } from '@atlaskit/primitives/compiled';
16
16
  import AKToggle from '@atlaskit/toggle';
17
17
  import FieldMessages from '../FieldMessages';
18
18
  import { ValidationError } from '../types';
@@ -55,14 +55,16 @@ function Checkbox(_ref) {
55
55
  _field$isRequired = field.isRequired,
56
56
  isRequired = _field$isRequired === void 0 ? false : _field$isRequired,
57
57
  _field$defaultValue = field.defaultValue,
58
- defaultValue = _field$defaultValue === void 0 ? false : _field$defaultValue;
58
+ defaultValue = _field$defaultValue === void 0 ? false : _field$defaultValue,
59
+ isDisabled = field.isDisabled;
59
60
  return jsx(Field, {
60
61
  name: name,
61
62
  isRequired: isRequired,
62
63
  validate: function validate(value) {
63
64
  return _validate(value, isRequired);
64
65
  },
65
- defaultValue: defaultValue
66
+ defaultValue: defaultValue,
67
+ isDisabled: isDisabled
66
68
  }, function (_ref2) {
67
69
  var fieldProps = _ref2.fieldProps,
68
70
  error = _ref2.error;
@@ -92,7 +94,8 @@ function Toggle(_ref3) {
92
94
  _field$isRequired2 = field.isRequired,
93
95
  isRequired = _field$isRequired2 === void 0 ? false : _field$isRequired2,
94
96
  _field$defaultValue2 = field.defaultValue,
95
- defaultValue = _field$defaultValue2 === void 0 ? false : _field$defaultValue2;
97
+ defaultValue = _field$defaultValue2 === void 0 ? false : _field$defaultValue2,
98
+ isDisabled = field.isDisabled;
96
99
  return jsx(Field, {
97
100
  name: name,
98
101
  isRequired: isRequired,
@@ -100,7 +103,8 @@ function Toggle(_ref3) {
100
103
  return _validate(value, isRequired);
101
104
  },
102
105
  defaultValue: defaultValue,
103
- testId: "config-panel-toggle-".concat(name)
106
+ testId: "config-panel-toggle-".concat(name),
107
+ isDisabled: isDisabled
104
108
  }, function (_ref4) {
105
109
  var fieldProps = _ref4.fieldProps,
106
110
  error = _ref4.error;
@@ -79,7 +79,8 @@ export default function CheckboxGroup(_ref3) {
79
79
  defaultValue = field.defaultValue,
80
80
  _field$isRequired = field.isRequired,
81
81
  isRequired = _field$isRequired === void 0 ? false : _field$isRequired,
82
- options = field.items;
82
+ options = field.items,
83
+ isDisabled = field.isDisabled;
83
84
  var label = jsx(Fragment, null, labelBase, isRequired ? jsx("span", {
84
85
  css: requiredIndicatorStyles,
85
86
  "aria-hidden": "true"
@@ -93,7 +94,8 @@ export default function CheckboxGroup(_ref3) {
93
94
  defaultValue: defaultValue,
94
95
  validate: function validate(value) {
95
96
  return _validate(value, isRequired);
96
- }
97
+ },
98
+ isDisabled: isDisabled
97
99
  }, function (props) {
98
100
  return jsx(CheckboxGroupInner, _extends({
99
101
  label: label,
@@ -12,7 +12,7 @@ import { css, jsx } from '@emotion/react';
12
12
  import { chartsColorPaletteTooltipMessages, DEFAULT_BORDER_COLOR } from '@atlaskit/editor-common/ui-color';
13
13
  import { ColorPickerButton } from '@atlaskit/editor-common/ui-menu';
14
14
  import { Field } from '@atlaskit/form';
15
- import { Text } from '@atlaskit/primitives';
15
+ import { Text } from '@atlaskit/primitives/compiled';
16
16
  import FieldMessages from '../FieldMessages';
17
17
  import { validate as _validate } from '../utils';
18
18
 
@@ -376,7 +376,8 @@ var ColorPickerField = function ColorPickerField(_ref) {
376
376
  featureFlags = _ref.featureFlags;
377
377
  var label = field.label,
378
378
  defaultValue = field.defaultValue,
379
- isRequired = field.isRequired;
379
+ isRequired = field.isRequired,
380
+ isDisabled = field.isDisabled;
380
381
  return jsx(Field, {
381
382
  name: name,
382
383
  isRequired: isRequired,
@@ -384,7 +385,8 @@ var ColorPickerField = function ColorPickerField(_ref) {
384
385
  testId: "config-panel-color-picker-".concat(name),
385
386
  validate: function validate(value) {
386
387
  return _validate(field, value || '');
387
- }
388
+ },
389
+ isDisabled: isDisabled
388
390
  }, function (_ref2) {
389
391
  var fieldProps = _ref2.fieldProps,
390
392
  error = _ref2.error;
@@ -35,7 +35,8 @@ function CustomSelect(_ref2) {
35
35
  isMultiple = field.isMultiple,
36
36
  isRequired = field.isRequired,
37
37
  label = field.label,
38
- options = field.options;
38
+ options = field.options,
39
+ isDisabled = field.isDisabled;
39
40
  var _useState = useState(true),
40
41
  _useState2 = _slicedToArray(_useState, 2),
41
42
  loading = _useState2[0],
@@ -141,7 +142,8 @@ function CustomSelect(_ref2) {
141
142
  validate: function validate(value) {
142
143
  return _validate(field, value);
143
144
  },
144
- testId: "config-panel-custom-select-".concat(name)
145
+ testId: "config-panel-custom-select-".concat(name),
146
+ isDisabled: isDisabled
145
147
  }, function (_ref3) {
146
148
  var fieldProps = _ref3.fieldProps,
147
149
  error = _ref3.error;
@@ -15,7 +15,8 @@ function Date(_ref) {
15
15
  var label = field.label,
16
16
  description = field.description,
17
17
  defaultValue = field.defaultValue,
18
- isRequired = field.isRequired;
18
+ isRequired = field.isRequired,
19
+ isDisabled = field.isDisabled;
19
20
  return /*#__PURE__*/React.createElement(Field, {
20
21
  name: name,
21
22
  label: label,
@@ -24,7 +25,8 @@ function Date(_ref) {
24
25
  validate: function validate(value) {
25
26
  return _validate(field, value);
26
27
  },
27
- testId: "config-panel-date-picker-".concat(name)
28
+ testId: "config-panel-date-picker-".concat(name),
29
+ isDisabled: isDisabled
28
30
  }, function (_ref2) {
29
31
  var fieldProps = _ref2.fieldProps,
30
32
  error = _ref2.error;
@@ -42,7 +42,8 @@ var DateField = function DateField(_ref) {
42
42
  fieldName = _ref.fieldName,
43
43
  onFieldChange = _ref.onFieldChange,
44
44
  intl = _ref.intl,
45
- isRequired = _ref.isRequired;
45
+ isRequired = _ref.isRequired,
46
+ isDisabled = _ref.isDisabled;
46
47
  return jsx("div", {
47
48
  css: horizontalFieldWrapperStyles,
48
49
  key: fieldName
@@ -55,7 +56,8 @@ var DateField = function DateField(_ref) {
55
56
  return validateRequired({
56
57
  isRequired: isRequired
57
58
  }, value);
58
- }
59
+ },
60
+ isDisabled: isDisabled
59
61
  }, function (_ref2) {
60
62
  var fieldProps = _ref2.fieldProps,
61
63
  error = _ref2.error;
@@ -120,7 +122,8 @@ var DateRange = function DateRange(_ref3) {
120
122
  validate: function validate(value) {
121
123
  return _validate(field, value || '');
122
124
  },
123
- testId: "config-panel-date-range-".concat(name)
125
+ testId: "config-panel-date-range-".concat(name),
126
+ isDisabled: field.isDisabled
124
127
  }, function (_ref5) {
125
128
  var fieldProps = _ref5.fieldProps,
126
129
  error = _ref5.error;
@@ -157,14 +160,16 @@ var DateRange = function DateRange(_ref3) {
157
160
  fieldName: "from",
158
161
  onFieldChange: onFieldChange,
159
162
  intl: intl,
160
- isRequired: field.isRequired
163
+ isRequired: field.isRequired,
164
+ isDisabled: field.isDisabled
161
165
  }), jsx(DateField, {
162
166
  scope: name,
163
167
  parentField: field,
164
168
  fieldName: "to",
165
169
  onFieldChange: onFieldChange,
166
170
  intl: intl,
167
- isRequired: field.isRequired
171
+ isRequired: field.isRequired,
172
+ isDisabled: field.isDisabled
168
173
  })), jsx(FieldMessages, {
169
174
  description: field.description
170
175
  }));
@@ -252,7 +252,8 @@ var FieldsetField = /*#__PURE__*/function (_React$Component) {
252
252
  canRemoveFields: field.options.isDynamic && visibleFields.size > 1,
253
253
  onClickRemove: this.onClickRemove,
254
254
  onFieldChange: onFieldChange,
255
- firstVisibleFieldName: firstVisibleFieldName
255
+ firstVisibleFieldName: firstVisibleFieldName,
256
+ isDisabled: field.isDisabled
256
257
  }), children && jsx("div", {
257
258
  css: actionsWrapperStyles,
258
259
  "data-testId": "fieldset-actions"
@@ -15,7 +15,8 @@ export default function Number(_ref) {
15
15
  var label = field.label,
16
16
  description = field.description,
17
17
  defaultValue = field.defaultValue,
18
- isRequired = field.isRequired;
18
+ isRequired = field.isRequired,
19
+ isDisabled = field.isDisabled;
19
20
  function validateNumber(value) {
20
21
  var error = validate(field, value || '');
21
22
  if (error) {
@@ -35,7 +36,8 @@ export default function Number(_ref) {
35
36
  defaultValue: defaultValue === undefined ? '' : String(defaultValue),
36
37
  isRequired: isRequired,
37
38
  validate: validateNumber,
38
- testId: "config-panel-number-".concat(name)
39
+ testId: "config-panel-number-".concat(name),
40
+ isDisabled: isDisabled
39
41
  }, function (_ref2) {
40
42
  var fieldProps = _ref2.fieldProps,
41
43
  error = _ref2.error,
@@ -25,7 +25,8 @@ export default function RadioField(_ref) {
25
25
  validate: function validate(value) {
26
26
  return _validate(field, value);
27
27
  },
28
- testId: "config-panel-radio-group-".concat(field.name)
28
+ testId: "config-panel-radio-group-".concat(field.name),
29
+ isDisabled: field.isDisabled
29
30
  }, function (_ref2) {
30
31
  var fieldProps = _ref2.fieldProps,
31
32
  error = _ref2.error;
@@ -28,7 +28,8 @@ export default function SelectField(_ref) {
28
28
  // Ignored via go/ees005
29
29
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
30
30
  return _validate(field, value);
31
- }
31
+ },
32
+ isDisabled: field.isDisabled
32
33
  }, function (_ref2) {
33
34
  var fieldProps = _ref2.fieldProps,
34
35
  error = _ref2.error;
@@ -16,7 +16,8 @@ export default function String(_ref) {
16
16
  var label = field.label,
17
17
  description = field.description,
18
18
  defaultValue = field.defaultValue,
19
- isRequired = field.isRequired;
19
+ isRequired = field.isRequired,
20
+ isDisabled = field.isDisabled;
20
21
  return /*#__PURE__*/React.createElement(Field, {
21
22
  name: name,
22
23
  label: label,
@@ -25,7 +26,8 @@ export default function String(_ref) {
25
26
  validate: function validate(value) {
26
27
  return _validate(field, value || '');
27
28
  },
28
- testId: "config-panel-string-".concat(name)
29
+ testId: "config-panel-string-".concat(name),
30
+ isDisabled: isDisabled
29
31
  }, function (_ref2) {
30
32
  var fieldProps = _ref2.fieldProps,
31
33
  error = _ref2.error,
@@ -172,7 +172,8 @@ export default function UserSelect(_ref2) {
172
172
  defaultValue = field.defaultValue,
173
173
  description = field.description,
174
174
  isRequired = field.isRequired,
175
- options = field.options;
175
+ options = field.options,
176
+ isDisabled = field.isDisabled;
176
177
  var type = options.provider.type;
177
178
  useEffect(function () {
178
179
  var cancel = false;
@@ -229,7 +230,8 @@ export default function UserSelect(_ref2) {
229
230
  validate: function validate(value) {
230
231
  return _validate(field, value);
231
232
  },
232
- testId: "config-panel-user-select-".concat(name)
233
+ testId: "config-panel-user-select-".concat(name),
234
+ isDisabled: isDisabled
233
235
  }, function (_ref3) {
234
236
  var fieldProps = _ref3.fieldProps,
235
237
  error = _ref3.error,
@@ -239,7 +241,7 @@ export default function UserSelect(_ref2) {
239
241
  return /*#__PURE__*/React.createElement(UnhandledType, {
240
242
  key: name,
241
243
  field: field,
242
- errorMessage: "Field \"".concat(name, "\" can't be renderered. Missing provider for \"").concat(type, "\".")
244
+ errorMessage: "Field \"".concat(name, "\" can't be rendered. Missing provider for \"").concat(type, "\".")
243
245
  });
244
246
  }
245
247
  function onChange(newValue) {
@@ -3,6 +3,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  import React from 'react';
5
5
  import { isFieldset } from '@atlaskit/editor-common/extensions';
6
+ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
6
7
  import Boolean from './Fields/Boolean';
7
8
  import ColorPicker from './Fields/ColorPicker';
8
9
  import CustomSelect from './Fields/CustomSelect';
@@ -139,7 +140,8 @@ export function FieldComponent(_ref) {
139
140
  parameters: resolvedParameters,
140
141
  onFieldChange: onFieldChange,
141
142
  extensionManifest: extensionManifest,
142
- featureFlags: featureFlags
143
+ featureFlags: featureFlags,
144
+ isDisabled: field.isDisabled
143
145
  }));
144
146
  }
145
147
  case 'tab-group':
@@ -157,7 +159,8 @@ export function FieldComponent(_ref) {
157
159
  parameters: tabParameters,
158
160
  onFieldChange: onFieldChange,
159
161
  extensionManifest: extensionManifest,
160
- featureFlags: featureFlags
162
+ featureFlags: featureFlags,
163
+ isDisabled: field.isDisabled
161
164
  });
162
165
  };
163
166
  return /*#__PURE__*/React.createElement(TabGroup, {
@@ -191,12 +194,22 @@ export default function FormContent(_ref3) {
191
194
  onFieldChange = _ref3.onFieldChange,
192
195
  firstVisibleFieldName = _ref3.firstVisibleFieldName,
193
196
  contextIdentifierProvider = _ref3.contextIdentifierProvider,
194
- featureFlags = _ref3.featureFlags;
197
+ featureFlags = _ref3.featureFlags,
198
+ isDisabled = _ref3.isDisabled;
199
+ var mappedFields = fields;
200
+ if (editorExperiment('platform_editor_offline_editing_web', true)) {
201
+ mappedFields = fields.map(function (field) {
202
+ var _field$isDisabled;
203
+ return _objectSpread(_objectSpread({}, field), {}, {
204
+ isDisabled: (_field$isDisabled = field.isDisabled) !== null && _field$isDisabled !== void 0 ? _field$isDisabled : isDisabled
205
+ });
206
+ });
207
+ }
195
208
  return /*#__PURE__*/React.createElement(FormErrorBoundary, {
196
209
  contextIdentifierProvider: contextIdentifierProvider,
197
210
  extensionKey: extensionManifest.key,
198
- fields: fields
199
- }, fields.map(function (field) {
211
+ fields: mappedFields
212
+ }, mappedFields.map(function (field) {
200
213
  var fieldElement = /*#__PURE__*/React.createElement(FieldComponent, {
201
214
  field: field,
202
215
  parameters: parameters || {},
@@ -13,7 +13,7 @@ import { injectIntl } from 'react-intl-next';
13
13
  import { withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
14
14
  import { ACTION, ACTION_SUBJECT, editorAnalyticsChannel, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
15
15
  import { configPanelMessages as messages } from '@atlaskit/editor-common/extensions';
16
- import { Stack, Text } from '@atlaskit/primitives';
16
+ import { Stack, Text } from '@atlaskit/primitives/compiled';
17
17
  import SectionMessage from '@atlaskit/section-message';
18
18
  // eslint-disable-next-line @repo/internal/react/no-class-components
19
19
  var FormErrorBoundaryInner = /*#__PURE__*/function (_React$Component) {
@@ -4,13 +4,37 @@
4
4
  */
5
5
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
6
6
  import { css, jsx } from '@emotion/react';
7
+ import { injectIntl } from 'react-intl-next';
8
+ import { messages } from '@atlaskit/editor-common/extensions';
9
+ import SectionMessage from '@atlaskit/section-message';
7
10
  import Spinner from '@atlaskit/spinner';
11
+ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
8
12
  var spinnerWrapperStyles = css({
9
13
  display: 'flex',
10
14
  justifyContent: 'center',
11
15
  marginTop: "var(--ds-space-800, 64px)"
12
16
  });
13
- var LoadingState = function LoadingState() {
17
+ var errorWrapperStyles = css({
18
+ marginTop: "var(--ds-space-400, 32px)" // Add some padding to the top to make sure we place this below the offline status banner
19
+ });
20
+ var LoadingStateWithErrorHandling = injectIntl(function (props) {
21
+ if (props.error) {
22
+ return jsx("div", {
23
+ css: errorWrapperStyles,
24
+ "data-testid": "ConfigPanelLoadingError"
25
+ }, jsx(SectionMessage, {
26
+ appearance: "error"
27
+ }, props.intl.formatMessage(messages.panelLoadingError)));
28
+ }
29
+ return jsx("div", {
30
+ css: spinnerWrapperStyles,
31
+ "data-testid": "ConfigPanelLoading"
32
+ }, jsx(Spinner, {
33
+ size: "small",
34
+ interactionName: "config-panel-spinner"
35
+ }));
36
+ });
37
+ var LoadingStateWithoutErrorHandling = function LoadingStateWithoutErrorHandling() {
14
38
  return jsx("div", {
15
39
  css: spinnerWrapperStyles,
16
40
  "data-testid": "ConfigPanelLoading"
@@ -19,4 +43,7 @@ var LoadingState = function LoadingState() {
19
43
  interactionName: "config-panel-spinner"
20
44
  }));
21
45
  };
46
+ var LoadingState = function LoadingState(props) {
47
+ return editorExperiment('platform_editor_offline_editing_web', true) ? LoadingStateWithErrorHandling(props) : LoadingStateWithoutErrorHandling();
48
+ };
22
49
  export default LoadingState;
@@ -4,7 +4,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
4
  import React, { useEffect } from 'react';
5
5
  import { getExtensionKeyAndNodeKey } from '@atlaskit/editor-common/extensions';
6
6
  import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
7
- import { Box } from '@atlaskit/primitives';
7
+ import { Box } from '@atlaskit/primitives/compiled';
8
8
  import { clearEditingContext, forceAutoSave } from '../editor-commands/commands';
9
9
  import { getPluginState } from '../pm-plugins/plugin-factory';
10
10
  import { getSelectedExtension } from '../pm-plugins/utils';
@@ -4,6 +4,7 @@ import type { ExtensionAPI, ExtensionHandlers, ExtensionProvider, Parameters, Tr
4
4
  import type { MacroProvider } from '@atlaskit/editor-common/provider-factory';
5
5
  import type { EditorAppearance, LongPressSelectionPluginOptions, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types';
6
6
  import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
7
+ import { ConnectivityPlugin } from '@atlaskit/editor-plugin-connectivity';
7
8
  import type { ContextIdentifierPlugin } from '@atlaskit/editor-plugin-context-identifier';
8
9
  import type { ApplyChangeHandler, ContextPanelPlugin } from '@atlaskit/editor-plugin-context-panel';
9
10
  import type { DecorationsPlugin } from '@atlaskit/editor-plugin-decorations';
@@ -66,7 +67,8 @@ export type ExtensionPluginDependencies = [
66
67
  WidthPlugin,
67
68
  DecorationsPlugin,
68
69
  OptionalPlugin<ContextPanelPlugin>,
69
- OptionalPlugin<ContextIdentifierPlugin>
70
+ OptionalPlugin<ContextIdentifierPlugin>,
71
+ OptionalPlugin<ConnectivityPlugin>
70
72
  ];
71
73
  export type ExtensionPluginActions = {
72
74
  editSelectedExtension: () => boolean;
@@ -1,6 +1,7 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { FloatingToolbarHandler, PublicPluginAPI } from '@atlaskit/editor-common/types';
3
3
  import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
4
+ import { ConnectivityPlugin } from '@atlaskit/editor-plugin-connectivity';
4
5
  import type { ApplyChangeHandler, ContextPanelPlugin } from '@atlaskit/editor-plugin-context-panel';
5
6
  import type { DecorationsPlugin, HoverDecorationHandler } from '@atlaskit/editor-plugin-decorations';
6
7
  interface GetToolbarConfigProps {
@@ -8,7 +9,7 @@ interface GetToolbarConfigProps {
8
9
  hoverDecoration?: HoverDecorationHandler | undefined;
9
10
  applyChangeToContextPanel?: ApplyChangeHandler | undefined;
10
11
  editorAnalyticsAPI?: EditorAnalyticsAPI | undefined;
11
- extensionApi?: PublicPluginAPI<[ContextPanelPlugin, AnalyticsPlugin, DecorationsPlugin]> | undefined;
12
+ extensionApi?: PublicPluginAPI<[ContextPanelPlugin, AnalyticsPlugin, DecorationsPlugin, ConnectivityPlugin]> | undefined;
12
13
  }
13
14
  export declare const getToolbarConfig: ({ breakoutEnabled, hoverDecoration, applyChangeToContextPanel, editorAnalyticsAPI, extensionApi, }: GetToolbarConfigProps) => FloatingToolbarHandler;
14
15
  export {};