@contentful/field-editor-rich-text 3.12.5 → 3.12.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/cjs/Toolbar/components/EmbedEntityWidget.js +2 -2
  2. package/dist/cjs/plugins/EmbeddedEntityBlock/LinkedEntityBlock.js +1 -1
  3. package/dist/cjs/plugins/EmbeddedEntityInline/LinkedEntityInline.js +97 -0
  4. package/dist/cjs/plugins/EmbeddedEntityInline/index.js +8 -191
  5. package/dist/cjs/plugins/EmbeddedResourceBlock/LinkedResourceBlock.js +1 -1
  6. package/dist/cjs/plugins/shared/EmbeddedInlineToolbarIcon.js +100 -0
  7. package/dist/cjs/plugins/shared/EmbeddedInlineUtil.js +88 -0
  8. package/dist/cjs/plugins/shared/LinkedBlockWrapper.js +4 -5
  9. package/dist/cjs/plugins/shared/LinkedInlineWrapper.js +85 -0
  10. package/dist/cjs/plugins/shared/utils.js +12 -0
  11. package/dist/esm/Toolbar/components/EmbedEntityWidget.js +2 -2
  12. package/dist/esm/plugins/EmbeddedEntityBlock/LinkedEntityBlock.js +1 -1
  13. package/dist/esm/plugins/EmbeddedEntityInline/LinkedEntityInline.js +48 -0
  14. package/dist/esm/plugins/EmbeddedEntityInline/index.js +3 -134
  15. package/dist/esm/plugins/EmbeddedResourceBlock/LinkedResourceBlock.js +1 -1
  16. package/dist/esm/plugins/shared/EmbeddedInlineToolbarIcon.js +46 -0
  17. package/dist/esm/plugins/shared/EmbeddedInlineUtil.js +62 -0
  18. package/dist/esm/plugins/shared/LinkedBlockWrapper.js +4 -5
  19. package/dist/esm/plugins/shared/LinkedInlineWrapper.js +31 -0
  20. package/dist/esm/plugins/shared/utils.js +2 -0
  21. package/dist/types/plugins/EmbeddedEntityBlock/LinkedEntityBlock.d.ts +2 -7
  22. package/dist/types/plugins/EmbeddedEntityInline/LinkedEntityInline.d.ts +14 -0
  23. package/dist/types/plugins/EmbeddedEntityInline/index.d.ts +0 -7
  24. package/dist/types/plugins/shared/EmbeddedInlineToolbarIcon.d.ts +7 -0
  25. package/dist/types/plugins/shared/EmbeddedInlineUtil.d.ts +22 -0
  26. package/dist/types/plugins/shared/LinkedBlockWrapper.d.ts +4 -19
  27. package/dist/types/plugins/shared/LinkedInlineWrapper.d.ts +10 -0
  28. package/dist/types/plugins/shared/utils.d.ts +2 -0
  29. package/package.json +3 -3
  30. package/dist/cjs/plugins/EmbeddedEntityInline/Util.js +0 -30
  31. package/dist/esm/plugins/EmbeddedEntityInline/Util.js +0 -20
  32. package/dist/types/plugins/EmbeddedEntityInline/Util.d.ts +0 -16
@@ -13,8 +13,8 @@ const _richtexttypes = require("@contentful/rich-text-types");
13
13
  const _ContentfulEditorProvider = require("../../ContentfulEditorProvider");
14
14
  const _editor = require("../../helpers/editor");
15
15
  const _validations = require("../../helpers/validations");
16
- const _EmbeddedEntityInline = require("../../plugins/EmbeddedEntityInline");
17
16
  const _EmbeddedBlockToolbarIcon = require("../../plugins/shared/EmbeddedBlockToolbarIcon");
17
+ const _EmbeddedInlineToolbarIcon = require("../../plugins/shared/EmbeddedInlineToolbarIcon");
18
18
  const _SdkProvider = require("../../SdkProvider");
19
19
  const _EmbeddedEntityDropdownButton = require("./EmbeddedEntityDropdownButton");
20
20
  function _getRequireWildcardCache(nodeInterop) {
@@ -74,7 +74,7 @@ const EmbedEntityWidget = ({ isDisabled , canInsertBlocks })=>{
74
74
  isDisabled: !!isDisabled,
75
75
  nodeType: _richtexttypes.BLOCKS.EMBEDDED_RESOURCE,
76
76
  onClose: onCloseEntityDropdown
77
- }), inlineEntryEmbedEnabled && _react.default.createElement(_EmbeddedEntityInline.ToolbarEmbeddedEntityInlineButton, {
77
+ }), inlineEntryEmbedEnabled && _react.default.createElement(_EmbeddedInlineToolbarIcon.EmbeddedInlineToolbarIcon, {
78
78
  isDisabled: !!isDisabled || (0, _editor.isLinkActive)(editor),
79
79
  onClose: onCloseEntityDropdown
80
80
  }), blockAssetEmbedEnabled && _react.default.createElement(_EmbeddedBlockToolbarIcon.EmbeddedBlockToolbarIcon, {
@@ -106,6 +106,6 @@ function LinkedEntityBlock(props) {
106
106
  onEdit: handleEditClick,
107
107
  onEntityFetchComplete: onEntityFetchComplete
108
108
  })),
109
- element: element
109
+ link: element.data.target
110
110
  }, children);
111
111
  }
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "LinkedEntityInline", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return LinkedEntityInline;
9
+ }
10
+ });
11
+ const _react = _interop_require_wildcard(require("react"));
12
+ const _slatereact = require("slate-react");
13
+ const _ContentfulEditorProvider = require("../../ContentfulEditorProvider");
14
+ const _editor = require("../../helpers/editor");
15
+ const _queries = require("../../internal/queries");
16
+ const _transforms = require("../../internal/transforms");
17
+ const _SdkProvider = require("../../SdkProvider");
18
+ const _linkstracking = require("../links-tracking");
19
+ const _LinkedInlineWrapper = require("../shared/LinkedInlineWrapper");
20
+ const _FetchingWrappedInlineEntryCard = require("./FetchingWrappedInlineEntryCard");
21
+ function _getRequireWildcardCache(nodeInterop) {
22
+ if (typeof WeakMap !== "function") return null;
23
+ var cacheBabelInterop = new WeakMap();
24
+ var cacheNodeInterop = new WeakMap();
25
+ return (_getRequireWildcardCache = function(nodeInterop) {
26
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
27
+ })(nodeInterop);
28
+ }
29
+ function _interop_require_wildcard(obj, nodeInterop) {
30
+ if (!nodeInterop && obj && obj.__esModule) {
31
+ return obj;
32
+ }
33
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
34
+ return {
35
+ default: obj
36
+ };
37
+ }
38
+ var cache = _getRequireWildcardCache(nodeInterop);
39
+ if (cache && cache.has(obj)) {
40
+ return cache.get(obj);
41
+ }
42
+ var newObj = {};
43
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
44
+ for(var key in obj){
45
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
46
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
47
+ if (desc && (desc.get || desc.set)) {
48
+ Object.defineProperty(newObj, key, desc);
49
+ } else {
50
+ newObj[key] = obj[key];
51
+ }
52
+ }
53
+ }
54
+ newObj.default = obj;
55
+ if (cache) {
56
+ cache.set(obj, newObj);
57
+ }
58
+ return newObj;
59
+ }
60
+ function LinkedEntityInline(props) {
61
+ const { attributes , children , element } = props;
62
+ const { onEntityFetchComplete } = (0, _linkstracking.useLinkTracking)();
63
+ const isSelected = (0, _slatereact.useSelected)();
64
+ const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
65
+ const sdk = (0, _SdkProvider.useSdkContext)();
66
+ const isDisabled = (0, _slatereact.useReadOnly)();
67
+ const { id: entryId } = element.data.target.sys;
68
+ function handleEditClick() {
69
+ return sdk.navigator.openEntry(entryId, {
70
+ slideIn: {
71
+ waitForClose: true
72
+ }
73
+ }).then(()=>{
74
+ editor && (0, _editor.focus)(editor);
75
+ });
76
+ }
77
+ function handleRemoveClick() {
78
+ if (!editor) return;
79
+ const pathToElement = (0, _queries.findNodePath)(editor, element);
80
+ (0, _transforms.removeNodes)(editor, {
81
+ at: pathToElement
82
+ });
83
+ }
84
+ return _react.createElement(_LinkedInlineWrapper.LinkedInlineWrapper, {
85
+ attributes: attributes,
86
+ card: _react.createElement(_FetchingWrappedInlineEntryCard.FetchingWrappedInlineEntryCard, {
87
+ sdk: sdk,
88
+ entryId: entryId,
89
+ isSelected: isSelected,
90
+ isDisabled: isDisabled,
91
+ onRemove: handleRemoveClick,
92
+ onEdit: handleEditClick,
93
+ onEntityFetchComplete: onEntityFetchComplete
94
+ }),
95
+ link: element.data.target
96
+ }, children);
97
+ }
@@ -2,188 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- ToolbarEmbeddedEntityInlineButton: function() {
13
- return ToolbarEmbeddedEntityInlineButton;
14
- },
15
- createEmbeddedEntityInlinePlugin: function() {
5
+ Object.defineProperty(exports, "createEmbeddedEntityInlinePlugin", {
6
+ enumerable: true,
7
+ get: function() {
16
8
  return createEmbeddedEntityInlinePlugin;
17
9
  }
18
10
  });
19
- const _react = _interop_require_wildcard(require("react"));
20
- const _f36components = require("@contentful/f36-components");
21
- const _f36icons = require("@contentful/f36-icons");
22
- const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
23
11
  const _richtexttypes = require("@contentful/rich-text-types");
24
- const _emotion = require("emotion");
25
- const _ishotkey = _interop_require_default(require("is-hotkey"));
26
- const _slatereact = require("slate-react");
27
- const _ContentfulEditorProvider = require("../../ContentfulEditorProvider");
28
- const _editor = require("../../helpers/editor");
29
- const _environment = require("../../helpers/environment");
30
- const _newEntitySelectorConfigFromRichTextField = _interop_require_default(require("../../helpers/newEntitySelectorConfigFromRichTextField"));
31
- const _sdkNavigatorSlideIn = require("../../helpers/sdkNavigatorSlideIn");
32
- const _queries = require("../../internal/queries");
33
- const _transforms = require("../../internal/transforms");
34
- const _SdkProvider = require("../../SdkProvider");
35
- const _linkstracking = require("../links-tracking");
36
- const _FetchingWrappedInlineEntryCard = require("./FetchingWrappedInlineEntryCard");
37
- const _Util = require("./Util");
38
- function _interop_require_default(obj) {
39
- return obj && obj.__esModule ? obj : {
40
- default: obj
41
- };
42
- }
43
- function _getRequireWildcardCache(nodeInterop) {
44
- if (typeof WeakMap !== "function") return null;
45
- var cacheBabelInterop = new WeakMap();
46
- var cacheNodeInterop = new WeakMap();
47
- return (_getRequireWildcardCache = function(nodeInterop) {
48
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
49
- })(nodeInterop);
50
- }
51
- function _interop_require_wildcard(obj, nodeInterop) {
52
- if (!nodeInterop && obj && obj.__esModule) {
53
- return obj;
54
- }
55
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
56
- return {
57
- default: obj
58
- };
59
- }
60
- var cache = _getRequireWildcardCache(nodeInterop);
61
- if (cache && cache.has(obj)) {
62
- return cache.get(obj);
63
- }
64
- var newObj = {};
65
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
66
- for(var key in obj){
67
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
68
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
69
- if (desc && (desc.get || desc.set)) {
70
- Object.defineProperty(newObj, key, desc);
71
- } else {
72
- newObj[key] = obj[key];
73
- }
74
- }
75
- }
76
- newObj.default = obj;
77
- if (cache) {
78
- cache.set(obj, newObj);
79
- }
80
- return newObj;
81
- }
82
- const styles = {
83
- icon: (0, _emotion.css)({
84
- marginRight: '10px'
85
- }),
86
- root: (0, _emotion.css)({
87
- display: 'inline-block',
88
- margin: `0 ${_f36tokens.default.spacing2Xs}`,
89
- fontSize: 'inherit',
90
- span: {
91
- userSelect: 'none'
92
- }
93
- })
94
- };
95
- function EmbeddedEntityInline(props) {
96
- const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
97
- const sdk = (0, _SdkProvider.useSdkContext)();
98
- const isSelected = (0, _slatereact.useSelected)();
99
- const { id: entryId } = props.element.data.target.sys;
100
- const isDisabled = (0, _slatereact.useReadOnly)();
101
- const { onEntityFetchComplete } = (0, _linkstracking.useLinkTracking)();
102
- function handleEditClick() {
103
- return sdk.navigator.openEntry(entryId, {
104
- slideIn: {
105
- waitForClose: true
106
- }
107
- }).then(()=>{
108
- editor && (0, _editor.focus)(editor);
109
- });
110
- }
111
- function handleRemoveClick() {
112
- if (!editor) return;
113
- const pathToElement = (0, _queries.findNodePath)(editor, props.element);
114
- (0, _transforms.removeNodes)(editor, {
115
- at: pathToElement
116
- });
117
- }
118
- return _react.createElement("span", {
119
- ...props.attributes,
120
- className: styles.root,
121
- "data-embedded-entity-inline-id": entryId,
122
- contentEditable: _environment.IS_CHROME ? undefined : false,
123
- draggable: _environment.IS_CHROME ? true : undefined
124
- }, _react.createElement("span", {
125
- contentEditable: _environment.IS_CHROME ? false : undefined,
126
- draggable: _environment.IS_CHROME ? true : undefined
127
- }, _react.createElement(_FetchingWrappedInlineEntryCard.FetchingWrappedInlineEntryCard, {
128
- sdk: sdk,
129
- entryId: entryId,
130
- isSelected: isSelected,
131
- isDisabled: isDisabled,
132
- onRemove: handleRemoveClick,
133
- onEdit: handleEditClick,
134
- onEntityFetchComplete: onEntityFetchComplete
135
- })), props.children);
136
- }
137
- async function selectEntityAndInsert(editor, sdk, logAction) {
138
- logAction('openCreateEmbedDialog', {
139
- nodeType: _richtexttypes.INLINES.EMBEDDED_ENTRY
140
- });
141
- const config = {
142
- ...(0, _newEntitySelectorConfigFromRichTextField.default)(sdk.field, _richtexttypes.INLINES.EMBEDDED_ENTRY),
143
- withCreate: true
144
- };
145
- const { selection } = editor;
146
- const rteSlide = (0, _sdkNavigatorSlideIn.watchCurrentSlide)(sdk.navigator);
147
- const entry = await sdk.dialogs.selectSingleEntry(config);
148
- if (!entry) {
149
- logAction('cancelCreateEmbedDialog', {
150
- nodeType: _richtexttypes.INLINES.EMBEDDED_ENTRY
151
- });
152
- } else {
153
- (0, _transforms.select)(editor, selection);
154
- (0, _transforms.insertNodes)(editor, (0, _Util.createInlineEntryNode)(entry.sys.id));
155
- logAction('insert', {
156
- nodeType: _richtexttypes.INLINES.EMBEDDED_ENTRY
157
- });
158
- }
159
- rteSlide.onActive(()=>{
160
- rteSlide.unwatch();
161
- (0, _editor.focus)(editor);
162
- });
163
- }
164
- function ToolbarEmbeddedEntityInlineButton(props) {
165
- const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
166
- const sdk = (0, _SdkProvider.useSdkContext)();
167
- async function handleClick(event) {
168
- event.preventDefault();
169
- if (!editor) return;
170
- props.onClose();
171
- await selectEntityAndInsert(editor, sdk, editor.tracking.onToolbarAction);
172
- (0, _editor.moveToTheNextChar)(editor);
173
- }
174
- return _react.createElement(_f36components.Menu.Item, {
175
- disabled: props.isDisabled,
176
- className: "rich-text__entry-link-block-button",
177
- testId: `toolbar-toggle-${_richtexttypes.INLINES.EMBEDDED_ENTRY}`,
178
- onClick: handleClick
179
- }, _react.createElement(_f36components.Flex, {
180
- alignItems: "center",
181
- flexDirection: "row"
182
- }, _react.createElement(_f36icons.EmbeddedEntryInlineIcon, {
183
- variant: "secondary",
184
- className: `rich-text__embedded-entry-list-icon ${styles.icon}`
185
- }), _react.createElement("span", null, "Inline entry")));
186
- }
12
+ const _EmbeddedInlineUtil = require("../shared/EmbeddedInlineUtil");
13
+ const _LinkedEntityInline = require("./LinkedEntityInline");
187
14
  function createEmbeddedEntityInlinePlugin(sdk) {
188
15
  const htmlAttributeName = 'data-embedded-entity-inline-id';
189
16
  return {
@@ -192,12 +19,12 @@ function createEmbeddedEntityInlinePlugin(sdk) {
192
19
  isElement: true,
193
20
  isInline: true,
194
21
  isVoid: true,
195
- component: EmbeddedEntityInline,
22
+ component: _LinkedEntityInline.LinkedEntityInline,
196
23
  options: {
197
24
  hotkey: 'mod+shift+2'
198
25
  },
199
26
  handlers: {
200
- onKeyDown: getWithEmbeddedEntryInlineEvents(sdk)
27
+ onKeyDown: (0, _EmbeddedInlineUtil.getWithEmbeddedEntryInlineEvents)(sdk)
201
28
  },
202
29
  deserializeHtml: {
203
30
  rules: [
@@ -206,17 +33,7 @@ function createEmbeddedEntityInlinePlugin(sdk) {
206
33
  }
207
34
  ],
208
35
  withoutChildren: true,
209
- getNode: (el)=>(0, _Util.createInlineEntryNode)(el.getAttribute(htmlAttributeName))
36
+ getNode: (el)=>(0, _EmbeddedInlineUtil.createInlineEntryNode)(el.getAttribute(htmlAttributeName))
210
37
  }
211
38
  };
212
39
  }
213
- function getWithEmbeddedEntryInlineEvents(sdk) {
214
- return function withEmbeddedEntryInlineEvents(editor, { options: { hotkey } }) {
215
- return function handleEvent(event) {
216
- if (!editor) return;
217
- if (hotkey && (0, _ishotkey.default)(hotkey, event)) {
218
- selectEntityAndInsert(editor, sdk, editor.tracking.onShortcutAction);
219
- }
220
- };
221
- };
222
- }
@@ -41,7 +41,7 @@ function LinkedResourceBlock(props) {
41
41
  ]);
42
42
  return _react.default.createElement(_LinkedBlockWrapper.LinkedBlockWrapper, {
43
43
  attributes: attributes,
44
- element: element,
44
+ link: element.data.target,
45
45
  card: _react.default.createElement(_FetchingWrappedResourceCard.FetchingWrappedResourceCard, {
46
46
  sdk: sdk,
47
47
  link: link,
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "EmbeddedInlineToolbarIcon", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return EmbeddedInlineToolbarIcon;
9
+ }
10
+ });
11
+ const _react = _interop_require_wildcard(require("react"));
12
+ const _f36components = require("@contentful/f36-components");
13
+ const _f36icons = require("@contentful/f36-icons");
14
+ const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
15
+ const _richtexttypes = require("@contentful/rich-text-types");
16
+ const _emotion = require("emotion");
17
+ const _ContentfulEditorProvider = require("../../ContentfulEditorProvider");
18
+ const _editor = require("../../helpers/editor");
19
+ const _SdkProvider = require("../../SdkProvider");
20
+ const _EmbeddedInlineUtil = require("../shared/EmbeddedInlineUtil");
21
+ function _interop_require_default(obj) {
22
+ return obj && obj.__esModule ? obj : {
23
+ default: obj
24
+ };
25
+ }
26
+ function _getRequireWildcardCache(nodeInterop) {
27
+ if (typeof WeakMap !== "function") return null;
28
+ var cacheBabelInterop = new WeakMap();
29
+ var cacheNodeInterop = new WeakMap();
30
+ return (_getRequireWildcardCache = function(nodeInterop) {
31
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
32
+ })(nodeInterop);
33
+ }
34
+ function _interop_require_wildcard(obj, nodeInterop) {
35
+ if (!nodeInterop && obj && obj.__esModule) {
36
+ return obj;
37
+ }
38
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
39
+ return {
40
+ default: obj
41
+ };
42
+ }
43
+ var cache = _getRequireWildcardCache(nodeInterop);
44
+ if (cache && cache.has(obj)) {
45
+ return cache.get(obj);
46
+ }
47
+ var newObj = {};
48
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
49
+ for(var key in obj){
50
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
51
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
52
+ if (desc && (desc.get || desc.set)) {
53
+ Object.defineProperty(newObj, key, desc);
54
+ } else {
55
+ newObj[key] = obj[key];
56
+ }
57
+ }
58
+ }
59
+ newObj.default = obj;
60
+ if (cache) {
61
+ cache.set(obj, newObj);
62
+ }
63
+ return newObj;
64
+ }
65
+ const styles = {
66
+ icon: (0, _emotion.css)({
67
+ marginRight: '10px'
68
+ }),
69
+ root: (0, _emotion.css)({
70
+ display: 'inline-block',
71
+ margin: `0 ${_f36tokens.default.spacing2Xs}`,
72
+ fontSize: 'inherit',
73
+ span: {
74
+ userSelect: 'none'
75
+ }
76
+ })
77
+ };
78
+ function EmbeddedInlineToolbarIcon(props) {
79
+ const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
80
+ const sdk = (0, _SdkProvider.useSdkContext)();
81
+ async function handleClick(event) {
82
+ event.preventDefault();
83
+ if (!editor) return;
84
+ props.onClose();
85
+ await (0, _EmbeddedInlineUtil.selectEntityAndInsert)(editor, sdk, editor.tracking.onToolbarAction);
86
+ (0, _editor.moveToTheNextChar)(editor);
87
+ }
88
+ return _react.createElement(_f36components.Menu.Item, {
89
+ disabled: props.isDisabled,
90
+ className: "rich-text__entry-link-block-button",
91
+ testId: `toolbar-toggle-${_richtexttypes.INLINES.EMBEDDED_ENTRY}`,
92
+ onClick: handleClick
93
+ }, _react.createElement(_f36components.Flex, {
94
+ alignItems: "center",
95
+ flexDirection: "row"
96
+ }, _react.createElement(_f36icons.EmbeddedEntryInlineIcon, {
97
+ variant: "secondary",
98
+ className: `rich-text__embedded-entry-list-icon ${styles.icon}`
99
+ }), _react.createElement("span", null, "Inline entry")));
100
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ getWithEmbeddedEntryInlineEvents: function() {
13
+ return getWithEmbeddedEntryInlineEvents;
14
+ },
15
+ selectEntityAndInsert: function() {
16
+ return selectEntityAndInsert;
17
+ },
18
+ createInlineEntryNode: function() {
19
+ return createInlineEntryNode;
20
+ }
21
+ });
22
+ const _richtexttypes = require("@contentful/rich-text-types");
23
+ const _ishotkey = _interop_require_default(require("is-hotkey"));
24
+ const _editor = require("../../helpers/editor");
25
+ const _newEntitySelectorConfigFromRichTextField = _interop_require_default(require("../../helpers/newEntitySelectorConfigFromRichTextField"));
26
+ const _sdkNavigatorSlideIn = require("../../helpers/sdkNavigatorSlideIn");
27
+ const _transforms = require("../../internal/transforms");
28
+ function _interop_require_default(obj) {
29
+ return obj && obj.__esModule ? obj : {
30
+ default: obj
31
+ };
32
+ }
33
+ function getWithEmbeddedEntryInlineEvents(sdk) {
34
+ return function withEmbeddedEntryInlineEvents(editor, { options: { hotkey } }) {
35
+ return function handleEvent(event) {
36
+ if (!editor) return;
37
+ if (hotkey && (0, _ishotkey.default)(hotkey, event)) {
38
+ selectEntityAndInsert(editor, sdk, editor.tracking.onShortcutAction);
39
+ }
40
+ };
41
+ };
42
+ }
43
+ async function selectEntityAndInsert(editor, sdk, logAction) {
44
+ logAction('openCreateEmbedDialog', {
45
+ nodeType: _richtexttypes.INLINES.EMBEDDED_ENTRY
46
+ });
47
+ const config = {
48
+ ...(0, _newEntitySelectorConfigFromRichTextField.default)(sdk.field, _richtexttypes.INLINES.EMBEDDED_ENTRY),
49
+ withCreate: true
50
+ };
51
+ const { selection } = editor;
52
+ const rteSlide = (0, _sdkNavigatorSlideIn.watchCurrentSlide)(sdk.navigator);
53
+ const entry = await sdk.dialogs.selectSingleEntry(config);
54
+ if (!entry) {
55
+ logAction('cancelCreateEmbedDialog', {
56
+ nodeType: _richtexttypes.INLINES.EMBEDDED_ENTRY
57
+ });
58
+ } else {
59
+ (0, _transforms.select)(editor, selection);
60
+ (0, _transforms.insertNodes)(editor, createInlineEntryNode(entry.sys.id));
61
+ logAction('insert', {
62
+ nodeType: _richtexttypes.INLINES.EMBEDDED_ENTRY
63
+ });
64
+ }
65
+ rteSlide.onActive(()=>{
66
+ rteSlide.unwatch();
67
+ (0, _editor.focus)(editor);
68
+ });
69
+ }
70
+ function createInlineEntryNode(id) {
71
+ return {
72
+ type: _richtexttypes.INLINES.EMBEDDED_ENTRY,
73
+ children: [
74
+ {
75
+ text: ''
76
+ }
77
+ ],
78
+ data: {
79
+ target: {
80
+ sys: {
81
+ id,
82
+ type: 'Link',
83
+ linkType: 'Entry'
84
+ }
85
+ }
86
+ }
87
+ };
88
+ }
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "LinkedBlockWrapper", {
11
11
  const _react = _interop_require_default(require("react"));
12
12
  const _emotion = require("emotion");
13
13
  const _environment = require("../../helpers/environment");
14
+ const _utils = require("./utils");
14
15
  function _interop_require_default(obj) {
15
16
  return obj && obj.__esModule ? obj : {
16
17
  default: obj
@@ -27,14 +28,12 @@ const styles = {
27
28
  width: '100%'
28
29
  })
29
30
  };
30
- const isResourceLink = (link)=>!!link.urn;
31
- function LinkedBlockWrapper({ attributes , card , children , element }) {
32
- const link = element.data.target.sys;
31
+ function LinkedBlockWrapper({ attributes , card , children , link }) {
33
32
  return _react.default.createElement("div", {
34
33
  ...attributes,
35
34
  className: styles.root,
36
- "data-entity-type": link.linkType,
37
- "data-entity-id": isResourceLink(link) ? link.urn : link.id,
35
+ "data-entity-type": link.sys.linkType,
36
+ "data-entity-id": (0, _utils.getLinkEntityId)(link),
38
37
  contentEditable: _environment.IS_CHROME ? undefined : false,
39
38
  draggable: _environment.IS_CHROME ? true : undefined
40
39
  }, _react.default.createElement("div", {
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "LinkedInlineWrapper", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return LinkedInlineWrapper;
9
+ }
10
+ });
11
+ const _react = _interop_require_wildcard(require("react"));
12
+ const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
13
+ const _emotion = require("emotion");
14
+ const _environment = require("../../helpers/environment");
15
+ const _utils = require("./utils");
16
+ function _interop_require_default(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
21
+ function _getRequireWildcardCache(nodeInterop) {
22
+ if (typeof WeakMap !== "function") return null;
23
+ var cacheBabelInterop = new WeakMap();
24
+ var cacheNodeInterop = new WeakMap();
25
+ return (_getRequireWildcardCache = function(nodeInterop) {
26
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
27
+ })(nodeInterop);
28
+ }
29
+ function _interop_require_wildcard(obj, nodeInterop) {
30
+ if (!nodeInterop && obj && obj.__esModule) {
31
+ return obj;
32
+ }
33
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
34
+ return {
35
+ default: obj
36
+ };
37
+ }
38
+ var cache = _getRequireWildcardCache(nodeInterop);
39
+ if (cache && cache.has(obj)) {
40
+ return cache.get(obj);
41
+ }
42
+ var newObj = {};
43
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
44
+ for(var key in obj){
45
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
46
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
47
+ if (desc && (desc.get || desc.set)) {
48
+ Object.defineProperty(newObj, key, desc);
49
+ } else {
50
+ newObj[key] = obj[key];
51
+ }
52
+ }
53
+ }
54
+ newObj.default = obj;
55
+ if (cache) {
56
+ cache.set(obj, newObj);
57
+ }
58
+ return newObj;
59
+ }
60
+ const styles = {
61
+ icon: (0, _emotion.css)({
62
+ marginRight: '10px'
63
+ }),
64
+ root: (0, _emotion.css)({
65
+ display: 'inline-block',
66
+ margin: `0 ${_f36tokens.default.spacing2Xs}`,
67
+ fontSize: 'inherit',
68
+ span: {
69
+ userSelect: 'none'
70
+ }
71
+ })
72
+ };
73
+ function LinkedInlineWrapper({ attributes , card , children , link }) {
74
+ return _react.createElement("span", {
75
+ ...attributes,
76
+ className: styles.root,
77
+ "data-entity-type": link.sys.linkType,
78
+ "data-entity-id": (0, _utils.getLinkEntityId)(link),
79
+ contentEditable: _environment.IS_CHROME ? undefined : false,
80
+ draggable: _environment.IS_CHROME ? true : undefined
81
+ }, _react.createElement("span", {
82
+ contentEditable: _environment.IS_CHROME ? false : undefined,
83
+ draggable: _environment.IS_CHROME ? true : undefined
84
+ }, card), children);
85
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "getLinkEntityId", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return getLinkEntityId;
9
+ }
10
+ });
11
+ const isResourceLink = (link)=>!!link.sys.urn;
12
+ const getLinkEntityId = (link)=>isResourceLink(link) ? link.sys.urn : link.sys.id;