MCPcopy Index your code
hub / github.com/jaredpalmer/the-platform

github.com/jaredpalmer/the-platform @v0.10.1 sqlite

repository ↗ · DeepWiki ↗ · release v0.10.1 ↗
31 symbols 60 edges 24 files 0 documented · 0%
README

Repo Banner

The Platform

Blazing Fast

Web API's turned into React Hooks and Suspense-friendly React components. #useThePlatform

Install

Note: React 16.8+ is required for Hooks.

With npm

npm i the-platform --save

Or with yarn

yarn add the-platform

Examples

API

Hooks

useDeviceMotion()

Detect and retrieve current device Motion.

Returns

DeviceMotionEvent

Example

import { useDeviceMotion } from 'the-platform';

const Example = () => {
  const { acceleration, rotationRate, interval } = useDeviceMotion();

  // ...
};

useDeviceOrientation()

Detect and retrieve current device orientation.

Returns

DeviceOrientationEvent

Example

import { useDeviceOrientation } from 'the-platform';

const Example = () => {
  const { alpha, beta, gamma, absolute } = useDeviceOrientation();

  // ...
};

useGeoPosition()

Retrieve Geo position from the browser. This will throw a promise (must use with Suspense).

Arguments

PositionOptions

Returns

Position

Example

import { useGeoPosition } from 'the-platform';

const Example = () => {
  const {
    coords: { latitude, longitude },
  } = useGeoPosition();

  // ...
};

useNetworkStatus()

Retrieve network status from the browser.

Returns

Object containing:

  • isOnline: boolean: true if the browser has network access. false otherwise.

  • offlineAt?: Date: Date when network connection was lost.

Example

import { useNetworkStatus } from 'the-platform';

const Example = () => {
  const { isOnline, offlineAt } = useNetworkStatus();

  // ...
};

useMedia()

Arguments

query: string | object: media query string or object (parsed by json2mq).

Returns

match: boolean: true if the media query matches, false otherwise.

Example

import { useMedia } from 'the-platform';

const Example = () => {
  const small = useMedia('(min-width: 400px)');
  const medium = useMedia({ minWidth: 800 });

  // ...
};

useScript()

This will throw a promise (must use with Suspense).

Arguments

Object containing:

  • src: string: The script's URI.
import { useScript } from 'the-platform';

const Example = () => {
  const _unused = useScript({ src: 'bundle.js' });

  // ...
};

useStylesheet()

This will throw a promise (must use with Suspense).

Arguments

Object containing:

  • href: string: The stylesheet's URI.
  • media?: string: Intended destination media for style information.
import { useStylesheet } from 'the-platform';

const Example = () => {
  const _unused = useStylesheet({ href: 'normalize.css' });

  // ...
};

useWindowScrollPosition()

Returns

Object containing:

  • x: number: Horizontal scroll in pixels (window.pageXOffset).
  • y: number: Vertical scroll in pixels (window.pageYOffset).

Example

import { useWindowScrollPosition } from 'the-platform';

const Example = () => {
  const { x, y } = useWindowScrollPosition();

  // ...
};

useWindowSize()

Returns

Object containing:

  • width: Width of browser viewport (window.innerWidth)
  • height: Height of browser viewport (window.innerHeight)

Example

import { useWindowSize } from 'the-platform';

const Example = () => {
  const { width, height } = useWindowSize();

  // ...
};

Components

<Img>

Props

  • src: string
  • anything else you can pass to an <img> tag
import React from 'react';
import { Img } from 'the-platform';

function App() {
  return (



      <h1>Hello</h1>
      <React.Suspense maxDuration={300} fallback={'loading...'}>
        <Img src="https://source.unsplash.com/random/4000x2000" />
      </React.Suspense>



  );
}

export default App;

<Script>

Props

  • src: string
  • children?: () => React.ReactNode - This render prop will only execute after the script has loaded.
  • anything else you can pass to a <script> tag
import React from 'react';
import { Script } from 'the-platform';

function App() {
  return (



      <h1>Load Stripe.js Async</h1>
      <React.Suspense maxDuration={300} fallback={'loading...'}>
        <Script src="https://js.stripe.com/v3/" async>
          {() => console.log(window.Stripe) || null}
        </Script>
      </React.Suspense>



  );
}

export default App;

<Video>

Props

  • src: string
  • anything else you can pass to a <video> tag
import React from 'react';
import { Video } from 'the-platform';

function App() {
  return (



      <h1>Ken Wheeler on a Scooter</h1>
      <React.Suspense maxDuration={300} fallback={'loading...'}>
        <Video
          src="https://video.twimg.com/ext_tw_video/1029780437437014016/pu/vid/360x640/QLNTqYaYtkx9AbeH.mp4?tag=5"
          preload="auto"
          autoPlay
        />
      </React.Suspense>



  );
}

export default App;

<Audio>

Props

  • src: string
  • anything else you can pass to a <audio> tag
import React from 'react';
import { Audio } from 'the-platform';

function App() {
  return (



      <h1>Meavy Boy - Compassion</h1>
      {/* source: http://freemusicarchive.org/music/Meavy_Boy/EP_71_to_20/Compassion */}
      <React.Suspense maxDuration={300} fallback={'loading...'}>
        <Audio src="https://file-dnzavydoqu.now.sh/" preload="auto" autoPlay />
      </React.Suspense>



  );
}

export default App;

<Preload>

Preload a resource with <link rel="preload">. For more information check out MDN or the Google Developer Blog.

Props

  • href: string
  • as: string - resource type
import React from 'react';
import { Preload, Script } from 'the-platform';

function App() {
  return (



      <h1>Preload</h1>
      <React.Suspense maxDuration={300} fallback={'loading...'}>
        <Preload href="https://js.stripe.com/v3/" rel="preload" as="script" />
        <Script src="https://js.stripe.com/v3/" async />
      </React.Suspense>



  );
}

export default App;

<Stylesheet>

Lazy load a stylesheet.

Props

  • href: string
import React from 'react';
import { Stylesheet } from 'the-platform';

function App() {
  return (



      <h1>Styles</h1>
      <React.Suspense maxDuration={300} fallback={'loading...'}>
        <Stylesheet href="https://github.com/jaredpalmer/the-platform/raw/v0.10.1/style.css" />
      </React.Suspense>



  );
}

export default App;

Authors

Inspiration


MIT License

Extension points exported contracts — how you extend this code

StylesheetProps (Interface)
(no doc)
src/Stylesheet.tsx
ScriptProps (Interface)
(no doc)
src/Script.tsx

Core symbols most depended-on inside this repo

throttle
called by 2
src/utils.tsx
useWindowSize
called by 1
src/useWindowSize.tsx
useWindowScrollPosition
called by 1
src/useWindowScrollPosition.tsx
load
called by 0
src/useGeoPosition.tsx
useGeoPosition
called by 0
src/useGeoPosition.tsx
Video
called by 0
src/Video.tsx
useNetworkStatus
called by 0
src/useNetworkStatus.tsx
handleOnline
called by 0
src/useNetworkStatus.tsx

Shape

Function 29
Interface 2

Languages

TypeScript100%

Modules by API surface

src/Stylesheet.tsx4 symbols
src/useNetworkStatus.tsx3 symbols
src/Script.tsx3 symbols
src/useWindowSize.tsx2 symbols
src/useMedia.tsx2 symbols
src/useGeoPosition.tsx2 symbols
src/useDeviceOrientation.tsx2 symbols
src/useDeviceMotion.tsx2 symbols
src/Preload.tsx2 symbols
src/Img.tsx2 symbols
tests/useWindowSize.test.js1 symbols
tests/useWindowScrollPosition.test.js1 symbols

Dependencies from manifests, versioned

@babel/cli7.1.5 · 1×
@babel/core7.1.6 · 1×
@babel/plugin-proposal-class-properties7.1.0 · 1×
@babel/plugin-proposal-object-rest-spread7.0.0 · 1×
@babel/plugin-transform-runtime7.1.0 · 1×
@babel/preset-env7.1.6 · 1×
@babel/preset-react7.0.0 · 1×
@babel/preset-typescript7.1.0 · 1×
@babel/runtime7.1.5 · 1×
@types/jest23.3.9 · 1×
@types/react16.7.6 · 1×
babel-core7.0.0-bridge.0 · 1×

For agents

$ claude mcp add the-platform \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact