Advaned Features
This section will look at different advanced features of SpatialJS and how to use them.
- Debugging
- Custom Headers
- Listing Windows
Debugging
To debug you will want to use the useWindowStore hook to get access to the windowStore. Set debug = true to see the windows in the scene.
const windowStore = useWindowStore();
windowStore.debug = true;Custom Headers
Custom Headers can be acheived right now by simplify overriding the Windows, and add your own header setup plus a custom window area. The music player example has a custom header setup.
To accomplish this simplify disable the background on the Window:
createWindow(HelloWorld, {
  disableBackground: true,
});Add your own Container Header and Regular Window Background as you see fit. Below is the Room Example Music Player with a custom branded header and main window. You can find the full code for the music player here (opens in a new tab).
const MusicPlayer: React.FC = () => {
  const abumConRef = useRef<any>(null);
  const [text, setText] = useState("");
  const setCurrentAlbum = useAlbumStore((state) => state.setCurrentAlbum);
  const selectAlbum = (album: Album) => {
    createWindow(AlbumWindow, {
      title: album.name,
      props: { album: album },
      width: 100,
      height: 100,
    });
    setCurrentAlbum(album);
  };
 
  return (
    <>
      <Card positionType="absolute" width="95%" height={55} padding={10}>
        <Image src="Spotify.png" width={100} height={60} objectFit="cover" />
        <Container
          width="100%"
          height="100%"
          justifyContent="flex-end"
          alignItems="center"
        >
          <Input
            width={150}
            height={30}
            value={text}
            onValueChange={setText}
            placeholder="Search..."
            prefix={<Search />}
          />
        </Container>
      </Card>
      <Card
        marginTop={75}
        paddingLeft={10}
        width="100%"
        height={185}
        justifyContent="center"
        flexDirection="column"
      >
        <Container
          paddingBottom={12}
          scrollbarOpacity={0.5}
          scrollbarWidth={2}
          scrollbarColor={colors.mutedForeground}
          ref={abumConRef}
          width={600}
          height={200}
          alignItems="auto"
          justifyContent="flex-start"
          flexDirection="row"
          overflow="scroll"
        >
          {albums.map((album) => (
            <AlbumArtwork
              key={album.name}
              album={album}
              width={100}
              height={100}
              onClick={(e: any) => {
                e.stopPropagation();
                selectAlbum(album);
              }}
            />
          ))}
        </Container>
      </Card>
    </>
  );
};Now you can see how to get all the benefits of the SpatialJS with Windows, Window Management(Tiling, Layout, Z-Ordering), and Custom Designs.
Listing Windows
If you want to list all the Windows for any purpose to create a default menu, you can use the useWindowStore hook to get access to the windowStore.
const windowStore = useWindowStore();
const windows = windowStore.windows;What else?
What else are you trying to do that might be advanced? Join our discord and we'll help you out or open a ticket on our github.