@tamagui/slider 1.0.1-beta.26 → 1.0.1-beta.27

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.
@@ -1,7 +1,7 @@
1
- import { composeEventHandlers, styled } from "@tamagui/core";
1
+ import { composeEventHandlers, isWeb, styled } from "@tamagui/core";
2
2
  import { YStack, getCircleSize } from "@tamagui/stacks";
3
3
  import * as React from "react";
4
- import { SLIDER_NAME, useSliderContext } from "./context";
4
+ import { ARROW_KEYS, PAGE_KEYS, SLIDER_NAME, useSliderContext } from "./constants";
5
5
  const DirectionalYStack = styled(YStack, {
6
6
  variants: {
7
7
  orientation: {
@@ -11,22 +11,21 @@ const DirectionalYStack = styled(YStack, {
11
11
  }
12
12
  });
13
13
  const SliderFrame = styled(DirectionalYStack, {
14
- name: "Slider",
15
14
  position: "relative",
16
15
  variants: {
17
16
  size: (val, extras) => {
18
17
  const orientation = extras.props.orientation;
19
18
  const circleSize = getCircleSize(val, extras);
20
- const size = circleSize / 4;
19
+ const size = circleSize / 10;
21
20
  if (orientation === "horizontal") {
22
21
  return {
23
22
  height: size,
24
- width: 100
23
+ borderRadius: size
25
24
  };
26
25
  }
27
26
  return {
28
27
  width: size,
29
- height: 100
28
+ borderRadius: size
30
29
  };
31
30
  }
32
31
  }
@@ -48,10 +47,31 @@ const SliderImpl = React.forwardRef((props, forwardedRef) => {
48
47
  ...sliderProps,
49
48
  "data-orientation": sliderProps.orientation,
50
49
  ref: forwardedRef,
50
+ ...isWeb && {
51
+ onKeyDown: (event) => {
52
+ if (event.key === "Home") {
53
+ onHomeKeyDown(event);
54
+ event.preventDefault();
55
+ } else if (event.key === "End") {
56
+ onEndKeyDown(event);
57
+ event.preventDefault();
58
+ } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {
59
+ onStepKeyDown(event);
60
+ event.preventDefault();
61
+ }
62
+ }
63
+ },
51
64
  onStartShouldSetResponder: () => true,
52
65
  onResponderGrant: composeEventHandlers(props.onResponderGrant, (event) => {
66
+ const target = event.target;
67
+ const isStartingOnThumb = context.thumbs.has(event.target);
53
68
  event.preventDefault();
54
- onSlideStart(event);
69
+ if (target instanceof HTMLElement) {
70
+ if (context.thumbs.has(target)) {
71
+ target.focus();
72
+ }
73
+ }
74
+ onSlideStart(event, isStartingOnThumb ? "thumb" : "track");
55
75
  }),
56
76
  onResponderMove: composeEventHandlers(props.onResponderMove, (event) => {
57
77
  onSlideMove(event);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SliderImpl.tsx"],
4
- "sourcesContent": ["/* -------------------------------------------------------------------------------------------------\n * SliderImpl\n * -----------------------------------------------------------------------------------------------*/\n\nimport { composeEventHandlers, styled } from '@tamagui/core'\nimport { YStack, getCircleSize } from '@tamagui/stacks'\nimport * as React from 'react'\n\nimport { SLIDER_NAME, useSliderContext } from './context'\nimport { ScopedProps, SliderImplElement, SliderImplProps } from './types'\n\nexport const DirectionalYStack = styled(YStack, {\n variants: {\n orientation: {\n horizontal: {},\n vertical: {},\n },\n },\n})\n\nexport const SliderFrame = styled(DirectionalYStack, {\n name: 'Slider',\n position: 'relative',\n\n variants: {\n size: (val, extras) => {\n const orientation = extras.props.orientation\n const circleSize = getCircleSize(val, extras)\n const size = circleSize / 4\n if (orientation === 'horizontal') {\n return {\n height: size,\n width: 100,\n }\n }\n return {\n width: size,\n height: 100,\n }\n },\n },\n})\n\nexport const SliderImpl = React.forwardRef<SliderImplElement, SliderImplProps>(\n (props: ScopedProps<SliderImplProps>, forwardedRef) => {\n const {\n __scopeSlider,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onHomeKeyDown,\n onEndKeyDown,\n onStepKeyDown,\n ...sliderProps\n } = props\n const context = useSliderContext(SLIDER_NAME, __scopeSlider)\n\n return (\n <SliderFrame\n size=\"$4\"\n {...sliderProps}\n data-orientation={sliderProps.orientation}\n ref={forwardedRef}\n // onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n // if (event.key === 'Home') {\n // onHomeKeyDown(event)\n // // Prevent scrolling to page start\n // event.preventDefault()\n // } else if (event.key === 'End') {\n // onEndKeyDown(event)\n // // Prevent scrolling to page end\n // event.preventDefault()\n // } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n // onStepKeyDown(event)\n // // Prevent scrolling for directional key presses\n // event.preventDefault()\n // }\n // })}\n onStartShouldSetResponder={() => true}\n onResponderGrant={composeEventHandlers(props.onResponderGrant, (event) => {\n // const target = event.target as HTMLElement\n // console.log('wut', target)\n // target.setPointerCapture(event.pointerId)\n // // Prevent browser focus behaviour because we focus a thumb manually when values change.\n event.preventDefault()\n // Touch devices have a delay before focusing so won't focus if touch immediately moves\n // away from target (sliding). We want thumb to focus regardless.\n // if (context.thumbs.has(target)) {\n // target.focus()\n // } else {\n onSlideStart(event)\n // }\n })}\n onResponderMove={composeEventHandlers(props.onResponderMove, (event) => {\n // const target = event.target as HTMLElement\n onSlideMove(event)\n })}\n onResponderRelease={composeEventHandlers(props.onResponderRelease, (event) => {\n // const target = event.target as HTMLElement\n onSlideEnd(event)\n })}\n />\n )\n }\n)\n"],
5
- "mappings": "AAIA;AACA;AACA;AAEA;AAGO,MAAM,oBAAoB,OAAO,QAAQ;AAAA,EAC9C,UAAU;AAAA,IACR,aAAa;AAAA,MACX,YAAY,CAAC;AAAA,MACb,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AACF,CAAC;AAEM,MAAM,cAAc,OAAO,mBAAmB;AAAA,EACnD,MAAM;AAAA,EACN,UAAU;AAAA,EAEV,UAAU;AAAA,IACR,MAAM,CAAC,KAAK,WAAW;AACrB,YAAM,cAAc,OAAO,MAAM;AACjC,YAAM,aAAa,cAAc,KAAK,MAAM;AAC5C,YAAM,OAAO,aAAa;AAC1B,UAAI,gBAAgB,cAAc;AAChC,eAAO;AAAA,UACL,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAEM,MAAM,aAAa,MAAM,WAC9B,CAAC,OAAqC,iBAAiB;AACrD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,OACG;AAAA,MACD;AACJ,QAAM,UAAU,iBAAiB,aAAa,aAAa;AAE3D,SACE,oCAAC;AAAA,IACC,MAAK;AAAA,OACD;AAAA,IACJ,oBAAkB,YAAY;AAAA,IAC9B,KAAK;AAAA,IAgBL,2BAA2B,MAAM;AAAA,IACjC,kBAAkB,qBAAqB,MAAM,kBAAkB,CAAC,UAAU;AAKxE,YAAM,eAAe;AAMrB,mBAAa,KAAK;AAAA,IAEpB,CAAC;AAAA,IACD,iBAAiB,qBAAqB,MAAM,iBAAiB,CAAC,UAAU;AAEtE,kBAAY,KAAK;AAAA,IACnB,CAAC;AAAA,IACD,oBAAoB,qBAAqB,MAAM,oBAAoB,CAAC,UAAU;AAE5E,iBAAW,KAAK;AAAA,IAClB,CAAC;AAAA,GACH;AAEJ,CACF;",
4
+ "sourcesContent": ["/* -------------------------------------------------------------------------------------------------\n * SliderImpl\n * -----------------------------------------------------------------------------------------------*/\n\nimport { composeEventHandlers, isWeb, styled } from '@tamagui/core'\nimport { YStack, getCircleSize } from '@tamagui/stacks'\nimport * as React from 'react'\n\nimport { ARROW_KEYS, PAGE_KEYS, SLIDER_NAME, useSliderContext } from './constants'\nimport { ScopedProps, SliderImplElement, SliderImplProps } from './types'\n\nexport const DirectionalYStack = styled(YStack, {\n variants: {\n orientation: {\n horizontal: {},\n vertical: {},\n },\n },\n})\n\nexport const SliderFrame = styled(DirectionalYStack, {\n position: 'relative',\n\n variants: {\n size: (val, extras) => {\n const orientation = extras.props.orientation\n const circleSize = getCircleSize(val, extras)\n const size = circleSize / 10\n if (orientation === 'horizontal') {\n return {\n height: size,\n borderRadius: size,\n }\n }\n return {\n width: size,\n borderRadius: size,\n }\n },\n },\n})\n\nexport const SliderImpl = React.forwardRef<SliderImplElement, SliderImplProps>(\n (props: ScopedProps<SliderImplProps>, forwardedRef) => {\n const {\n __scopeSlider,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onHomeKeyDown,\n onEndKeyDown,\n onStepKeyDown,\n ...sliderProps\n } = props\n const context = useSliderContext(SLIDER_NAME, __scopeSlider)\n return (\n <SliderFrame\n size=\"$4\"\n {...sliderProps}\n data-orientation={sliderProps.orientation}\n ref={forwardedRef}\n {...(isWeb && {\n onKeyDown: (event) => {\n if (event.key === 'Home') {\n onHomeKeyDown(event)\n // Prevent scrolling to page start\n event.preventDefault()\n } else if (event.key === 'End') {\n onEndKeyDown(event)\n // Prevent scrolling to page end\n event.preventDefault()\n } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n onStepKeyDown(event)\n // Prevent scrolling for directional key presses\n event.preventDefault()\n }\n },\n })}\n onStartShouldSetResponder={() => true}\n onResponderGrant={composeEventHandlers(props.onResponderGrant, (event) => {\n const target = event.target as HTMLElement | number\n const isStartingOnThumb = context.thumbs.has(event.target)\n // // Prevent browser focus behaviour because we focus a thumb manually when values change.\n event.preventDefault()\n // Touch devices have a delay before focusing so won't focus if touch immediately moves\n // away from target (sliding). We want thumb to focus regardless.\n if (target instanceof HTMLElement) {\n if (context.thumbs.has(target)) {\n target.focus()\n }\n }\n onSlideStart(event, isStartingOnThumb ? 'thumb' : 'track')\n })}\n onResponderMove={composeEventHandlers(props.onResponderMove, (event) => {\n // const target = event.target as HTMLElement\n onSlideMove(event)\n })}\n onResponderRelease={composeEventHandlers(props.onResponderRelease, (event) => {\n // const target = event.target as HTMLElement\n onSlideEnd(event)\n })}\n />\n )\n }\n)\n"],
5
+ "mappings": "AAIA;AACA;AACA;AAEA;AAGO,MAAM,oBAAoB,OAAO,QAAQ;AAAA,EAC9C,UAAU;AAAA,IACR,aAAa;AAAA,MACX,YAAY,CAAC;AAAA,MACb,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AACF,CAAC;AAEM,MAAM,cAAc,OAAO,mBAAmB;AAAA,EACnD,UAAU;AAAA,EAEV,UAAU;AAAA,IACR,MAAM,CAAC,KAAK,WAAW;AACrB,YAAM,cAAc,OAAO,MAAM;AACjC,YAAM,aAAa,cAAc,KAAK,MAAM;AAC5C,YAAM,OAAO,aAAa;AAC1B,UAAI,gBAAgB,cAAc;AAChC,eAAO;AAAA,UACL,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB;AAAA,MACF;AACA,aAAO;AAAA,QACL,OAAO;AAAA,QACP,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAEM,MAAM,aAAa,MAAM,WAC9B,CAAC,OAAqC,iBAAiB;AACrD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,OACG;AAAA,MACD;AACJ,QAAM,UAAU,iBAAiB,aAAa,aAAa;AAC3D,SACE,oCAAC;AAAA,IACC,MAAK;AAAA,OACD;AAAA,IACJ,oBAAkB,YAAY;AAAA,IAC9B,KAAK;AAAA,OACA,SAAS;AAAA,MACZ,WAAW,CAAC,UAAU;AACpB,YAAI,MAAM,QAAQ,QAAQ;AACxB,wBAAc,KAAK;AAEnB,gBAAM,eAAe;AAAA,QACvB,WAAW,MAAM,QAAQ,OAAO;AAC9B,uBAAa,KAAK;AAElB,gBAAM,eAAe;AAAA,QACvB,WAAW,UAAU,OAAO,UAAU,EAAE,SAAS,MAAM,GAAG,GAAG;AAC3D,wBAAc,KAAK;AAEnB,gBAAM,eAAe;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,IACA,2BAA2B,MAAM;AAAA,IACjC,kBAAkB,qBAAqB,MAAM,kBAAkB,CAAC,UAAU;AACxE,YAAM,SAAS,MAAM;AACrB,YAAM,oBAAoB,QAAQ,OAAO,IAAI,MAAM,MAAM;AAEzD,YAAM,eAAe;AAGrB,UAAI,kBAAkB,aAAa;AACjC,YAAI,QAAQ,OAAO,IAAI,MAAM,GAAG;AAC9B,iBAAO,MAAM;AAAA,QACf;AAAA,MACF;AACA,mBAAa,OAAO,oBAAoB,UAAU,OAAO;AAAA,IAC3D,CAAC;AAAA,IACD,iBAAiB,qBAAqB,MAAM,iBAAiB,CAAC,UAAU;AAEtE,kBAAY,KAAK;AAAA,IACnB,CAAC;AAAA,IACD,oBAAoB,qBAAqB,MAAM,oBAAoB,CAAC,UAAU;AAE5E,iBAAW,KAAK;AAAA,IAClB,CAAC;AAAA,GACH;AAEJ,CACF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,30 @@
1
+ import { createContextScope } from "@tamagui/create-context";
2
+ const SLIDER_NAME = "Slider";
3
+ const [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME);
4
+ const [SliderProvider, useSliderContext] = createSliderContext(SLIDER_NAME);
5
+ const [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {
6
+ startEdge: "left",
7
+ endEdge: "right",
8
+ sizeProp: "width",
9
+ size: 0,
10
+ direction: 1
11
+ });
12
+ const PAGE_KEYS = ["PageUp", "PageDown"];
13
+ const ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"];
14
+ const BACK_KEYS = {
15
+ ltr: ["ArrowDown", "Home", "ArrowLeft", "PageDown"],
16
+ rtl: ["ArrowDown", "Home", "ArrowRight", "PageDown"]
17
+ };
18
+ export {
19
+ ARROW_KEYS,
20
+ BACK_KEYS,
21
+ PAGE_KEYS,
22
+ SLIDER_NAME,
23
+ SliderOrientationProvider,
24
+ SliderProvider,
25
+ createSliderContext,
26
+ createSliderScope,
27
+ useSliderContext,
28
+ useSliderOrientationContext
29
+ };
30
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/constants.tsx"],
4
+ "sourcesContent": ["import { SizeTokens } from '@tamagui/core'\nimport { createContextScope } from '@tamagui/create-context'\n\nimport { Direction, SliderContextValue } from './types'\n\nexport const SLIDER_NAME = 'Slider'\n\nexport const [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME)\n\nexport const [SliderProvider, useSliderContext] =\n createSliderContext<SliderContextValue>(SLIDER_NAME)\n\nexport const [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext<{\n startEdge: 'bottom' | 'left' | 'right'\n endEdge: 'top' | 'right' | 'left'\n sizeProp: 'width' | 'height'\n size: number | SizeTokens\n direction: number\n}>(SLIDER_NAME, {\n startEdge: 'left',\n endEdge: 'right',\n sizeProp: 'width',\n size: 0,\n direction: 1,\n})\n\nexport const PAGE_KEYS = ['PageUp', 'PageDown']\nexport const ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight']\nexport const BACK_KEYS: Record<Direction, string[]> = {\n ltr: ['ArrowDown', 'Home', 'ArrowLeft', 'PageDown'],\n rtl: ['ArrowDown', 'Home', 'ArrowRight', 'PageDown'],\n}\n"],
5
+ "mappings": "AACA;AAIO,MAAM,cAAc;AAEpB,MAAM,CAAC,qBAAqB,qBAAqB,mBAAmB,WAAW;AAE/E,MAAM,CAAC,gBAAgB,oBAC5B,oBAAwC,WAAW;AAE9C,MAAM,CAAC,2BAA2B,+BAA+B,oBAMrE,aAAa;AAAA,EACd,WAAW;AAAA,EACX,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AAAA,EACN,WAAW;AACb,CAAC;AAEM,MAAM,YAAY,CAAC,UAAU,UAAU;AACvC,MAAM,aAAa,CAAC,WAAW,aAAa,aAAa,YAAY;AACrE,MAAM,YAAyC;AAAA,EACpD,KAAK,CAAC,aAAa,QAAQ,aAAa,UAAU;AAAA,EAClD,KAAK,CAAC,aAAa,QAAQ,cAAc,UAAU;AACrD;",
6
+ "names": []
7
+ }
package/dist/esm/index.js CHANGED
@@ -1,3 +1,9 @@
1
1
  export * from "./Slider";
2
- export * from "./types";
2
+ import { SliderProps, SliderHorizontalProps, SliderVerticalProps, SliderTrackProps } from "./types";
3
+ export {
4
+ SliderHorizontalProps,
5
+ SliderProps,
6
+ SliderTrackProps,
7
+ SliderVerticalProps
8
+ };
3
9
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export * from './Slider'\nexport * from './types'\n"],
4
+ "sourcesContent": ["export * from './Slider'\nexport { SliderProps, SliderHorizontalProps, SliderVerticalProps, SliderTrackProps } from './types'\n"],
5
5
  "mappings": "AAAA;AACA;",
6
6
  "names": []
7
7
  }
@@ -1,20 +1,22 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import { usePrevious } from "@radix-ui/react-use-previous";
4
3
  import { useComposedRefs } from "@tamagui/compose-refs";
5
4
  import { styled, withStaticProperties } from "@tamagui/core";
6
5
  import { clamp, composeEventHandlers } from "@tamagui/helpers";
7
- import { SizableStack } from "@tamagui/stacks";
6
+ import { ThemeableSizableStack } from "@tamagui/stacks";
8
7
  import { useControllableState } from "@tamagui/use-controllable-state";
9
8
  import { useDirection } from "@tamagui/use-direction";
10
9
  import * as React from "react";
11
10
  import {
11
+ ARROW_KEYS,
12
+ BACK_KEYS,
13
+ PAGE_KEYS,
12
14
  SLIDER_NAME,
13
15
  SliderOrientationProvider,
14
16
  SliderProvider,
15
17
  useSliderContext,
16
18
  useSliderOrientationContext
17
- } from "./context";
19
+ } from "./constants";
18
20
  import {
19
21
  convertValueToPercentage,
20
22
  getClosestValueIndex,
@@ -27,17 +29,11 @@ import {
27
29
  roundValue
28
30
  } from "./helpers";
29
31
  import { SliderFrame, SliderImpl } from "./SliderImpl";
30
- const PAGE_KEYS = ["PageUp", "PageDown"];
31
- const ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"];
32
- const BACK_KEYS = {
33
- ltr: ["ArrowDown", "Home", "ArrowLeft", "PageDown"],
34
- rtl: ["ArrowDown", "Home", "ArrowRight", "PageDown"]
35
- };
36
32
  const SliderHorizontal = React.forwardRef((props, forwardedRef) => {
37
33
  const { min, max, dir, onSlideStart, onSlideMove, onStepKeyDown, ...sliderProps } = props;
38
- const layoutRef = React.useRef(null);
39
34
  const direction = useDirection(dir);
40
35
  const isDirectionLTR = direction === "ltr";
36
+ const layoutRef = React.useRef(null);
41
37
  const [size, setSize] = React.useState(0);
42
38
  function getValueFromPointer(pointerPosition) {
43
39
  const layout = layoutRef.current;
@@ -46,20 +42,20 @@ const SliderHorizontal = React.forwardRef((props, forwardedRef) => {
46
42
  const input = [0, layout.width];
47
43
  const output = isDirectionLTR ? [min, max] : [max, min];
48
44
  const value = linearScale(input, output);
49
- return value(pointerPosition - layout.x);
45
+ return value(pointerPosition);
50
46
  }
51
47
  __name(getValueFromPointer, "getValueFromPointer");
52
- return <SliderOrientationProvider scope={props.__scopeSlider} startEdge={isDirectionLTR ? "left" : "right"} endEdge={isDirectionLTR ? "right" : "left"} direction={isDirectionLTR ? 1 : -1} sizeProp="width" size={size}><SliderImpl dir={direction} orientation="horizontal" {...sliderProps} onLayout={(e) => {
48
+ return <SliderOrientationProvider scope={props.__scopeSlider} startEdge={isDirectionLTR ? "left" : "right"} endEdge={isDirectionLTR ? "right" : "left"} direction={isDirectionLTR ? 1 : -1} sizeProp="width" size={size}><SliderImpl ref={forwardedRef} dir={direction} {...sliderProps} orientation="horizontal" onLayout={(e) => {
53
49
  const layout = e.nativeEvent.layout;
54
50
  layoutRef.current = layout;
55
51
  setSize(layout.height);
56
- }} ref={forwardedRef} onSlideStart={(event) => {
57
- const value = getValueFromPointer(event.nativeEvent.pageX);
52
+ }} onSlideStart={(event, target) => {
53
+ const value = getValueFromPointer(event.nativeEvent.locationX);
58
54
  if (value) {
59
- onSlideStart == null ? void 0 : onSlideStart(value);
55
+ onSlideStart == null ? void 0 : onSlideStart(value, target);
60
56
  }
61
57
  }} onSlideMove={(event) => {
62
- const value = getValueFromPointer(event.nativeEvent.pageX);
58
+ const value = getValueFromPointer(event.nativeEvent.locationX);
63
59
  if (value) {
64
60
  onSlideMove == null ? void 0 : onSlideMove(value);
65
61
  }
@@ -71,42 +67,58 @@ const SliderHorizontal = React.forwardRef((props, forwardedRef) => {
71
67
  });
72
68
  const SliderVertical = React.forwardRef((props, forwardedRef) => {
73
69
  const { min, max, onSlideStart, onSlideMove, onStepKeyDown, ...sliderProps } = props;
74
- const sliderRef = React.useRef(null);
75
- const ref = useComposedRefs(forwardedRef, sliderRef);
76
- const rectRef = React.useRef();
70
+ const layoutRef = React.useRef(null);
71
+ const [size, setSize] = React.useState(0);
77
72
  function getValueFromPointer(pointerPosition) {
78
- const rect = rectRef.current || sliderRef.current.getBoundingClientRect();
79
- const input = [0, rect.height];
73
+ const layout = layoutRef.current;
74
+ if (!layout)
75
+ return;
76
+ const input = [0, layout.height];
80
77
  const output = [max, min];
81
78
  const value = linearScale(input, output);
82
- rectRef.current = rect;
83
- return value(pointerPosition - rect.top);
79
+ return value(pointerPosition);
84
80
  }
85
81
  __name(getValueFromPointer, "getValueFromPointer");
86
- return <SliderOrientationProvider scope={props.__scopeSlider} startEdge="bottom" endEdge="top" sizeProp="height" size={0} direction={1}><SliderImpl {...sliderProps} orientation="vertical" ref={ref} onSlideStart={(event) => {
82
+ return <SliderOrientationProvider scope={props.__scopeSlider} startEdge="bottom" endEdge="top" sizeProp="height" size={size} direction={1}><SliderImpl ref={forwardedRef} {...sliderProps} orientation="vertical" onLayout={(e) => {
83
+ const layout = e.nativeEvent.layout;
84
+ layoutRef.current = layout;
85
+ setSize(layout.height);
86
+ }} onSlideStart={(event, target) => {
87
87
  const value = getValueFromPointer(event.nativeEvent.locationY);
88
- onSlideStart == null ? void 0 : onSlideStart(value);
88
+ if (value) {
89
+ onSlideStart == null ? void 0 : onSlideStart(value, target);
90
+ }
89
91
  }} onSlideMove={(event) => {
90
92
  const value = getValueFromPointer(event.nativeEvent.locationY);
91
- onSlideMove == null ? void 0 : onSlideMove(value);
92
- }} onSlideEnd={() => rectRef.current = void 0} onStepKeyDown={(event) => {
93
+ if (value) {
94
+ onSlideMove == null ? void 0 : onSlideMove(value);
95
+ }
96
+ }} onSlideEnd={() => {
97
+ }} onStepKeyDown={(event) => {
93
98
  const isBackKey = BACK_KEYS.ltr.includes(event.key);
94
99
  onStepKeyDown == null ? void 0 : onStepKeyDown({ event, direction: isBackKey ? -1 : 1 });
95
100
  }} /></SliderOrientationProvider>;
96
101
  });
97
102
  const TRACK_NAME = "SliderTrack";
98
103
  const SliderTrackFrame = styled(SliderFrame, {
99
- name: "SliderTrackFrame"
104
+ name: "SliderTrack",
105
+ height: "100%",
106
+ width: "100%",
107
+ backgroundColor: "$background",
108
+ position: "relative",
109
+ borderRadius: 1e5
100
110
  });
101
111
  const SliderTrack = React.forwardRef((props, forwardedRef) => {
102
112
  const { __scopeSlider, ...trackProps } = props;
103
113
  const context = useSliderContext(TRACK_NAME, __scopeSlider);
104
- return <SliderTrackFrame data-disabled={context.disabled ? "" : void 0} data-orientation={context.orientation} orientation={context.orientation} {...trackProps} ref={forwardedRef} />;
114
+ return <SliderTrackFrame data-disabled={context.disabled ? "" : void 0} data-orientation={context.orientation} orientation={context.orientation} size={context.size} {...trackProps} ref={forwardedRef} />;
105
115
  });
106
116
  SliderTrack.displayName = TRACK_NAME;
107
117
  const RANGE_NAME = "SliderTrackActive";
108
118
  const SliderTrackActiveFrame = styled(SliderFrame, {
109
- name: "SliderTrackActive"
119
+ name: "SliderTrackActive",
120
+ backgroundColor: "$background",
121
+ position: "absolute"
110
122
  });
111
123
  const SliderTrackActive = React.forwardRef((props, forwardedRef) => {
112
124
  const { __scopeSlider, ...rangeProps } = props;
@@ -118,29 +130,56 @@ const SliderTrackActive = React.forwardRef((props, forwardedRef) => {
118
130
  const percentages = context.values.map((value) => convertValueToPercentage(value, context.min, context.max));
119
131
  const offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;
120
132
  const offsetEnd = 100 - Math.max(...percentages);
121
- return <SliderTrackActiveFrame orientation={context.orientation} data-orientation={context.orientation} data-disabled={context.disabled ? "" : void 0} {...rangeProps} ref={composedRefs} {...{
133
+ return <SliderTrackActiveFrame orientation={context.orientation} data-orientation={context.orientation} data-disabled={context.disabled ? "" : void 0} size={context.size} {...rangeProps} ref={composedRefs} {...{
122
134
  [orientation.startEdge]: offsetStart + "%",
123
135
  [orientation.endEdge]: offsetEnd + "%"
136
+ }} {...orientation.sizeProp === "width" ? {
137
+ height: "100%"
138
+ } : {
139
+ left: 0,
140
+ right: 0
124
141
  }} />;
125
142
  });
126
143
  SliderTrackActive.displayName = RANGE_NAME;
127
144
  const THUMB_NAME = "SliderThumb";
128
- const SliderThumbFrame = styled(SizableStack, {
145
+ const SliderThumbFrame = styled(ThemeableSizableStack, {
129
146
  name: "SliderThumb",
130
- position: "absolute"
147
+ position: "absolute",
148
+ bordered: 2,
149
+ borderWidth: 2,
150
+ pressable: true,
151
+ focusable: true,
152
+ hoverable: true
131
153
  });
132
154
  const SliderThumb = React.forwardRef((props, forwardedRef) => {
133
155
  var _a;
134
156
  const { __scopeSlider, index, size: sizeProp, ...thumbProps } = props;
135
157
  const context = useSliderContext(THUMB_NAME, __scopeSlider);
136
158
  const orientation = useSliderOrientationContext(THUMB_NAME, __scopeSlider);
159
+ const [thumb, setThumb] = React.useState(null);
160
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));
137
161
  const value = context.values[index];
138
162
  const percent = value === void 0 ? 0 : convertValueToPercentage(value, context.min, context.max);
139
163
  const label = getLabel(index, context.values.length);
140
164
  const [size, setSize] = React.useState(0);
141
165
  const thumbInBoundsOffset = size ? getThumbInBoundsOffset(size, percent, orientation.direction) : 0;
142
- console.log("thumbInBoundsOffset", thumbInBoundsOffset, size, percent);
143
- return <SliderThumbFrame ref={forwardedRef} aria-label={props["aria-label"] || label} aria-valuemin={context.min} aria-valuenow={value} aria-valuemax={context.max} aria-orientation={context.orientation} data-orientation={context.orientation} data-disabled={context.disabled ? "" : void 0} {...thumbProps} x={thumbInBoundsOffset} y={-size / 2} size={(_a = sizeProp != null ? sizeProp : context.size) != null ? _a : 30} onLayout={(e) => {
166
+ React.useEffect(() => {
167
+ if (thumb) {
168
+ context.thumbs.add(thumb);
169
+ return () => {
170
+ context.thumbs.delete(thumb);
171
+ };
172
+ }
173
+ }, [thumb, context.thumbs]);
174
+ return <SliderThumbFrame ref={composedRefs} role="slider" aria-label={props["aria-label"] || label} aria-valuemin={context.min} aria-valuenow={value} aria-valuemax={context.max} aria-orientation={context.orientation} data-orientation={context.orientation} data-disabled={context.disabled ? "" : void 0} tabIndex={context.disabled ? void 0 : 0} {...thumbProps} {...context.orientation === "horizontal" ? {
175
+ x: thumbInBoundsOffset - size / 2,
176
+ y: -size / 2,
177
+ top: "50%"
178
+ } : {
179
+ x: -size / 2,
180
+ y: size / 2,
181
+ left: "50%"
182
+ }} size={(_a = sizeProp != null ? sizeProp : context.size) != null ? _a : 30} onLayout={(e) => {
144
183
  setSize(e.nativeEvent.layout[orientation.sizeProp]);
145
184
  }} {...{
146
185
  [orientation.startEdge]: `${percent}%`
@@ -172,14 +211,12 @@ const Slider = withStaticProperties(React.forwardRef((props, forwardedRef) => {
172
211
  prop: value,
173
212
  defaultProp: defaultValue,
174
213
  onChange: (value2) => {
214
+ var _a;
215
+ const thumbs = [...thumbRefs.current];
216
+ (_a = thumbs[valueIndexToChangeRef.current]) == null ? void 0 : _a.focus();
175
217
  onValueChange(value2);
176
218
  }
177
219
  });
178
- function handleSlideStart(value2) {
179
- const closestIndex = getClosestValueIndex(values, value2);
180
- updateValues(value2, closestIndex);
181
- }
182
- __name(handleSlideStart, "handleSlideStart");
183
220
  function handleSlideMove(value2) {
184
221
  updateValues(value2, valueIndexToChangeRef.current);
185
222
  }
@@ -200,7 +237,13 @@ const Slider = withStaticProperties(React.forwardRef((props, forwardedRef) => {
200
237
  }
201
238
  __name(updateValues, "updateValues");
202
239
  const SliderOriented = isHorizontal ? SliderHorizontal : SliderVertical;
203
- return <SliderProvider scope={props.__scopeSlider} disabled={disabled} min={min} max={max} valueIndexToChangeRef={valueIndexToChangeRef} thumbs={thumbRefs.current} values={values} orientation={orientation} size={sizeProp || 20}><SliderOriented aria-disabled={disabled} data-disabled={disabled ? "" : void 0} {...sliderProps} ref={forwardedRef} min={min} max={max} onSlideStart={disabled ? void 0 : handleSlideStart} onSlideMove={disabled ? void 0 : handleSlideMove} onHomeKeyDown={() => !disabled && updateValues(min, 0)} onEndKeyDown={() => !disabled && updateValues(max, values.length - 1)} onStepKeyDown={({ event, direction: stepDirection }) => {
240
+ return <SliderProvider scope={props.__scopeSlider} disabled={disabled} min={min} max={max} valueIndexToChangeRef={valueIndexToChangeRef} thumbs={thumbRefs.current} values={values} orientation={orientation} size={sizeProp || 20}><SliderOriented aria-disabled={disabled} data-disabled={disabled ? "" : void 0} {...sliderProps} ref={forwardedRef} min={min} max={max} onSlideStart={disabled ? void 0 : (value2, target) => {
241
+ console.log("target", target);
242
+ if (target !== "thumb") {
243
+ const closestIndex = getClosestValueIndex(values, value2);
244
+ updateValues(value2, closestIndex);
245
+ }
246
+ }} onSlideMove={disabled ? void 0 : handleSlideMove} onHomeKeyDown={() => !disabled && updateValues(min, 0)} onEndKeyDown={() => !disabled && updateValues(max, values.length - 1)} onStepKeyDown={({ event, direction: stepDirection }) => {
204
247
  if (!disabled) {
205
248
  const isPageKey = PAGE_KEYS.includes(event.key);
206
249
  const isSkipKey = isPageKey || event.shiftKey && ARROW_KEYS.includes(event.key);
@@ -217,23 +260,6 @@ const Slider = withStaticProperties(React.forwardRef((props, forwardedRef) => {
217
260
  Thumb: SliderThumb
218
261
  });
219
262
  Slider.displayName = SLIDER_NAME;
220
- const BubbleInput = /* @__PURE__ */ __name((props) => {
221
- const { value, ...inputProps } = props;
222
- const ref = React.useRef(null);
223
- const prevValue = usePrevious(value);
224
- React.useEffect(() => {
225
- const input = ref.current;
226
- const inputProto = window.HTMLInputElement.prototype;
227
- const descriptor = Object.getOwnPropertyDescriptor(inputProto, "value");
228
- const setValue = descriptor.set;
229
- if (prevValue !== value && setValue) {
230
- const event = new Event("input", { bubbles: true });
231
- setValue.call(input, value);
232
- input.dispatchEvent(event);
233
- }
234
- }, [prevValue, value]);
235
- return <input style={{ display: "none" }} {...inputProps} ref={ref} defaultValue={value} />;
236
- }, "BubbleInput");
237
263
  const Track = SliderTrack;
238
264
  const Range = SliderTrackActive;
239
265
  const Thumb = SliderThumb;
@@ -1,7 +1,7 @@
1
- import { composeEventHandlers, styled } from "@tamagui/core";
1
+ import { composeEventHandlers, isWeb, styled } from "@tamagui/core";
2
2
  import { YStack, getCircleSize } from "@tamagui/stacks";
3
3
  import * as React from "react";
4
- import { SLIDER_NAME, useSliderContext } from "./context";
4
+ import { ARROW_KEYS, PAGE_KEYS, SLIDER_NAME, useSliderContext } from "./constants";
5
5
  const DirectionalYStack = styled(YStack, {
6
6
  variants: {
7
7
  orientation: {
@@ -11,22 +11,21 @@ const DirectionalYStack = styled(YStack, {
11
11
  }
12
12
  });
13
13
  const SliderFrame = styled(DirectionalYStack, {
14
- name: "Slider",
15
14
  position: "relative",
16
15
  variants: {
17
16
  size: (val, extras) => {
18
17
  const orientation = extras.props.orientation;
19
18
  const circleSize = getCircleSize(val, extras);
20
- const size = circleSize / 4;
19
+ const size = circleSize / 10;
21
20
  if (orientation === "horizontal") {
22
21
  return {
23
22
  height: size,
24
- width: 100
23
+ borderRadius: size
25
24
  };
26
25
  }
27
26
  return {
28
27
  width: size,
29
- height: 100
28
+ borderRadius: size
30
29
  };
31
30
  }
32
31
  }
@@ -43,9 +42,29 @@ const SliderImpl = React.forwardRef((props, forwardedRef) => {
43
42
  ...sliderProps
44
43
  } = props;
45
44
  const context = useSliderContext(SLIDER_NAME, __scopeSlider);
46
- return <SliderFrame size="$4" {...sliderProps} data-orientation={sliderProps.orientation} ref={forwardedRef} onStartShouldSetResponder={() => true} onResponderGrant={composeEventHandlers(props.onResponderGrant, (event) => {
45
+ return <SliderFrame size="$4" {...sliderProps} data-orientation={sliderProps.orientation} ref={forwardedRef} {...isWeb && {
46
+ onKeyDown: (event) => {
47
+ if (event.key === "Home") {
48
+ onHomeKeyDown(event);
49
+ event.preventDefault();
50
+ } else if (event.key === "End") {
51
+ onEndKeyDown(event);
52
+ event.preventDefault();
53
+ } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {
54
+ onStepKeyDown(event);
55
+ event.preventDefault();
56
+ }
57
+ }
58
+ }} onStartShouldSetResponder={() => true} onResponderGrant={composeEventHandlers(props.onResponderGrant, (event) => {
59
+ const target = event.target;
60
+ const isStartingOnThumb = context.thumbs.has(event.target);
47
61
  event.preventDefault();
48
- onSlideStart(event);
62
+ if (target instanceof HTMLElement) {
63
+ if (context.thumbs.has(target)) {
64
+ target.focus();
65
+ }
66
+ }
67
+ onSlideStart(event, isStartingOnThumb ? "thumb" : "track");
49
68
  })} onResponderMove={composeEventHandlers(props.onResponderMove, (event) => {
50
69
  onSlideMove(event);
51
70
  })} onResponderRelease={composeEventHandlers(props.onResponderRelease, (event) => {
@@ -0,0 +1,29 @@
1
+ import { createContextScope } from "@tamagui/create-context";
2
+ const SLIDER_NAME = "Slider";
3
+ const [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME);
4
+ const [SliderProvider, useSliderContext] = createSliderContext(SLIDER_NAME);
5
+ const [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {
6
+ startEdge: "left",
7
+ endEdge: "right",
8
+ sizeProp: "width",
9
+ size: 0,
10
+ direction: 1
11
+ });
12
+ const PAGE_KEYS = ["PageUp", "PageDown"];
13
+ const ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"];
14
+ const BACK_KEYS = {
15
+ ltr: ["ArrowDown", "Home", "ArrowLeft", "PageDown"],
16
+ rtl: ["ArrowDown", "Home", "ArrowRight", "PageDown"]
17
+ };
18
+ export {
19
+ ARROW_KEYS,
20
+ BACK_KEYS,
21
+ PAGE_KEYS,
22
+ SLIDER_NAME,
23
+ SliderOrientationProvider,
24
+ SliderProvider,
25
+ createSliderContext,
26
+ createSliderScope,
27
+ useSliderContext,
28
+ useSliderOrientationContext
29
+ };
package/dist/jsx/index.js CHANGED
@@ -1,2 +1,8 @@
1
1
  export * from "./Slider";
2
- export * from "./types";
2
+ import { SliderProps, SliderHorizontalProps, SliderVerticalProps, SliderTrackProps } from "./types";
3
+ export {
4
+ SliderHorizontalProps,
5
+ SliderProps,
6
+ SliderTrackProps,
7
+ SliderVerticalProps
8
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/slider",
3
- "version": "1.0.1-beta.26",
3
+ "version": "1.0.1-beta.27",
4
4
  "sideEffects": true,
5
5
  "source": "src/index.ts",
6
6
  "types": "./types/index.d.ts",
@@ -19,12 +19,12 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@radix-ui/react-use-previous": "^0.1.1",
22
- "@tamagui/compose-refs": "^1.0.1-beta.26",
23
- "@tamagui/core": "^1.0.1-beta.26",
24
- "@tamagui/create-context": "^1.0.1-beta.26",
25
- "@tamagui/stacks": "^1.0.1-beta.26",
26
- "@tamagui/use-controllable-state": "^1.0.1-beta.26",
27
- "@tamagui/use-direction": "^1.0.1-beta.26"
22
+ "@tamagui/compose-refs": "^1.0.1-beta.27",
23
+ "@tamagui/core": "^1.0.1-beta.27",
24
+ "@tamagui/create-context": "^1.0.1-beta.27",
25
+ "@tamagui/stacks": "^1.0.1-beta.27",
26
+ "@tamagui/use-controllable-state": "^1.0.1-beta.27",
27
+ "@tamagui/use-direction": "^1.0.1-beta.27"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "react": "*",
@@ -32,7 +32,7 @@
32
32
  "react-native": "*"
33
33
  },
34
34
  "devDependencies": {
35
- "@tamagui/build": "^1.0.1-beta.26",
35
+ "@tamagui/build": "^1.0.1-beta.27",
36
36
  "@types/react-native": "^0.67.3",
37
37
  "react": "*",
38
38
  "react-dom": "*",
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../src/Slider.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAgB,iBAAiB,EAAE,WAAW,EAAiB,MAAM,iBAAiB,CAAA;AAG7F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAmB,IAAI,EAAE,MAAM,cAAc,CAAA;AAsBpD,OAAO,EAKL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAEjB,MAAM,SAAS,CAAA;AAahB,aAAK,uBAAuB,GAAG,iBAAiB,CAAA;AAiEhD,aAAK,qBAAqB,GAAG,iBAAiB,CAAA;AAyD9C,aAAK,kBAAkB,GAAG,WAAW,GAAG,IAAI,CAAA;AAM5C,QAAA,MAAM,WAAW,6FAchB,CAAA;AAUD,aAAK,wBAAwB,GAAG,WAAW,GAAG,IAAI,CAAA;AAClD,UAAU,sBAAuB,SAAQ,WAAW;CAAG;AAMvD,QAAA,MAAM,iBAAiB,yGA4BtB,CAAA;AAeD,aAAK,kBAAkB,GAAG,WAAW,GAAG,IAAI,CAAA;AAC5C,UAAU,gBAAiB,SAAQ,iBAAiB;IAClD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,WAAW,6FAiEhB,CAAA;AAQD,aAAK,aAAa,GAAG,uBAAuB,GAAG,qBAAqB,CAAA;AAEpE,QAAA,MAAM,MAAM;;;;CAiHX,CAAA;AAuCD,QAAA,MAAM,KAAK,6FAAc,CAAA;AACzB,QAAA,MAAM,KAAK,yGAAoB,CAAA;AAC/B,QAAA,MAAM,KAAK,6FAAc,CAAA;AAEzB,OAAO,EACL,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,WAAW,EAEX,KAAK,EACL,KAAK,EACL,KAAK,GACN,CAAA;AACD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../src/Slider.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAyB,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGvF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAmB,IAAI,EAAE,MAAM,cAAc,CAAA;AAwBpD,OAAO,EAKL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAEjB,MAAM,SAAS,CAAA;AAMhB,aAAK,uBAAuB,GAAG,iBAAiB,CAAA;AAiEhD,aAAK,qBAAqB,GAAG,iBAAiB,CAAA;AAgE9C,aAAK,kBAAkB,GAAG,WAAW,GAAG,IAAI,CAAA;AAW5C,QAAA,MAAM,WAAW,6FAehB,CAAA;AAUD,aAAK,wBAAwB,GAAG,WAAW,GAAG,IAAI,CAAA;AAClD,UAAU,sBAAuB,SAAQ,WAAW;CAAG;AAQvD,QAAA,MAAM,iBAAiB,yGAqCtB,CAAA;AAsBD,aAAK,kBAAkB,GAAG,WAAW,GAAG,IAAI,CAAA;AAC5C,UAAU,gBAAiB,SAAQ,iBAAiB;IAClD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,WAAW,6FA4EhB,CAAA;AAQD,aAAK,aAAa,GAAG,uBAAuB,GAAG,qBAAqB,CAAA;AAEpE,QAAA,MAAM,MAAM;;;;CAuHX,CAAA;AAuCD,QAAA,MAAM,KAAK,6FAAc,CAAA;AACzB,QAAA,MAAM,KAAK,yGAAoB,CAAA;AAC/B,QAAA,MAAM,KAAK,6FAAc,CAAA;AAEzB,OAAO,EACL,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,WAAW,EAEX,KAAK,EACL,KAAK,EACL,KAAK,GACN,CAAA;AACD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderImpl.d.ts","sourceRoot":"","sources":["../src/SliderImpl.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAe,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;EAO5B,CAAA;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBtB,CAAA;AAEF,eAAO,MAAM,UAAU,2FA6DtB,CAAA"}
1
+ {"version":3,"file":"SliderImpl.d.ts","sourceRoot":"","sources":["../src/SliderImpl.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAe,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;EAO5B,CAAA;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBtB,CAAA;AAEF,eAAO,MAAM,UAAU,2FA8DtB,CAAA"}
@@ -0,0 +1,53 @@
1
+ /// <reference types="react" />
2
+ import { SizeTokens } from '@tamagui/core';
3
+ import { Direction, SliderContextValue } from './types';
4
+ export declare const SLIDER_NAME = "Slider";
5
+ export declare const createSliderContext: <ContextValueType extends object | null>(rootComponentName: string, defaultContext?: ContextValueType | undefined) => readonly [{
6
+ (props: ContextValueType & {
7
+ scope: import("@tamagui/create-context").Scope<ContextValueType>;
8
+ children: import("react").ReactNode;
9
+ }): JSX.Element;
10
+ displayName: string;
11
+ }, (consumerName: string, scope: import("@tamagui/create-context").Scope<ContextValueType | undefined>) => ContextValueType], createSliderScope: import("@tamagui/create-context").CreateScope;
12
+ export declare const SliderProvider: {
13
+ (props: SliderContextValue & {
14
+ scope: import("@tamagui/create-context").Scope<SliderContextValue>;
15
+ children: import("react").ReactNode;
16
+ }): JSX.Element;
17
+ displayName: string;
18
+ }, useSliderContext: (consumerName: string, scope: import("@tamagui/create-context").Scope<SliderContextValue | undefined>) => SliderContextValue;
19
+ export declare const SliderOrientationProvider: {
20
+ (props: {
21
+ startEdge: 'bottom' | 'left' | 'right';
22
+ endEdge: 'top' | 'right' | 'left';
23
+ sizeProp: 'width' | 'height';
24
+ size: number | SizeTokens;
25
+ direction: number;
26
+ } & {
27
+ scope: import("@tamagui/create-context").Scope<{
28
+ startEdge: 'bottom' | 'left' | 'right';
29
+ endEdge: 'top' | 'right' | 'left';
30
+ sizeProp: 'width' | 'height';
31
+ size: number | SizeTokens;
32
+ direction: number;
33
+ }>;
34
+ children: import("react").ReactNode;
35
+ }): JSX.Element;
36
+ displayName: string;
37
+ }, useSliderOrientationContext: (consumerName: string, scope: import("@tamagui/create-context").Scope<{
38
+ startEdge: 'bottom' | 'left' | 'right';
39
+ endEdge: 'top' | 'right' | 'left';
40
+ sizeProp: 'width' | 'height';
41
+ size: number | SizeTokens;
42
+ direction: number;
43
+ } | undefined>) => {
44
+ startEdge: 'bottom' | 'left' | 'right';
45
+ endEdge: 'top' | 'right' | 'left';
46
+ sizeProp: 'width' | 'height';
47
+ size: number | SizeTokens;
48
+ direction: number;
49
+ };
50
+ export declare const PAGE_KEYS: string[];
51
+ export declare const ARROW_KEYS: string[];
52
+ export declare const BACK_KEYS: Record<Direction, string[]>;
53
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEvD,eAAO,MAAM,WAAW,WAAW,CAAA;AAEnC,eAAO,MAAO,mBAAmB;;;;;;8HAAE,iBAAiB,+CAAmC,CAAA;AAEvF,eAAO,MAAO,cAAc;;;;;;GAAE,gBAAgB,8HACQ,CAAA;AAEtD,eAAO,MAAO,yBAAyB;;mBAC1B,QAAQ,GAAG,MAAM,GAAG,OAAO;iBAC7B,KAAK,GAAG,OAAO,GAAG,MAAM;kBACvB,OAAO,GAAG,QAAQ;cACtB,MAAM,GAAG,UAAU;mBACd,MAAM;;;uBAJN,QAAQ,GAAG,MAAM,GAAG,OAAO;qBAC7B,KAAK,GAAG,OAAO,GAAG,MAAM;sBACvB,OAAO,GAAG,QAAQ;kBACtB,MAAM,GAAG,UAAU;uBACd,MAAM;;;;;GALsB,2BAA2B;eACvD,QAAQ,GAAG,MAAM,GAAG,OAAO;aAC7B,KAAK,GAAG,OAAO,GAAG,MAAM;cACvB,OAAO,GAAG,QAAQ;UACtB,MAAM,GAAG,UAAU;eACd,MAAM;;eAJN,QAAQ,GAAG,MAAM,GAAG,OAAO;aAC7B,KAAK,GAAG,OAAO,GAAG,MAAM;cACvB,OAAO,GAAG,QAAQ;UACtB,MAAM,GAAG,UAAU;eACd,MAAM;CAOjB,CAAA;AAEF,eAAO,MAAM,SAAS,UAAyB,CAAA;AAC/C,eAAO,MAAM,UAAU,UAAsD,CAAA;AAC7E,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAGjD,CAAA"}