From 70fc07967ffee166c9b834e06b27db3e0513bfbc Mon Sep 17 00:00:00 2001 From: Mikyo King Date: Tue, 1 Aug 2023 17:21:28 -0600 Subject: [PATCH] Add stories --- stories/Scale.stories.tsx | 108 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 stories/Scale.stories.tsx diff --git a/stories/Scale.stories.tsx b/stories/Scale.stories.tsx new file mode 100644 index 00000000..17c0c024 --- /dev/null +++ b/stories/Scale.stories.tsx @@ -0,0 +1,108 @@ +import React, { useState } from 'react'; +import { Meta, Story } from '@storybook/react'; +import { + ThreeDimensionalCanvas, + ThreeDimensionalCanvasProps, + ThreeDimensionalControls, + Points, +} from '../src'; +import { Container } from './components'; +import _data from './data/point-cloud-3d.json'; +import { interpolateSinebow } from 'd3-scale-chromatic'; + +const meta: Meta = { + title: 'Scale', + component: ThreeDimensionalCanvas, + argTypes: { + children: { + control: { + type: 'text', + }, + }, + }, + parameters: { + controls: { expanded: true }, + }, +}; + +export default meta; + +const data = _data.map((d, idx) => ({ + ...d, + metaData: { actualLabel: `${idx}` }, +})); + +const data2 = _data.map((d, idx) => ({ + ...d, + position: [d.position[0], d.position[1] + 1, d.position[2] + 1], + metaData: { actualLabel: `${idx}` }, +})); + +const actualLabelsArray = Array.from( + data.reduce((acc, d) => acc.add(d.metaData.actualLabel), new Set()) +); + +const labelCount = actualLabelsArray.length - 1; + +const actualLabelsColorMap: Map = actualLabelsArray.reduce( + (acc: Map, d, index) => { + acc[d as string] = index / labelCount; + return acc; + }, + new Map() as Map +); + +const colorByFn = (data) => { + const { actualLabel } = data.metaData; + return interpolateSinebow(actualLabelsColorMap[actualLabel]); +}; + +const Template: Story = (args) => { + const [scale, setScale] = useState(1); + return ( +
+ + + + + + + + + + + + + + setScale(parseFloat(e.target.value))} + /> +
+ ); +}; + +// By passing using the Args format for exported stories, you can control the props for a component for reuse in a test +// https://storybook.js.org/docs/react/workflows/unit-testing +export const Default = Template.bind({}); + +Default.args = {};