Skip to content

Commit

Permalink
Feat/register component devtools (#3619)
Browse files Browse the repository at this point in the history
## Description

Add a short description of what changes you made, why you made them, and
any other context that you think might be helpful for someone to better
understand what is contained in this pull request. This sort of
information is useful for people reviewing the code, as well as anyone
from the future trying to understand why changes were made or why a bug
started happening.

_Screenshot_
If relevant, add a screenshot or two of the changes you made.
  • Loading branch information
samijaber authored Oct 8, 2024
1 parent 5000be2 commit a15696e
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 4 deletions.
12 changes: 12 additions & 0 deletions .changeset/few-ties-move.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
'@builder.io/sdk-vue': patch
'@builder.io/sdk-angular': patch
'@builder.io/sdk-react-nextjs': patch
'@builder.io/sdk-qwik': patch
'@builder.io/sdk-react': patch
'@builder.io/sdk-react-native': patch
'@builder.io/sdk-solid': patch
'@builder.io/sdk-svelte': patch
---

misc: add internal `registerComponentFromDevTools` helpers for devtools.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { fetch } from '../../../functions/get-fetch.js';
import { isBrowser } from '../../../functions/is-browser.js';
import { isEditing } from '../../../functions/is-editing.js';
import { isPreviewing } from '../../../functions/is-previewing.js';
import { createRegisterComponentMessage } from '../../../functions/register-component.js';
import { sendRegisterComponentMessage } from '../../../functions/register-component.js';
import { _track } from '../../../functions/track/index.js';
import { getInteractionPropertiesForEvent } from '../../../functions/track/interaction.js';
import { getDefaultCanTrack } from '../../../helpers/canTrack.js';
Expand Down Expand Up @@ -291,8 +291,7 @@ export default function EnableEditor(props: BuilderEditorProps) {
Object.values<ComponentInfo>(
props.builderContextSignal.value.componentInfos
).forEach((registeredComponent) => {
const message = createRegisterComponentMessage(registeredComponent);
window.parent?.postMessage(message, '*');
sendRegisterComponentMessage(registeredComponent);
});
window.addEventListener(
'builder:component:stateChangeListenerActivated',
Expand Down
15 changes: 15 additions & 0 deletions packages/sdks/src/functions/register-component.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,25 @@
import type { RegisteredComponent } from '../context/types.js';
import type { ComponentInfo } from '../types/components.js';

export const createRegisterComponentMessage = (info: ComponentInfo) => ({
type: 'builder.registerComponent',
data: serializeIncludingFunctions(info),
});

export const sendRegisterComponentMessage = (info: ComponentInfo) => {
window.parent?.postMessage(createRegisterComponentMessage(info), '*');
};

/**
* @private
* @description This is a private internal function that is used to register a component from the Builder DevTools.
* Do not use this function directly.
*/
export const registerComponentFromDevTools = (info: RegisteredComponent) => {
const { component: _, ...rest } = info;
sendRegisterComponentMessage(rest);
};

// eslint-disable-next-line @typescript-eslint/ban-types
const serializeFn = (fnValue: Function) => {
const fnStr = fnValue.toString().trim();
Expand Down
5 changes: 4 additions & 1 deletion packages/sdks/src/server-index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@ export type { ComponentInfo } from './types/components.js';
*/
export { isEditing } from './functions/is-editing.js';
export { isPreviewing } from './functions/is-previewing.js';
export { createRegisterComponentMessage } from './functions/register-component.js';
export {
createRegisterComponentMessage,
registerComponentFromDevTools,
} from './functions/register-component.js';

export { register } from './functions/register.js';
export type { InsertMenuConfig, InsertMenuItem } from './functions/register.js';
Expand Down

0 comments on commit a15696e

Please sign in to comment.