@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
package/.eslintrc.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
rules: {
|
|
3
|
+
'@typescript-eslint/no-duplicate-imports': 'error',
|
|
4
|
+
'@typescript-eslint/no-explicit-any': 'error',
|
|
5
|
+
'@typescript-eslint/ban-types': [
|
|
6
|
+
'error',
|
|
7
|
+
{
|
|
8
|
+
types: {
|
|
9
|
+
'React.FC':
|
|
10
|
+
'Please use types directly on props instead, and explicitly define children if required',
|
|
11
|
+
'React.FunctionalComponent':
|
|
12
|
+
'Please use types directly on props instead, and explicitly define children if required',
|
|
13
|
+
},
|
|
14
|
+
extendDefaults: false,
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
overrides: [
|
|
19
|
+
{
|
|
20
|
+
files: ['**/__tests__/**/*.{js,ts,tsx}', '**/examples/**/*.{js,ts,tsx}'],
|
|
21
|
+
rules: {
|
|
22
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
};
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-extension
|
|
2
2
|
|
|
3
|
+
## 0.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#65712](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/65712) [`963b53c64eee`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/963b53c64eee) - Extract code for extension plugin from editor-core to @atlaskit/editor-plugin-extension
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
|
|
3
13
|
## 0.4.2
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.performNodeUpdate = exports.editSelectedExtension = exports.editExtension = exports.createEditSelectedExtensionAction = exports.buildExtensionNode = void 0;
|
|
8
|
+
Object.defineProperty(exports, "transformSliceToRemoveOpenBodiedExtension", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _transforms.transformSliceToRemoveOpenBodiedExtension;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
18
|
+
var _transforms = require("@atlaskit/editor-common/transforms");
|
|
19
|
+
var _state2 = require("@atlaskit/editor-prosemirror/state");
|
|
20
|
+
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
21
|
+
var _extensionApi = require("./extension-api");
|
|
22
|
+
var _main = require("./pm-plugins/main");
|
|
23
|
+
var _utils2 = require("./utils");
|
|
24
|
+
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; }
|
|
25
|
+
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; }
|
|
26
|
+
var buildExtensionNode = exports.buildExtensionNode = function buildExtensionNode(type, schema, attrs, content, marks) {
|
|
27
|
+
switch (type) {
|
|
28
|
+
case 'extension':
|
|
29
|
+
return schema.nodes.extension.createChecked(attrs, content, marks);
|
|
30
|
+
case 'inlineExtension':
|
|
31
|
+
return schema.nodes.inlineExtension.createChecked(attrs, content, marks);
|
|
32
|
+
case 'bodiedExtension':
|
|
33
|
+
return schema.nodes.bodiedExtension.create(attrs, content, marks);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var performNodeUpdate = exports.performNodeUpdate = function performNodeUpdate(editorAnalyticsAPI) {
|
|
37
|
+
return function (type, newAttrs, content, marks, shouldScrollIntoView) {
|
|
38
|
+
return function (_state, _dispatch, view) {
|
|
39
|
+
if (!view) {
|
|
40
|
+
throw Error('EditorView is required to perform node update!');
|
|
41
|
+
}
|
|
42
|
+
// NOTE: `state` and `dispatch` are stale at this point so we need to grab
|
|
43
|
+
// the latest one from `view` @see HOT-93986
|
|
44
|
+
var state = view.state,
|
|
45
|
+
dispatch = view.dispatch;
|
|
46
|
+
var newNode = buildExtensionNode(type, state.schema, newAttrs, content, marks);
|
|
47
|
+
if (!newNode) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
var selection = state.selection,
|
|
51
|
+
schema = state.schema;
|
|
52
|
+
var _schema$nodes = schema.nodes,
|
|
53
|
+
extension = _schema$nodes.extension,
|
|
54
|
+
inlineExtension = _schema$nodes.inlineExtension,
|
|
55
|
+
bodiedExtension = _schema$nodes.bodiedExtension;
|
|
56
|
+
var isBodiedExtensionSelected = !!(0, _utils.findSelectedNodeOfType)([bodiedExtension])(selection);
|
|
57
|
+
var extensionState = (0, _main.getPluginState)(state);
|
|
58
|
+
var targetSelectionSource = _analytics.TARGET_SELECTION_SOURCE.CURRENT_SELECTION;
|
|
59
|
+
var action = _analytics.ACTION.UPDATED;
|
|
60
|
+
var tr = state.tr;
|
|
61
|
+
|
|
62
|
+
// When it's a bodiedExtension but not selected
|
|
63
|
+
if (newNode.type === bodiedExtension && !isBodiedExtensionSelected) {
|
|
64
|
+
// Bodied extensions can trigger an update when the cursor is inside which means that there is no node selected.
|
|
65
|
+
// To work around that we replace the parent and create a text selection instead of new node selection
|
|
66
|
+
tr = (0, _utils.replaceParentNodeOfType)(state.schema.nodes.bodiedExtension, newNode)(tr);
|
|
67
|
+
// Replacing selected node doesn't update the selection. `selection.node` still returns the old node
|
|
68
|
+
tr.setSelection(_state2.TextSelection.create(tr.doc, state.selection.anchor));
|
|
69
|
+
}
|
|
70
|
+
// If any extension is currently selected
|
|
71
|
+
else if ((0, _utils.findSelectedNodeOfType)([extension, bodiedExtension, inlineExtension])(selection)) {
|
|
72
|
+
tr = (0, _utils.replaceSelectedNode)(newNode)(tr);
|
|
73
|
+
// Replacing selected node doesn't update the selection. `selection.node` still returns the old node
|
|
74
|
+
tr.setSelection(_state2.NodeSelection.create(tr.doc, tr.mapping.map(state.selection.anchor)));
|
|
75
|
+
}
|
|
76
|
+
// When we loose the selection. This usually happens when Synchrony resets or changes
|
|
77
|
+
// the selection when user is in the middle of updating an extension.
|
|
78
|
+
else if (extensionState.element) {
|
|
79
|
+
var pos = view.posAtDOM(extensionState.element, -1);
|
|
80
|
+
if (pos > -1) {
|
|
81
|
+
tr = tr.replaceWith(pos, pos + (content.size || 0) + 1, newNode);
|
|
82
|
+
tr.setSelection(_state2.Selection.near(tr.doc.resolve(pos)));
|
|
83
|
+
targetSelectionSource = _analytics.TARGET_SELECTION_SOURCE.HTML_ELEMENT;
|
|
84
|
+
} else {
|
|
85
|
+
action = _analytics.ACTION.ERRORED;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Only scroll if we have anything to update, best to avoid surprise scroll
|
|
90
|
+
if (dispatch && tr.docChanged) {
|
|
91
|
+
var _newNode$attrs = newNode.attrs,
|
|
92
|
+
extensionType = _newNode$attrs.extensionType,
|
|
93
|
+
extensionKey = _newNode$attrs.extensionKey,
|
|
94
|
+
layout = _newNode$attrs.layout,
|
|
95
|
+
localId = _newNode$attrs.localId;
|
|
96
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
|
|
97
|
+
action: action,
|
|
98
|
+
actionSubject: _analytics.ACTION_SUBJECT.EXTENSION,
|
|
99
|
+
actionSubjectId: newNode.type.name,
|
|
100
|
+
eventType: _analytics.EVENT_TYPE.TRACK,
|
|
101
|
+
attributes: {
|
|
102
|
+
inputMethod: _analytics.INPUT_METHOD.CONFIG_PANEL,
|
|
103
|
+
extensionType: extensionType,
|
|
104
|
+
extensionKey: extensionKey,
|
|
105
|
+
layout: layout,
|
|
106
|
+
localId: localId,
|
|
107
|
+
selection: tr.selection.toJSON(),
|
|
108
|
+
targetSelectionSource: targetSelectionSource
|
|
109
|
+
}
|
|
110
|
+
})(tr);
|
|
111
|
+
dispatch(shouldScrollIntoView ? tr.scrollIntoView() : tr);
|
|
112
|
+
}
|
|
113
|
+
return true;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
var updateExtensionParams = function updateExtensionParams(editorAnalyticsAPI) {
|
|
118
|
+
return function (updateExtension, node, actions) {
|
|
119
|
+
return /*#__PURE__*/function () {
|
|
120
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(state, dispatch, view) {
|
|
121
|
+
var _node$node, attrs, type, content, marks, parameters, newParameters, newAttrs;
|
|
122
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
123
|
+
while (1) switch (_context.prev = _context.next) {
|
|
124
|
+
case 0:
|
|
125
|
+
_node$node = node.node, attrs = _node$node.attrs, type = _node$node.type, content = _node$node.content, marks = _node$node.marks;
|
|
126
|
+
if (state.schema.nodes[type.name]) {
|
|
127
|
+
_context.next = 3;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
return _context.abrupt("return", false);
|
|
131
|
+
case 3:
|
|
132
|
+
parameters = attrs.parameters;
|
|
133
|
+
_context.prev = 4;
|
|
134
|
+
_context.next = 7;
|
|
135
|
+
return updateExtension(parameters, actions);
|
|
136
|
+
case 7:
|
|
137
|
+
newParameters = _context.sent;
|
|
138
|
+
if (!newParameters) {
|
|
139
|
+
_context.next = 11;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
newAttrs = _objectSpread(_objectSpread({}, attrs), {}, {
|
|
143
|
+
parameters: _objectSpread(_objectSpread({}, parameters), newParameters)
|
|
144
|
+
});
|
|
145
|
+
return _context.abrupt("return", performNodeUpdate(editorAnalyticsAPI)(type.name, newAttrs, content, marks, true)(state, dispatch, view));
|
|
146
|
+
case 11:
|
|
147
|
+
_context.next = 15;
|
|
148
|
+
break;
|
|
149
|
+
case 13:
|
|
150
|
+
_context.prev = 13;
|
|
151
|
+
_context.t0 = _context["catch"](4);
|
|
152
|
+
case 15:
|
|
153
|
+
return _context.abrupt("return", true);
|
|
154
|
+
case 16:
|
|
155
|
+
case "end":
|
|
156
|
+
return _context.stop();
|
|
157
|
+
}
|
|
158
|
+
}, _callee, null, [[4, 13]]);
|
|
159
|
+
}));
|
|
160
|
+
return function (_x, _x2, _x3) {
|
|
161
|
+
return _ref.apply(this, arguments);
|
|
162
|
+
};
|
|
163
|
+
}();
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// This is to decouple extensions from editor core
|
|
168
|
+
// Ideally in the future we completely deprecate `EditorActions`
|
|
169
|
+
var editSelectedExtension = exports.editSelectedExtension = function editSelectedExtension(editorActions) {
|
|
170
|
+
var editorView = editorActions._privateGetEditorView();
|
|
171
|
+
var _getPluginState = (0, _main.getPluginState)(editorView.state),
|
|
172
|
+
updateExtension = _getPluginState.updateExtension,
|
|
173
|
+
applyChangeToContextPanel = _getPluginState.applyChangeToContextPanel;
|
|
174
|
+
// The analytics API cannot be accessed in this case because
|
|
175
|
+
// we do not have access to the plugin injection API. Rather
|
|
176
|
+
// than change the way this works - we just won't use analytics
|
|
177
|
+
// here for now.
|
|
178
|
+
var editorAnalyticsAPI = undefined;
|
|
179
|
+
return editExtension(null, applyChangeToContextPanel, editorAnalyticsAPI, updateExtension)(editorView.state, editorView.dispatch, editorView);
|
|
180
|
+
};
|
|
181
|
+
var editExtension = exports.editExtension = function editExtension(macroProvider, applyChangeToContextPanel, editorAnalyticsAPI, updateExtension) {
|
|
182
|
+
return function (state, dispatch, view) {
|
|
183
|
+
if (!view) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
var _getPluginState2 = (0, _main.getPluginState)(state),
|
|
187
|
+
localId = _getPluginState2.localId;
|
|
188
|
+
var nodeWithPos = (0, _utils2.findExtensionWithLocalId)(state, localId);
|
|
189
|
+
if (!nodeWithPos) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
var editInLegacyMacroBrowser = (0, _extensionApi.getEditInLegacyMacroBrowser)({
|
|
193
|
+
view: view,
|
|
194
|
+
macroProvider: macroProvider || undefined,
|
|
195
|
+
editorAnalyticsAPI: editorAnalyticsAPI
|
|
196
|
+
});
|
|
197
|
+
if (updateExtension) {
|
|
198
|
+
updateExtension.then(function (updateMethod) {
|
|
199
|
+
if (updateMethod && view) {
|
|
200
|
+
var actions = (0, _extensionApi.createExtensionAPI)({
|
|
201
|
+
editorView: view,
|
|
202
|
+
editInLegacyMacroBrowser: editInLegacyMacroBrowser,
|
|
203
|
+
applyChange: applyChangeToContextPanel,
|
|
204
|
+
editorAnalyticsAPI: editorAnalyticsAPI
|
|
205
|
+
});
|
|
206
|
+
updateExtensionParams(editorAnalyticsAPI)(updateMethod, nodeWithPos, actions)(state, dispatch, view);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (!updateMethod && macroProvider) {
|
|
210
|
+
editInLegacyMacroBrowser();
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
} else {
|
|
215
|
+
if (!macroProvider) {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
editInLegacyMacroBrowser();
|
|
219
|
+
}
|
|
220
|
+
return true;
|
|
221
|
+
};
|
|
222
|
+
};
|
|
223
|
+
var createEditSelectedExtensionAction = exports.createEditSelectedExtensionAction = function createEditSelectedExtensionAction(_ref2) {
|
|
224
|
+
var editorViewRef = _ref2.editorViewRef,
|
|
225
|
+
editorAnalyticsAPI = _ref2.editorAnalyticsAPI;
|
|
226
|
+
return function () {
|
|
227
|
+
var view = editorViewRef.current;
|
|
228
|
+
if (!view) {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
var _getPluginState3 = (0, _main.getPluginState)(view.state),
|
|
232
|
+
updateExtension = _getPluginState3.updateExtension,
|
|
233
|
+
applyChangeToContextPanel = _getPluginState3.applyChangeToContextPanel;
|
|
234
|
+
return editExtension(null, applyChangeToContextPanel, editorAnalyticsAPI, updateExtension)(view.state, view.dispatch, view);
|
|
235
|
+
};
|
|
236
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.removeExtension = exports.removeDescendantNodes = exports.forceAutoSave = exports.clearEditingContext = exports.checkAndRemoveExtensionNode = void 0;
|
|
8
|
+
exports.setEditingContextToContextPanel = setEditingContextToContextPanel;
|
|
9
|
+
exports.updateExtensionLayout = void 0;
|
|
10
|
+
exports.updateState = updateState;
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
13
|
+
var _utils = require("@atlaskit/editor-common/utils");
|
|
14
|
+
var _utils2 = require("@atlaskit/editor-prosemirror/utils");
|
|
15
|
+
var _pluginFactory = require("./plugin-factory");
|
|
16
|
+
var _utils3 = require("./utils");
|
|
17
|
+
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; }
|
|
18
|
+
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; }
|
|
19
|
+
// AFP-2532 TODO: Fix automatic suppressions below
|
|
20
|
+
// eslint-disable-next-line @atlassian/tangerine/import/entry-points
|
|
21
|
+
|
|
22
|
+
function updateState(state) {
|
|
23
|
+
return (0, _pluginFactory.createCommand)({
|
|
24
|
+
type: 'UPDATE_STATE',
|
|
25
|
+
data: state
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function setEditingContextToContextPanel(processParametersBefore, processParametersAfter, applyChangeToContextPanel) {
|
|
29
|
+
return (0, _pluginFactory.createCommand)({
|
|
30
|
+
type: 'UPDATE_STATE',
|
|
31
|
+
data: {
|
|
32
|
+
showContextPanel: true,
|
|
33
|
+
processParametersBefore: processParametersBefore,
|
|
34
|
+
processParametersAfter: processParametersAfter
|
|
35
|
+
}
|
|
36
|
+
}, applyChangeToContextPanel);
|
|
37
|
+
}
|
|
38
|
+
var clearEditingContext = exports.clearEditingContext = function clearEditingContext(applyChangeToContextPanel) {
|
|
39
|
+
return (0, _pluginFactory.createCommand)({
|
|
40
|
+
type: 'UPDATE_STATE',
|
|
41
|
+
data: {
|
|
42
|
+
showContextPanel: false,
|
|
43
|
+
processParametersBefore: undefined,
|
|
44
|
+
processParametersAfter: undefined
|
|
45
|
+
}
|
|
46
|
+
}, applyChangeToContextPanel);
|
|
47
|
+
};
|
|
48
|
+
var forceAutoSave = exports.forceAutoSave = function forceAutoSave(applyChangeToContextPanel) {
|
|
49
|
+
return function (resolve, reject) {
|
|
50
|
+
return (0, _pluginFactory.createCommand)({
|
|
51
|
+
type: 'UPDATE_STATE',
|
|
52
|
+
data: {
|
|
53
|
+
autoSaveResolve: resolve,
|
|
54
|
+
autoSaveReject: reject
|
|
55
|
+
}
|
|
56
|
+
}, applyChangeToContextPanel);
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
var updateExtensionLayout = exports.updateExtensionLayout = function updateExtensionLayout(layout) {
|
|
60
|
+
return (0, _pluginFactory.createCommand)({
|
|
61
|
+
type: 'UPDATE_STATE',
|
|
62
|
+
data: {
|
|
63
|
+
layout: layout
|
|
64
|
+
}
|
|
65
|
+
}, function (tr, state) {
|
|
66
|
+
var selectedExtension = (0, _utils3.getSelectedExtension)(state, true);
|
|
67
|
+
if (selectedExtension) {
|
|
68
|
+
var trWithNewNodeMarkup = tr.setNodeMarkup(selectedExtension.pos, undefined, _objectSpread(_objectSpread({}, selectedExtension.node.attrs), {}, {
|
|
69
|
+
layout: layout
|
|
70
|
+
}));
|
|
71
|
+
trWithNewNodeMarkup.setMeta('scrollIntoView', false);
|
|
72
|
+
return trWithNewNodeMarkup;
|
|
73
|
+
}
|
|
74
|
+
return tr;
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
var removeExtension = exports.removeExtension = function removeExtension(editorAnalyticsAPI) {
|
|
78
|
+
return (0, _pluginFactory.createCommand)({
|
|
79
|
+
type: 'UPDATE_STATE',
|
|
80
|
+
data: {
|
|
81
|
+
element: undefined
|
|
82
|
+
}
|
|
83
|
+
}, function (tr, state) {
|
|
84
|
+
if ((0, _utils3.getSelectedExtension)(state)) {
|
|
85
|
+
return (0, _utils2.removeSelectedNode)(tr);
|
|
86
|
+
} else {
|
|
87
|
+
return checkAndRemoveExtensionNode(state, tr, editorAnalyticsAPI);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
var removeDescendantNodes = exports.removeDescendantNodes = function removeDescendantNodes(sourceNode) {
|
|
92
|
+
return (0, _pluginFactory.createCommand)({
|
|
93
|
+
type: 'UPDATE_STATE',
|
|
94
|
+
data: {
|
|
95
|
+
element: undefined
|
|
96
|
+
}
|
|
97
|
+
}, function (tr, state) {
|
|
98
|
+
return sourceNode ? (0, _utils.removeConnectedNodes)(state, sourceNode) : tr;
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
var checkAndRemoveExtensionNode = exports.checkAndRemoveExtensionNode = function checkAndRemoveExtensionNode(state, tr, analyticsApi) {
|
|
102
|
+
var nodeType = state.schema.nodes.bodiedExtension;
|
|
103
|
+
var maybeMBENode = (0, _utils2.findParentNodeOfType)(state.schema.nodes.multiBodiedExtension)(state.selection);
|
|
104
|
+
if (maybeMBENode) {
|
|
105
|
+
nodeType = state.schema.nodes.multiBodiedExtension;
|
|
106
|
+
if (analyticsApi) {
|
|
107
|
+
analyticsApi.attachAnalyticsEvent({
|
|
108
|
+
action: _analytics.ACTION.DELETED,
|
|
109
|
+
actionSubject: _analytics.ACTION_SUBJECT.MULTI_BODIED_EXTENSION,
|
|
110
|
+
eventType: _analytics.EVENT_TYPE.TRACK,
|
|
111
|
+
attributes: {
|
|
112
|
+
extensionType: maybeMBENode.node.attrs.extensionType,
|
|
113
|
+
extensionKey: maybeMBENode.node.attrs.extensionKey,
|
|
114
|
+
localId: maybeMBENode.node.attrs.localId,
|
|
115
|
+
maxFramesCount: maybeMBENode.node.attrs.maxFrames,
|
|
116
|
+
currentFramesCount: maybeMBENode.node.content.childCount
|
|
117
|
+
}
|
|
118
|
+
})(tr);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return (0, _utils2.removeParentNodeOfType)(nodeType)(tr);
|
|
122
|
+
};
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getContextPanel = exports.duplicateSelection = void 0;
|
|
8
|
+
exports.onChangeAction = onChangeAction;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
|
+
var _extensions = require("@atlaskit/editor-common/extensions");
|
|
16
|
+
var _selection = require("@atlaskit/editor-common/selection");
|
|
17
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
18
|
+
var _cellSelection = require("@atlaskit/editor-tables/cell-selection");
|
|
19
|
+
var _actions = require("./actions");
|
|
20
|
+
var _commands = require("./commands");
|
|
21
|
+
var _main = require("./pm-plugins/main");
|
|
22
|
+
var _ConfigPanelLoader = _interopRequireDefault(require("./ui/ConfigPanel/ConfigPanelLoader"));
|
|
23
|
+
var _SaveIndicator = require("./ui/SaveIndicator/SaveIndicator");
|
|
24
|
+
var _utils = require("./utils");
|
|
25
|
+
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; }
|
|
26
|
+
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; }
|
|
27
|
+
var areParametersEqual = function areParametersEqual(firstParameters, secondParameters) {
|
|
28
|
+
if ((0, _typeof2.default)(firstParameters) === 'object' && (0, _typeof2.default)(secondParameters) === 'object' && firstParameters !== null && secondParameters !== null) {
|
|
29
|
+
var firstKeys = Object.keys(firstParameters);
|
|
30
|
+
var secondKeys = Object.keys(secondParameters);
|
|
31
|
+
return firstKeys.length === secondKeys.length && firstKeys.every(function (key) {
|
|
32
|
+
return firstParameters[key] === secondParameters[key];
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return firstParameters === secondParameters;
|
|
36
|
+
};
|
|
37
|
+
var duplicateSelection = exports.duplicateSelection = function duplicateSelection(selectionToDuplicate, doc) {
|
|
38
|
+
if (selectionToDuplicate instanceof _state.NodeSelection) {
|
|
39
|
+
return _state.NodeSelection.create(doc, selectionToDuplicate.from);
|
|
40
|
+
} else if (selectionToDuplicate instanceof _state.TextSelection) {
|
|
41
|
+
return _state.TextSelection.create(doc, selectionToDuplicate.from, selectionToDuplicate.to);
|
|
42
|
+
} else if (selectionToDuplicate instanceof _selection.GapCursorSelection) {
|
|
43
|
+
return new _selection.GapCursorSelection(doc.resolve(selectionToDuplicate.from), selectionToDuplicate.side);
|
|
44
|
+
} else if (selectionToDuplicate instanceof _cellSelection.CellSelection) {
|
|
45
|
+
return new _cellSelection.CellSelection(doc.resolve(selectionToDuplicate.$anchorCell.pos), doc.resolve(selectionToDuplicate.$headCell.pos));
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var getContextPanel = exports.getContextPanel = function getContextPanel(getEditorView) {
|
|
49
|
+
return function (allowAutoSave, featureFlags, applyChange) {
|
|
50
|
+
return function (state) {
|
|
51
|
+
var nodeWithPos = (0, _utils.getSelectedExtension)(state, true);
|
|
52
|
+
|
|
53
|
+
// Adding checks to bail out early
|
|
54
|
+
if (!nodeWithPos) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
var extensionState = (0, _main.getPluginState)(state);
|
|
58
|
+
var autoSaveResolve = extensionState.autoSaveResolve,
|
|
59
|
+
autoSaveReject = extensionState.autoSaveReject,
|
|
60
|
+
showContextPanel = extensionState.showContextPanel,
|
|
61
|
+
extensionProvider = extensionState.extensionProvider,
|
|
62
|
+
processParametersBefore = extensionState.processParametersBefore,
|
|
63
|
+
processParametersAfter = extensionState.processParametersAfter;
|
|
64
|
+
if (extensionState && showContextPanel && extensionProvider && processParametersAfter) {
|
|
65
|
+
var _nodeWithPos$node$att = nodeWithPos.node.attrs,
|
|
66
|
+
extensionType = _nodeWithPos$node$att.extensionType,
|
|
67
|
+
extensionKey = _nodeWithPos$node$att.extensionKey,
|
|
68
|
+
parameters = _nodeWithPos$node$att.parameters;
|
|
69
|
+
var _getExtensionKeyAndNo = (0, _extensions.getExtensionKeyAndNodeKey)(extensionKey, extensionType),
|
|
70
|
+
_getExtensionKeyAndNo2 = (0, _slicedToArray2.default)(_getExtensionKeyAndNo, 2),
|
|
71
|
+
extKey = _getExtensionKeyAndNo2[0],
|
|
72
|
+
nodeKey = _getExtensionKeyAndNo2[1];
|
|
73
|
+
var configParams = processParametersBefore ? processParametersBefore(parameters || {}) : parameters;
|
|
74
|
+
return /*#__PURE__*/_react.default.createElement(_SaveIndicator.SaveIndicator, {
|
|
75
|
+
duration: 5000,
|
|
76
|
+
visible: allowAutoSave
|
|
77
|
+
}, function (_ref) {
|
|
78
|
+
var onSaveStarted = _ref.onSaveStarted,
|
|
79
|
+
onSaveEnded = _ref.onSaveEnded;
|
|
80
|
+
var editorView = getEditorView === null || getEditorView === void 0 ? void 0 : getEditorView();
|
|
81
|
+
if (!editorView) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
return /*#__PURE__*/_react.default.createElement(_ConfigPanelLoader.default, {
|
|
85
|
+
showHeader: true,
|
|
86
|
+
closeOnEsc: true,
|
|
87
|
+
extensionType: extensionType,
|
|
88
|
+
extensionKey: extKey,
|
|
89
|
+
nodeKey: nodeKey,
|
|
90
|
+
extensionParameters: parameters,
|
|
91
|
+
parameters: configParams,
|
|
92
|
+
extensionProvider: extensionProvider,
|
|
93
|
+
autoSave: allowAutoSave,
|
|
94
|
+
autoSaveTrigger: autoSaveResolve,
|
|
95
|
+
autoSaveReject: autoSaveReject,
|
|
96
|
+
onChange: /*#__PURE__*/function () {
|
|
97
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(updatedParameters) {
|
|
98
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
99
|
+
while (1) switch (_context.prev = _context.next) {
|
|
100
|
+
case 0:
|
|
101
|
+
_context.next = 2;
|
|
102
|
+
return onChangeAction(editorView, updatedParameters, parameters, nodeWithPos, onSaveStarted);
|
|
103
|
+
case 2:
|
|
104
|
+
onSaveEnded();
|
|
105
|
+
if (autoSaveResolve) {
|
|
106
|
+
autoSaveResolve();
|
|
107
|
+
}
|
|
108
|
+
if (!allowAutoSave) {
|
|
109
|
+
(0, _commands.clearEditingContext)(applyChange)(editorView.state, editorView.dispatch);
|
|
110
|
+
}
|
|
111
|
+
case 5:
|
|
112
|
+
case "end":
|
|
113
|
+
return _context.stop();
|
|
114
|
+
}
|
|
115
|
+
}, _callee);
|
|
116
|
+
}));
|
|
117
|
+
return function (_x) {
|
|
118
|
+
return _ref2.apply(this, arguments);
|
|
119
|
+
};
|
|
120
|
+
}(),
|
|
121
|
+
onCancel: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
122
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
123
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
124
|
+
case 0:
|
|
125
|
+
if (!allowAutoSave) {
|
|
126
|
+
_context2.next = 9;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
_context2.prev = 1;
|
|
130
|
+
_context2.next = 4;
|
|
131
|
+
return new Promise(function (resolve, reject) {
|
|
132
|
+
(0, _commands.forceAutoSave)(applyChange)(resolve, reject)(editorView.state, editorView.dispatch);
|
|
133
|
+
});
|
|
134
|
+
case 4:
|
|
135
|
+
_context2.next = 9;
|
|
136
|
+
break;
|
|
137
|
+
case 6:
|
|
138
|
+
_context2.prev = 6;
|
|
139
|
+
_context2.t0 = _context2["catch"](1);
|
|
140
|
+
// Even if the save failed, we should proceed with closing the panel
|
|
141
|
+
// eslint-disable-next-line no-console
|
|
142
|
+
console.error("Autosave failed with error", _context2.t0);
|
|
143
|
+
case 9:
|
|
144
|
+
(0, _commands.clearEditingContext)(applyChange)(editorView.state, editorView.dispatch);
|
|
145
|
+
case 10:
|
|
146
|
+
case "end":
|
|
147
|
+
return _context2.stop();
|
|
148
|
+
}
|
|
149
|
+
}, _callee2, null, [[1, 6]]);
|
|
150
|
+
})),
|
|
151
|
+
featureFlags: featureFlags
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
function onChangeAction(_x2) {
|
|
159
|
+
return _onChangeAction.apply(this, arguments);
|
|
160
|
+
}
|
|
161
|
+
function _onChangeAction() {
|
|
162
|
+
_onChangeAction = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(editorView) {
|
|
163
|
+
var updatedParameters,
|
|
164
|
+
oldParameters,
|
|
165
|
+
nodeWithPos,
|
|
166
|
+
onSaving,
|
|
167
|
+
_ref4,
|
|
168
|
+
processParametersAfter,
|
|
169
|
+
processParametersBefore,
|
|
170
|
+
unwrappedOldParameters,
|
|
171
|
+
key,
|
|
172
|
+
_ref5,
|
|
173
|
+
previousPositions,
|
|
174
|
+
newParameters,
|
|
175
|
+
_ref6,
|
|
176
|
+
positions,
|
|
177
|
+
node,
|
|
178
|
+
newNode,
|
|
179
|
+
positionUpdated,
|
|
180
|
+
transaction,
|
|
181
|
+
prevSelection,
|
|
182
|
+
selection,
|
|
183
|
+
positionsLess,
|
|
184
|
+
_args3 = arguments;
|
|
185
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
186
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
187
|
+
case 0:
|
|
188
|
+
updatedParameters = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
|
|
189
|
+
oldParameters = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : {};
|
|
190
|
+
nodeWithPos = _args3.length > 3 ? _args3[3] : undefined;
|
|
191
|
+
onSaving = _args3.length > 4 ? _args3[4] : undefined;
|
|
192
|
+
// WARNING: editorView.state stales quickly, do not unpack
|
|
193
|
+
_ref4 = (0, _main.getPluginState)(editorView.state), processParametersAfter = _ref4.processParametersAfter, processParametersBefore = _ref4.processParametersBefore;
|
|
194
|
+
if (processParametersAfter) {
|
|
195
|
+
_context3.next = 7;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
return _context3.abrupt("return");
|
|
199
|
+
case 7:
|
|
200
|
+
unwrappedOldParameters = processParametersBefore ? processParametersBefore(oldParameters) : oldParameters; // todo: update to only check parameters which are in the manifest's field definitions
|
|
201
|
+
if (!areParametersEqual(unwrappedOldParameters, updatedParameters)) {
|
|
202
|
+
_context3.next = 10;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
return _context3.abrupt("return");
|
|
206
|
+
case 10:
|
|
207
|
+
if (onSaving) {
|
|
208
|
+
onSaving();
|
|
209
|
+
}
|
|
210
|
+
key = Date.now();
|
|
211
|
+
_ref5 = (0, _main.getPluginState)(editorView.state), previousPositions = _ref5.positions;
|
|
212
|
+
_context3.next = 15;
|
|
213
|
+
return (0, _commands.updateState)({
|
|
214
|
+
positions: _objectSpread(_objectSpread({}, previousPositions), {}, (0, _defineProperty2.default)({}, key, nodeWithPos.pos))
|
|
215
|
+
})(editorView.state, editorView.dispatch);
|
|
216
|
+
case 15:
|
|
217
|
+
_context3.next = 17;
|
|
218
|
+
return processParametersAfter(updatedParameters);
|
|
219
|
+
case 17:
|
|
220
|
+
newParameters = _context3.sent;
|
|
221
|
+
_ref6 = (0, _main.getPluginState)(editorView.state), positions = _ref6.positions;
|
|
222
|
+
if (positions) {
|
|
223
|
+
_context3.next = 21;
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
return _context3.abrupt("return");
|
|
227
|
+
case 21:
|
|
228
|
+
if (key in positions) {
|
|
229
|
+
_context3.next = 23;
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
return _context3.abrupt("return");
|
|
233
|
+
case 23:
|
|
234
|
+
node = nodeWithPos.node;
|
|
235
|
+
newNode = (0, _actions.buildExtensionNode)(nodeWithPos.node.toJSON().type, editorView.state.schema, _objectSpread(_objectSpread({}, node.attrs), {}, {
|
|
236
|
+
parameters: _objectSpread(_objectSpread({}, oldParameters), newParameters)
|
|
237
|
+
}), node.content, node.marks);
|
|
238
|
+
if (newNode) {
|
|
239
|
+
_context3.next = 27;
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
return _context3.abrupt("return");
|
|
243
|
+
case 27:
|
|
244
|
+
positionUpdated = positions[key];
|
|
245
|
+
transaction = editorView.state.tr.replaceWith(positionUpdated, positionUpdated + newNode.nodeSize, newNode); // Ensure we preserve the selection, tr.replaceWith causes it to be lost in some cases
|
|
246
|
+
// when replacing the node
|
|
247
|
+
prevSelection = editorView.state.selection;
|
|
248
|
+
if (!prevSelection.eq(transaction.selection)) {
|
|
249
|
+
selection = duplicateSelection(prevSelection, transaction.doc);
|
|
250
|
+
if (selection) {
|
|
251
|
+
transaction.setSelection(selection);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
positionsLess = _objectSpread({}, (0, _main.getPluginState)(editorView.state).positions);
|
|
255
|
+
delete positionsLess[key];
|
|
256
|
+
_context3.next = 35;
|
|
257
|
+
return (0, _commands.updateState)({
|
|
258
|
+
positions: positionsLess
|
|
259
|
+
})(editorView.state, editorView.dispatch);
|
|
260
|
+
case 35:
|
|
261
|
+
editorView.dispatch(transaction);
|
|
262
|
+
case 36:
|
|
263
|
+
case "end":
|
|
264
|
+
return _context3.stop();
|
|
265
|
+
}
|
|
266
|
+
}, _callee3);
|
|
267
|
+
}));
|
|
268
|
+
return _onChangeAction.apply(this, arguments);
|
|
269
|
+
}
|