@atlaskit/editor-plugin-extension 0.4.2 → 0.5.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.
- package/.eslintrc.js +26 -0
- package/CHANGELOG.md +10 -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 +48 -6
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getEditInLegacyMacroBrowser = exports.createExtensionAPI = void 0;
|
|
8
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
9
|
+
var _validator = require("@atlaskit/adf-utils/validator");
|
|
10
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
11
|
+
var _utils = require("@atlaskit/editor-common/utils");
|
|
12
|
+
var _editorJsonTransformer = require("@atlaskit/editor-json-transformer");
|
|
13
|
+
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
14
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
15
|
+
var _utils2 = require("@atlaskit/editor-prosemirror/utils");
|
|
16
|
+
var _commands = require("./commands");
|
|
17
|
+
var _actions = require("./pm-plugins/macro/actions");
|
|
18
|
+
var _pluginKey = require("./pm-plugins/macro/plugin-key");
|
|
19
|
+
var _utils3 = require("./utils");
|
|
20
|
+
var getEditInLegacyMacroBrowser = exports.getEditInLegacyMacroBrowser = function getEditInLegacyMacroBrowser(_ref) {
|
|
21
|
+
var view = _ref.view,
|
|
22
|
+
macroProvider = _ref.macroProvider,
|
|
23
|
+
editorAnalyticsAPI = _ref.editorAnalyticsAPI;
|
|
24
|
+
return function () {
|
|
25
|
+
if (!view) {
|
|
26
|
+
throw new Error("Missing view. Can't update without EditorView");
|
|
27
|
+
}
|
|
28
|
+
if (!macroProvider) {
|
|
29
|
+
throw new Error("Missing macroProvider. Can't use the macro browser for updates");
|
|
30
|
+
}
|
|
31
|
+
var nodeWithPos = (0, _utils3.getSelectedExtension)(view.state, true);
|
|
32
|
+
if (!nodeWithPos) {
|
|
33
|
+
throw new Error("Missing nodeWithPos. Can't determine position of node");
|
|
34
|
+
}
|
|
35
|
+
(0, _actions.insertMacroFromMacroBrowser)(editorAnalyticsAPI)(macroProvider, nodeWithPos.node, true)(view);
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
var extensionAPICallPayload = function extensionAPICallPayload(functionName) {
|
|
39
|
+
return {
|
|
40
|
+
action: _analytics.ACTION.INVOKED,
|
|
41
|
+
actionSubject: _analytics.ACTION_SUBJECT.EXTENSION,
|
|
42
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.EXTENSION_API,
|
|
43
|
+
attributes: {
|
|
44
|
+
functionName: functionName
|
|
45
|
+
},
|
|
46
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
var createExtensionAPI = exports.createExtensionAPI = function createExtensionAPI(options) {
|
|
50
|
+
var schema = options.editorView.state.schema,
|
|
51
|
+
editorAnalyticsAPI = options.editorAnalyticsAPI;
|
|
52
|
+
var nodes = Object.keys(schema.nodes);
|
|
53
|
+
var marks = Object.keys(schema.marks);
|
|
54
|
+
var validate = (0, _validator.validator)(nodes, marks, {
|
|
55
|
+
allowPrivateAttributes: true
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Finds the node and its position by `localId`. Throws if the node could not be found.
|
|
60
|
+
*
|
|
61
|
+
* @returns {NodeWithPos}
|
|
62
|
+
*/
|
|
63
|
+
var ensureNodePosByLocalId = function ensureNodePosByLocalId(localId, _ref2) {
|
|
64
|
+
var opName = _ref2.opName;
|
|
65
|
+
// Be extra cautious since 3rd party devs can use regular JS without type safety
|
|
66
|
+
if (typeof localId !== 'string' || localId === '') {
|
|
67
|
+
throw new Error("".concat(opName, "(): Invalid localId '").concat(localId, "'."));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Find the node + position matching the given ID
|
|
71
|
+
var state = options.editorView.state;
|
|
72
|
+
var nodePos = (0, _utils3.findNodePosWithLocalId)(state, localId);
|
|
73
|
+
if (!nodePos) {
|
|
74
|
+
throw new Error("".concat(opName, "(): Could not find node with ID '").concat(localId, "'."));
|
|
75
|
+
}
|
|
76
|
+
return nodePos;
|
|
77
|
+
};
|
|
78
|
+
var doc = {
|
|
79
|
+
insertAfter: function insertAfter(localId, adf, opt) {
|
|
80
|
+
try {
|
|
81
|
+
validate(adf);
|
|
82
|
+
} catch (e) {
|
|
83
|
+
throw new Error("insertAfter(): Invalid ADF given.");
|
|
84
|
+
}
|
|
85
|
+
var nodePos = ensureNodePosByLocalId(localId, {
|
|
86
|
+
opName: 'insertAfter'
|
|
87
|
+
});
|
|
88
|
+
var editorView = options.editorView;
|
|
89
|
+
var dispatch = editorView.dispatch,
|
|
90
|
+
state = editorView.state;
|
|
91
|
+
|
|
92
|
+
// Validate the given ADF
|
|
93
|
+
var tr = state.tr,
|
|
94
|
+
schema = state.schema;
|
|
95
|
+
var nodeType = schema.nodes[adf.type];
|
|
96
|
+
if (!nodeType) {
|
|
97
|
+
throw new Error("insertAfter(): Invalid ADF type '".concat(adf.type, "'."));
|
|
98
|
+
}
|
|
99
|
+
var fragment = _model.Fragment.fromJSON(schema, adf.content);
|
|
100
|
+
var marks = (adf.marks || []).map(function (markEntity) {
|
|
101
|
+
return _model.Mark.fromJSON(schema, markEntity);
|
|
102
|
+
});
|
|
103
|
+
var newNode = nodeType === null || nodeType === void 0 ? void 0 : nodeType.createChecked(adf.attrs, fragment, marks);
|
|
104
|
+
if (!newNode) {
|
|
105
|
+
throw new Error('insertAfter(): Could not create a node for given ADFEntity.');
|
|
106
|
+
}
|
|
107
|
+
var insertPosition = nodePos.pos + nodePos.node.nodeSize;
|
|
108
|
+
tr.insert(insertPosition, newNode);
|
|
109
|
+
|
|
110
|
+
// Validate if the document is valid at this point
|
|
111
|
+
try {
|
|
112
|
+
tr.doc.check();
|
|
113
|
+
} catch (err) {
|
|
114
|
+
throw new Error("insertAfter(): The given ADFEntity cannot be inserted in the current position.\n".concat(err));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Analytics - tracking the api call
|
|
118
|
+
var apiCallPayload = extensionAPICallPayload('insertAfter');
|
|
119
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(apiCallPayload)(tr);
|
|
120
|
+
|
|
121
|
+
// Analytics - tracking node types added
|
|
122
|
+
var nodesAdded = [newNode];
|
|
123
|
+
newNode.descendants(function (node) {
|
|
124
|
+
nodesAdded.push(node);
|
|
125
|
+
return true;
|
|
126
|
+
});
|
|
127
|
+
nodesAdded.forEach(function (node) {
|
|
128
|
+
var _node$attrs = node.attrs,
|
|
129
|
+
extensionKey = _node$attrs.extensionKey,
|
|
130
|
+
extensionType = _node$attrs.extensionType;
|
|
131
|
+
var dataConsumerMark = (0, _utils3.getDataConsumerMark)(node);
|
|
132
|
+
var stringIds = (dataConsumerMark === null || dataConsumerMark === void 0 ? void 0 : dataConsumerMark.attrs.sources.map(function (sourceId) {
|
|
133
|
+
return sourceId;
|
|
134
|
+
})) || [];
|
|
135
|
+
var hasReferentiality = !!dataConsumerMark;
|
|
136
|
+
var nodeTypesReferenced = hasReferentiality ? (0, _utils3.getNodeTypesReferenced)(stringIds, state) : undefined;
|
|
137
|
+
|
|
138
|
+
// fire off analytics for this ADF
|
|
139
|
+
var payload = {
|
|
140
|
+
action: _analytics.ACTION.INSERTED,
|
|
141
|
+
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
142
|
+
attributes: {
|
|
143
|
+
nodeType: node.type.name,
|
|
144
|
+
inputMethod: _analytics.INPUT_METHOD.EXTENSION_API,
|
|
145
|
+
hasReferentiality: hasReferentiality,
|
|
146
|
+
nodeTypesReferenced: nodeTypesReferenced,
|
|
147
|
+
layout: node.attrs.layout,
|
|
148
|
+
extensionType: extensionType,
|
|
149
|
+
extensionKey: extensionKey
|
|
150
|
+
},
|
|
151
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
152
|
+
};
|
|
153
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(payload)(tr);
|
|
154
|
+
});
|
|
155
|
+
if (opt && opt.allowSelectionToNewNode) {
|
|
156
|
+
tr.setSelection(new _state.NodeSelection(tr.doc.resolve(insertPosition)));
|
|
157
|
+
}
|
|
158
|
+
dispatch(tr);
|
|
159
|
+
},
|
|
160
|
+
scrollTo: function scrollTo(localId) {
|
|
161
|
+
var nodePos = ensureNodePosByLocalId(localId, {
|
|
162
|
+
opName: 'scrollTo'
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// Analytics - tracking the api call
|
|
166
|
+
var apiCallPayload = extensionAPICallPayload('scrollTo');
|
|
167
|
+
var _options$editorView = options.editorView,
|
|
168
|
+
dispatch = _options$editorView.dispatch,
|
|
169
|
+
state = _options$editorView.state;
|
|
170
|
+
var tr = state.tr;
|
|
171
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(apiCallPayload)(tr);
|
|
172
|
+
tr = (0, _utils2.setTextSelection)(nodePos.pos)(tr);
|
|
173
|
+
tr = tr.scrollIntoView();
|
|
174
|
+
dispatch(tr);
|
|
175
|
+
},
|
|
176
|
+
update: function update(localId, mutationCallback) {
|
|
177
|
+
var _changedValues$marks;
|
|
178
|
+
var _ensureNodePosByLocal = ensureNodePosByLocalId(localId, {
|
|
179
|
+
opName: 'update'
|
|
180
|
+
}),
|
|
181
|
+
node = _ensureNodePosByLocal.node,
|
|
182
|
+
pos = _ensureNodePosByLocal.pos;
|
|
183
|
+
var _options$editorView2 = options.editorView,
|
|
184
|
+
dispatch = _options$editorView2.dispatch,
|
|
185
|
+
state = _options$editorView2.state;
|
|
186
|
+
var tr = state.tr,
|
|
187
|
+
schema = state.schema;
|
|
188
|
+
var changedValues = mutationCallback({
|
|
189
|
+
content: (0, _utils.nodeToJSON)(node).content,
|
|
190
|
+
attrs: node.attrs,
|
|
191
|
+
marks: node.marks.map(function (pmMark) {
|
|
192
|
+
return {
|
|
193
|
+
type: pmMark.type.name,
|
|
194
|
+
attrs: pmMark.attrs
|
|
195
|
+
};
|
|
196
|
+
})
|
|
197
|
+
});
|
|
198
|
+
var ensureValidMark = function ensureValidMark(mark) {
|
|
199
|
+
if ((0, _typeof2.default)(mark) !== 'object' || Array.isArray(mark)) {
|
|
200
|
+
throw new Error("update(): Invalid mark given.");
|
|
201
|
+
}
|
|
202
|
+
var _state$doc$resolve = state.doc.resolve(pos),
|
|
203
|
+
parent = _state$doc$resolve.parent;
|
|
204
|
+
// Ensure that the given mark is present in the schema
|
|
205
|
+
var markType = schema.marks[mark.type];
|
|
206
|
+
if (!markType) {
|
|
207
|
+
throw new Error("update(): Invalid ADF mark type '".concat(mark.type, "'."));
|
|
208
|
+
}
|
|
209
|
+
if (!parent.type.allowsMarkType(markType)) {
|
|
210
|
+
throw new Error("update(): Parent of type '".concat(parent.type.name, "' does not allow marks of type '").concat(mark.type, "'."));
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
mark: markType,
|
|
214
|
+
attrs: mark.attrs
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
var newMarks = changedValues.hasOwnProperty('marks') ? (_changedValues$marks = changedValues.marks) === null || _changedValues$marks === void 0 ? void 0 : _changedValues$marks.map(ensureValidMark).map(function (_ref3) {
|
|
218
|
+
var mark = _ref3.mark,
|
|
219
|
+
attrs = _ref3.attrs;
|
|
220
|
+
return mark.create(attrs);
|
|
221
|
+
}) : node.marks;
|
|
222
|
+
var newContent = changedValues.hasOwnProperty('content') ? _model.Fragment.fromJSON(schema, changedValues.content) : node.content;
|
|
223
|
+
var newAttrs = changedValues.hasOwnProperty('attrs') ? changedValues.attrs : node.attrs;
|
|
224
|
+
|
|
225
|
+
// Validate if the new attributes, content and marks result in a valid node and adf.
|
|
226
|
+
try {
|
|
227
|
+
var newNode = node.type.createChecked(newAttrs, newContent, newMarks);
|
|
228
|
+
var newNodeAdf = new _editorJsonTransformer.JSONTransformer().encodeNode(newNode);
|
|
229
|
+
validate(newNodeAdf);
|
|
230
|
+
tr.replaceWith(pos, pos + node.nodeSize, newNode);
|
|
231
|
+
|
|
232
|
+
// Keep selection if content does not change
|
|
233
|
+
if (newContent === node.content) {
|
|
234
|
+
tr.setSelection(_state.Selection.fromJSON(tr.doc, state.selection.toJSON()));
|
|
235
|
+
}
|
|
236
|
+
} catch (err) {
|
|
237
|
+
throw new Error("update(): The given ADFEntity cannot be inserted in the current position.\n".concat(err));
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Analytics - tracking the api call
|
|
241
|
+
var apiCallPayload = extensionAPICallPayload('update');
|
|
242
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(apiCallPayload)(tr);
|
|
243
|
+
dispatch(tr);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
return {
|
|
247
|
+
editInContextPanel: function editInContextPanel(transformBefore, transformAfter) {
|
|
248
|
+
var editorView = options.editorView;
|
|
249
|
+
(0, _commands.setEditingContextToContextPanel)(transformBefore, transformAfter, options.applyChange)(editorView.state, editorView.dispatch, editorView);
|
|
250
|
+
},
|
|
251
|
+
_editInLegacyMacroBrowser: function _editInLegacyMacroBrowser() {
|
|
252
|
+
var editorView = options.editorView;
|
|
253
|
+
var editInLegacy = options.editInLegacyMacroBrowser;
|
|
254
|
+
if (!editInLegacy) {
|
|
255
|
+
var macroState = _pluginKey.pluginKey.getState(editorView.state);
|
|
256
|
+
editInLegacy = getEditInLegacyMacroBrowser({
|
|
257
|
+
view: options.editorView,
|
|
258
|
+
macroProvider: (macroState === null || macroState === void 0 ? void 0 : macroState.macroProvider) || undefined,
|
|
259
|
+
editorAnalyticsAPI: editorAnalyticsAPI
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
editInLegacy();
|
|
263
|
+
},
|
|
264
|
+
doc: doc
|
|
265
|
+
};
|
|
266
|
+
};
|
package/dist/cjs/index.js
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getPluginState = exports.createPluginState = exports.createCommand = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _utils = require("@atlaskit/editor-common/utils");
|
|
10
|
+
var _pluginKey = require("./plugin-key");
|
|
11
|
+
var _reducer = _interopRequireDefault(require("./reducer"));
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
var factory = (0, _utils.pluginFactory)(_pluginKey.pluginKey, _reducer.default, {
|
|
15
|
+
mapping: function mapping(tr, state) {
|
|
16
|
+
var _ref = state,
|
|
17
|
+
previousPositions = _ref.positions;
|
|
18
|
+
if (!previousPositions) {
|
|
19
|
+
return state;
|
|
20
|
+
}
|
|
21
|
+
var positions = _objectSpread({}, previousPositions);
|
|
22
|
+
for (var key in positions) {
|
|
23
|
+
positions[key] = tr.mapping.map(positions[key]);
|
|
24
|
+
}
|
|
25
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
26
|
+
positions: positions
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
var createPluginState = exports.createPluginState = factory.createPluginState;
|
|
31
|
+
var createCommand = exports.createCommand = factory.createCommand;
|
|
32
|
+
var getPluginState = exports.getPluginState = factory.getPluginState;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.extensionPlugin = void 0;
|
|
8
|
+
var _adfSchema = require("@atlaskit/adf-schema");
|
|
9
|
+
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
|
|
10
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
11
|
+
var _actions = require("./actions");
|
|
12
|
+
var _commands = require("./commands");
|
|
13
|
+
var _contextPanel = require("./context-panel");
|
|
14
|
+
var _extensionApi = require("./extension-api");
|
|
15
|
+
var _keymap = _interopRequireDefault(require("./pm-plugins/keymap"));
|
|
16
|
+
var _macro = require("./pm-plugins/macro");
|
|
17
|
+
var _actions2 = require("./pm-plugins/macro/actions");
|
|
18
|
+
var _main = require("./pm-plugins/main");
|
|
19
|
+
var _uniqueId = require("./pm-plugins/unique-id");
|
|
20
|
+
var _toolbar = require("./toolbar");
|
|
21
|
+
var extensionPlugin = exports.extensionPlugin = function extensionPlugin(_ref) {
|
|
22
|
+
var _api$featureFlags, _api$analytics2, _api$analytics3, _api$contextPanel3, _api$analytics4, _api$contextPanel4;
|
|
23
|
+
var _ref$config = _ref.config,
|
|
24
|
+
options = _ref$config === void 0 ? {} : _ref$config,
|
|
25
|
+
_api = _ref.api;
|
|
26
|
+
var featureFlags = (_api === null || _api === void 0 || (_api$featureFlags = _api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {};
|
|
27
|
+
//Note: This is a hack to get the editor view reference in the plugin. Copied from table plugin.
|
|
28
|
+
//This is needed to get the current selection in the editor
|
|
29
|
+
var editorViewRef = {
|
|
30
|
+
current: null
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
name: 'extension',
|
|
34
|
+
nodes: function nodes() {
|
|
35
|
+
var extensionNodes = [{
|
|
36
|
+
name: 'extension',
|
|
37
|
+
node: _adfSchema.extension
|
|
38
|
+
}, {
|
|
39
|
+
name: 'bodiedExtension',
|
|
40
|
+
node: _adfSchema.bodiedExtension
|
|
41
|
+
}, {
|
|
42
|
+
name: 'inlineExtension',
|
|
43
|
+
node: _adfSchema.inlineExtension
|
|
44
|
+
}];
|
|
45
|
+
|
|
46
|
+
// Revert to returning all nodes without local variable, once FF is removed
|
|
47
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.multi-bodied-extension_0rygg')) {
|
|
48
|
+
extensionNodes.push({
|
|
49
|
+
name: 'extensionFrame',
|
|
50
|
+
node: _adfSchema.extensionFrame
|
|
51
|
+
});
|
|
52
|
+
extensionNodes.push({
|
|
53
|
+
name: 'multiBodiedExtension',
|
|
54
|
+
node: _adfSchema.multiBodiedExtension
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return extensionNodes;
|
|
58
|
+
},
|
|
59
|
+
getSharedState: function getSharedState(state) {
|
|
60
|
+
if (!state) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
var pluginState = _main.pluginKey.getState(state);
|
|
64
|
+
return {
|
|
65
|
+
showContextPanel: pluginState === null || pluginState === void 0 ? void 0 : pluginState.showContextPanel
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
pmPlugins: function pmPlugins() {
|
|
69
|
+
return [{
|
|
70
|
+
name: 'extension',
|
|
71
|
+
plugin: function plugin(_ref2) {
|
|
72
|
+
var dispatch = _ref2.dispatch,
|
|
73
|
+
providerFactory = _ref2.providerFactory,
|
|
74
|
+
portalProviderAPI = _ref2.portalProviderAPI,
|
|
75
|
+
eventDispatcher = _ref2.eventDispatcher;
|
|
76
|
+
var extensionHandlers = options.extensionHandlers || {};
|
|
77
|
+
return (0, _main.createPlugin)(dispatch, providerFactory, extensionHandlers, portalProviderAPI, eventDispatcher, _api, options.useLongPressSelection, {
|
|
78
|
+
appearance: options.appearance
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}, {
|
|
82
|
+
name: 'extensionKeymap',
|
|
83
|
+
plugin: function plugin() {
|
|
84
|
+
var _api$contextPanel;
|
|
85
|
+
return (0, _keymap.default)(_api === null || _api === void 0 || (_api$contextPanel = _api.contextPanel) === null || _api$contextPanel === void 0 ? void 0 : _api$contextPanel.actions.applyChange);
|
|
86
|
+
}
|
|
87
|
+
}, {
|
|
88
|
+
name: 'extensionUniqueId',
|
|
89
|
+
plugin: function plugin() {
|
|
90
|
+
return (0, _uniqueId.createPlugin)();
|
|
91
|
+
}
|
|
92
|
+
}, {
|
|
93
|
+
name: 'extensionEditorViewRef',
|
|
94
|
+
plugin: function plugin() {
|
|
95
|
+
return new _safePlugin.SafePlugin({
|
|
96
|
+
view: function view(editorView) {
|
|
97
|
+
// Do not cleanup the editorViewRef on destroy
|
|
98
|
+
// because some functions may point to a stale
|
|
99
|
+
// reference and this means we will return null.
|
|
100
|
+
// EditorView is assumed to be stable so we do not need to
|
|
101
|
+
// cleanup.
|
|
102
|
+
// See: #hot-106316
|
|
103
|
+
editorViewRef.current = editorView;
|
|
104
|
+
return {};
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}, {
|
|
109
|
+
name: 'macro',
|
|
110
|
+
plugin: function plugin(_ref3) {
|
|
111
|
+
var dispatch = _ref3.dispatch,
|
|
112
|
+
providerFactory = _ref3.providerFactory;
|
|
113
|
+
return (0, _macro.createPlugin)(dispatch, providerFactory);
|
|
114
|
+
}
|
|
115
|
+
}];
|
|
116
|
+
},
|
|
117
|
+
actions: {
|
|
118
|
+
api: function api() {
|
|
119
|
+
var _api$contextPanel2, _api$analytics;
|
|
120
|
+
return (0, _extensionApi.createExtensionAPI)({
|
|
121
|
+
editorView: editorViewRef.current,
|
|
122
|
+
applyChange: _api === null || _api === void 0 || (_api$contextPanel2 = _api.contextPanel) === null || _api$contextPanel2 === void 0 ? void 0 : _api$contextPanel2.actions.applyChange,
|
|
123
|
+
editorAnalyticsAPI: _api === null || _api === void 0 || (_api$analytics = _api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
insertMacroFromMacroBrowser: (0, _actions2.insertMacroFromMacroBrowser)(_api === null || _api === void 0 || (_api$analytics2 = _api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions),
|
|
127
|
+
editSelectedExtension: (0, _actions.createEditSelectedExtensionAction)({
|
|
128
|
+
editorViewRef: editorViewRef,
|
|
129
|
+
editorAnalyticsAPI: _api === null || _api === void 0 || (_api$analytics3 = _api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions
|
|
130
|
+
}),
|
|
131
|
+
runMacroAutoConvert: _actions2.runMacroAutoConvert,
|
|
132
|
+
forceAutoSave: _commands.forceAutoSave
|
|
133
|
+
},
|
|
134
|
+
pluginsOptions: {
|
|
135
|
+
floatingToolbar: (0, _toolbar.getToolbarConfig)({
|
|
136
|
+
breakoutEnabled: options.breakoutEnabled,
|
|
137
|
+
hoverDecoration: _api === null || _api === void 0 ? void 0 : _api.decorations.actions.hoverDecoration,
|
|
138
|
+
applyChangeToContextPanel: _api === null || _api === void 0 || (_api$contextPanel3 = _api.contextPanel) === null || _api$contextPanel3 === void 0 ? void 0 : _api$contextPanel3.actions.applyChange,
|
|
139
|
+
editorAnalyticsAPI: _api === null || _api === void 0 || (_api$analytics4 = _api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions
|
|
140
|
+
}),
|
|
141
|
+
contextPanel: (0, _contextPanel.getContextPanel)(function () {
|
|
142
|
+
var _editorViewRef$curren;
|
|
143
|
+
return (_editorViewRef$curren = editorViewRef.current) !== null && _editorViewRef$curren !== void 0 ? _editorViewRef$curren : undefined;
|
|
144
|
+
})(options.allowAutoSave, featureFlags, _api === null || _api === void 0 || (_api$contextPanel4 = _api.contextPanel) === null || _api$contextPanel4 === void 0 ? void 0 : _api$contextPanel4.actions.applyChange)
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = keymapPlugin;
|
|
7
|
+
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
8
|
+
var _keymap = require("@atlaskit/editor-prosemirror/keymap");
|
|
9
|
+
var _commands = require("../commands");
|
|
10
|
+
var _main = require("./main");
|
|
11
|
+
function keymapPlugin(applyChange) {
|
|
12
|
+
var list = {};
|
|
13
|
+
(0, _keymaps.bindKeymapWithCommand)(_keymaps.escape.common, function (state, dispatch) {
|
|
14
|
+
var extensionState = (0, _main.getPluginState)(state);
|
|
15
|
+
if (!extensionState.showContextPanel) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return (0, _commands.clearEditingContext)(applyChange)(state, dispatch);
|
|
19
|
+
}, list);
|
|
20
|
+
return (0, _keymap.keymap)(list);
|
|
21
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.setMacroProvider = exports.runMacroAutoConvert = exports.resolveMacro = exports.insertMacroFromMacroBrowser = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _assert = _interopRequireDefault(require("assert"));
|
|
12
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
13
|
+
var _insert = require("@atlaskit/editor-common/insert");
|
|
14
|
+
var _validator = require("@atlaskit/editor-common/validator");
|
|
15
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
16
|
+
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
17
|
+
var _pluginFactory = require("../../plugin-factory");
|
|
18
|
+
var _pluginKey = require("./plugin-key");
|
|
19
|
+
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; }
|
|
20
|
+
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; }
|
|
21
|
+
var insertMacroFromMacroBrowser = exports.insertMacroFromMacroBrowser = function insertMacroFromMacroBrowser(editorAnalyticsAPI) {
|
|
22
|
+
return function (macroProvider, macroNode, isEditing) {
|
|
23
|
+
return /*#__PURE__*/function () {
|
|
24
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(view) {
|
|
25
|
+
var newMacro, state, dispatch, currentLayout, node, selection, schema, _schema$nodes, extension, inlineExtension, bodiedExtension, extensionState, targetSelectionSource, tr, isBodiedExtensionSelected, pos, _macroNode$attrs, extensionType, extensionKey, layout, localId;
|
|
26
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
27
|
+
while (1) switch (_context.prev = _context.next) {
|
|
28
|
+
case 0:
|
|
29
|
+
if (macroProvider) {
|
|
30
|
+
_context.next = 2;
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
return _context.abrupt("return", false);
|
|
34
|
+
case 2:
|
|
35
|
+
_context.next = 4;
|
|
36
|
+
return macroProvider.openMacroBrowser(macroNode);
|
|
37
|
+
case 4:
|
|
38
|
+
newMacro = _context.sent;
|
|
39
|
+
if (!(newMacro && macroNode)) {
|
|
40
|
+
_context.next = 20;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
state = view.state, dispatch = view.dispatch;
|
|
44
|
+
currentLayout = macroNode && macroNode.attrs.layout || 'default';
|
|
45
|
+
node = resolveMacro(newMacro, state, {
|
|
46
|
+
layout: currentLayout
|
|
47
|
+
});
|
|
48
|
+
if (node) {
|
|
49
|
+
_context.next = 11;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
return _context.abrupt("return", false);
|
|
53
|
+
case 11:
|
|
54
|
+
selection = state.selection, schema = state.schema;
|
|
55
|
+
_schema$nodes = schema.nodes, extension = _schema$nodes.extension, inlineExtension = _schema$nodes.inlineExtension, bodiedExtension = _schema$nodes.bodiedExtension;
|
|
56
|
+
extensionState = (0, _pluginFactory.getPluginState)(state);
|
|
57
|
+
targetSelectionSource = _analytics.TARGET_SELECTION_SOURCE.CURRENT_SELECTION;
|
|
58
|
+
tr = state.tr;
|
|
59
|
+
isBodiedExtensionSelected = !!(0, _utils.findSelectedNodeOfType)([bodiedExtension])(selection); // When it's a bodiedExtension but not selected
|
|
60
|
+
if (macroNode.type === bodiedExtension && !isBodiedExtensionSelected) {
|
|
61
|
+
// `isEditing` is `false` when we are inserting from insert-block toolbar
|
|
62
|
+
tr = isEditing ? (0, _utils.replaceParentNodeOfType)(bodiedExtension, node)(tr) : (0, _utils.safeInsert)(node)(tr);
|
|
63
|
+
// Replacing selected node doesn't update the selection. `selection.node` still returns the old node
|
|
64
|
+
tr.setSelection(_state.TextSelection.create(tr.doc, state.selection.anchor));
|
|
65
|
+
}
|
|
66
|
+
// If any extension is currently selected
|
|
67
|
+
else if ((0, _utils.findSelectedNodeOfType)([extension, bodiedExtension, inlineExtension])(selection)) {
|
|
68
|
+
tr = (0, _utils.replaceSelectedNode)(node)(tr);
|
|
69
|
+
// Replacing selected node doesn't update the selection. `selection.node` still returns the old node
|
|
70
|
+
tr.setSelection(_state.NodeSelection.create(tr.doc, tr.mapping.map(state.selection.anchor)));
|
|
71
|
+
}
|
|
72
|
+
// When we loose the selection. This usually happens when Synchrony resets or changes
|
|
73
|
+
// the selection when user is in the middle of updating an extension.
|
|
74
|
+
else if (extensionState.element) {
|
|
75
|
+
pos = view.posAtDOM(extensionState.element, -1);
|
|
76
|
+
if (pos > -1) {
|
|
77
|
+
tr = tr.replaceWith(pos, pos + macroNode.nodeSize, node);
|
|
78
|
+
tr.setSelection(_state.Selection.near(tr.doc.resolve(pos)));
|
|
79
|
+
targetSelectionSource = _analytics.TARGET_SELECTION_SOURCE.HTML_ELEMENT;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Only scroll if we have anything to update, best to avoid surprise scroll
|
|
84
|
+
if (dispatch && tr.docChanged) {
|
|
85
|
+
_macroNode$attrs = macroNode.attrs, extensionType = _macroNode$attrs.extensionType, extensionKey = _macroNode$attrs.extensionKey, layout = _macroNode$attrs.layout, localId = _macroNode$attrs.localId;
|
|
86
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
|
|
87
|
+
action: _analytics.ACTION.UPDATED,
|
|
88
|
+
actionSubject: _analytics.ACTION_SUBJECT.EXTENSION,
|
|
89
|
+
actionSubjectId: macroNode.type.name,
|
|
90
|
+
eventType: _analytics.EVENT_TYPE.TRACK,
|
|
91
|
+
attributes: {
|
|
92
|
+
inputMethod: isEditing ? _analytics.INPUT_METHOD.MACRO_BROWSER : _analytics.INPUT_METHOD.TOOLBAR,
|
|
93
|
+
extensionType: extensionType,
|
|
94
|
+
extensionKey: extensionKey,
|
|
95
|
+
layout: layout,
|
|
96
|
+
localId: localId,
|
|
97
|
+
selection: tr.selection.toJSON(),
|
|
98
|
+
targetSelectionSource: targetSelectionSource
|
|
99
|
+
}
|
|
100
|
+
})(tr);
|
|
101
|
+
dispatch(tr.scrollIntoView());
|
|
102
|
+
}
|
|
103
|
+
return _context.abrupt("return", true);
|
|
104
|
+
case 20:
|
|
105
|
+
return _context.abrupt("return", false);
|
|
106
|
+
case 21:
|
|
107
|
+
case "end":
|
|
108
|
+
return _context.stop();
|
|
109
|
+
}
|
|
110
|
+
}, _callee);
|
|
111
|
+
}));
|
|
112
|
+
return function (_x) {
|
|
113
|
+
return _ref.apply(this, arguments);
|
|
114
|
+
};
|
|
115
|
+
}();
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
var resolveMacro = exports.resolveMacro = function resolveMacro(macro, state, optionalAttrs) {
|
|
119
|
+
if (!macro || !state) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
var schema = state.schema;
|
|
123
|
+
var _getValidNode = (0, _validator.getValidNode)(macro, schema),
|
|
124
|
+
type = _getValidNode.type,
|
|
125
|
+
attrs = _getValidNode.attrs;
|
|
126
|
+
var node = null;
|
|
127
|
+
if (type === 'extension') {
|
|
128
|
+
node = schema.nodes.extension.create(_objectSpread(_objectSpread({}, attrs), optionalAttrs));
|
|
129
|
+
} else if (type === 'bodiedExtension') {
|
|
130
|
+
node = schema.nodes.bodiedExtension.create(_objectSpread(_objectSpread({}, attrs), optionalAttrs), schema.nodeFromJSON(macro).content);
|
|
131
|
+
} else if (type === 'inlineExtension') {
|
|
132
|
+
node = schema.nodes.inlineExtension.create(attrs);
|
|
133
|
+
}
|
|
134
|
+
return node && (0, _insert.normaliseNestedLayout)(state, node);
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
// gets the macroProvider from the state and tries to autoConvert a given text
|
|
138
|
+
var runMacroAutoConvert = exports.runMacroAutoConvert = function runMacroAutoConvert(state, text) {
|
|
139
|
+
var macroPluginState = _pluginKey.pluginKey.getState(state);
|
|
140
|
+
var macroProvider = macroPluginState && macroPluginState.macroProvider;
|
|
141
|
+
if (!macroProvider || !macroProvider.autoConvert) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
var macroAttributes = macroProvider.autoConvert(text);
|
|
145
|
+
if (!macroAttributes) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// decides which kind of macro to render (inline|bodied|bodyless)
|
|
150
|
+
return resolveMacro(macroAttributes, state);
|
|
151
|
+
};
|
|
152
|
+
var setMacroProvider = exports.setMacroProvider = function setMacroProvider(provider) {
|
|
153
|
+
return /*#__PURE__*/function () {
|
|
154
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(view) {
|
|
155
|
+
var resolvedProvider;
|
|
156
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
157
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
158
|
+
case 0:
|
|
159
|
+
_context2.prev = 0;
|
|
160
|
+
_context2.next = 3;
|
|
161
|
+
return provider;
|
|
162
|
+
case 3:
|
|
163
|
+
resolvedProvider = _context2.sent;
|
|
164
|
+
(0, _assert.default)(resolvedProvider && resolvedProvider.openMacroBrowser, "MacroProvider promise did not resolve to a valid instance of MacroProvider - ".concat(resolvedProvider));
|
|
165
|
+
_context2.next = 10;
|
|
166
|
+
break;
|
|
167
|
+
case 7:
|
|
168
|
+
_context2.prev = 7;
|
|
169
|
+
_context2.t0 = _context2["catch"](0);
|
|
170
|
+
resolvedProvider = null;
|
|
171
|
+
case 10:
|
|
172
|
+
view.dispatch(view.state.tr.setMeta(_pluginKey.pluginKey, {
|
|
173
|
+
macroProvider: resolvedProvider
|
|
174
|
+
}));
|
|
175
|
+
return _context2.abrupt("return", true);
|
|
176
|
+
case 12:
|
|
177
|
+
case "end":
|
|
178
|
+
return _context2.stop();
|
|
179
|
+
}
|
|
180
|
+
}, _callee2, null, [[0, 7]]);
|
|
181
|
+
}));
|
|
182
|
+
return function (_x2) {
|
|
183
|
+
return _ref2.apply(this, arguments);
|
|
184
|
+
};
|
|
185
|
+
}();
|
|
186
|
+
};
|