@dotcms/react 0.0.1-beta.4 → 0.0.1-beta.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.
package/index.esm.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { s as styleInject, f as functionUncurryThis, t as toString$4, r as requireObjectCoercible$1, a as toIntegerOrInfinity$1, i as iteratorDefine, b as internalState, c as createIterResultObject$2, d as fails$2, w as wellKnownSymbol$4, e as descriptors, g as classofRaw$1, h as aCallable$2, j as functionBindNative, m as makeBuiltInExports, o as objectDefineProperty, k as objectIsPrototypeOf, l as functionCall, n as anObject$4, p as getMethod$2, q as iterators, u as getBuiltIn$1, v as isCallable$2, x as classof$3, y as inspectSource$1, z as createPropertyDescriptor$2, A as isNullOrUndefined$1, B as tryToString$1, C as toObject$1, D as lengthOfArrayLike$1, E as global$3, F as defineBuiltIn$5, G as arraySlice$2, _ as _export, H as setToStringTag$2, I as iteratorCreateConstructor, J as isObject$1, K as objectCreate, L as hasOwnProperty_1, M as objectAssign } from './es.regexp.to-string.esm.js';
3
3
  import { useState, useEffect, createContext, useRef, useContext, createElement, forwardRef } from 'react';
4
- import { isInsideEditor, initEditor, updateNavigation, destroyEditor, DotCmsClient, postMessageToEditor, CLIENT_ACTIONS, NOTIFY_CLIENT, initInlineEditing } from '@dotcms/client';
4
+ import { isInsideEditor, initEditor, updateNavigation, destroyEditor, postMessageToEditor, CLIENT_ACTIONS, DotCmsClient, NOTIFY_CLIENT, initInlineEditing } from '@dotcms/client';
5
+ import { createUVESubscription } from '@dotcms/uve';
5
6
  import { Editor } from '@tinymce/tinymce-react';
6
7
 
7
8
  var isPure = false;
@@ -49,12 +50,13 @@ const useDotcmsEditor = ({
49
50
  */
50
51
  useEffect(() => {
51
52
  const insideEditor = isInsideEditor();
52
- const client = DotCmsClient.instance;
53
53
  if (!insideEditor || !onReload) {
54
54
  return;
55
55
  }
56
- client.editor.on('changes', () => onReload == null ? void 0 : onReload());
57
- return () => client.editor.off('changes');
56
+ const {
57
+ unsubscribe
58
+ } = createUVESubscription('changes', () => onReload());
59
+ return () => unsubscribe();
58
60
  }, [onReload]);
59
61
  /**
60
62
  * Sends a message to the editor when the client is ready.
@@ -69,20 +71,21 @@ const useDotcmsEditor = ({
69
71
  });
70
72
  }, [pathname, editor]);
71
73
  /**
72
- * Updates the page asset when changes are made in the editor.
74
+ * Old
73
75
  */
74
76
  useEffect(() => {
75
77
  if (!isInsideEditor()) {
76
78
  return;
77
79
  }
78
- const client = DotCmsClient.instance;
79
- client.editor.on('changes', data => {
80
+ const {
81
+ unsubscribe
82
+ } = createUVESubscription('changes', data => {
80
83
  const pageAsset = data;
81
84
  setState(state => Object.assign({}, state, {
82
85
  pageAsset
83
86
  }));
84
87
  });
85
- return () => client.editor.off('changes');
88
+ return () => unsubscribe();
86
89
  }, []);
87
90
  return state;
88
91
  };
package/next.esm.js CHANGED
@@ -652,4 +652,87 @@ const DotCMSLayoutBody = ({
652
652
  });
653
653
  };
654
654
 
655
- export { DotCMSLayoutBody };
655
+ /**
656
+ * Custom hook to determine if the current UVE (Universal Visual Editor) mode
657
+ * matches the specified mode. This hook is useful for conditionally rendering
658
+ * components based on the UVE mode.
659
+ *
660
+ * @param {UVE_MODE} when - The UVE mode to check against.
661
+ * @returns {boolean} True if the current UVE mode matches the specified mode, otherwise false.
662
+ *
663
+ * @example
664
+ * // Basic usage: Check if the UVE is in edit mode
665
+ * const showInEditMode = useShowInUVE(UVE_MODE.EDIT);
666
+ * if (showInEditMode) {
667
+ * // Render edit-specific components
668
+ * }
669
+ *
670
+ * @example
671
+ * // Check if the UVE is in preview mode
672
+ * const showInPreviewMode = useShowInUVE(UVE_MODE.PREVIEW);
673
+ * if (showInPreviewMode) {
674
+ * // Render preview-specific components
675
+ * }
676
+ *
677
+ * @example
678
+ * // Check if the UVE is in live mode
679
+ * const showInLiveMode = useShowInUVE(UVE_MODE.LIVE);
680
+ * if (showInLiveMode) {
681
+ * // Render live-specific components
682
+ * }
683
+ */
684
+ const useShowInUVE = when => {
685
+ const [show, setShow] = useState(false);
686
+ useEffect(() => {
687
+ var _getUVEState;
688
+ setShow(((_getUVEState = getUVEState()) == null ? void 0 : _getUVEState.mode) === when);
689
+ }, [when]);
690
+ return show;
691
+ };
692
+
693
+ /**
694
+ * DotCMSShow component is used to conditionally render its children
695
+ * based on the Universal Visual Editor (UVE) mode. It checks if the UVE
696
+ * is in a specified mode and only renders its children in that case.
697
+ *
698
+ * @param {Object} props - The component props.
699
+ * @param {React.ReactNode} props.children - The children to be rendered when the condition is met.
700
+ * @param {UVE_MODE} [props.when=UVE_MODE.EDIT] - The UVE mode in which the children should be rendered.
701
+ * @returns {React.ReactNode | null} The children if the current UVE mode matches the `when` prop, otherwise null.
702
+ *
703
+ * @example
704
+ * // Basic usage: Render content only in edit mode
705
+ * <DotCMSShow when={UVE_MODE.EDIT}>
706
+ * <div>Edit Mode Content</div>
707
+ * </DotCMSShow>
708
+ *
709
+ * // This will render <div>Edit Mode Content</div> only if the UVE is in edit mode.
710
+ *
711
+ * @example
712
+ * // Render content in preview mode
713
+ * <DotCMSShow when={UVE_MODE.PREVIEW}>
714
+ * <MyCustomPreviewComponent />
715
+ * </DotCMSShow>
716
+ *
717
+ * // MyCustomPreviewComponent will only be rendered if the UVE is in preview mode.
718
+ *
719
+ * @example
720
+ * // Render content in live mode
721
+ * <DotCMSShow when={UVE_MODE.LIVE}>
722
+ * <LiveContentComponent />
723
+ * </DotCMSShow>
724
+ *
725
+ * // LiveContentComponent will only be rendered if the UVE is in live mode.
726
+ */
727
+ const DotCMSShow = ({
728
+ children,
729
+ when: _when = UVE_MODE.EDIT
730
+ }) => {
731
+ const show = useShowInUVE(_when);
732
+ if (!show) {
733
+ return null;
734
+ }
735
+ return children;
736
+ };
737
+
738
+ export { DotCMSLayoutBody, DotCMSShow, useShowInUVE };
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@dotcms/react",
3
- "version": "0.0.1-beta.4",
3
+ "version": "0.0.1-beta.5",
4
4
  "peerDependencies": {
5
5
  "react": ">=18",
6
6
  "react-dom": ">=18",
7
- "@dotcms/client": "0.0.1-beta.4",
8
- "@dotcms/uve": "0.0.1-beta.4",
7
+ "@dotcms/client": "0.0.1-beta.5",
8
+ "@dotcms/uve": "0.0.1-beta.5",
9
9
  "@tinymce/tinymce-react": "^5.1.1"
10
10
  },
11
11
  "description": "Official React Components library to render a dotCMS page.",
@@ -0,0 +1,49 @@
1
+ /// <reference types="react" />
2
+ import { UVE_MODE } from '@dotcms/uve/types';
3
+ /**
4
+ * Props for the DotCMSShow component.
5
+ *
6
+ * @typedef {Object} DotCMSShowProps
7
+ * @property {React.ReactNode} children - The children to be rendered when the condition is met.
8
+ * @property {UVE_MODE} [when=UVE_MODE.EDIT] - The UVE mode in which the children should be rendered.
9
+ */
10
+ type DotCMSShowProps = {
11
+ children: React.ReactNode;
12
+ when?: UVE_MODE;
13
+ };
14
+ /**
15
+ * DotCMSShow component is used to conditionally render its children
16
+ * based on the Universal Visual Editor (UVE) mode. It checks if the UVE
17
+ * is in a specified mode and only renders its children in that case.
18
+ *
19
+ * @param {Object} props - The component props.
20
+ * @param {React.ReactNode} props.children - The children to be rendered when the condition is met.
21
+ * @param {UVE_MODE} [props.when=UVE_MODE.EDIT] - The UVE mode in which the children should be rendered.
22
+ * @returns {React.ReactNode | null} The children if the current UVE mode matches the `when` prop, otherwise null.
23
+ *
24
+ * @example
25
+ * // Basic usage: Render content only in edit mode
26
+ * <DotCMSShow when={UVE_MODE.EDIT}>
27
+ * <div>Edit Mode Content</div>
28
+ * </DotCMSShow>
29
+ *
30
+ * // This will render <div>Edit Mode Content</div> only if the UVE is in edit mode.
31
+ *
32
+ * @example
33
+ * // Render content in preview mode
34
+ * <DotCMSShow when={UVE_MODE.PREVIEW}>
35
+ * <MyCustomPreviewComponent />
36
+ * </DotCMSShow>
37
+ *
38
+ * // MyCustomPreviewComponent will only be rendered if the UVE is in preview mode.
39
+ *
40
+ * @example
41
+ * // Render content in live mode
42
+ * <DotCMSShow when={UVE_MODE.LIVE}>
43
+ * <LiveContentComponent />
44
+ * </DotCMSShow>
45
+ *
46
+ * // LiveContentComponent will only be rendered if the UVE is in live mode.
47
+ */
48
+ export declare const DotCMSShow: ({ children, when }: DotCMSShowProps) => import("react").ReactNode;
49
+ export {};
@@ -0,0 +1,31 @@
1
+ import { UVE_MODE } from '@dotcms/uve/types';
2
+ /**
3
+ * Custom hook to determine if the current UVE (Universal Visual Editor) mode
4
+ * matches the specified mode. This hook is useful for conditionally rendering
5
+ * components based on the UVE mode.
6
+ *
7
+ * @param {UVE_MODE} when - The UVE mode to check against.
8
+ * @returns {boolean} True if the current UVE mode matches the specified mode, otherwise false.
9
+ *
10
+ * @example
11
+ * // Basic usage: Check if the UVE is in edit mode
12
+ * const showInEditMode = useShowInUVE(UVE_MODE.EDIT);
13
+ * if (showInEditMode) {
14
+ * // Render edit-specific components
15
+ * }
16
+ *
17
+ * @example
18
+ * // Check if the UVE is in preview mode
19
+ * const showInPreviewMode = useShowInUVE(UVE_MODE.PREVIEW);
20
+ * if (showInPreviewMode) {
21
+ * // Render preview-specific components
22
+ * }
23
+ *
24
+ * @example
25
+ * // Check if the UVE is in live mode
26
+ * const showInLiveMode = useShowInUVE(UVE_MODE.LIVE);
27
+ * if (showInLiveMode) {
28
+ * // Render live-specific components
29
+ * }
30
+ */
31
+ export declare const useShowInUVE: (when: UVE_MODE) => boolean;
package/src/next.d.ts CHANGED
@@ -1 +1,3 @@
1
1
  export { DotCMSLayoutBody } from './lib/next/components/DotCMSLayoutBody/DotCMSLayoutBody';
2
+ export { DotCMSShow } from './lib/next/components/DotCMSShow/DotCMSShow';
3
+ export { useShowInUVE } from './lib/next/hooks/useShowInUVE';