@frontify/guideline-blocks-settings 0.28.3 → 0.28.5

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 (108) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/Attachments/Attachments.es.js +55 -55
  3. package/dist/components/Attachments/Attachments.es.js.map +1 -1
  4. package/dist/components/BlockItemWrapper/Toolbar.es.js +1 -1
  5. package/dist/components/BlockItemWrapper/Toolbar.es.js.map +1 -1
  6. package/dist/components/DownloadButton/DownloadButton.es.js +3 -3
  7. package/dist/components/DownloadButton/DownloadButton.es.js.map +1 -1
  8. package/dist/components/Link/LinkInput.es.js +61 -0
  9. package/dist/components/Link/LinkInput.es.js.map +1 -0
  10. package/dist/components/Link/LinkSelector/DocumentLink.es.js.map +1 -0
  11. package/dist/components/Link/LinkSelector/DocumentLinks.es.js.map +1 -0
  12. package/dist/components/Link/LinkSelector/LinkSelector.es.js +67 -0
  13. package/dist/components/Link/LinkSelector/LinkSelector.es.js.map +1 -0
  14. package/dist/components/Link/LinkSelector/PageLink.es.js.map +1 -0
  15. package/dist/components/Link/LinkSelector/PageLinks.es.js +37 -0
  16. package/dist/components/Link/LinkSelector/PageLinks.es.js.map +1 -0
  17. package/dist/components/Link/LinkSelector/SectionLink.es.js.map +1 -0
  18. package/dist/components/Link/utils/getUrl.es.js +17 -0
  19. package/dist/components/Link/utils/getUrl.es.js.map +1 -0
  20. package/dist/components/Link/utils/relativeUrlRegex.es.js.map +1 -0
  21. package/dist/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/url.es.js +1 -1
  22. package/dist/components/Link/utils/url.es.js.map +1 -0
  23. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.es.js +1 -1
  24. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.es.js.map +1 -1
  25. package/dist/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.es.js +1 -1
  26. package/dist/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.es.js.map +1 -1
  27. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.es.js +1 -1
  28. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.es.js.map +1 -1
  29. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js +39 -53
  30. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js.map +1 -1
  31. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.es.js +2 -2
  32. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.es.js.map +1 -1
  33. package/dist/components/RichTextEditor/plugins/LinkPlugin/index.es.js +1 -1
  34. package/dist/components/RichTextEditor/plugins/LinkPlugin/index.es.js.map +1 -1
  35. package/dist/components/RichTextEditor/serializer/nodes/button.es.js +3 -2
  36. package/dist/components/RichTextEditor/serializer/nodes/button.es.js.map +1 -1
  37. package/dist/components/RichTextEditor/serializer/nodes/checkItemNode.es.js +7 -7
  38. package/dist/components/RichTextEditor/serializer/nodes/checkItemNode.es.js.map +1 -1
  39. package/dist/components/RichTextEditor/serializer/nodes/default.es.js +27 -12
  40. package/dist/components/RichTextEditor/serializer/nodes/default.es.js.map +1 -1
  41. package/dist/components/RichTextEditor/serializer/nodes/link.es.js +4 -4
  42. package/dist/components/RichTextEditor/serializer/nodes/link.es.js.map +1 -1
  43. package/dist/components/RichTextEditor/serializer/serializeNodesToHtmlRecursive.es.js +33 -33
  44. package/dist/components/RichTextEditor/serializer/serializeNodesToHtmlRecursive.es.js.map +1 -1
  45. package/dist/helpers/addHttps.es.js +1 -1
  46. package/dist/helpers/addHttps.es.js.map +1 -1
  47. package/dist/index.cjs.js +9 -8
  48. package/dist/index.cjs.js.map +1 -1
  49. package/dist/index.d.ts +60 -0
  50. package/dist/index.es.js +134 -121
  51. package/dist/index.es.js.map +1 -1
  52. package/dist/index.umd.js +11 -10
  53. package/dist/index.umd.js.map +1 -1
  54. package/dist/styles.css +1 -1
  55. package/package.json +11 -11
  56. package/src/components/Attachments/Attachments.tsx +1 -1
  57. package/src/components/BlockItemWrapper/Toolbar.tsx +1 -1
  58. package/src/components/DownloadButton/DownloadButton.tsx +1 -1
  59. package/src/components/Link/LinkInput.spec.ct.tsx +142 -0
  60. package/src/components/Link/LinkInput.tsx +80 -0
  61. package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/DocumentLink.tsx +1 -1
  62. package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/DocumentLinks.tsx +1 -1
  63. package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/LinkSelector.tsx +10 -4
  64. package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/PageLink.tsx +1 -1
  65. package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/PageLinks.tsx +8 -2
  66. package/src/components/Link/index.ts +6 -0
  67. package/src/components/Link/types.ts +6 -0
  68. package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/getUrl.ts +1 -5
  69. package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/index.ts +1 -0
  70. package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/url.ts +2 -2
  71. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.ts +1 -1
  72. package/src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts +1 -1
  73. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts +1 -1
  74. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx +11 -28
  75. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/types.ts +0 -5
  76. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.ts +2 -2
  77. package/src/components/RichTextEditor/plugins/LinkPlugin/index.ts +1 -1
  78. package/src/components/RichTextEditor/serializer/nodes/button.ts +1 -0
  79. package/src/components/RichTextEditor/serializer/nodes/checkItemNode.ts +3 -3
  80. package/src/components/RichTextEditor/serializer/nodes/default.ts +27 -12
  81. package/src/components/RichTextEditor/serializer/nodes/link.ts +2 -2
  82. package/src/components/RichTextEditor/serializer/serializeNodesToHtmlRecursive.ts +4 -4
  83. package/src/components/index.ts +1 -0
  84. package/src/helpers/addHttps.ts +1 -1
  85. package/src/index.ts +2 -0
  86. package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.es.js +0 -18
  87. package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.es.js.map +0 -1
  88. package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/relativeUrlRegex.es.js.map +0 -1
  89. package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/url.es.js.map +0 -1
  90. package/dist/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLink.es.js.map +0 -1
  91. package/dist/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLinks.es.js.map +0 -1
  92. package/dist/components/RichTextEditor/plugins/shared/LinkSelector/LinkSelector.es.js +0 -62
  93. package/dist/components/RichTextEditor/plugins/shared/LinkSelector/LinkSelector.es.js.map +0 -1
  94. package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLink.es.js.map +0 -1
  95. package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLinks.es.js +0 -34
  96. package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLinks.es.js.map +0 -1
  97. package/dist/components/RichTextEditor/plugins/shared/LinkSelector/SectionLink.es.js.map +0 -1
  98. /package/dist/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/DocumentLink.es.js +0 -0
  99. /package/dist/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/DocumentLinks.es.js +0 -0
  100. /package/dist/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/PageLink.es.js +0 -0
  101. /package/dist/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/SectionLink.es.js +0 -0
  102. /package/dist/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/relativeUrlRegex.es.js +0 -0
  103. /package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/LinkSelector.spec.ct.tsx +0 -0
  104. /package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/SectionLink.tsx +0 -0
  105. /package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/index.ts +0 -0
  106. /package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/relativeUrlRegex.spec.ts +0 -0
  107. /package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/relativeUrlRegex.ts +0 -0
  108. /package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/url.spec.ts +0 -0
@@ -12,10 +12,10 @@ import {
12
12
  useHotkeys,
13
13
  } from '@udecode/plate';
14
14
  import { Dispatch, Reducer, useEffect, useReducer } from 'react';
15
- import { getLegacyUrl, getUrl } from '../../utils';
15
+ import { getLegacyUrl, getUrl } from '../../../../../Link/utils';
16
16
  import { InsertModalDispatchType, InsertModalStateProps } from './types';
17
17
  import { addHttps } from '../../../../../../helpers';
18
- import { isValidUrlOrEmpty } from '../../utils/url';
18
+ import { isValidUrlOrEmpty } from '../../../../../Link/utils/url';
19
19
 
20
20
  const initialState: InsertModalStateProps = {
21
21
  url: '',
@@ -9,7 +9,7 @@ import { CustomFloatingLink } from './FloatingLink/CustomFloatingLink';
9
9
  import { LINK_PLUGIN } from './id';
10
10
  import { LinkButton } from './LinkButton';
11
11
  import { LinkMarkupElement } from './LinkMarkupElement';
12
- import { isValidUrl } from './utils/url';
12
+ import { isValidUrl } from '../../../Link/utils/url';
13
13
  import { BlockStyles } from '../styles';
14
14
 
15
15
  export const createLinkPlugin = (appBridge: AppBridgeBlock) =>
@@ -18,6 +18,7 @@ export const buttonNode = (node: TElement, children: string, defaultClassNames:
18
18
 
19
19
  return `<a href="${node.url}"
20
20
  target="${node.target ?? '_blank'}"
21
+ dir="auto"
21
22
  style="${defaultStyles}"
22
23
  class="${defaultClassNames}"
23
24
  onmouseenter="this.setAttribute('style', '${defaultStyles} ${reactCssPropsToCss(buttonStyle?.hover)}');"
@@ -12,17 +12,17 @@ export const checkItemNode = (
12
12
  defaultClassNames: string,
13
13
  styles: Record<string, CSSProperties & { hover?: CSSProperties }>,
14
14
  ) => {
15
- return `<div disabled class="tw-flex tw-flex-row tw-pb-2 first-of-type:tw-ml-0 ${defaultClassNames}" style="margin-left:${
15
+ return `<div dir="auto" disabled class="tw-flex tw-flex-row tw-pb-2 first-of-type:tw-ml-0 ${defaultClassNames}" style="margin-left:${
16
16
  ((node.indent as number) ?? 0) * 24
17
17
  }px;">
18
- <div class="tw-flex tw-items-center tw-justify-center tw-select-none tw-mr-1.5">
18
+ <div dir="auto" class="tw-flex tw-items-center tw-justify-center tw-select-none tw-mr-1.5">
19
19
  <input
20
20
  class="tw-w-4 tw-h-4 tw-m-0"
21
21
  type="checkbox"
22
22
  ${node.checked ? 'checked' : ''}
23
23
  onclick="return false;" />
24
24
  </div>
25
- <span class="${merge([
25
+ <span dir="auto" class="${merge([
26
26
  'tw-flex-1 tw-focus:outline-none',
27
27
  node.checked ? '!tw-line-through' : '',
28
28
  ])}" style="${reactCssPropsToCss(styles[node.children[0].textStyle as string])}">${children}</span>
@@ -11,43 +11,58 @@ export const defaultNode = (node: TElement, children: string, styles: CSSPropert
11
11
  const defaultStyles = reactCssPropsToCss(styles);
12
12
 
13
13
  if (node.type === TextStyles.heading1) {
14
- return `<h1 class="${merge([defaultClassNames, 'a-h1'])}">${getStyledChild(children, defaultStyles)}</h1>`;
14
+ return `<h1 dir="auto" class="${merge([defaultClassNames, 'a-h1'])}">${getStyledChild(
15
+ children,
16
+ defaultStyles,
17
+ )}</h1>`;
15
18
  }
16
19
  if (node.type === TextStyles.heading2) {
17
- return `<h2 class="${defaultClassNames}">${getStyledChild(children, defaultStyles)}</h2>`;
20
+ return `<h2 dir="auto" class="${defaultClassNames}">${getStyledChild(children, defaultStyles)}</h2>`;
18
21
  }
19
22
  if (node.type === TextStyles.heading3) {
20
- return `<h3 class="${defaultClassNames}">${getStyledChild(children, defaultStyles)}</h3>`;
23
+ return `<h3 dir="auto" class="${defaultClassNames}">${getStyledChild(children, defaultStyles)}</h3>`;
21
24
  }
22
25
  if (node.type === TextStyles.heading4) {
23
- return `<h4 class="${defaultClassNames}">${getStyledChild(children, defaultStyles)}</h4>`;
26
+ return `<h4 dir="auto" class="${defaultClassNames}">${getStyledChild(children, defaultStyles)}</h4>`;
24
27
  }
25
28
  if (node.type === TextStyles.custom1) {
26
- return `<p class="${merge([defaultClassNames, 'a-custom1'])}">${getStyledChild(children, defaultStyles)}</p>`;
29
+ return `<p dir="auto" class="${merge([defaultClassNames, 'a-custom1'])}">${getStyledChild(
30
+ children,
31
+ defaultStyles,
32
+ )}</p>`;
27
33
  }
28
34
  if (node.type === TextStyles.custom2) {
29
- return `<p class="${merge([defaultClassNames, 'a-custom2'])}">${getStyledChild(children, defaultStyles)}</p>`;
35
+ return `<p dir="auto" class="${merge([defaultClassNames, 'a-custom2'])}">${getStyledChild(
36
+ children,
37
+ defaultStyles,
38
+ )}</p>`;
30
39
  }
31
40
  if (node.type === TextStyles.custom3) {
32
- return `<p class="${merge([defaultClassNames, 'a-custom3'])}">${getStyledChild(children, defaultStyles)}</p>`;
41
+ return `<p dir="auto" class="${merge([defaultClassNames, 'a-custom3'])}">${getStyledChild(
42
+ children,
43
+ defaultStyles,
44
+ )}</p>`;
33
45
  }
34
46
  if (node.type === TextStyles.quote) {
35
- return `<p class="${merge([defaultClassNames, 'a-quote'])}">${getStyledChild(children, defaultStyles)}</p>`;
47
+ return `<p dir="auto" class="${merge([defaultClassNames, 'a-quote'])}">${getStyledChild(
48
+ children,
49
+ defaultStyles,
50
+ )}</p>`;
36
51
  }
37
52
  if (node.type === TextStyles.imageTitle) {
38
- return `<p class="${merge([defaultClassNames, 'a-image-title'])}">${getStyledChild(
53
+ return `<p dir="auto" class="${merge([defaultClassNames, 'a-image-title'])}">${getStyledChild(
39
54
  children,
40
55
  defaultStyles,
41
56
  )}</p>`;
42
57
  }
43
58
  if (node.type === TextStyles.imageCaption) {
44
- return `<p class="${merge([defaultClassNames, 'a-image-caption'])}">${getStyledChild(
59
+ return `<p dir="auto" class="${merge([defaultClassNames, 'a-image-caption'])}">${getStyledChild(
45
60
  children,
46
61
  defaultStyles,
47
62
  )}</p>`;
48
63
  }
49
64
 
50
- return `<p class="${defaultClassNames}">${getStyledChild(children, defaultStyles)}</p>`;
65
+ return `<p dir="auto" class="${defaultClassNames}">${getStyledChild(children, defaultStyles)}</p>`;
51
66
  };
52
67
 
53
- const getStyledChild = (children: string, styles: string) => `<span style="${styles}">${children}</span>`;
68
+ const getStyledChild = (children: string, styles: string) => `<span dir="auto" style="${styles}">${children}</span>`;
@@ -16,11 +16,11 @@ export const linkNode = (
16
16
  ) => {
17
17
  if (node.chosenLink) {
18
18
  const { chosenLink } = node as TLinkElement;
19
- return `<a class="${defaultClassNames}" style="${reactCssPropsToCss(styles[LINK_PLUGIN])}" target=${
19
+ return `<a dir="auto" class="${defaultClassNames}" style="${reactCssPropsToCss(styles[LINK_PLUGIN])}" target=${
20
20
  chosenLink?.openInNewTab ? '_blank' : '_self'
21
21
  } href="${escapeHtml(chosenLink?.searchResult?.link)}">${children}</a>`;
22
22
  }
23
- return `<a class="${defaultClassNames}" style="${reactCssPropsToCss(styles[LINK_PLUGIN])}" target="${
23
+ return `<a dir="auto" class="${defaultClassNames}" style="${reactCssPropsToCss(styles[LINK_PLUGIN])}" target="${
24
24
  node?.target ?? '_blank'
25
25
  }" href="${escapeHtml(node.url as string)}">${children}</a>`;
26
26
  };
@@ -105,19 +105,19 @@ type Arguments = {
105
105
  };
106
106
 
107
107
  const MapNodeTypesToHtml: { [key: string]: ({ ...args }: Arguments) => string } = {
108
- [ELEMENT_UL]: (args) => `<ul class="${UL_CLASSES} ${args.classNames}">${args.children}</ul>`,
108
+ [ELEMENT_UL]: (args) => `<ul dir="auto" class="${UL_CLASSES} ${args.classNames}">${args.children}</ul>`,
109
109
  [ELEMENT_OL]: ({ classNames, children, node, rootNestingCount }) => {
110
110
  const nestingLevel = Math.max(rootNestingCount - countNodesOfType([node], ELEMENT_OL), 0);
111
- return `<ol class="${getOrderedListClasses(nestingLevel)} ${classNames}" style="${reactCssPropsToCss(
111
+ return `<ol dir="auto" class="${getOrderedListClasses(nestingLevel)} ${classNames}" style="${reactCssPropsToCss(
112
112
  OL_STYLES,
113
113
  )}">${children}</ol>`;
114
114
  },
115
115
  [ELEMENT_LI]: ({ classNames, children, node, styles }) =>
116
- `<li class="${classNames} ${LI_CLASSNAMES}" style="${reactCssPropsToCss(
116
+ `<li dir="auto" class="${classNames} ${LI_CLASSNAMES}" style="${reactCssPropsToCss(
117
117
  getLiStyles(node, styles),
118
118
  )}">${children}</li>`,
119
119
  [ELEMENT_LIC]: ({ classNames, children, node }) =>
120
- `<p class="${classNames} ${getLicElementClassNames(node)}"><span>${children}</span></p>`,
120
+ `<p dir="auto" class="${classNames} ${getLicElementClassNames(node)}"><span>${children}</span></p>`,
121
121
  [ELEMENT_LINK]: ({ node, children, classNames, styles }) => linkNode(node, children, classNames, styles),
122
122
  [ELEMENT_BUTTON]: ({ node, children, classNames, styles }) =>
123
123
  buttonNode(node, children, classNames, styles as ButtonStylesType),
@@ -5,3 +5,4 @@ export * from './BlockItemWrapper';
5
5
  export * from './Attachments';
6
6
  export * from './DownloadButton';
7
7
  export * from './RichTextEditor';
8
+ export * from './Link';
@@ -1,6 +1,6 @@
1
1
  /* (c) Copyright Frontify Ltd., all rights reserved. */
2
2
 
3
- import { relativeUrlRegex } from '../components/RichTextEditor/plugins/LinkPlugin/utils';
3
+ import { relativeUrlRegex } from '../components/Link/utils';
4
4
 
5
5
  export const addHttps = (url: string) => {
6
6
  if (relativeUrlRegex.test(url)) {
package/src/index.ts CHANGED
@@ -17,6 +17,7 @@ import type {
17
17
  FontInputBlock as FontInputBlockSidebarSettings,
18
18
  InputBlock as InputBlockSidebarSettings,
19
19
  LegacyAssetInputBlock as LegacyAssetInputBlockSidebarSettings,
20
+ LinkBlock as LinkBlockSidebarSettings,
20
21
  LinkChooserBlock as LinkChooserBlockSidebarSettings,
21
22
  MultiInputBlock as MultiInputBlockSidebarSettings,
22
23
  NotificationBlock as NotificationBlockSidebarSettings,
@@ -45,6 +46,7 @@ export type DynamicSupportedBlock = DynamicSupportedBlockSidebarSettings<AppBrid
45
46
  export type FontInputBlock = FontInputBlockSidebarSettings<AppBridgeBlock>;
46
47
  export type InputBlock = InputBlockSidebarSettings<AppBridgeBlock>;
47
48
  export type LegacyAssetInputBlock = LegacyAssetInputBlockSidebarSettings<AppBridgeBlock>;
49
+ export type LinkBlock = LinkBlockSidebarSettings<AppBridgeBlock>;
48
50
  export type LinkChooserBlock = LinkChooserBlockSidebarSettings<AppBridgeBlock>;
49
51
  export type MultiInputBlock = MultiInputBlockSidebarSettings<AppBridgeBlock>;
50
52
  export type NotificationBlock = NotificationBlockSidebarSettings<AppBridgeBlock>;
@@ -1,18 +0,0 @@
1
- import { getAboveNode as c, ELEMENT_LINK as s } from "@udecode/plate";
2
- const n = (r, e) => {
3
- const t = c(r, { match: { type: s } });
4
- return Array.isArray(t) ? e(t[0]) : "";
5
- }, u = (r) => n(r, (e) => {
6
- var t, o;
7
- return ((o = (t = e.chosenLink) == null ? void 0 : t.searchResult) == null ? void 0 : o.link) || "";
8
- }), L = (r) => n(r, (e) => e.url || ""), i = (r) => {
9
- var e, t;
10
- return r.url || ((t = (e = r.chosenLink) == null ? void 0 : e.searchResult) == null ? void 0 : t.link) || "";
11
- }, g = (r) => n(r, i);
12
- export {
13
- u as getLegacyUrl,
14
- L as getUrl,
15
- g as getUrlFromEditor,
16
- i as getUrlFromLinkOrLegacyLink
17
- };
18
- //# sourceMappingURL=getUrl.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getUrl.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { ELEMENT_LINK, PlateEditor, getAboveNode } from '@udecode/plate';\nimport { TLinkElement } from '../types';\n\nconst getLinkNode = (editor: PlateEditor, cb: (link: TLinkElement) => string): string => {\n const linkNode = getAboveNode<TLinkElement>(editor, { match: { type: ELEMENT_LINK } });\n\n if (!Array.isArray(linkNode)) {\n return '';\n }\n\n return cb(linkNode[0]);\n};\n\nexport const getLegacyUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.chosenLink?.searchResult?.link || '');\n};\n\nexport const getUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.url || '');\n};\n\nexport const getUrlFromLinkOrLegacyLink = (link: TLinkElement): string => {\n return link.url || link.chosenLink?.searchResult?.link || '';\n};\n\nexport const getUrlFromEditor = (editor: PlateEditor) => {\n return getLinkNode(editor, getUrlFromLinkOrLegacyLink);\n};\n"],"names":["getLinkNode","editor","cb","linkNode","getAboveNode","ELEMENT_LINK","getLegacyUrl","link","_b","_a","getUrl","getUrlFromLinkOrLegacyLink","getUrlFromEditor"],"mappings":";AAKA,MAAMA,IAAc,CAACC,GAAqBC,MAA+C;AAC/E,QAAAC,IAAWC,EAA2BH,GAAQ,EAAE,OAAO,EAAE,MAAMI,EAAa,EAAA,CAAG;AAErF,SAAK,MAAM,QAAQF,CAAQ,IAIpBD,EAAGC,EAAS,CAAC,CAAC,IAHV;AAIf,GAEaG,IAAe,CAACL,MAClBD,EAAYC,GAAQ,CAACM,MAAS;;AAAA,WAAAC,KAAAC,IAAAF,EAAK,eAAL,gBAAAE,EAAiB,iBAAjB,gBAAAD,EAA+B,SAAQ;AAAA,CAAE,GAGrEE,IAAS,CAACT,MACZD,EAAYC,GAAQ,CAACM,MAASA,EAAK,OAAO,EAAE,GAG1CI,IAA6B,CAACJ,MAA+B;;AACtE,SAAOA,EAAK,SAAOC,KAAAC,IAAAF,EAAK,eAAL,gBAAAE,EAAiB,iBAAjB,gBAAAD,EAA+B,SAAQ;AAC9D,GAEaI,IAAmB,CAACX,MACtBD,EAAYC,GAAQU,CAA0B;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"relativeUrlRegex.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/utils/relativeUrlRegex.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nexport const relativeUrlRegex = /^\\/(document|r)\\/\\S+$/i;\n"],"names":["relativeUrlRegex"],"mappings":"AAEO,MAAMA,IAAmB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"url.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/utils/url.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { addHttps } from '../../../../../helpers';\nimport { relativeUrlRegex } from './relativeUrlRegex';\n\nexport const isValidUrl = (url: string) => {\n if (relativeUrlRegex.test(url)) {\n return true;\n }\n try {\n const parsedUrl = new URL(url);\n const validProtocols = ['http:', 'https:', 'mailto:', 'tel:'];\n return validProtocols.includes(parsedUrl.protocol) && parsedUrl.pathname !== '';\n } catch (error) {\n return false;\n }\n};\n\nexport const isValidUrlOrEmpty = (url: string) => {\n return isValidUrl(addHttps(url)) || url === '';\n};\n"],"names":["isValidUrl","url","relativeUrlRegex","parsedUrl","isValidUrlOrEmpty","addHttps"],"mappings":";;AAKa,MAAAA,IAAa,CAACC,MAAgB;AACnC,MAAAC,EAAiB,KAAKD,CAAG;AAClB,WAAA;AAEP,MAAA;AACM,UAAAE,IAAY,IAAI,IAAIF,CAAG;AAE7B,WADuB,CAAC,SAAS,UAAU,WAAW,MAAM,EACtC,SAASE,EAAU,QAAQ,KAAKA,EAAU,aAAa;AAAA,UACjE;AACL,WAAA;AAAA,EACX;AACJ,GAEaC,IAAoB,CAACH,MACvBD,EAAWK,EAASJ,CAAG,CAAC,KAAKA,MAAQ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocumentLink.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLink.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock } from '@frontify/app-bridge';\nimport { useEffect, useState } from 'react';\nimport { PageLinks } from './PageLinks';\nimport { IconColorFan16, merge } from '@frontify/fondue';\nimport { InitiallyExpandedItems } from '../../LinkPlugin/FloatingLink/InsertLinkModal/types';\n\ntype DocumentLinkProps = {\n document: {\n id: number;\n title: string;\n permanentLink: string;\n };\n appBridge: AppBridgeBlock;\n selectedUrl: string;\n onSelectUrl: (url: string) => void;\n itemsToExpandInitially: InitiallyExpandedItems;\n};\n\nexport const DocumentLink = ({\n document,\n appBridge,\n selectedUrl,\n onSelectUrl,\n itemsToExpandInitially,\n}: DocumentLinkProps) => {\n const [isExpanded, setIsExpanded] = useState(document.id === itemsToExpandInitially.documentId);\n const isActive = document.permanentLink === selectedUrl;\n\n useEffect(() => {\n if (document.id === itemsToExpandInitially.documentId) {\n setIsExpanded(true);\n }\n }, [itemsToExpandInitially, document.id]);\n\n return (\n <>\n <button\n data-test-id=\"internal-link-selector-document-link\"\n className={merge([\n 'tw-flex tw-flex-1 tw-space-x-2 tw-items-center tw-py-2 tw-px-2.5 tw-leading-5 tw-cursor-pointer tw-w-full',\n isActive\n ? 'tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover:hover hover:tw-text-box-selected-strong-inverse-hover:hover'\n : 'hover:tw-bg-box-neutral-hover hover:tw-text-box-neutral-inverse-hover',\n ])}\n onClick={() => onSelectUrl(document.permanentLink)}\n onFocus={() => onSelectUrl(document.permanentLink)}\n >\n <div\n role=\"button\"\n tabIndex={0}\n data-test-id=\"tree-item-toggle\"\n className=\"tw-flex tw-items-center tw-justify-center tw-p-1.5 tw-cursor-pointer\"\n onClick={() => setIsExpanded(!isExpanded)}\n onFocus={() => setIsExpanded(!isExpanded)}\n >\n <div\n className={merge([\n 'tw-transition-transform tw-w-0 tw-h-0 tw-font-normal tw-border-t-4 tw-border-t-transparent tw-border-b-4 tw-border-b-transparent tw-border-l-4 tw-border-l-x-strong',\n isExpanded ? 'tw-rotate-90' : '',\n ])}\n ></div>\n </div>\n <IconColorFan16 />\n <span className=\"tw-text-s\">{document.title}</span>\n <span className=\"tw-flex-auto tw-font-sans tw-text-xs tw-text-right\">Document</span>\n </button>\n {isExpanded && (\n <PageLinks\n appBridge={appBridge}\n documentId={document.id}\n selectedUrl={selectedUrl}\n onSelectUrl={onSelectUrl}\n itemsToExpandInitially={itemsToExpandInitially}\n />\n )}\n </>\n );\n};\n"],"names":["DocumentLink","document","appBridge","selectedUrl","onSelectUrl","itemsToExpandInitially","isExpanded","setIsExpanded","useState","isActive","useEffect","jsxs","Fragment","merge","jsx","IconColorFan16","PageLinks"],"mappings":";;;;AAoBO,MAAMA,IAAe,CAAC;AAAA,EACzB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,wBAAAC;AACJ,MAAyB;AACf,QAAA,CAACC,GAAYC,CAAa,IAAIC,EAASP,EAAS,OAAOI,EAAuB,UAAU,GACxFI,IAAWR,EAAS,kBAAkBE;AAE5C,SAAAO,EAAU,MAAM;AACR,IAAAT,EAAS,OAAOI,EAAuB,cACvCE,EAAc,EAAI;AAAA,EAEvB,GAAA,CAACF,GAAwBJ,EAAS,EAAE,CAAC,GAIhC,gBAAAU,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,gBAAa;AAAA,QACb,WAAWE,EAAM;AAAA,UACb;AAAA,UACAJ,IACM,oKACA;AAAA,QAAA,CACT;AAAA,QACD,SAAS,MAAML,EAAYH,EAAS,aAAa;AAAA,QACjD,SAAS,MAAMG,EAAYH,EAAS,aAAa;AAAA,QAEjD,UAAA;AAAA,UAAA,gBAAAa;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,UAAU;AAAA,cACV,gBAAa;AAAA,cACb,WAAU;AAAA,cACV,SAAS,MAAMP,EAAc,CAACD,CAAU;AAAA,cACxC,SAAS,MAAMC,EAAc,CAACD,CAAU;AAAA,cAExC,UAAA,gBAAAQ;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,WAAWD,EAAM;AAAA,oBACb;AAAA,oBACAP,IAAa,iBAAiB;AAAA,kBAAA,CACjC;AAAA,gBAAA;AAAA,cACJ;AAAA,YAAA;AAAA,UACL;AAAA,4BACCS,GAAe,EAAA;AAAA,UACf,gBAAAD,EAAA,QAAA,EAAK,WAAU,aAAa,YAAS,OAAM;AAAA,UAC3C,gBAAAA,EAAA,QAAA,EAAK,WAAU,sDAAqD,UAAQ,YAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACjF;AAAA,IACCR,KACG,gBAAAQ;AAAA,MAACE;AAAA,MAAA;AAAA,QACG,WAAAd;AAAA,QACA,YAAYD,EAAS;AAAA,QACrB,aAAAE;AAAA,QACA,aAAAC;AAAA,QACA,wBAAAC;AAAA,MAAA;AAAA,IACJ;AAAA,EAER,EAAA,CAAA;AAER;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocumentLinks.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLinks.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock, Document } from '@frontify/app-bridge';\nimport { LoadingCircle } from '@frontify/fondue';\nimport { ReactElement, useEffect, useState } from 'react';\nimport { InitiallyExpandedItems } from '../../LinkPlugin/FloatingLink/InsertLinkModal/types';\nimport { DocumentLink } from './DocumentLink';\n\ntype DocumentLinksProps = {\n appBridge: AppBridgeBlock;\n selectedUrl: string;\n onSelectUrl: (url: string) => void;\n};\n\nexport const DocumentLinks = ({ appBridge, selectedUrl, onSelectUrl }: DocumentLinksProps): ReactElement => {\n const [isLoading, setIsLoading] = useState(true);\n const [documents, setDocuments] = useState<Document[]>([]);\n const [itemsToExpandInitially, setItemsToExpandInitially] = useState<InitiallyExpandedItems>({\n documentId: undefined,\n pageId: undefined,\n });\n\n const documentArray = [...documents.values()];\n\n useEffect(() => {\n if (selectedUrl && documentArray.length > 0) {\n findLocationOfSelectedUrl().then((items) => {\n setItemsToExpandInitially(items);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [documentArray.length]);\n\n useEffect(() => {\n appBridge\n .getAllDocuments()\n .then((_documents) => {\n setDocuments(_documents);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, []);\n\n const findLocationOfSelectedUrl = async () => {\n const itemsToExpand: InitiallyExpandedItems = {\n documentId: undefined,\n pageId: undefined,\n };\n const selectedUrlIsDocument = documentArray.find((document) => document.permanentLink === selectedUrl);\n if (selectedUrlIsDocument) {\n return itemsToExpand;\n }\n for (const document of documentArray) {\n const pages = await appBridge.getDocumentPagesByDocumentId(document.id);\n appBridge.getAllDocuments();\n const pagesArray = [...pages.values()];\n const selectedUrlIsPage = !!pagesArray.find((page) => page.permanentLink === selectedUrl);\n if (selectedUrlIsPage) {\n itemsToExpand.documentId = document.id;\n return itemsToExpand;\n }\n for (const page of pagesArray) {\n const sections = await appBridge.getDocumentSectionsByDocumentPageId(page.id);\n const sectionsArray = [...sections.values()];\n const selectedUrlIsSection = !!sectionsArray.find((section) => section.permanentLink === selectedUrl);\n if (selectedUrlIsSection) {\n itemsToExpand.documentId = document.id;\n itemsToExpand.pageId = page.id;\n return itemsToExpand;\n }\n }\n }\n return itemsToExpand;\n };\n\n return isLoading ? (\n <div className=\"tw-flex tw-justify-center tw-p-4\">\n <LoadingCircle />\n </div>\n ) : (\n <>\n {documentArray.map((document) => {\n return (\n <DocumentLink\n key={document.id}\n document={document}\n appBridge={appBridge}\n selectedUrl={selectedUrl}\n onSelectUrl={onSelectUrl}\n itemsToExpandInitially={itemsToExpandInitially}\n />\n );\n })}\n </>\n );\n};\n"],"names":["DocumentLinks","appBridge","selectedUrl","onSelectUrl","isLoading","setIsLoading","useState","documents","setDocuments","itemsToExpandInitially","setItemsToExpandInitially","documentArray","useEffect","findLocationOfSelectedUrl","items","_documents","itemsToExpand","document","pages","pagesArray","page","section","jsx","LoadingCircle","Fragment","DocumentLink"],"mappings":";;;;AAcO,MAAMA,IAAgB,CAAC,EAAE,WAAAC,GAAW,aAAAC,GAAa,aAAAC,QAAoD;AACxG,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAI,GACzC,CAACC,GAAWC,CAAY,IAAIF,EAAqB,CAAE,CAAA,GACnD,CAACG,GAAwBC,CAAyB,IAAIJ,EAAiC;AAAA,IACzF,YAAY;AAAA,IACZ,QAAQ;AAAA,EAAA,CACX,GAEKK,IAAgB,CAAC,GAAGJ,EAAU,OAAQ,CAAA;AAE5C,EAAAK,EAAU,MAAM;AACR,IAAAV,KAAeS,EAAc,SAAS,KACZE,EAAA,EAAE,KAAK,CAACC,MAAU;AACxC,MAAAJ,EAA0BI,CAAK;AAAA,IAAA,CAClC;AAAA,EACL,GAED,CAACH,EAAc,MAAM,CAAC,GAEzBC,EAAU,MAAM;AACZ,IAAAX,EACK,gBAAgB,EAChB,KAAK,CAACc,MAAe;AAClB,MAAAP,EAAaO,CAAU;AAAA,IAAA,CAC1B,EACA,QAAQ,MAAM;AACX,MAAAV,EAAa,EAAK;AAAA,IAAA,CACrB;AAAA,EACT,GAAG,CAAE,CAAA;AAEL,QAAMQ,IAA4B,YAAY;AAC1C,UAAMG,IAAwC;AAAA,MAC1C,YAAY;AAAA,MACZ,QAAQ;AAAA,IAAA;AAGZ,QAD8BL,EAAc,KAAK,CAACM,MAAaA,EAAS,kBAAkBf,CAAW;AAE1F,aAAAc;AAEX,eAAWC,KAAYN,GAAe;AAClC,YAAMO,IAAQ,MAAMjB,EAAU,6BAA6BgB,EAAS,EAAE;AACtE,MAAAhB,EAAU,gBAAgB;AAC1B,YAAMkB,IAAa,CAAC,GAAGD,EAAM,OAAQ,CAAA;AAErC,UAD0B,CAAC,CAACC,EAAW,KAAK,CAACC,MAASA,EAAK,kBAAkBlB,CAAW;AAEpF,eAAAc,EAAc,aAAaC,EAAS,IAC7BD;AAEX,iBAAWI,KAAQD;AAIf,YAD6B,CAAC,CADR,CAAC,IADN,MAAMlB,EAAU,oCAAoCmB,EAAK,EAAE,GACzC,OAAQ,CAAA,EACE,KAAK,CAACC,MAAYA,EAAQ,kBAAkBnB,CAAW;AAEhG,iBAAAc,EAAc,aAAaC,EAAS,IACpCD,EAAc,SAASI,EAAK,IACrBJ;AAAA,IAGnB;AACO,WAAAA;AAAA,EAAA;AAGX,SAAOZ,IACH,gBAAAkB,EAAC,OAAI,EAAA,WAAU,oCACX,UAAA,gBAAAA,EAACC,GAAc,CAAA,CAAA,GACnB,IAEA,gBAAAD,EAAAE,GAAA,EACK,UAAcb,EAAA,IAAI,CAACM,MAEZ,gBAAAK;AAAA,IAACG;AAAA,IAAA;AAAA,MAEG,UAAAR;AAAA,MACA,WAAAhB;AAAA,MACA,aAAAC;AAAA,MACA,aAAAC;AAAA,MACA,wBAAAM;AAAA,IAAA;AAAA,IALKQ,EAAS;AAAA,EAAA,CAQzB,EACL,CAAA;AAER;"}
@@ -1,62 +0,0 @@
1
- import { jsxs as d, jsx as t } from "react/jsx-runtime";
2
- import { Button as y, IconLink as D, ButtonSize as S, ButtonType as B, ButtonStyle as l, ButtonEmphasis as r, Modal as i } from "@frontify/fondue";
3
- import { useOverlayTriggerState as L } from "@react-stately/overlays";
4
- import { useState as C, useEffect as T } from "react";
5
- import { DocumentLinks as x } from "./DocumentLinks.es.js";
6
- const I = ({ appBridge: p, url: o, onUrlChange: m }) => {
7
- const { open: u, isOpen: f, close: s } = L({}), [n, c] = C(o), k = (e) => {
8
- c(e);
9
- }, h = (e) => {
10
- e.key === "Enter" && a();
11
- };
12
- T(() => {
13
- o && !n && c(o);
14
- }, [o, n]);
15
- const a = () => {
16
- m(n), s();
17
- };
18
- return /* @__PURE__ */ d("div", { "data-test-id": "internal-link-selector", onKeyDown: h, children: [
19
- /* @__PURE__ */ t(
20
- y,
21
- {
22
- icon: /* @__PURE__ */ t(D, {}),
23
- size: S.Medium,
24
- type: B.Button,
25
- style: l.Default,
26
- emphasis: r.Default,
27
- onClick: () => u(),
28
- children: "Internal link"
29
- }
30
- ),
31
- /* @__PURE__ */ d(i, { zIndex: 1001, onClose: () => s(), isOpen: f, isDismissable: !0, children: [
32
- /* @__PURE__ */ t(i.Header, { title: "Select internal link" }),
33
- /* @__PURE__ */ t(i.Body, { children: /* @__PURE__ */ t(x, { appBridge: p, selectedUrl: n, onSelectUrl: k }) }),
34
- /* @__PURE__ */ t(
35
- i.Footer,
36
- {
37
- buttons: [
38
- {
39
- children: "Cancel",
40
- onClick: () => s(),
41
- style: l.Default,
42
- emphasis: r.Default
43
- },
44
- {
45
- children: "Choose",
46
- onClick: (e) => {
47
- e == null || e.preventDefault(), a();
48
- },
49
- style: l.Default,
50
- emphasis: r.Strong,
51
- disabled: !n
52
- }
53
- ]
54
- }
55
- )
56
- ] })
57
- ] });
58
- };
59
- export {
60
- I as LinkSelector
61
- };
62
- //# sourceMappingURL=LinkSelector.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkSelector.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/shared/LinkSelector/LinkSelector.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock } from '@frontify/app-bridge';\nimport { Button, ButtonEmphasis, ButtonSize, ButtonStyle, ButtonType, IconLink, Modal } from '@frontify/fondue';\nimport { useOverlayTriggerState } from '@react-stately/overlays';\nimport { KeyboardEvent, ReactElement, useEffect, useState } from 'react';\nimport { DocumentLinks } from './DocumentLinks';\n\ntype LinkSelectorProps = {\n appBridge: AppBridgeBlock;\n url: string;\n onUrlChange: (value: string) => void;\n};\n\nexport const LinkSelector = ({ appBridge, url, onUrlChange }: LinkSelectorProps): ReactElement => {\n const { open: openLinkTree, isOpen: isLinkTreeOpen, close: closeLinkTree } = useOverlayTriggerState({});\n const [selectedUrl, setSelectedUrl] = useState<string>(url);\n\n const onSelectUrl = (url: string) => {\n setSelectedUrl(url);\n };\n\n const onPressEnter = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n saveLink();\n }\n };\n\n useEffect(() => {\n if (url && !selectedUrl) {\n setSelectedUrl(url);\n }\n }, [url, selectedUrl]);\n\n const saveLink = () => {\n onUrlChange(selectedUrl);\n closeLinkTree();\n };\n\n return (\n <div data-test-id=\"internal-link-selector\" onKeyDown={onPressEnter}>\n <Button\n icon={<IconLink />}\n size={ButtonSize.Medium}\n type={ButtonType.Button}\n style={ButtonStyle.Default}\n emphasis={ButtonEmphasis.Default}\n onClick={() => openLinkTree()}\n >\n Internal link\n </Button>\n <Modal zIndex={1001} onClose={() => closeLinkTree()} isOpen={isLinkTreeOpen} isDismissable>\n <Modal.Header title=\"Select internal link\" />\n <Modal.Body>\n <DocumentLinks appBridge={appBridge} selectedUrl={selectedUrl} onSelectUrl={onSelectUrl} />\n </Modal.Body>\n <Modal.Footer\n buttons={[\n {\n children: 'Cancel',\n onClick: () => closeLinkTree(),\n style: ButtonStyle.Default,\n emphasis: ButtonEmphasis.Default,\n },\n {\n children: 'Choose',\n onClick: (event) => {\n event?.preventDefault();\n saveLink();\n },\n style: ButtonStyle.Default,\n emphasis: ButtonEmphasis.Strong,\n disabled: !selectedUrl,\n },\n ]}\n />\n </Modal>\n </div>\n );\n};\n"],"names":["LinkSelector","appBridge","url","onUrlChange","openLinkTree","isLinkTreeOpen","closeLinkTree","useOverlayTriggerState","selectedUrl","setSelectedUrl","useState","onSelectUrl","onPressEnter","event","saveLink","useEffect","jsxs","jsx","Button","IconLink","ButtonSize","ButtonType","ButtonStyle","ButtonEmphasis","Modal","DocumentLinks"],"mappings":";;;;;AAcO,MAAMA,IAAe,CAAC,EAAE,WAAAC,GAAW,KAAAC,GAAK,aAAAC,QAAmD;AACxF,QAAA,EAAE,MAAMC,GAAc,QAAQC,GAAgB,OAAOC,EAAc,IAAIC,EAAuB,CAAA,CAAE,GAChG,CAACC,GAAaC,CAAc,IAAIC,EAAiBR,CAAG,GAEpDS,IAAc,CAACT,MAAgB;AACjC,IAAAO,EAAeP,CAAG;AAAA,EAAA,GAGhBU,IAAe,CAACC,MAA2C;AACzD,IAAAA,EAAM,QAAQ,WACLC;EACb;AAGJ,EAAAC,EAAU,MAAM;AACR,IAAAb,KAAO,CAACM,KACRC,EAAeP,CAAG;AAAA,EACtB,GACD,CAACA,GAAKM,CAAW,CAAC;AAErB,QAAMM,IAAW,MAAM;AACnB,IAAAX,EAAYK,CAAW,GACTF;EAAA;AAGlB,SACK,gBAAAU,EAAA,OAAA,EAAI,gBAAa,0BAAyB,WAAWJ,GAClD,UAAA;AAAA,IAAA,gBAAAK;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,wBAAOC,GAAS,EAAA;AAAA,QAChB,MAAMC,EAAW;AAAA,QACjB,MAAMC,EAAW;AAAA,QACjB,OAAOC,EAAY;AAAA,QACnB,UAAUC,EAAe;AAAA,QACzB,SAAS,MAAMnB,EAAa;AAAA,QAC/B,UAAA;AAAA,MAAA;AAAA,IAED;AAAA,IACA,gBAAAY,EAACQ,GAAM,EAAA,QAAQ,MAAM,SAAS,MAAMlB,EAAiB,GAAA,QAAQD,GAAgB,eAAa,IACtF,UAAA;AAAA,MAAA,gBAAAY,EAACO,EAAM,QAAN,EAAa,OAAM,uBAAuB,CAAA;AAAA,MAC3C,gBAAAP,EAACO,EAAM,MAAN,EACG,4BAACC,GAAc,EAAA,WAAAxB,GAAsB,aAAAO,GAA0B,aAAAG,EAAA,CAA0B,EAC7F,CAAA;AAAA,MACA,gBAAAM;AAAA,QAACO,EAAM;AAAA,QAAN;AAAA,UACG,SAAS;AAAA,YACL;AAAA,cACI,UAAU;AAAA,cACV,SAAS,MAAMlB,EAAc;AAAA,cAC7B,OAAOgB,EAAY;AAAA,cACnB,UAAUC,EAAe;AAAA,YAC7B;AAAA,YACA;AAAA,cACI,UAAU;AAAA,cACV,SAAS,CAACV,MAAU;AAChB,gBAAAA,KAAA,QAAAA,EAAO,kBACEC;cACb;AAAA,cACA,OAAOQ,EAAY;AAAA,cACnB,UAAUC,EAAe;AAAA,cACzB,UAAU,CAACf;AAAA,YACf;AAAA,UACJ;AAAA,QAAA;AAAA,MACJ;AAAA,IAAA,GACJ;AAAA,EACJ,EAAA,CAAA;AAER;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageLink.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/shared/LinkSelector/PageLink.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock, useDocumentSection } from '@frontify/app-bridge';\nimport { merge } from '@frontify/fondue';\nimport { useEffect, useState } from 'react';\nimport { InitiallyExpandedItems } from '../../LinkPlugin/FloatingLink/InsertLinkModal/types';\nimport { SectionLink } from './SectionLink';\n\ntype DocumentLinkProps = {\n page: {\n id: number;\n title: string;\n permanentLink: string;\n };\n selectedUrl: string;\n onSelectUrl: (url: string) => void;\n appBridge: AppBridgeBlock;\n itemsToExpandInitially: InitiallyExpandedItems;\n};\n\nexport const PageLink = ({ page, selectedUrl, onSelectUrl, itemsToExpandInitially, appBridge }: DocumentLinkProps) => {\n const [isExpanded, setIsExpanded] = useState(page.id === itemsToExpandInitially.documentId);\n const isActive = page.permanentLink === selectedUrl;\n const { documentSections } = useDocumentSection(appBridge, page.id);\n const sectionsArray = [...documentSections.values()];\n const hasSections = sectionsArray.length > 0;\n\n useEffect(() => {\n if (page.id === itemsToExpandInitially.pageId) {\n setIsExpanded(true);\n }\n }, [itemsToExpandInitially, page.id]);\n\n return (\n <>\n <div\n tabIndex={0}\n data-test-id=\"internal-link-selector-page-link\"\n className={merge([\n 'tw-py-2 tw-px-2.5 tw-leading-5 tw-cursor-pointer',\n hasSections ? 'tw-pl-7' : 'tw-pl-12',\n isActive\n ? 'tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover:hover hover:tw-text-box-selected-strong-inverse-hover:hover'\n : 'hover:tw-bg-box-neutral-hover hover:tw-text-box-neutral-inverse-hover',\n ])}\n onClick={() => onSelectUrl(page.permanentLink)}\n onFocus={() => onSelectUrl(page.permanentLink)}\n >\n <div key={page.id} className=\"tw-flex tw-flex-1 tw-space-x-1 tw-items-center tw-h-6\">\n {hasSections && (\n <button\n data-test-id=\"tree-item-toggle\"\n className=\"tw-flex tw-items-center tw-justify-center tw-p-1.5 tw-cursor-pointer\"\n onClick={() => setIsExpanded(!isExpanded)}\n onFocus={() => setIsExpanded(!isExpanded)}\n >\n <div\n className={merge([\n 'tw-transition-transform tw-w-0 tw-h-0 tw-font-normal tw-border-t-4 tw-border-t-transparent tw-border-b-4 tw-border-b-transparent tw-border-l-4 tw-border-l-x-strong',\n isExpanded ? 'tw-rotate-90' : '',\n ])}\n ></div>\n </button>\n )}\n <span className=\"tw-text-s\">{page.title}</span>\n <span className=\"tw-flex-auto tw-font-sans tw-text-xs tw-text-right\">Page</span>\n </div>\n </div>\n {isExpanded &&\n sectionsArray.length > 0 &&\n sectionsArray.map((section) => {\n return (\n <SectionLink\n key={section.id}\n section={section}\n selectedUrl={selectedUrl}\n onSelectUrl={onSelectUrl}\n />\n );\n })}\n </>\n );\n};\n"],"names":["PageLink","page","selectedUrl","onSelectUrl","itemsToExpandInitially","appBridge","isExpanded","setIsExpanded","useState","isActive","documentSections","useDocumentSection","sectionsArray","hasSections","useEffect","jsxs","Fragment","jsx","merge","section","SectionLink"],"mappings":";;;;;AAoBa,MAAAA,IAAW,CAAC,EAAE,MAAAC,GAAM,aAAAC,GAAa,aAAAC,GAAa,wBAAAC,GAAwB,WAAAC,QAAmC;AAC5G,QAAA,CAACC,GAAYC,CAAa,IAAIC,EAASP,EAAK,OAAOG,EAAuB,UAAU,GACpFK,IAAWR,EAAK,kBAAkBC,GAClC,EAAE,kBAAAQ,EAAiB,IAAIC,EAAmBN,GAAWJ,EAAK,EAAE,GAC5DW,IAAgB,CAAC,GAAGF,EAAiB,OAAQ,CAAA,GAC7CG,IAAcD,EAAc,SAAS;AAE3C,SAAAE,EAAU,MAAM;AACR,IAAAb,EAAK,OAAOG,EAAuB,UACnCG,EAAc,EAAI;AAAA,EAEvB,GAAA,CAACH,GAAwBH,EAAK,EAAE,CAAC,GAI5B,gBAAAc,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,UAAU;AAAA,QACV,gBAAa;AAAA,QACb,WAAWC,EAAM;AAAA,UACb;AAAA,UACAL,IAAc,YAAY;AAAA,UAC1BJ,IACM,oKACA;AAAA,QAAA,CACT;AAAA,QACD,SAAS,MAAMN,EAAYF,EAAK,aAAa;AAAA,QAC7C,SAAS,MAAME,EAAYF,EAAK,aAAa;AAAA,QAE7C,UAAA,gBAAAc,EAAC,OAAkB,EAAA,WAAU,yDACxB,UAAA;AAAA,UACGF,KAAA,gBAAAI;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,gBAAa;AAAA,cACb,WAAU;AAAA,cACV,SAAS,MAAMV,EAAc,CAACD,CAAU;AAAA,cACxC,SAAS,MAAMC,EAAc,CAACD,CAAU;AAAA,cAExC,UAAA,gBAAAW;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,WAAWC,EAAM;AAAA,oBACb;AAAA,oBACAZ,IAAa,iBAAiB;AAAA,kBAAA,CACjC;AAAA,gBAAA;AAAA,cACJ;AAAA,YAAA;AAAA,UACL;AAAA,UAEH,gBAAAW,EAAA,QAAA,EAAK,WAAU,aAAa,YAAK,OAAM;AAAA,UACvC,gBAAAA,EAAA,QAAA,EAAK,WAAU,sDAAqD,UAAI,QAAA;AAAA,QAAA,EAAA,GAjBnEhB,EAAK,EAkBf;AAAA,MAAA;AAAA,IACJ;AAAA,IACCK,KACGM,EAAc,SAAS,KACvBA,EAAc,IAAI,CAACO,MAEX,gBAAAF;AAAA,MAACG;AAAA,MAAA;AAAA,QAEG,SAAAD;AAAA,QACA,aAAAjB;AAAA,QACA,aAAAC;AAAA,MAAA;AAAA,MAHKgB,EAAQ;AAAA,IAAA,CAMxB;AAAA,EACT,EAAA,CAAA;AAER;"}
@@ -1,34 +0,0 @@
1
- import { jsx as t, Fragment as u } from "react/jsx-runtime";
2
- import { LoadingCircle as p } from "@frontify/fondue";
3
- import { useState as o, useEffect as w } from "react";
4
- import { PageLink as h } from "./PageLink.es.js";
5
- const k = ({
6
- appBridge: s,
7
- documentId: r,
8
- selectedUrl: i,
9
- onSelectUrl: c,
10
- itemsToExpandInitially: m
11
- }) => {
12
- const [l, g] = o([]), [n, d] = o(!0), a = [...l.values()], f = !n && a.length > 0;
13
- return w(() => {
14
- s.getDocumentPagesByDocumentId(r).then((e) => {
15
- g(e);
16
- }).finally(() => {
17
- d(!1);
18
- });
19
- }, []), n ? /* @__PURE__ */ t("div", { className: "tw-flex tw-justify-center tw-p-4", children: /* @__PURE__ */ t(p, {}) }) : f ? /* @__PURE__ */ t(u, { children: a.map((e) => /* @__PURE__ */ t(
20
- h,
21
- {
22
- page: e,
23
- appBridge: s,
24
- selectedUrl: i,
25
- onSelectUrl: c,
26
- itemsToExpandInitially: m
27
- },
28
- e.id
29
- )) }) : /* @__PURE__ */ t("div", { className: "tw-py-2 tw-px-2.5 tw-pl-7 tw-leading-5 tw-text-s tw-text-text-weak", children: "This document does not contain any pages." });
30
- };
31
- export {
32
- k as PageLinks
33
- };
34
- //# sourceMappingURL=PageLinks.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageLinks.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/shared/LinkSelector/PageLinks.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock, DocumentPage } from '@frontify/app-bridge';\nimport { LoadingCircle } from '@frontify/fondue';\nimport { ReactElement, useEffect, useState } from 'react';\nimport { InitiallyExpandedItems } from '../../LinkPlugin/FloatingLink/InsertLinkModal/types';\nimport { PageLink } from './PageLink';\n\ntype PageLinksProps = {\n appBridge: AppBridgeBlock;\n documentId: number;\n selectedUrl: string;\n onSelectUrl: (url: string) => void;\n itemsToExpandInitially: InitiallyExpandedItems;\n};\n\nexport const PageLinks = ({\n appBridge,\n documentId,\n selectedUrl,\n onSelectUrl,\n itemsToExpandInitially,\n}: PageLinksProps): ReactElement => {\n const [pages, setPages] = useState<DocumentPage[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const pagesArray = [...pages.values()];\n const hasPages = !isLoading && pagesArray.length > 0;\n\n useEffect(() => {\n appBridge\n .getDocumentPagesByDocumentId(documentId)\n .then((_pages) => {\n setPages(_pages);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, []);\n\n if (isLoading) {\n return (\n <div className=\"tw-flex tw-justify-center tw-p-4\">\n <LoadingCircle />\n </div>\n );\n }\n\n return hasPages ? (\n <>\n {pagesArray.map((page) => {\n return (\n <PageLink\n key={page.id}\n page={page}\n appBridge={appBridge}\n selectedUrl={selectedUrl}\n onSelectUrl={onSelectUrl}\n itemsToExpandInitially={itemsToExpandInitially}\n />\n );\n })}\n </>\n ) : (\n <div className=\"tw-py-2 tw-px-2.5 tw-pl-7 tw-leading-5 tw-text-s tw-text-text-weak\">\n This document does not contain any pages.\n </div>\n );\n};\n"],"names":["PageLinks","appBridge","documentId","selectedUrl","onSelectUrl","itemsToExpandInitially","pages","setPages","useState","isLoading","setIsLoading","pagesArray","hasPages","useEffect","_pages","jsx","LoadingCircle","Fragment","page","PageLink"],"mappings":";;;;AAgBO,MAAMA,IAAY,CAAC;AAAA,EACtB,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,wBAAAC;AACJ,MAAoC;AAChC,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAyB,CAAE,CAAA,GAC/C,CAACC,GAAWC,CAAY,IAAIF,EAAS,EAAI,GACzCG,IAAa,CAAC,GAAGL,EAAM,OAAQ,CAAA,GAC/BM,IAAW,CAACH,KAAaE,EAAW,SAAS;AAanD,SAXAE,EAAU,MAAM;AACZ,IAAAZ,EACK,6BAA6BC,CAAU,EACvC,KAAK,CAACY,MAAW;AACd,MAAAP,EAASO,CAAM;AAAA,IAAA,CAClB,EACA,QAAQ,MAAM;AACX,MAAAJ,EAAa,EAAK;AAAA,IAAA,CACrB;AAAA,EACT,GAAG,CAAE,CAAA,GAEDD,sBAEK,OAAI,EAAA,WAAU,oCACX,UAAA,gBAAAM,EAACC,KAAc,EACnB,CAAA,IAIDJ,IACH,gBAAAG,EAAAE,GAAA,EACK,UAAWN,EAAA,IAAI,CAACO,MAET,gBAAAH;AAAA,IAACI;AAAA,IAAA;AAAA,MAEG,MAAAD;AAAA,MACA,WAAAjB;AAAA,MACA,aAAAE;AAAA,MACA,aAAAC;AAAA,MACA,wBAAAC;AAAA,IAAA;AAAA,IALKa,EAAK;AAAA,EAAA,CAQrB,EACL,CAAA,sBAEC,OAAI,EAAA,WAAU,sEAAqE,UAEpF,4CAAA,CAAA;AAER;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SectionLink.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/shared/LinkSelector/SectionLink.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconDocumentText16, merge } from '@frontify/fondue';\n\ntype SectionLinkProps = {\n section: {\n id: number;\n title: string;\n permanentLink: string;\n };\n selectedUrl: string;\n onSelectUrl: (url: string) => void;\n};\n\nexport const SectionLink = ({ section, selectedUrl, onSelectUrl }: SectionLinkProps) => {\n const isActive = section.permanentLink === selectedUrl;\n\n return (\n <button\n data-test-id=\"internal-link-selector-section-link\"\n className={merge([\n 'tw-py-2 tw-px-2.5 tw-pl-14 tw-leading-5 tw-cursor-pointer tw-w-full',\n isActive\n ? 'tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover:hover hover:tw-text-box-selected-strong-inverse-hover:hover'\n : 'hover:tw-bg-box-neutral-hover hover:tw-text-box-neutral-inverse-hover',\n ])}\n onClick={() => onSelectUrl(section.permanentLink)}\n onFocus={() => onSelectUrl(section.permanentLink)}\n >\n <div className=\"tw-flex tw-flex-1 tw-space-x-2 tw-items-center tw-h-6\">\n <IconDocumentText16 />\n <span className=\"tw-text-s\">{section.title}</span>\n <span className=\"tw-flex-auto tw-font-sans tw-text-xs tw-text-right\">Section</span>\n </div>\n </button>\n );\n};\n"],"names":["SectionLink","section","selectedUrl","onSelectUrl","isActive","jsx","merge","jsxs","IconDocumentText16"],"mappings":";;AAcO,MAAMA,IAAc,CAAC,EAAE,SAAAC,GAAS,aAAAC,GAAa,aAAAC,QAAoC;AAC9E,QAAAC,IAAWH,EAAQ,kBAAkBC;AAGvC,SAAA,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,gBAAa;AAAA,MACb,WAAWC,EAAM;AAAA,QACb;AAAA,QACAF,IACM,oKACA;AAAA,MAAA,CACT;AAAA,MACD,SAAS,MAAMD,EAAYF,EAAQ,aAAa;AAAA,MAChD,SAAS,MAAME,EAAYF,EAAQ,aAAa;AAAA,MAEhD,UAAA,gBAAAM,EAAC,OAAI,EAAA,WAAU,yDACX,UAAA;AAAA,QAAA,gBAAAF,EAACG,GAAmB,EAAA;AAAA,QACnB,gBAAAH,EAAA,QAAA,EAAK,WAAU,aAAa,YAAQ,OAAM;AAAA,QAC1C,gBAAAA,EAAA,QAAA,EAAK,WAAU,sDAAqD,UAAO,WAAA;AAAA,MAAA,GAChF;AAAA,IAAA;AAAA,EAAA;AAGZ;"}