@atlaskit/editor-plugin-extension 0.4.2 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +26 -0
- package/CHANGELOG.md +16 -0
- package/dist/cjs/actions.js +236 -0
- package/dist/cjs/commands.js +122 -0
- package/dist/cjs/context-panel.js +269 -0
- package/dist/cjs/extension-api.js +266 -0
- package/dist/cjs/index.js +8 -1
- package/dist/cjs/plugin-factory.js +32 -0
- package/dist/cjs/plugin-key.js +8 -0
- package/dist/cjs/plugin.js +147 -0
- package/dist/cjs/pm-plugins/keymap.js +21 -0
- package/dist/cjs/pm-plugins/macro/actions.js +186 -0
- package/dist/cjs/pm-plugins/macro/index.js +72 -0
- package/dist/cjs/pm-plugins/macro/plugin-key.js +8 -0
- package/dist/cjs/pm-plugins/macro/types.js +5 -0
- package/dist/cjs/pm-plugins/main.js +323 -0
- package/dist/cjs/pm-plugins/unique-id.js +80 -0
- package/dist/cjs/pm-plugins/utils.js +75 -0
- package/dist/cjs/reducer.js +18 -0
- package/dist/cjs/toolbar.js +242 -0
- package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +475 -0
- package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +122 -0
- package/dist/cjs/ui/ConfigPanel/ConfigPanelLoader.js +23 -0
- package/dist/cjs/ui/ConfigPanel/ErrorMessage/ErrorImage.js +76 -0
- package/dist/cjs/ui/ConfigPanel/ErrorMessage/index.js +33 -0
- package/dist/cjs/ui/ConfigPanel/FieldMessages.js +105 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Boolean.js +150 -0
- package/dist/cjs/ui/ConfigPanel/Fields/CheckboxGroup.js +101 -0
- package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +420 -0
- package/dist/cjs/ui/ConfigPanel/Fields/CustomSelect.js +192 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Date.js +55 -0
- package/dist/cjs/ui/ConfigPanel/Fields/DateRange.js +160 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Enum.js +41 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +88 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +270 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Number.js +64 -0
- package/dist/cjs/ui/ConfigPanel/Fields/RadioGroup.js +56 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Select.js +60 -0
- package/dist/cjs/ui/ConfigPanel/Fields/SelectItem.js +53 -0
- package/dist/cjs/ui/ConfigPanel/Fields/String.js +75 -0
- package/dist/cjs/ui/ConfigPanel/Fields/TabGroup.js +73 -0
- package/dist/cjs/ui/ConfigPanel/Fields/UnhandledType.js +19 -0
- package/dist/cjs/ui/ConfigPanel/Fields/UserSelect.js +268 -0
- package/dist/cjs/ui/ConfigPanel/Fields/common/RequiredIndicator.js +12 -0
- package/dist/cjs/ui/ConfigPanel/FormContent.js +231 -0
- package/dist/cjs/ui/ConfigPanel/FormErrorBoundary.js +140 -0
- package/dist/cjs/ui/ConfigPanel/Header.js +148 -0
- package/dist/cjs/ui/ConfigPanel/LoadingState.js +25 -0
- package/dist/cjs/ui/ConfigPanel/NestedForms/RemovableField.js +61 -0
- package/dist/cjs/ui/ConfigPanel/constants.js +13 -0
- package/dist/cjs/ui/ConfigPanel/index.js +9 -0
- package/dist/cjs/ui/ConfigPanel/messages.js +99 -0
- package/dist/cjs/ui/ConfigPanel/transformers.js +631 -0
- package/dist/cjs/ui/ConfigPanel/types.js +15 -0
- package/dist/cjs/ui/ConfigPanel/use-abortable-effect/index.js +56 -0
- package/dist/cjs/ui/ConfigPanel/use-state-from-promise/index.js +41 -0
- package/dist/cjs/ui/ConfigPanel/utils.js +116 -0
- package/dist/cjs/ui/SaveIndicator/SaveIndicator.js +79 -0
- package/dist/cjs/ui/SaveIndicator/messages.js +14 -0
- package/dist/cjs/ui/SaveIndicator/types.js +5 -0
- package/dist/cjs/utils.js +73 -0
- package/dist/es2019/actions.js +203 -0
- package/dist/es2019/commands.js +99 -0
- package/dist/es2019/context-panel.js +181 -0
- package/dist/es2019/extension-api.js +284 -0
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/plugin-factory.js +26 -0
- package/dist/es2019/plugin-key.js +2 -0
- package/dist/es2019/plugin.js +138 -0
- package/dist/es2019/pm-plugins/keymap.js +15 -0
- package/dist/es2019/pm-plugins/macro/actions.js +152 -0
- package/dist/es2019/pm-plugins/macro/index.js +36 -0
- package/dist/es2019/pm-plugins/macro/plugin-key.js +2 -0
- package/dist/es2019/pm-plugins/macro/types.js +1 -0
- package/dist/es2019/pm-plugins/main.js +230 -0
- package/dist/es2019/pm-plugins/unique-id.js +69 -0
- package/dist/es2019/pm-plugins/utils.js +30 -0
- package/dist/es2019/reducer.js +11 -0
- package/dist/es2019/toolbar.js +236 -0
- package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +415 -0
- package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +100 -0
- package/dist/es2019/ui/ConfigPanel/ConfigPanelLoader.js +7 -0
- package/dist/es2019/ui/ConfigPanel/ErrorMessage/ErrorImage.js +66 -0
- package/dist/es2019/ui/ConfigPanel/ErrorMessage/index.js +25 -0
- package/dist/es2019/ui/ConfigPanel/FieldMessages.js +101 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Boolean.js +138 -0
- package/dist/es2019/ui/ConfigPanel/Fields/CheckboxGroup.js +96 -0
- package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +411 -0
- package/dist/es2019/ui/ConfigPanel/Fields/CustomSelect.js +132 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Date.js +50 -0
- package/dist/es2019/ui/ConfigPanel/Fields/DateRange.js +139 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Enum.js +35 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +73 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +227 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Number.js +61 -0
- package/dist/es2019/ui/ConfigPanel/Fields/RadioGroup.js +40 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Select.js +50 -0
- package/dist/es2019/ui/ConfigPanel/Fields/SelectItem.js +47 -0
- package/dist/es2019/ui/ConfigPanel/Fields/String.js +67 -0
- package/dist/es2019/ui/ConfigPanel/Fields/TabGroup.js +57 -0
- package/dist/es2019/ui/ConfigPanel/Fields/UnhandledType.js +11 -0
- package/dist/es2019/ui/ConfigPanel/Fields/UserSelect.js +194 -0
- package/dist/es2019/ui/ConfigPanel/Fields/common/RequiredIndicator.js +5 -0
- package/dist/es2019/ui/ConfigPanel/FormContent.js +225 -0
- package/dist/es2019/ui/ConfigPanel/FormErrorBoundary.js +100 -0
- package/dist/es2019/ui/ConfigPanel/Header.js +140 -0
- package/dist/es2019/ui/ConfigPanel/LoadingState.js +15 -0
- package/dist/es2019/ui/ConfigPanel/NestedForms/RemovableField.js +52 -0
- package/dist/es2019/ui/ConfigPanel/constants.js +7 -0
- package/dist/es2019/ui/ConfigPanel/index.js +2 -0
- package/dist/es2019/ui/ConfigPanel/messages.js +93 -0
- package/dist/es2019/ui/ConfigPanel/transformers.js +367 -0
- package/dist/es2019/ui/ConfigPanel/types.js +9 -0
- package/dist/es2019/ui/ConfigPanel/use-abortable-effect/index.js +46 -0
- package/dist/es2019/ui/ConfigPanel/use-state-from-promise/index.js +30 -0
- package/dist/es2019/ui/ConfigPanel/utils.js +86 -0
- package/dist/es2019/ui/SaveIndicator/SaveIndicator.js +66 -0
- package/dist/es2019/ui/SaveIndicator/messages.js +8 -0
- package/dist/es2019/ui/SaveIndicator/types.js +1 -0
- package/dist/es2019/utils.js +65 -0
- package/dist/esm/actions.js +223 -0
- package/dist/esm/commands.js +113 -0
- package/dist/esm/context-panel.js +261 -0
- package/dist/esm/extension-api.js +259 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/plugin-factory.js +25 -0
- package/dist/esm/plugin-key.js +2 -0
- package/dist/esm/plugin.js +140 -0
- package/dist/esm/pm-plugins/keymap.js +15 -0
- package/dist/esm/pm-plugins/macro/actions.js +179 -0
- package/dist/esm/pm-plugins/macro/index.js +42 -0
- package/dist/esm/pm-plugins/macro/plugin-key.js +2 -0
- package/dist/esm/pm-plugins/macro/types.js +1 -0
- package/dist/esm/pm-plugins/main.js +298 -0
- package/dist/esm/pm-plugins/unique-id.js +74 -0
- package/dist/esm/pm-plugins/utils.js +68 -0
- package/dist/esm/reducer.js +11 -0
- package/dist/esm/toolbar.js +235 -0
- package/dist/esm/ui/ConfigPanel/ConfigPanel.js +465 -0
- package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +112 -0
- package/dist/esm/ui/ConfigPanel/ConfigPanelLoader.js +11 -0
- package/dist/esm/ui/ConfigPanel/ErrorMessage/ErrorImage.js +68 -0
- package/dist/esm/ui/ConfigPanel/ErrorMessage/index.js +26 -0
- package/dist/esm/ui/ConfigPanel/FieldMessages.js +97 -0
- package/dist/esm/ui/ConfigPanel/Fields/Boolean.js +140 -0
- package/dist/esm/ui/ConfigPanel/Fields/CheckboxGroup.js +95 -0
- package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +414 -0
- package/dist/esm/ui/ConfigPanel/Fields/CustomSelect.js +182 -0
- package/dist/esm/ui/ConfigPanel/Fields/Date.js +48 -0
- package/dist/esm/ui/ConfigPanel/Fields/DateRange.js +154 -0
- package/dist/esm/ui/ConfigPanel/Fields/Enum.js +34 -0
- package/dist/esm/ui/ConfigPanel/Fields/Expand.js +77 -0
- package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +261 -0
- package/dist/esm/ui/ConfigPanel/Fields/Number.js +57 -0
- package/dist/esm/ui/ConfigPanel/Fields/RadioGroup.js +46 -0
- package/dist/esm/ui/ConfigPanel/Fields/Select.js +50 -0
- package/dist/esm/ui/ConfigPanel/Fields/SelectItem.js +45 -0
- package/dist/esm/ui/ConfigPanel/Fields/String.js +65 -0
- package/dist/esm/ui/ConfigPanel/Fields/TabGroup.js +62 -0
- package/dist/esm/ui/ConfigPanel/Fields/UnhandledType.js +10 -0
- package/dist/esm/ui/ConfigPanel/Fields/UserSelect.js +258 -0
- package/dist/esm/ui/ConfigPanel/Fields/common/RequiredIndicator.js +5 -0
- package/dist/esm/ui/ConfigPanel/FormContent.js +223 -0
- package/dist/esm/ui/ConfigPanel/FormErrorBoundary.js +133 -0
- package/dist/esm/ui/ConfigPanel/Header.js +140 -0
- package/dist/esm/ui/ConfigPanel/LoadingState.js +17 -0
- package/dist/esm/ui/ConfigPanel/NestedForms/RemovableField.js +53 -0
- package/dist/esm/ui/ConfigPanel/constants.js +7 -0
- package/dist/esm/ui/ConfigPanel/index.js +2 -0
- package/dist/esm/ui/ConfigPanel/messages.js +93 -0
- package/dist/esm/ui/ConfigPanel/transformers.js +624 -0
- package/dist/esm/ui/ConfigPanel/types.js +9 -0
- package/dist/esm/ui/ConfigPanel/use-abortable-effect/index.js +49 -0
- package/dist/esm/ui/ConfigPanel/use-state-from-promise/index.js +34 -0
- package/dist/esm/ui/ConfigPanel/utils.js +109 -0
- package/dist/esm/ui/SaveIndicator/SaveIndicator.js +72 -0
- package/dist/esm/ui/SaveIndicator/messages.js +8 -0
- package/dist/esm/ui/SaveIndicator/types.js +1 -0
- package/dist/esm/utils.js +67 -0
- package/dist/types/actions.d.ts +20 -0
- package/dist/types/commands.d.ts +15 -0
- package/dist/types/context-panel.d.ts +10 -0
- package/dist/types/extension-api.d.ts +12 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/plugin-factory.d.ts +4 -0
- package/dist/types/plugin-key.d.ts +3 -0
- package/dist/types/plugin.d.ts +2 -0
- package/dist/types/pm-plugins/keymap.d.ts +3 -0
- package/dist/types/pm-plugins/macro/actions.d.ts +9 -0
- package/dist/types/pm-plugins/macro/index.d.ts +8 -0
- package/dist/types/pm-plugins/macro/plugin-key.d.ts +3 -0
- package/dist/types/pm-plugins/macro/types.d.ts +4 -0
- package/dist/types/pm-plugins/main.d.ts +25 -0
- package/dist/types/pm-plugins/unique-id.d.ts +3 -0
- package/dist/types/pm-plugins/utils.d.ts +3 -0
- package/dist/types/reducer.d.ts +2 -0
- package/dist/types/toolbar.d.ts +44 -0
- package/dist/types/types.d.ts +27 -2
- package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +22 -0
- package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +21 -0
- package/dist/types/ui/ConfigPanel/ConfigPanelLoader.d.ts +5 -0
- package/dist/types/ui/ConfigPanel/ErrorMessage/ErrorImage.d.ts +4 -0
- package/dist/types/ui/ConfigPanel/ErrorMessage/index.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/FieldMessages.d.ts +12 -0
- package/dist/types/ui/ConfigPanel/Fields/Boolean.d.ts +8 -0
- package/dist/types/ui/ConfigPanel/Fields/CheckboxGroup.d.ts +8 -0
- package/dist/types/ui/ConfigPanel/Fields/ColorPicker.d.ts +20 -0
- package/dist/types/ui/ConfigPanel/Fields/CustomSelect.d.ts +24 -0
- package/dist/types/ui/ConfigPanel/Fields/Date.d.ts +20 -0
- package/dist/types/ui/ConfigPanel/Fields/DateRange.d.ts +20 -0
- package/dist/types/ui/ConfigPanel/Fields/Enum.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/Fields/Expand.d.ts +16 -0
- package/dist/types/ui/ConfigPanel/Fields/Fieldset.d.ts +19 -0
- package/dist/types/ui/ConfigPanel/Fields/Number.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/Fields/RadioGroup.d.ts +8 -0
- package/dist/types/ui/ConfigPanel/Fields/Select.d.ts +11 -0
- package/dist/types/ui/ConfigPanel/Fields/SelectItem.d.ts +5 -0
- package/dist/types/ui/ConfigPanel/Fields/String.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/Fields/TabGroup.d.ts +14 -0
- package/dist/types/ui/ConfigPanel/Fields/UnhandledType.d.ts +6 -0
- package/dist/types/ui/ConfigPanel/Fields/UserSelect.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/Fields/common/RequiredIndicator.d.ts +1 -0
- package/dist/types/ui/ConfigPanel/FormContent.d.ts +4 -0
- package/dist/types/ui/ConfigPanel/FormErrorBoundary.d.ts +16 -0
- package/dist/types/ui/ConfigPanel/Header.d.ts +23 -0
- package/dist/types/ui/ConfigPanel/LoadingState.d.ts +4 -0
- package/dist/types/ui/ConfigPanel/NestedForms/RemovableField.d.ts +19 -0
- package/dist/types/ui/ConfigPanel/constants.d.ts +2 -0
- package/dist/types/ui/ConfigPanel/index.d.ts +2 -0
- package/dist/types/ui/ConfigPanel/messages.d.ts +92 -0
- package/dist/types/ui/ConfigPanel/transformers.d.ts +9 -0
- package/dist/types/ui/ConfigPanel/types.d.ts +36 -0
- package/dist/types/ui/ConfigPanel/use-abortable-effect/index.d.ts +16 -0
- package/dist/types/ui/ConfigPanel/use-state-from-promise/index.d.ts +15 -0
- package/dist/types/ui/ConfigPanel/utils.d.ts +16 -0
- package/dist/types/ui/SaveIndicator/SaveIndicator.d.ts +4 -0
- package/dist/types/ui/SaveIndicator/messages.d.ts +7 -0
- package/dist/types/ui/SaveIndicator/types.d.ts +11 -0
- package/dist/types/utils.d.ts +15 -0
- package/dist/types-ts4.5/actions.d.ts +20 -0
- package/dist/types-ts4.5/commands.d.ts +15 -0
- package/dist/types-ts4.5/context-panel.d.ts +10 -0
- package/dist/types-ts4.5/extension-api.d.ts +12 -0
- package/dist/types-ts4.5/index.d.ts +2 -1
- package/dist/types-ts4.5/plugin-factory.d.ts +4 -0
- package/dist/types-ts4.5/plugin-key.d.ts +3 -0
- package/dist/types-ts4.5/plugin.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/keymap.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/macro/actions.d.ts +9 -0
- package/dist/types-ts4.5/pm-plugins/macro/index.d.ts +8 -0
- package/dist/types-ts4.5/pm-plugins/macro/plugin-key.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/macro/types.d.ts +4 -0
- package/dist/types-ts4.5/pm-plugins/main.d.ts +25 -0
- package/dist/types-ts4.5/pm-plugins/unique-id.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/utils.d.ts +3 -0
- package/dist/types-ts4.5/reducer.d.ts +2 -0
- package/dist/types-ts4.5/toolbar.d.ts +44 -0
- package/dist/types-ts4.5/types.d.ts +27 -2
- package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanel.d.ts +22 -0
- package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +21 -0
- package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelLoader.d.ts +5 -0
- package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/ErrorImage.d.ts +4 -0
- package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/index.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/FieldMessages.d.ts +12 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Boolean.d.ts +8 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/CheckboxGroup.d.ts +8 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/ColorPicker.d.ts +20 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/CustomSelect.d.ts +24 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Date.d.ts +20 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/DateRange.d.ts +20 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Enum.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Expand.d.ts +16 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Fieldset.d.ts +19 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Number.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/RadioGroup.d.ts +8 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Select.d.ts +11 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/SelectItem.d.ts +5 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/String.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/TabGroup.d.ts +14 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/UnhandledType.d.ts +6 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/UserSelect.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/common/RequiredIndicator.d.ts +1 -0
- package/dist/types-ts4.5/ui/ConfigPanel/FormContent.d.ts +4 -0
- package/dist/types-ts4.5/ui/ConfigPanel/FormErrorBoundary.d.ts +16 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Header.d.ts +23 -0
- package/dist/types-ts4.5/ui/ConfigPanel/LoadingState.d.ts +4 -0
- package/dist/types-ts4.5/ui/ConfigPanel/NestedForms/RemovableField.d.ts +19 -0
- package/dist/types-ts4.5/ui/ConfigPanel/constants.d.ts +2 -0
- package/dist/types-ts4.5/ui/ConfigPanel/index.d.ts +2 -0
- package/dist/types-ts4.5/ui/ConfigPanel/messages.d.ts +92 -0
- package/dist/types-ts4.5/ui/ConfigPanel/transformers.d.ts +9 -0
- package/dist/types-ts4.5/ui/ConfigPanel/types.d.ts +39 -0
- package/dist/types-ts4.5/ui/ConfigPanel/use-abortable-effect/index.d.ts +16 -0
- package/dist/types-ts4.5/ui/ConfigPanel/use-state-from-promise/index.d.ts +18 -0
- package/dist/types-ts4.5/ui/ConfigPanel/utils.d.ts +16 -0
- package/dist/types-ts4.5/ui/SaveIndicator/SaveIndicator.d.ts +4 -0
- package/dist/types-ts4.5/ui/SaveIndicator/messages.d.ts +7 -0
- package/dist/types-ts4.5/ui/SaveIndicator/types.d.ts +11 -0
- package/dist/types-ts4.5/utils.d.ts +15 -0
- package/example-utils/config-panel/ConfigPanelWithExtensionPicker.tsx +217 -0
- package/example-utils/config-panel/ConfigPanelWithProviders.tsx +51 -0
- package/example-utils/config-panel/ExtensionNodePicker.tsx +141 -0
- package/example-utils/config-panel/FieldTypePicker.tsx +63 -0
- package/example-utils/config-panel/example-manifest-all-fields.ts +86 -0
- package/example-utils/config-panel/example-manifest-individual-fields.ts +85 -0
- package/example-utils/config-panel/fields.ts +611 -0
- package/package.json +49 -7
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
16
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
18
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
19
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
20
|
+
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
|
|
21
|
+
var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
22
|
+
var _memoizeOne = _interopRequireDefault(require("memoize-one"));
|
|
23
|
+
var _reactIntlNext = require("react-intl-next");
|
|
24
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
25
|
+
var _buttonGroup = _interopRequireDefault(require("@atlaskit/button/button-group"));
|
|
26
|
+
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
|
|
27
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
28
|
+
var _extensions = require("@atlaskit/editor-common/extensions");
|
|
29
|
+
var _withPluginState = require("@atlaskit/editor-common/with-plugin-state");
|
|
30
|
+
var _form = _interopRequireWildcard(require("@atlaskit/form"));
|
|
31
|
+
var _pluginKey = require("../../plugin-key");
|
|
32
|
+
var _constants = require("./constants");
|
|
33
|
+
var _ErrorMessage = _interopRequireDefault(require("./ErrorMessage"));
|
|
34
|
+
var _FormContent = _interopRequireDefault(require("./FormContent"));
|
|
35
|
+
var _FormErrorBoundary = require("./FormErrorBoundary");
|
|
36
|
+
var _Header = _interopRequireDefault(require("./Header"));
|
|
37
|
+
var _LoadingState = _interopRequireDefault(require("./LoadingState"));
|
|
38
|
+
var _messages = require("./messages");
|
|
39
|
+
var _transformers = require("./transformers");
|
|
40
|
+
var _utils = require("./utils");
|
|
41
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
42
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
44
|
+
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) { (0, _defineProperty2.default)(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; }
|
|
45
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
46
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
47
|
+
function ConfigForm(_ref) {
|
|
48
|
+
var canSave = _ref.canSave,
|
|
49
|
+
errorMessage = _ref.errorMessage,
|
|
50
|
+
extensionManifest = _ref.extensionManifest,
|
|
51
|
+
fields = _ref.fields,
|
|
52
|
+
firstVisibleFieldName = _ref.firstVisibleFieldName,
|
|
53
|
+
hasParsedParameters = _ref.hasParsedParameters,
|
|
54
|
+
intl = _ref.intl,
|
|
55
|
+
isLoading = _ref.isLoading,
|
|
56
|
+
onCancel = _ref.onCancel,
|
|
57
|
+
onFieldChange = _ref.onFieldChange,
|
|
58
|
+
parameters = _ref.parameters,
|
|
59
|
+
submitting = _ref.submitting,
|
|
60
|
+
contextIdentifierProvider = _ref.contextIdentifierProvider,
|
|
61
|
+
featureFlags = _ref.featureFlags;
|
|
62
|
+
(0, _react.useEffect)(function () {
|
|
63
|
+
if (fields) {
|
|
64
|
+
var firstDuplicateField = (0, _transformers.findDuplicateFields)(fields);
|
|
65
|
+
if (firstDuplicateField) {
|
|
66
|
+
throw new Error("Possible duplicate field name: `".concat(firstDuplicateField.name, "`."));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}, [fields]);
|
|
70
|
+
if (isLoading || !hasParsedParameters && errorMessage === null) {
|
|
71
|
+
return /*#__PURE__*/_react.default.createElement(_LoadingState.default, null);
|
|
72
|
+
}
|
|
73
|
+
if (errorMessage || !fields) {
|
|
74
|
+
return /*#__PURE__*/_react.default.createElement(_ErrorMessage.default, {
|
|
75
|
+
errorMessage: errorMessage || ''
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_FormContent.default, {
|
|
79
|
+
fields: fields,
|
|
80
|
+
parameters: parameters,
|
|
81
|
+
extensionManifest: extensionManifest,
|
|
82
|
+
onFieldChange: onFieldChange,
|
|
83
|
+
firstVisibleFieldName: firstVisibleFieldName,
|
|
84
|
+
contextIdentifierProvider: contextIdentifierProvider,
|
|
85
|
+
featureFlags: featureFlags
|
|
86
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
87
|
+
style: canSave ? {} : {
|
|
88
|
+
display: 'none'
|
|
89
|
+
}
|
|
90
|
+
}, /*#__PURE__*/_react.default.createElement(_form.FormFooter, {
|
|
91
|
+
align: "start"
|
|
92
|
+
}, /*#__PURE__*/_react.default.createElement(_buttonGroup.default, null, /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
|
|
93
|
+
type: "submit",
|
|
94
|
+
appearance: "primary"
|
|
95
|
+
}, intl.formatMessage(_messages.messages.submit)), /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
|
|
96
|
+
appearance: "default",
|
|
97
|
+
isDisabled: submitting,
|
|
98
|
+
onClick: onCancel
|
|
99
|
+
}, intl.formatMessage(_messages.messages.cancel))))));
|
|
100
|
+
}
|
|
101
|
+
var ConfigFormIntl = (0, _reactIntlNext.injectIntl)(ConfigForm);
|
|
102
|
+
var WithOnFieldChange = function WithOnFieldChange(_ref2) {
|
|
103
|
+
var getState = _ref2.getState,
|
|
104
|
+
autoSave = _ref2.autoSave,
|
|
105
|
+
handleSubmit = _ref2.handleSubmit,
|
|
106
|
+
children = _ref2.children;
|
|
107
|
+
var getStateRef = (0, _react.useRef)(getState);
|
|
108
|
+
(0, _react.useEffect)(function () {
|
|
109
|
+
getStateRef.current = getState;
|
|
110
|
+
}, [getState]);
|
|
111
|
+
var handleFieldChange = (0, _react.useCallback)(function (name, isDirty) {
|
|
112
|
+
if (!autoSave) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Don't trigger submit if nothing actually changed
|
|
117
|
+
if (!isDirty) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
var _getStateRef$current = getStateRef.current(),
|
|
121
|
+
errors = _getStateRef$current.errors,
|
|
122
|
+
values = _getStateRef$current.values;
|
|
123
|
+
|
|
124
|
+
// Get only values that does not contain errors
|
|
125
|
+
var validValues = {};
|
|
126
|
+
for (var _i = 0, _Object$keys = Object.keys(values); _i < _Object$keys.length; _i++) {
|
|
127
|
+
var key = _Object$keys[_i];
|
|
128
|
+
if (!errors[key]) {
|
|
129
|
+
// not has error
|
|
130
|
+
validValues[key] = values[key];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
handleSubmit(validValues);
|
|
134
|
+
}, [autoSave, handleSubmit]);
|
|
135
|
+
return children(handleFieldChange);
|
|
136
|
+
};
|
|
137
|
+
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
138
|
+
var ConfigPanel = /*#__PURE__*/function (_React$Component) {
|
|
139
|
+
(0, _inherits2.default)(ConfigPanel, _React$Component);
|
|
140
|
+
var _super = _createSuper(ConfigPanel);
|
|
141
|
+
function ConfigPanel(props) {
|
|
142
|
+
var _this;
|
|
143
|
+
(0, _classCallCheck2.default)(this, ConfigPanel);
|
|
144
|
+
_this = _super.call(this, props);
|
|
145
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleKeyDown", function (e) {
|
|
146
|
+
if ((e.key === 'Esc' || e.key === 'Escape') && _this.props.closeOnEsc) {
|
|
147
|
+
_this.props.onCancel();
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
// https://product-fabric.atlassian.net/browse/DST-2697
|
|
151
|
+
// workaround for DST-2697, remove this function once fix.
|
|
152
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "backfillTabFormData", function (fields, formData, currentParameters) {
|
|
153
|
+
var getRelevantData = function getRelevantData(field, formParams, currentParams, backfill) {
|
|
154
|
+
if (field.hasGroupedValues && !(field.name in backfill)) {
|
|
155
|
+
backfill[field.name] = {};
|
|
156
|
+
}
|
|
157
|
+
var actualFormParams = field.hasGroupedValues ? formParams[field.name] || {} : formParams;
|
|
158
|
+
var actualCurrentParams = field.hasGroupedValues ? currentParams[field.name] || {} : currentParams;
|
|
159
|
+
var actualBackfillParams = field.hasGroupedValues ? backfill[field.name] : backfill;
|
|
160
|
+
return {
|
|
161
|
+
formParams: actualFormParams,
|
|
162
|
+
currentParams: actualCurrentParams,
|
|
163
|
+
backfillParams: actualBackfillParams
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// Traverse any tab structures and backfill field values on tabs
|
|
168
|
+
// which aren't shown. This filter should be ok because tabs are
|
|
169
|
+
// currently only allowed on top level
|
|
170
|
+
var mergedTabGroups = fields.filter(_extensions.isTabGroup).reduce(function (missingBackfill, tabGroup) {
|
|
171
|
+
var _getRelevantData = getRelevantData(tabGroup, formData, currentParameters, missingBackfill),
|
|
172
|
+
tabGroupFormData = _getRelevantData.formParams,
|
|
173
|
+
tabGroupCurrentData = _getRelevantData.currentParams,
|
|
174
|
+
tabGroupParams = _getRelevantData.backfillParams;
|
|
175
|
+
|
|
176
|
+
// Loop through tabs and see what fields are missing from current data
|
|
177
|
+
tabGroup.fields.forEach(function (tabField) {
|
|
178
|
+
var _getRelevantData2 = getRelevantData(tabField, tabGroupFormData, tabGroupCurrentData, tabGroupParams),
|
|
179
|
+
tabFormData = _getRelevantData2.formParams,
|
|
180
|
+
tabCurrentData = _getRelevantData2.currentParams,
|
|
181
|
+
tabParams = _getRelevantData2.backfillParams;
|
|
182
|
+
tabField.fields.forEach(function (field) {
|
|
183
|
+
if (field.name in tabFormData || !(field.name in tabCurrentData)) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
tabParams[field.name] = tabCurrentData[field.name];
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
return missingBackfill;
|
|
190
|
+
}, {});
|
|
191
|
+
return (0, _merge.default)({}, mergedTabGroups, formData);
|
|
192
|
+
});
|
|
193
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleSubmit", /*#__PURE__*/function () {
|
|
194
|
+
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(formData) {
|
|
195
|
+
var _this$props, fields, extensionManifest, onChange, autoSaveReject, serializedData;
|
|
196
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
197
|
+
while (1) switch (_context.prev = _context.next) {
|
|
198
|
+
case 0:
|
|
199
|
+
_this$props = _this.props, fields = _this$props.fields, extensionManifest = _this$props.extensionManifest, onChange = _this$props.onChange, autoSaveReject = _this$props.autoSaveReject;
|
|
200
|
+
if (!(!extensionManifest || !fields)) {
|
|
201
|
+
_context.next = 4;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
if (!extensionManifest) {
|
|
205
|
+
autoSaveReject === null || autoSaveReject === void 0 || autoSaveReject(new Error('Extension manifest not loaded'));
|
|
206
|
+
} else if (!fields) {
|
|
207
|
+
autoSaveReject === null || autoSaveReject === void 0 || autoSaveReject(new Error('Config fields not loaded'));
|
|
208
|
+
}
|
|
209
|
+
return _context.abrupt("return");
|
|
210
|
+
case 4:
|
|
211
|
+
_context.prev = 4;
|
|
212
|
+
_context.next = 7;
|
|
213
|
+
return (0, _transformers.serialize)(extensionManifest, _this.backfillTabFormData(fields, formData, _this.state.currentParameters), fields);
|
|
214
|
+
case 7:
|
|
215
|
+
serializedData = _context.sent;
|
|
216
|
+
onChange(serializedData);
|
|
217
|
+
_context.next = 15;
|
|
218
|
+
break;
|
|
219
|
+
case 11:
|
|
220
|
+
_context.prev = 11;
|
|
221
|
+
_context.t0 = _context["catch"](4);
|
|
222
|
+
autoSaveReject === null || autoSaveReject === void 0 || autoSaveReject(_context.t0);
|
|
223
|
+
// eslint-disable-next-line no-console
|
|
224
|
+
console.error("Error serializing parameters", _context.t0);
|
|
225
|
+
case 15:
|
|
226
|
+
case "end":
|
|
227
|
+
return _context.stop();
|
|
228
|
+
}
|
|
229
|
+
}, _callee, null, [[4, 11]]);
|
|
230
|
+
}));
|
|
231
|
+
return function (_x) {
|
|
232
|
+
return _ref3.apply(this, arguments);
|
|
233
|
+
};
|
|
234
|
+
}());
|
|
235
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parseParameters", /*#__PURE__*/function () {
|
|
236
|
+
var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(fields, parameters) {
|
|
237
|
+
var extensionManifest, currentParameters;
|
|
238
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
239
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
240
|
+
case 0:
|
|
241
|
+
extensionManifest = _this.props.extensionManifest;
|
|
242
|
+
if (!(!extensionManifest || !fields || fields.length === 0)) {
|
|
243
|
+
_context2.next = 3;
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
return _context2.abrupt("return");
|
|
247
|
+
case 3:
|
|
248
|
+
if (!(typeof parameters === 'undefined')) {
|
|
249
|
+
_context2.next = 6;
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
_this.setState({
|
|
253
|
+
currentParameters: {},
|
|
254
|
+
hasParsedParameters: true
|
|
255
|
+
});
|
|
256
|
+
return _context2.abrupt("return");
|
|
257
|
+
case 6:
|
|
258
|
+
_context2.next = 8;
|
|
259
|
+
return (0, _transformers.deserialize)(extensionManifest, parameters, fields);
|
|
260
|
+
case 8:
|
|
261
|
+
currentParameters = _context2.sent;
|
|
262
|
+
_this.setState({
|
|
263
|
+
currentParameters: currentParameters,
|
|
264
|
+
hasParsedParameters: true
|
|
265
|
+
});
|
|
266
|
+
case 10:
|
|
267
|
+
case "end":
|
|
268
|
+
return _context2.stop();
|
|
269
|
+
}
|
|
270
|
+
}, _callee2);
|
|
271
|
+
}));
|
|
272
|
+
return function (_x2, _x3) {
|
|
273
|
+
return _ref4.apply(this, arguments);
|
|
274
|
+
};
|
|
275
|
+
}());
|
|
276
|
+
// memoized to prevent rerender on new parameters
|
|
277
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderHeader", (0, _memoizeOne.default)(function (extensionManifest) {
|
|
278
|
+
var _this$props2 = _this.props,
|
|
279
|
+
onCancel = _this$props2.onCancel,
|
|
280
|
+
showHeader = _this$props2.showHeader;
|
|
281
|
+
|
|
282
|
+
// Use a temporary allowlist of top 3 macros to test out a new "Documentation" CTA ("Need help?")
|
|
283
|
+
// This will be removed when Top 5 Modernized Macros updates are rolled out
|
|
284
|
+
var modernizedMacrosList = ['children', 'recently-updated', 'excerpt'];
|
|
285
|
+
var enableHelpCTA = modernizedMacrosList.includes(extensionManifest.key);
|
|
286
|
+
if (!showHeader) {
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
return /*#__PURE__*/_react.default.createElement(_Header.default, {
|
|
290
|
+
icon: extensionManifest.icons['48'],
|
|
291
|
+
title: extensionManifest.title,
|
|
292
|
+
description: extensionManifest.description,
|
|
293
|
+
summary: extensionManifest.summary,
|
|
294
|
+
documentationUrl: extensionManifest.documentationUrl,
|
|
295
|
+
onClose: onCancel,
|
|
296
|
+
enableHelpCTA: enableHelpCTA
|
|
297
|
+
});
|
|
298
|
+
}));
|
|
299
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getFirstVisibleFieldName", (0, _memoizeOne.default)(function (fields) {
|
|
300
|
+
function nonHidden(field) {
|
|
301
|
+
if ('isHidden' in field) {
|
|
302
|
+
return !field.isHidden;
|
|
303
|
+
}
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// finds the first visible field, true for FieldSets too
|
|
308
|
+
var firstVisibleField = fields.find(nonHidden);
|
|
309
|
+
var newFirstVisibleFieldName;
|
|
310
|
+
if (firstVisibleField) {
|
|
311
|
+
// if it was a fieldset, go deeper trying to locate the field
|
|
312
|
+
if (firstVisibleField.type === 'fieldset') {
|
|
313
|
+
var firstVisibleFieldWithinFieldset = firstVisibleField.fields.find(nonHidden);
|
|
314
|
+
newFirstVisibleFieldName = firstVisibleFieldWithinFieldset && firstVisibleFieldWithinFieldset.name;
|
|
315
|
+
} else {
|
|
316
|
+
newFirstVisibleFieldName = firstVisibleField.name;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return newFirstVisibleFieldName;
|
|
320
|
+
}));
|
|
321
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setFirstVisibleFieldName", function (fields) {
|
|
322
|
+
var newFirstVisibleFieldName = _this.getFirstVisibleFieldName(fields);
|
|
323
|
+
if (newFirstVisibleFieldName !== _this.state.firstVisibleFieldName) {
|
|
324
|
+
_this.setState({
|
|
325
|
+
firstVisibleFieldName: newFirstVisibleFieldName
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
_this.state = {
|
|
330
|
+
hasParsedParameters: false,
|
|
331
|
+
currentParameters: {},
|
|
332
|
+
firstVisibleFieldName: props.fields ? _this.getFirstVisibleFieldName(props.fields) : undefined
|
|
333
|
+
};
|
|
334
|
+
_this.onFieldChange = null;
|
|
335
|
+
return _this;
|
|
336
|
+
}
|
|
337
|
+
(0, _createClass2.default)(ConfigPanel, [{
|
|
338
|
+
key: "componentDidMount",
|
|
339
|
+
value: function componentDidMount() {
|
|
340
|
+
var _this$props3 = this.props,
|
|
341
|
+
fields = _this$props3.fields,
|
|
342
|
+
parameters = _this$props3.parameters;
|
|
343
|
+
this.parseParameters(fields, parameters);
|
|
344
|
+
}
|
|
345
|
+
}, {
|
|
346
|
+
key: "componentWillUnmount",
|
|
347
|
+
value: function componentWillUnmount() {
|
|
348
|
+
var _this$props4 = this.props,
|
|
349
|
+
createAnalyticsEvent = _this$props4.createAnalyticsEvent,
|
|
350
|
+
extensionManifest = _this$props4.extensionManifest,
|
|
351
|
+
fields = _this$props4.fields;
|
|
352
|
+
var currentParameters = this.state.currentParameters;
|
|
353
|
+
(0, _analytics.fireAnalyticsEvent)(createAnalyticsEvent)({
|
|
354
|
+
payload: {
|
|
355
|
+
action: _analytics.ACTION.CLOSED,
|
|
356
|
+
actionSubject: _analytics.ACTION_SUBJECT.CONFIG_PANEL,
|
|
357
|
+
eventType: _analytics.EVENT_TYPE.UI,
|
|
358
|
+
attributes: _objectSpread({
|
|
359
|
+
extensionKey: extensionManifest === null || extensionManifest === void 0 ? void 0 : extensionManifest.key,
|
|
360
|
+
extensionType: extensionManifest === null || extensionManifest === void 0 ? void 0 : extensionManifest.type
|
|
361
|
+
}, extensionManifest !== null && extensionManifest !== void 0 && extensionManifest.key && _constants.ALLOWED_LOGGED_MACRO_PARAMS[extensionManifest.key] ? {
|
|
362
|
+
parameters: (0, _utils.getLoggedParameters)(extensionManifest.key, currentParameters, fields)
|
|
363
|
+
} : {})
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
}, {
|
|
368
|
+
key: "componentDidUpdate",
|
|
369
|
+
value: function componentDidUpdate(prevProps) {
|
|
370
|
+
var _this$props5 = this.props,
|
|
371
|
+
parameters = _this$props5.parameters,
|
|
372
|
+
fields = _this$props5.fields,
|
|
373
|
+
autoSaveTrigger = _this$props5.autoSaveTrigger,
|
|
374
|
+
extensionManifest = _this$props5.extensionManifest;
|
|
375
|
+
if (parameters && parameters !== prevProps.parameters || fields && (!prevProps.fields || !(0, _isEqual2.default)(fields, prevProps.fields))) {
|
|
376
|
+
this.parseParameters(fields, parameters);
|
|
377
|
+
}
|
|
378
|
+
if (fields && (!prevProps.fields || !(0, _isEqual2.default)(fields, prevProps.fields))) {
|
|
379
|
+
this.setFirstVisibleFieldName(fields);
|
|
380
|
+
}
|
|
381
|
+
if (prevProps.autoSaveTrigger !== autoSaveTrigger) {
|
|
382
|
+
if (this.onFieldChange) {
|
|
383
|
+
this.onFieldChange('', true);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
if (prevProps.extensionManifest === undefined && prevProps.extensionManifest !== extensionManifest) {
|
|
387
|
+
// This will only be fired once when extensionManifest is loaded initially
|
|
388
|
+
// Can't do this in componentDidMount because extensionManifest is still undefined at that point
|
|
389
|
+
(0, _analytics.fireAnalyticsEvent)(this.props.createAnalyticsEvent)({
|
|
390
|
+
payload: {
|
|
391
|
+
action: _analytics.ACTION.OPENED,
|
|
392
|
+
actionSubject: _analytics.ACTION_SUBJECT.CONFIG_PANEL,
|
|
393
|
+
eventType: _analytics.EVENT_TYPE.UI,
|
|
394
|
+
attributes: {
|
|
395
|
+
extensionKey: extensionManifest === null || extensionManifest === void 0 ? void 0 : extensionManifest.key,
|
|
396
|
+
extensionType: extensionManifest === null || extensionManifest === void 0 ? void 0 : extensionManifest.type
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}, {
|
|
403
|
+
key: "render",
|
|
404
|
+
value: function render() {
|
|
405
|
+
var _this2 = this;
|
|
406
|
+
var _this$props6 = this.props,
|
|
407
|
+
extensionManifest = _this$props6.extensionManifest,
|
|
408
|
+
featureFlags = _this$props6.featureFlags;
|
|
409
|
+
if (!extensionManifest) {
|
|
410
|
+
return /*#__PURE__*/_react.default.createElement(_LoadingState.default, null);
|
|
411
|
+
}
|
|
412
|
+
var _this$props7 = this.props,
|
|
413
|
+
autoSave = _this$props7.autoSave,
|
|
414
|
+
errorMessage = _this$props7.errorMessage,
|
|
415
|
+
fields = _this$props7.fields,
|
|
416
|
+
isLoading = _this$props7.isLoading,
|
|
417
|
+
onCancel = _this$props7.onCancel;
|
|
418
|
+
var _this$state = this.state,
|
|
419
|
+
currentParameters = _this$state.currentParameters,
|
|
420
|
+
hasParsedParameters = _this$state.hasParsedParameters,
|
|
421
|
+
firstVisibleFieldName = _this$state.firstVisibleFieldName;
|
|
422
|
+
var handleSubmit = this.handleSubmit,
|
|
423
|
+
handleKeyDown = this.handleKeyDown;
|
|
424
|
+
return /*#__PURE__*/_react.default.createElement(_form.default, {
|
|
425
|
+
onSubmit: handleSubmit
|
|
426
|
+
}, function (_ref5) {
|
|
427
|
+
var formProps = _ref5.formProps,
|
|
428
|
+
getState = _ref5.getState,
|
|
429
|
+
submitting = _ref5.submitting;
|
|
430
|
+
return /*#__PURE__*/_react.default.createElement(WithOnFieldChange, {
|
|
431
|
+
autoSave: !!autoSave,
|
|
432
|
+
getState: getState,
|
|
433
|
+
handleSubmit: handleSubmit
|
|
434
|
+
}, function (onFieldChange) {
|
|
435
|
+
_this2.onFieldChange = onFieldChange;
|
|
436
|
+
return /*#__PURE__*/_react.default.createElement("form", (0, _extends2.default)({}, formProps, {
|
|
437
|
+
noValidate: true,
|
|
438
|
+
onKeyDown: handleKeyDown,
|
|
439
|
+
"data-testid": "extension-config-panel"
|
|
440
|
+
}), _this2.renderHeader(extensionManifest), /*#__PURE__*/_react.default.createElement(_withPluginState.WithPluginState, {
|
|
441
|
+
plugins: {
|
|
442
|
+
extension: _pluginKey.pluginKey
|
|
443
|
+
},
|
|
444
|
+
render: function render(_ref6) {
|
|
445
|
+
var extension = _ref6.extension;
|
|
446
|
+
return /*#__PURE__*/_react.default.createElement(_FormErrorBoundary.FormErrorBoundary, {
|
|
447
|
+
contextIdentifierProvider: extension === null || extension === void 0 ? void 0 : extension.contextIdentifierProvider,
|
|
448
|
+
extensionKey: extensionManifest.key,
|
|
449
|
+
fields: fields || []
|
|
450
|
+
}, /*#__PURE__*/_react.default.createElement(ConfigFormIntl, {
|
|
451
|
+
canSave: !autoSave,
|
|
452
|
+
errorMessage: errorMessage,
|
|
453
|
+
extensionManifest: extensionManifest,
|
|
454
|
+
fields: fields,
|
|
455
|
+
firstVisibleFieldName: firstVisibleFieldName,
|
|
456
|
+
hasParsedParameters: hasParsedParameters,
|
|
457
|
+
isLoading: isLoading || false,
|
|
458
|
+
onCancel: onCancel,
|
|
459
|
+
onFieldChange: onFieldChange,
|
|
460
|
+
parameters: currentParameters,
|
|
461
|
+
submitting: submitting,
|
|
462
|
+
contextIdentifierProvider: extension === null || extension === void 0 ? void 0 : extension.contextIdentifierProvider,
|
|
463
|
+
featureFlags: featureFlags
|
|
464
|
+
}));
|
|
465
|
+
}
|
|
466
|
+
}));
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
}]);
|
|
471
|
+
return ConfigPanel;
|
|
472
|
+
}(_react.default.Component);
|
|
473
|
+
var _default = exports.default = (0, _analyticsNext.withAnalyticsContext)({
|
|
474
|
+
source: 'ConfigPanel'
|
|
475
|
+
})((0, _analyticsNext.withAnalyticsEvents)()(ConfigPanel));
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = FieldsLoader;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _ConfigPanel = _interopRequireDefault(require("./ConfigPanel"));
|
|
12
|
+
var _useStateFromPromise3 = require("./use-state-from-promise");
|
|
13
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
var getFieldsDefinitionFn = function getFieldsDefinitionFn(extensionManifest, nodeKey) {
|
|
16
|
+
if (extensionManifest && extensionManifest.modules.nodes && extensionManifest.modules.nodes[nodeKey] && extensionManifest.modules.nodes[nodeKey].getFieldsDefinition) {
|
|
17
|
+
return extensionManifest.modules.nodes[nodeKey].getFieldsDefinition;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// having the default value in the props instead of a reference will cause excessive rerenders
|
|
22
|
+
var defaultEmptyObject = {};
|
|
23
|
+
var FieldDefinitionsPromiseResolver = function FieldDefinitionsPromiseResolver(props) {
|
|
24
|
+
var extensionManifest = props.extensionManifest,
|
|
25
|
+
nodeKey = props.nodeKey,
|
|
26
|
+
extensionParameters = props.extensionParameters,
|
|
27
|
+
setErrorMessage = props.setErrorMessage;
|
|
28
|
+
var _useState = (0, _react.useState)(undefined),
|
|
29
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
30
|
+
fields = _useState2[0],
|
|
31
|
+
setFields = _useState2[1];
|
|
32
|
+
|
|
33
|
+
// Resolve the promise
|
|
34
|
+
// useStateFromPromise() has an issue which isn't compatible with
|
|
35
|
+
// DynamicFieldDefinitions when it returns a function as setState()
|
|
36
|
+
// will immediately run the function returned and pass it the currentState.
|
|
37
|
+
(0, _react.useEffect)(function () {
|
|
38
|
+
if (!extensionManifest) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
var promiseFn = getFieldsDefinitionFn(extensionManifest, nodeKey);
|
|
42
|
+
if (typeof promiseFn !== 'function') {
|
|
43
|
+
setFields(undefined);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
promiseFn(extensionParameters).catch(function (err) {
|
|
47
|
+
if (err && typeof err.message === 'string') {
|
|
48
|
+
setErrorMessage(err.message);
|
|
49
|
+
}
|
|
50
|
+
setFields(undefined);
|
|
51
|
+
}).then(function (value) {
|
|
52
|
+
if (Array.isArray(value)) {
|
|
53
|
+
// value: FieldDefinition[]
|
|
54
|
+
setFields(value);
|
|
55
|
+
} else if (typeof value === 'function') {
|
|
56
|
+
try {
|
|
57
|
+
// value: DynamicFieldDefinitions
|
|
58
|
+
var dynamicFields = value(extensionParameters);
|
|
59
|
+
setFields(dynamicFields);
|
|
60
|
+
} catch (err) {
|
|
61
|
+
if (err instanceof Error) {
|
|
62
|
+
setErrorMessage(err.message);
|
|
63
|
+
}
|
|
64
|
+
setFields(undefined);
|
|
65
|
+
}
|
|
66
|
+
} else {
|
|
67
|
+
// value: undefined
|
|
68
|
+
setFields(undefined);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}, [extensionManifest, nodeKey, extensionParameters, setErrorMessage]);
|
|
72
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.children(fields));
|
|
73
|
+
};
|
|
74
|
+
function FieldsLoader(_ref) {
|
|
75
|
+
var extensionType = _ref.extensionType,
|
|
76
|
+
extensionKey = _ref.extensionKey,
|
|
77
|
+
nodeKey = _ref.nodeKey,
|
|
78
|
+
extensionProvider = _ref.extensionProvider,
|
|
79
|
+
_ref$extensionParamet = _ref.extensionParameters,
|
|
80
|
+
extensionParameters = _ref$extensionParamet === void 0 ? defaultEmptyObject : _ref$extensionParamet,
|
|
81
|
+
_ref$parameters = _ref.parameters,
|
|
82
|
+
parameters = _ref$parameters === void 0 ? defaultEmptyObject : _ref$parameters,
|
|
83
|
+
autoSave = _ref.autoSave,
|
|
84
|
+
autoSaveTrigger = _ref.autoSaveTrigger,
|
|
85
|
+
autoSaveReject = _ref.autoSaveReject,
|
|
86
|
+
closeOnEsc = _ref.closeOnEsc,
|
|
87
|
+
showHeader = _ref.showHeader,
|
|
88
|
+
featureFlags = _ref.featureFlags,
|
|
89
|
+
onChange = _ref.onChange,
|
|
90
|
+
onCancel = _ref.onCancel;
|
|
91
|
+
var _useStateFromPromise = (0, _useStateFromPromise3.useStateFromPromise)(function () {
|
|
92
|
+
return extensionProvider.getExtension(extensionType, extensionKey);
|
|
93
|
+
}, [extensionProvider, extensionType, extensionKey]),
|
|
94
|
+
_useStateFromPromise2 = (0, _slicedToArray2.default)(_useStateFromPromise, 1),
|
|
95
|
+
extensionManifest = _useStateFromPromise2[0];
|
|
96
|
+
var _useState3 = (0, _react.useState)(null),
|
|
97
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
98
|
+
errorMessage = _useState4[0],
|
|
99
|
+
setErrorMessage = _useState4[1];
|
|
100
|
+
return /*#__PURE__*/_react.default.createElement(FieldDefinitionsPromiseResolver, {
|
|
101
|
+
setErrorMessage: setErrorMessage,
|
|
102
|
+
extensionManifest: extensionManifest,
|
|
103
|
+
nodeKey: nodeKey,
|
|
104
|
+
extensionParameters: extensionParameters
|
|
105
|
+
}, function (fields) {
|
|
106
|
+
return /*#__PURE__*/_react.default.createElement(_ConfigPanel.default, {
|
|
107
|
+
extensionManifest: extensionManifest,
|
|
108
|
+
isLoading: !extensionManifest || errorMessage === null && !fields,
|
|
109
|
+
fields: fields,
|
|
110
|
+
parameters: parameters,
|
|
111
|
+
autoSave: autoSave,
|
|
112
|
+
autoSaveTrigger: autoSaveTrigger,
|
|
113
|
+
autoSaveReject: autoSaveReject,
|
|
114
|
+
closeOnEsc: closeOnEsc,
|
|
115
|
+
showHeader: showHeader,
|
|
116
|
+
onChange: onChange,
|
|
117
|
+
onCancel: onCancel,
|
|
118
|
+
errorMessage: errorMessage,
|
|
119
|
+
featureFlags: featureFlags
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
9
|
+
var _reactLoadable = _interopRequireDefault(require("react-loadable"));
|
|
10
|
+
var _LoadingState = _interopRequireDefault(require("./LoadingState"));
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
var _default = exports.default = (0, _reactLoadable.default)({
|
|
14
|
+
loader: function loader() {
|
|
15
|
+
return Promise.resolve().then(function () {
|
|
16
|
+
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_editor-core-config-panel" */
|
|
17
|
+
'./ConfigPanelFieldsLoader'));
|
|
18
|
+
}).then(function (module) {
|
|
19
|
+
return module.default;
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
loading: _LoadingState.default
|
|
23
|
+
});
|