@hunterchen/canvas 0.8.0 → 0.10.0

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.
Files changed (48) hide show
  1. package/dist/components/canvas/backgrounds.js +67 -38
  2. package/dist/components/canvas/backgrounds.js.map +1 -1
  3. package/dist/components/canvas/canvas.d.ts +2 -0
  4. package/dist/components/canvas/canvas.d.ts.map +1 -1
  5. package/dist/components/canvas/canvas.js +459 -387
  6. package/dist/components/canvas/canvas.js.map +1 -1
  7. package/dist/components/canvas/component.js +108 -174
  8. package/dist/components/canvas/component.js.map +1 -1
  9. package/dist/components/canvas/draggable.js +168 -151
  10. package/dist/components/canvas/draggable.js.map +1 -1
  11. package/dist/components/canvas/navbar/index.js +164 -142
  12. package/dist/components/canvas/navbar/index.js.map +1 -1
  13. package/dist/components/canvas/navbar/single-button.js +176 -149
  14. package/dist/components/canvas/navbar/single-button.js.map +1 -1
  15. package/dist/components/canvas/toolbar.js +121 -82
  16. package/dist/components/canvas/toolbar.js.map +1 -1
  17. package/dist/components/canvas/wrapper.js +127 -99
  18. package/dist/components/canvas/wrapper.js.map +1 -1
  19. package/dist/contexts/CanvasContext.js +25 -17
  20. package/dist/contexts/CanvasContext.js.map +1 -1
  21. package/dist/contexts/PerformanceContext.js +51 -50
  22. package/dist/contexts/PerformanceContext.js.map +1 -1
  23. package/dist/hooks/usePerformanceMode.js +36 -37
  24. package/dist/hooks/usePerformanceMode.js.map +1 -1
  25. package/dist/hooks/useWindowDimensions.js +22 -18
  26. package/dist/hooks/useWindowDimensions.js.map +1 -1
  27. package/dist/index.d.ts +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +17 -21
  30. package/dist/lib/canvas.js +65 -72
  31. package/dist/lib/canvas.js.map +1 -1
  32. package/dist/lib/constants.js +78 -92
  33. package/dist/lib/constants.js.map +1 -1
  34. package/dist/lib/utils.js +10 -5
  35. package/dist/lib/utils.js.map +1 -1
  36. package/dist/types/index.d.ts +22 -0
  37. package/dist/types/index.d.ts.map +1 -1
  38. package/dist/utils/performance.js +18 -23
  39. package/dist/utils/performance.js.map +1 -1
  40. package/package.json +7 -21
  41. package/src/components/canvas/canvas.tsx +16 -4
  42. package/src/index.ts +1 -0
  43. package/src/types/index.ts +24 -0
  44. package/dist/components/canvas/offest.js +0 -12
  45. package/dist/components/canvas/offest.js.map +0 -1
  46. package/dist/index.js.map +0 -1
  47. package/dist/types/index.js +0 -6
  48. package/dist/types/index.js.map +0 -1
@@ -1,22 +1,26 @@
1
1
  import { useEffect, useState } from "react";
2
+
3
+ //#region src/hooks/useWindowDimensions.ts
2
4
  const useWindowDimensions = () => {
3
- const [windowDimensions, setWindowDimensions] = useState({
4
- width: typeof window !== "undefined" ? window.innerWidth : 1200,
5
- height: typeof window !== "undefined" ? window.innerHeight : 800,
6
- });
7
- useEffect(() => {
8
- function handleResize() {
9
- setWindowDimensions({
10
- width: window.innerWidth,
11
- height: window.innerHeight,
12
- });
13
- }
14
- // Set initial dimensions on mount
15
- handleResize();
16
- window.addEventListener("resize", handleResize);
17
- return () => window.removeEventListener("resize", handleResize);
18
- }, []); // Empty array ensures that effect is only run on mount
19
- return windowDimensions;
5
+ const [windowDimensions, setWindowDimensions] = useState({
6
+ width: typeof window !== "undefined" ? window.innerWidth : 1200,
7
+ height: typeof window !== "undefined" ? window.innerHeight : 800
8
+ });
9
+ useEffect(() => {
10
+ function handleResize() {
11
+ setWindowDimensions({
12
+ width: window.innerWidth,
13
+ height: window.innerHeight
14
+ });
15
+ }
16
+ handleResize();
17
+ window.addEventListener("resize", handleResize);
18
+ return () => window.removeEventListener("resize", handleResize);
19
+ }, []);
20
+ return windowDimensions;
20
21
  };
21
- export default useWindowDimensions;
22
+ var useWindowDimensions_default = useWindowDimensions;
23
+
24
+ //#endregion
25
+ export { useWindowDimensions_default as default };
22
26
  //# sourceMappingURL=useWindowDimensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWindowDimensions.js","sourceRoot":"","sources":["../../src/hooks/useWindowDimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAO5C,MAAM,mBAAmB,GAAG,GAAqB,EAAE;IACjD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAmB;QACzE,KAAK,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QAC/D,MAAM,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;KACjE,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,YAAY;YACnB,mBAAmB,CAAC;gBAClB,KAAK,EAAE,MAAM,CAAC,UAAU;gBACxB,MAAM,EAAE,MAAM,CAAC,WAAW;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,kCAAkC;QAClC,YAAY,EAAE,CAAC;QAEf,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChD,OAAO,GAAS,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,uDAAuD;IAE/D,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"useWindowDimensions.js","names":[],"sources":["../../src/hooks/useWindowDimensions.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\ntype WindowDimentions = {\n width: number;\n height: number;\n};\n\nconst useWindowDimensions = (): WindowDimentions => {\n const [windowDimensions, setWindowDimensions] = useState<WindowDimentions>({\n width: typeof window !== \"undefined\" ? window.innerWidth : 1200,\n height: typeof window !== \"undefined\" ? window.innerHeight : 800,\n });\n\n useEffect(() => {\n function handleResize(): void {\n setWindowDimensions({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }\n\n // Set initial dimensions on mount\n handleResize();\n\n window.addEventListener(\"resize\", handleResize);\n return (): void => window.removeEventListener(\"resize\", handleResize);\n }, []); // Empty array ensures that effect is only run on mount\n\n return windowDimensions;\n};\n\nexport default useWindowDimensions;\n"],"mappings":";;;AAOA,MAAM,4BAA8C;CAClD,MAAM,CAAC,kBAAkB,uBAAuB,SAA2B;EACzE,OAAO,OAAO,WAAW,cAAc,OAAO,aAAa;EAC3D,QAAQ,OAAO,WAAW,cAAc,OAAO,cAAc;EAC9D,CAAC;AAEF,iBAAgB;EACd,SAAS,eAAqB;AAC5B,uBAAoB;IAClB,OAAO,OAAO;IACd,QAAQ,OAAO;IAChB,CAAC;;AAIJ,gBAAc;AAEd,SAAO,iBAAiB,UAAU,aAAa;AAC/C,eAAmB,OAAO,oBAAoB,UAAU,aAAa;IACpE,EAAE,CAAC;AAEN,QAAO;;AAGT,kCAAe"}
package/dist/index.d.ts CHANGED
@@ -16,5 +16,5 @@ export * from "./lib/canvas";
16
16
  export * from "./lib/constants";
17
17
  export * from "./lib/utils";
18
18
  export * from "./utils/performance";
19
- export type { SectionCoordinates, NavItem, CanvasSection, ToolbarConfig, ToolbarPosition, ToolbarDisplayMode, NavbarConfig, NavbarPosition, NavbarDisplayMode, NavbarButtonConfig, NavbarTooltipConfig, } from "./types";
19
+ export type { SectionCoordinates, NavItem, CanvasSection, ToolbarConfig, ToolbarPosition, ToolbarDisplayMode, NavbarConfig, NavbarPosition, NavbarDisplayMode, NavbarButtonConfig, NavbarTooltipConfig, AnimationTimingConfig, } from "./types";
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,eAAe,EACf,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG5F,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAGpC,YAAY,EACV,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,eAAe,EACf,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG5F,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAGpC,YAAY,EACV,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,21 +1,17 @@
1
- // Components
2
- export { default as Canvas } from "./components/canvas/canvas";
3
- export { CanvasComponent } from "./components/canvas/component";
4
- export { Draggable, DraggableImage } from "./components/canvas/draggable";
5
- export { CanvasWrapper, growTransition } from "./components/canvas/wrapper";
6
- export { default as CanvasToolbar } from "./components/canvas/toolbar";
7
- export { default as CanvasNavbar } from "./components/canvas/navbar";
8
- // Background Components
9
- export { DefaultCanvasBackground, DefaultWrapperBackground, DefaultIntroContent, DEFAULT_CANVAS_GRADIENT, DEFAULT_INTRO_GRADIENT, DEFAULT_CANVAS_BOX_GRADIENT, } from "./components/canvas/backgrounds";
10
- // Contexts
11
- export { CanvasContext, CanvasProvider, useCanvasContext, } from "./contexts/CanvasContext";
12
- export { PerformanceProvider, usePerformanceMode, usePerformance, } from "./contexts/PerformanceContext";
13
- // Hooks
14
- export { default as useWindowDimensions } from "./hooks/useWindowDimensions";
15
- export { usePerformanceMode as usePerformanceModeLegacy } from "./hooks/usePerformanceMode";
16
- // Utilities
17
- export * from "./lib/canvas";
18
- export * from "./lib/constants";
19
- export * from "./lib/utils";
20
- export * from "./utils/performance";
21
- //# sourceMappingURL=index.js.map
1
+ import { CanvasContext, CanvasProvider, useCanvasContext } from "./contexts/CanvasContext.js";
2
+ import { BLUR_TRANSITION, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, GROW_TRANSITION, IMAGE_FALLBACK_WIDTH_THRESHOLD, INTERACTIVE_SELECTOR, INTRO_ASPECT_RATIO, MAX_DIM_RATIO, MAX_ZOOM, MIN_ZOOMS, MOUSE_WHEEL_ZOOM_SENSITIVITY, NAVBAR_DEBOUNCE_MS, PAN_SPRING, RESPONSIVE_ZOOM_MAP, STAGE2_TRANSITION, ScreenSizeEnum, TOOLBAR_OPACITY_POS_EPS, TOOLBAR_OPACITY_SCALE_EPS, TRACKPAD_ZOOM_SENSITIVITY, VIEWPORT_HYSTERESIS_BUFFER, ZOOM_BOUND } from "./lib/constants.js";
3
+ import { calcInitialBoxWidth, canvasHeight, canvasWidth, getDistance, getMidpoint, getScreenSizeEnum, getSectionPanCoordinates, panToOffsetScene, useMemoPoint } from "./lib/canvas.js";
4
+ import useWindowDimensions_default from "./hooks/useWindowDimensions.js";
5
+ import { cn } from "./lib/utils.js";
6
+ import { getWillChange, isIOS, isMobile, prefersReducedMotion } from "./utils/performance.js";
7
+ import { usePerformanceMode as usePerformanceMode$1 } from "./hooks/usePerformanceMode.js";
8
+ import Navbar from "./components/canvas/navbar/index.js";
9
+ import toolbar_default from "./components/canvas/toolbar.js";
10
+ import { CanvasWrapper } from "./components/canvas/wrapper.js";
11
+ import { DEFAULT_CANVAS_BOX_GRADIENT, DEFAULT_CANVAS_GRADIENT, DEFAULT_INTRO_GRADIENT, DefaultCanvasBackground, DefaultIntroContent, DefaultWrapperBackground } from "./components/canvas/backgrounds.js";
12
+ import canvas_default from "./components/canvas/canvas.js";
13
+ import { CanvasComponent } from "./components/canvas/component.js";
14
+ import { Draggable, DraggableImage } from "./components/canvas/draggable.js";
15
+ import { PerformanceProvider, usePerformance, usePerformanceMode } from "./contexts/PerformanceContext.js";
16
+
17
+ export { BLUR_TRANSITION, canvas_default as Canvas, CanvasComponent, CanvasContext, Navbar as CanvasNavbar, CanvasProvider, toolbar_default as CanvasToolbar, CanvasWrapper, DEFAULT_CANVAS_BOX_GRADIENT, DEFAULT_CANVAS_GRADIENT, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_INTRO_GRADIENT, DefaultCanvasBackground, DefaultIntroContent, DefaultWrapperBackground, Draggable, DraggableImage, GROW_TRANSITION, IMAGE_FALLBACK_WIDTH_THRESHOLD, INTERACTIVE_SELECTOR, INTRO_ASPECT_RATIO, MAX_DIM_RATIO, MAX_ZOOM, MIN_ZOOMS, MOUSE_WHEEL_ZOOM_SENSITIVITY, NAVBAR_DEBOUNCE_MS, PAN_SPRING, PerformanceProvider, RESPONSIVE_ZOOM_MAP, STAGE2_TRANSITION, ScreenSizeEnum, TOOLBAR_OPACITY_POS_EPS, TOOLBAR_OPACITY_SCALE_EPS, TRACKPAD_ZOOM_SENSITIVITY, VIEWPORT_HYSTERESIS_BUFFER, ZOOM_BOUND, calcInitialBoxWidth, canvasHeight, canvasWidth, cn, getDistance, getMidpoint, getScreenSizeEnum, getSectionPanCoordinates, getWillChange, GROW_TRANSITION as growTransition, isIOS, isMobile, panToOffsetScene, prefersReducedMotion, useCanvasContext, useMemoPoint, usePerformance, usePerformanceMode, usePerformanceMode$1 as usePerformanceModeLegacy, useWindowDimensions_default as useWindowDimensions };
@@ -1,82 +1,75 @@
1
+ import { DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, INTERACTIVE_SELECTOR, INTRO_ASPECT_RATIO, MAX_DIM_RATIO, MAX_ZOOM, MIN_ZOOMS, PAN_SPRING, ScreenSizeEnum, ZOOM_BOUND } from "./constants.js";
1
2
  import { animate } from "framer-motion";
2
3
  import { useMemo } from "react";
3
- import { DEFAULT_CANVAS_WIDTH, DEFAULT_CANVAS_HEIGHT, MAX_DIM_RATIO, INTRO_ASPECT_RATIO, PAN_SPRING, ScreenSizeEnum, } from "./constants";
4
- export const canvasWidth = DEFAULT_CANVAS_WIDTH;
5
- export const canvasHeight = DEFAULT_CANVAS_HEIGHT;
6
- // Re-export ScreenSizeEnum for backward compatibility
7
- export { ScreenSizeEnum } from "./constants";
8
- export const useMemoPoint = (x, y) => {
9
- return useMemo(() => ({ x, y }), [x, y]);
4
+
5
+ //#region src/lib/canvas.ts
6
+ const canvasWidth = DEFAULT_CANVAS_WIDTH;
7
+ const canvasHeight = DEFAULT_CANVAS_HEIGHT;
8
+ const useMemoPoint = (x, y) => {
9
+ return useMemo(() => ({
10
+ x,
11
+ y
12
+ }), [x, y]);
10
13
  };
11
- export const getDistance = (p1, p2) => {
12
- const dx = p1.clientX - p2.clientX;
13
- const dy = p1.clientY - p2.clientY;
14
- return Math.sqrt(dx ** 2 + dy ** 2);
14
+ const getDistance = (p1, p2) => {
15
+ const dx = p1.clientX - p2.clientX;
16
+ const dy = p1.clientY - p2.clientY;
17
+ return Math.sqrt(dx ** 2 + dy ** 2);
15
18
  };
16
- export const getMidpoint = (p1, p2) => {
17
- return {
18
- x: (p1.clientX + p2.clientX) / 2,
19
- y: (p1.clientY + p2.clientY) / 2,
20
- };
19
+ const getMidpoint = (p1, p2) => {
20
+ return {
21
+ x: (p1.clientX + p2.clientX) / 2,
22
+ y: (p1.clientY + p2.clientY) / 2
23
+ };
21
24
  };
22
- export const getScreenSizeEnum = (width) => {
23
- // iphone 12 pro is 390px, iphone 14 pro max is 430px, SE 3rd gen is 375px
24
- if (width < 400)
25
- return ScreenSizeEnum.SMALL_MOBILE;
26
- if (width < 768)
27
- return ScreenSizeEnum.MOBILE;
28
- if (width < 1440)
29
- return ScreenSizeEnum.TABLET;
30
- if (width < 1920)
31
- return ScreenSizeEnum.SMALL_DESKTOP;
32
- if (width < 2560)
33
- return ScreenSizeEnum.MEDIUM_DESKTOP;
34
- if (width <= 3440)
35
- return ScreenSizeEnum.LARGE_DESKTOP;
36
- return ScreenSizeEnum.HUGE_DESKTOP;
25
+ const getScreenSizeEnum = (width) => {
26
+ if (width < 400) return ScreenSizeEnum.SMALL_MOBILE;
27
+ if (width < 768) return ScreenSizeEnum.MOBILE;
28
+ if (width < 1440) return ScreenSizeEnum.TABLET;
29
+ if (width < 1920) return ScreenSizeEnum.SMALL_DESKTOP;
30
+ if (width < 2560) return ScreenSizeEnum.MEDIUM_DESKTOP;
31
+ if (width <= 3440) return ScreenSizeEnum.LARGE_DESKTOP;
32
+ return ScreenSizeEnum.HUGE_DESKTOP;
37
33
  };
38
- export function getSectionPanCoordinates({ windowDimensions, coords, targetZoom, negative, }) {
39
- const { width, height } = windowDimensions;
40
- // Calculate the center of the section
41
- const sectionCenterX = coords.x + coords.width / 2;
42
- const sectionCenterY = coords.y + coords.height / 2;
43
- // Calculate the required pan offset to center the section in the viewport
44
- const targetX = width / 2 - sectionCenterX * targetZoom;
45
- const targetY = height / 2 - sectionCenterY * targetZoom;
46
- if (negative) {
47
- return {
48
- x: -targetX,
49
- y: -targetY,
50
- };
51
- }
52
- return {
53
- x: targetX,
54
- y: targetY,
55
- };
34
+ function getSectionPanCoordinates({ windowDimensions, coords, targetZoom, negative }) {
35
+ const { width, height } = windowDimensions;
36
+ const sectionCenterX = coords.x + coords.width / 2;
37
+ const sectionCenterY = coords.y + coords.height / 2;
38
+ const targetX = width / 2 - sectionCenterX * targetZoom;
39
+ const targetY = height / 2 - sectionCenterY * targetZoom;
40
+ if (negative) return {
41
+ x: -targetX,
42
+ y: -targetY
43
+ };
44
+ return {
45
+ x: targetX,
46
+ y: targetY
47
+ };
56
48
  }
57
- export async function panToOffsetScene(offset, x, y, scale, newZoom) {
58
- const animX = animate(x, offset.x, PAN_SPRING);
59
- const animY = animate(y, offset.y, PAN_SPRING);
60
- const animScale = animate(scale, newZoom ?? 1, PAN_SPRING);
61
- await Promise.all([animScale, animX, animY]);
49
+ async function panToOffsetScene(offset, x, y, scale, newZoom) {
50
+ const animX = animate(x, offset.x, PAN_SPRING);
51
+ const animY = animate(y, offset.y, PAN_SPRING);
52
+ const animScale = animate(scale, newZoom ?? 1, PAN_SPRING);
53
+ await Promise.all([
54
+ animScale,
55
+ animX,
56
+ animY
57
+ ]);
62
58
  }
63
- export const calcInitialBoxWidth = (windowWidth, windowHeight) => {
64
- // math CanvasWrapper's bounding box size and compute scale s.t. canvas fits entirely within
65
- const maxWidth = windowWidth * MAX_DIM_RATIO.width;
66
- const maxHeight = windowHeight * MAX_DIM_RATIO.height;
67
- let boxWidth, boxHeight;
68
- if (maxWidth / INTRO_ASPECT_RATIO <= maxHeight) {
69
- boxWidth = maxWidth;
70
- boxHeight = boxWidth / INTRO_ASPECT_RATIO;
71
- }
72
- else {
73
- boxHeight = maxHeight;
74
- boxWidth = boxHeight * INTRO_ASPECT_RATIO;
75
- }
76
- // scale so the canvas fits inside the computed 3:2 box
77
- return Math.min(boxWidth / canvasWidth, boxHeight / canvasHeight);
59
+ const calcInitialBoxWidth = (windowWidth, windowHeight) => {
60
+ const maxWidth = windowWidth * MAX_DIM_RATIO.width;
61
+ const maxHeight = windowHeight * MAX_DIM_RATIO.height;
62
+ let boxWidth, boxHeight;
63
+ if (maxWidth / INTRO_ASPECT_RATIO <= maxHeight) {
64
+ boxWidth = maxWidth;
65
+ boxHeight = boxWidth / INTRO_ASPECT_RATIO;
66
+ } else {
67
+ boxHeight = maxHeight;
68
+ boxWidth = boxHeight * INTRO_ASPECT_RATIO;
69
+ }
70
+ return Math.min(boxWidth / canvasWidth, boxHeight / canvasHeight);
78
71
  };
79
- // Re-export commonly used constants for backward compatibility
80
- export { MAX_DIM_RATIO } from "./constants";
81
- export { INTERACTIVE_SELECTOR, ZOOM_BOUND, MAX_ZOOM, MIN_ZOOMS, } from "./constants";
72
+
73
+ //#endregion
74
+ export { calcInitialBoxWidth, canvasHeight, canvasWidth, getDistance, getMidpoint, getScreenSizeEnum, getSectionPanCoordinates, panToOffsetScene, useMemoPoint };
82
75
  //# sourceMappingURL=canvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/lib/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgC,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAChD,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAElD,sDAAsD;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAS,EAAE;IAC1D,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,EAAuB,EACvB,EAAuB,EACvB,EAAE;IACF,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IACnC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,EAAuB,EACvB,EAAuB,EAChB,EAAE;IACT,OAAO;QACL,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QAChC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAkB,EAAE;IACjE,0EAA0E;IAC1E,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,cAAc,CAAC,YAAY,CAAC;IACpD,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,cAAc,CAAC,MAAM,CAAC;IAC9C,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,cAAc,CAAC,MAAM,CAAC;IAC/C,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,cAAc,CAAC,aAAa,CAAC;IACtD,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,cAAc,CAAC,cAAc,CAAC;IACvD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,cAAc,CAAC,aAAa,CAAC;IACvD,OAAO,cAAc,CAAC,YAAY,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,EACvC,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,QAAQ,GAMT;IACC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;IAC3C,sCAAsC;IACtC,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAEpD,0EAA0E;IAC1E,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,cAAc,GAAG,UAAU,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,cAAc,GAAG,UAAU,CAAC;IAEzD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,CAAC,EAAE,CAAC,OAAO;YACX,CAAC,EAAE,CAAC,OAAO;SACZ,CAAC;IACJ,CAAC;IAED,OAAO;QACL,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,OAAO;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAa,EACb,CAAsB,EACtB,CAAsB,EACtB,KAA0B,EAC1B,OAAgB;IAEhB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,WAAmB,EACnB,YAAoB,EACpB,EAAE;IACF,4FAA4F;IAC5F,MAAM,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC;IACnD,MAAM,SAAS,GAAG,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;IAEtD,IAAI,QAAQ,EAAE,SAAS,CAAC;IAExB,IAAI,QAAQ,GAAG,kBAAkB,IAAI,SAAS,EAAE,CAAC;QAC/C,QAAQ,GAAG,QAAQ,CAAC;QACpB,SAAS,GAAG,QAAQ,GAAG,kBAAkB,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,SAAS,CAAC;QACtB,QAAQ,GAAG,SAAS,GAAG,kBAAkB,CAAC;IAC5C,CAAC;IAED,uDAAuD;IACvD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,+DAA+D;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,QAAQ,EACR,SAAS,GACV,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"canvas.js","names":[],"sources":["../../src/lib/canvas.ts"],"sourcesContent":["import { animate, type MotionValue, type Point } from \"framer-motion\";\nimport { useMemo } from \"react\";\nimport {\n DEFAULT_CANVAS_WIDTH,\n DEFAULT_CANVAS_HEIGHT,\n MAX_DIM_RATIO,\n INTRO_ASPECT_RATIO,\n PAN_SPRING,\n ScreenSizeEnum,\n} from \"./constants\";\n\nexport const canvasWidth = DEFAULT_CANVAS_WIDTH;\nexport const canvasHeight = DEFAULT_CANVAS_HEIGHT;\n\n// Re-export ScreenSizeEnum for backward compatibility\nexport { ScreenSizeEnum } from \"./constants\";\n\nexport const useMemoPoint = (x: number, y: number): Point => {\n return useMemo(() => ({ x, y }), [x, y]);\n};\n\nexport interface MinimalPointerInput {\n clientX: number;\n clientY: number;\n}\n\nexport const getDistance = (\n p1: MinimalPointerInput,\n p2: MinimalPointerInput,\n) => {\n const dx = p1.clientX - p2.clientX;\n const dy = p1.clientY - p2.clientY;\n return Math.sqrt(dx ** 2 + dy ** 2);\n};\n\nexport const getMidpoint = (\n p1: MinimalPointerInput,\n p2: MinimalPointerInput,\n): Point => {\n return {\n x: (p1.clientX + p2.clientX) / 2,\n y: (p1.clientY + p2.clientY) / 2,\n };\n};\n\nexport const getScreenSizeEnum = (width: number): ScreenSizeEnum => {\n // iphone 12 pro is 390px, iphone 14 pro max is 430px, SE 3rd gen is 375px\n if (width < 400) return ScreenSizeEnum.SMALL_MOBILE;\n if (width < 768) return ScreenSizeEnum.MOBILE;\n if (width < 1440) return ScreenSizeEnum.TABLET;\n if (width < 1920) return ScreenSizeEnum.SMALL_DESKTOP;\n if (width < 2560) return ScreenSizeEnum.MEDIUM_DESKTOP;\n if (width <= 3440) return ScreenSizeEnum.LARGE_DESKTOP;\n return ScreenSizeEnum.HUGE_DESKTOP;\n};\n\nexport function getSectionPanCoordinates({\n windowDimensions,\n coords,\n targetZoom,\n negative,\n}: {\n windowDimensions: { width: number; height: number };\n coords: { x: number; y: number; width: number; height: number };\n targetZoom: number;\n negative?: boolean;\n}) {\n const { width, height } = windowDimensions;\n // Calculate the center of the section\n const sectionCenterX = coords.x + coords.width / 2;\n const sectionCenterY = coords.y + coords.height / 2;\n\n // Calculate the required pan offset to center the section in the viewport\n const targetX = width / 2 - sectionCenterX * targetZoom;\n const targetY = height / 2 - sectionCenterY * targetZoom;\n\n if (negative) {\n return {\n x: -targetX,\n y: -targetY,\n };\n }\n\n return {\n x: targetX,\n y: targetY,\n };\n}\n\nexport async function panToOffsetScene(\n offset: Point,\n x: MotionValue<number>,\n y: MotionValue<number>,\n scale: MotionValue<number>,\n newZoom?: number,\n): Promise<void> {\n const animX = animate(x, offset.x, PAN_SPRING);\n const animY = animate(y, offset.y, PAN_SPRING);\n const animScale = animate(scale, newZoom ?? 1, PAN_SPRING);\n await Promise.all([animScale, animX, animY]);\n}\n\nexport const calcInitialBoxWidth = (\n windowWidth: number,\n windowHeight: number,\n) => {\n // math CanvasWrapper's bounding box size and compute scale s.t. canvas fits entirely within\n const maxWidth = windowWidth * MAX_DIM_RATIO.width;\n const maxHeight = windowHeight * MAX_DIM_RATIO.height;\n\n let boxWidth, boxHeight;\n\n if (maxWidth / INTRO_ASPECT_RATIO <= maxHeight) {\n boxWidth = maxWidth;\n boxHeight = boxWidth / INTRO_ASPECT_RATIO;\n } else {\n boxHeight = maxHeight;\n boxWidth = boxHeight * INTRO_ASPECT_RATIO;\n }\n\n // scale so the canvas fits inside the computed 3:2 box\n return Math.min(boxWidth / canvasWidth, boxHeight / canvasHeight);\n};\n\n// Re-export commonly used constants for backward compatibility\nexport { MAX_DIM_RATIO } from \"./constants\";\nexport {\n INTERACTIVE_SELECTOR,\n ZOOM_BOUND,\n MAX_ZOOM,\n MIN_ZOOMS,\n} from \"./constants\";\n"],"mappings":";;;;;AAWA,MAAa,cAAc;AAC3B,MAAa,eAAe;AAK5B,MAAa,gBAAgB,GAAW,MAAqB;AAC3D,QAAO,eAAe;EAAE;EAAG;EAAG,GAAG,CAAC,GAAG,EAAE,CAAC;;AAQ1C,MAAa,eACX,IACA,OACG;CACH,MAAM,KAAK,GAAG,UAAU,GAAG;CAC3B,MAAM,KAAK,GAAG,UAAU,GAAG;AAC3B,QAAO,KAAK,KAAK,MAAM,IAAI,MAAM,EAAE;;AAGrC,MAAa,eACX,IACA,OACU;AACV,QAAO;EACL,IAAI,GAAG,UAAU,GAAG,WAAW;EAC/B,IAAI,GAAG,UAAU,GAAG,WAAW;EAChC;;AAGH,MAAa,qBAAqB,UAAkC;AAElE,KAAI,QAAQ,IAAK,QAAO,eAAe;AACvC,KAAI,QAAQ,IAAK,QAAO,eAAe;AACvC,KAAI,QAAQ,KAAM,QAAO,eAAe;AACxC,KAAI,QAAQ,KAAM,QAAO,eAAe;AACxC,KAAI,QAAQ,KAAM,QAAO,eAAe;AACxC,KAAI,SAAS,KAAM,QAAO,eAAe;AACzC,QAAO,eAAe;;AAGxB,SAAgB,yBAAyB,EACvC,kBACA,QACA,YACA,YAMC;CACD,MAAM,EAAE,OAAO,WAAW;CAE1B,MAAM,iBAAiB,OAAO,IAAI,OAAO,QAAQ;CACjD,MAAM,iBAAiB,OAAO,IAAI,OAAO,SAAS;CAGlD,MAAM,UAAU,QAAQ,IAAI,iBAAiB;CAC7C,MAAM,UAAU,SAAS,IAAI,iBAAiB;AAE9C,KAAI,SACF,QAAO;EACL,GAAG,CAAC;EACJ,GAAG,CAAC;EACL;AAGH,QAAO;EACL,GAAG;EACH,GAAG;EACJ;;AAGH,eAAsB,iBACpB,QACA,GACA,GACA,OACA,SACe;CACf,MAAM,QAAQ,QAAQ,GAAG,OAAO,GAAG,WAAW;CAC9C,MAAM,QAAQ,QAAQ,GAAG,OAAO,GAAG,WAAW;CAC9C,MAAM,YAAY,QAAQ,OAAO,WAAW,GAAG,WAAW;AAC1D,OAAM,QAAQ,IAAI;EAAC;EAAW;EAAO;EAAM,CAAC;;AAG9C,MAAa,uBACX,aACA,iBACG;CAEH,MAAM,WAAW,cAAc,cAAc;CAC7C,MAAM,YAAY,eAAe,cAAc;CAE/C,IAAI,UAAU;AAEd,KAAI,WAAW,sBAAsB,WAAW;AAC9C,aAAW;AACX,cAAY,WAAW;QAClB;AACL,cAAY;AACZ,aAAW,YAAY;;AAIzB,QAAO,KAAK,IAAI,WAAW,aAAa,YAAY,aAAa"}
@@ -1,122 +1,108 @@
1
+ //#region src/lib/constants.ts
1
2
  /**
2
- * Canvas Library Constants
3
- * All configurable constants consolidated in one place
4
- */
5
- // ============================================================================
6
- // SCREEN SIZE BREAKPOINTS
7
- // ============================================================================
8
- export var ScreenSizeEnum;
9
- (function (ScreenSizeEnum) {
10
- ScreenSizeEnum["SMALL_MOBILE"] = "small-mobile";
11
- ScreenSizeEnum["MOBILE"] = "mobile";
12
- ScreenSizeEnum["TABLET"] = "tablet";
13
- ScreenSizeEnum["SMALL_DESKTOP"] = "small-desktop";
14
- ScreenSizeEnum["MEDIUM_DESKTOP"] = "medium-desktop";
15
- ScreenSizeEnum["LARGE_DESKTOP"] = "large-desktop";
16
- ScreenSizeEnum["HUGE_DESKTOP"] = "huge-desktop";
17
- })(ScreenSizeEnum || (ScreenSizeEnum = {}));
18
- // ============================================================================
19
- // CANVAS DIMENSIONS
20
- // ============================================================================
3
+ * Canvas Library Constants
4
+ * All configurable constants consolidated in one place
5
+ */
6
+ let ScreenSizeEnum = /* @__PURE__ */ function(ScreenSizeEnum) {
7
+ ScreenSizeEnum["SMALL_MOBILE"] = "small-mobile";
8
+ ScreenSizeEnum["MOBILE"] = "mobile";
9
+ ScreenSizeEnum["TABLET"] = "tablet";
10
+ ScreenSizeEnum["SMALL_DESKTOP"] = "small-desktop";
11
+ ScreenSizeEnum["MEDIUM_DESKTOP"] = "medium-desktop";
12
+ ScreenSizeEnum["LARGE_DESKTOP"] = "large-desktop";
13
+ ScreenSizeEnum["HUGE_DESKTOP"] = "huge-desktop";
14
+ return ScreenSizeEnum;
15
+ }({});
21
16
  /** Default canvas width in pixels */
22
- export const DEFAULT_CANVAS_WIDTH = 6000;
17
+ const DEFAULT_CANVAS_WIDTH = 6e3;
23
18
  /** Default canvas height in pixels */
24
- export const DEFAULT_CANVAS_HEIGHT = 4000;
25
- // ============================================================================
26
- // INTRO ANIMATION
27
- // ============================================================================
19
+ const DEFAULT_CANVAS_HEIGHT = 4e3;
28
20
  /** Maximum dimensions ratio for the intro box relative to viewport */
29
- export const MAX_DIM_RATIO = {
30
- width: 0.8,
31
- height: 0.5,
21
+ const MAX_DIM_RATIO = {
22
+ width: .8,
23
+ height: .5
32
24
  };
33
25
  /** Intro box aspect ratio (width:height) */
34
- export const INTRO_ASPECT_RATIO = 3 / 2;
26
+ const INTRO_ASPECT_RATIO = 3 / 2;
35
27
  /** Grow animation transition config */
36
- export const GROW_TRANSITION = {
37
- duration: 0.96,
38
- delay: 3.14,
39
- ease: [0.35, 0.1, 0.8, 1],
28
+ const GROW_TRANSITION = {
29
+ duration: .96,
30
+ delay: 3.14,
31
+ ease: [
32
+ .35,
33
+ .1,
34
+ .8,
35
+ 1
36
+ ]
40
37
  };
41
38
  /** Blur mask animation transition config */
42
- export const BLUR_TRANSITION = {
43
- duration: 0.85,
44
- delay: 1.25,
45
- ease: "easeIn",
39
+ const BLUR_TRANSITION = {
40
+ duration: .85,
41
+ delay: 1.25,
42
+ ease: "easeIn"
46
43
  };
47
44
  /** Stage 2 pan-to-home transition config */
48
- export const STAGE2_TRANSITION = {
49
- duration: 0.96,
50
- ease: [0.37, 0.1, 0.6, 1],
45
+ const STAGE2_TRANSITION = {
46
+ duration: .96,
47
+ ease: [
48
+ .37,
49
+ .1,
50
+ .6,
51
+ 1
52
+ ]
51
53
  };
52
- // ============================================================================
53
- // ZOOM & PAN
54
- // ============================================================================
55
54
  /** Maximum zoom level */
56
- export const MAX_ZOOM = 3;
55
+ const MAX_ZOOM = 3;
57
56
  /** Minimum zoom bound multiplier to prevent zooming out past canvas edges */
58
- export const ZOOM_BOUND = 1.05;
57
+ const ZOOM_BOUND = 1.05;
59
58
  /** Minimum zoom levels per screen size */
60
- export const MIN_ZOOMS = {
61
- [ScreenSizeEnum.SMALL_MOBILE]: 0.3,
62
- [ScreenSizeEnum.MOBILE]: 0.35,
63
- [ScreenSizeEnum.TABLET]: 0.25,
64
- [ScreenSizeEnum.SMALL_DESKTOP]: 0.15,
65
- [ScreenSizeEnum.MEDIUM_DESKTOP]: 0.1,
66
- [ScreenSizeEnum.LARGE_DESKTOP]: 0.1,
67
- [ScreenSizeEnum.HUGE_DESKTOP]: 0.1,
59
+ const MIN_ZOOMS = {
60
+ [ScreenSizeEnum.SMALL_MOBILE]: .3,
61
+ [ScreenSizeEnum.MOBILE]: .35,
62
+ [ScreenSizeEnum.TABLET]: .25,
63
+ [ScreenSizeEnum.SMALL_DESKTOP]: .15,
64
+ [ScreenSizeEnum.MEDIUM_DESKTOP]: .1,
65
+ [ScreenSizeEnum.LARGE_DESKTOP]: .1,
66
+ [ScreenSizeEnum.HUGE_DESKTOP]: .1
68
67
  };
69
68
  /** Pan animation spring config */
70
- export const PAN_SPRING = {
71
- visualDuration: 0.34,
72
- type: "spring",
73
- stiffness: 200,
74
- damping: 25,
69
+ const PAN_SPRING = {
70
+ visualDuration: .34,
71
+ type: "spring",
72
+ stiffness: 200,
73
+ damping: 25
75
74
  };
76
75
  /** Wheel zoom sensitivity for mouse wheel */
77
- export const MOUSE_WHEEL_ZOOM_SENSITIVITY = 0.0015;
76
+ const MOUSE_WHEEL_ZOOM_SENSITIVITY = .0015;
78
77
  /** Wheel zoom sensitivity for trackpad */
79
- export const TRACKPAD_ZOOM_SENSITIVITY = 0.015;
80
- // ============================================================================
81
- // INTERACTIONS
82
- // ============================================================================
78
+ const TRACKPAD_ZOOM_SENSITIVITY = .015;
83
79
  /** CSS selector for interactive elements that should not trigger pan */
84
- export const INTERACTIVE_SELECTOR = "button,[role='button'],input,textarea,[contenteditable='true']," +
85
- "[data-toolbar-button],[data-navbar-button]";
86
- // ============================================================================
87
- // VIEWPORT CULLING
88
- // ============================================================================
80
+ const INTERACTIVE_SELECTOR = "button,[role='button'],input,textarea,[contenteditable='true'],[data-toolbar-button],[data-navbar-button]";
89
81
  /** Buffer zone in pixels for hysteresis visibility detection */
90
- export const VIEWPORT_HYSTERESIS_BUFFER = 120;
82
+ const VIEWPORT_HYSTERESIS_BUFFER = 120;
91
83
  /** Threshold for showing image fallback on smaller screens */
92
- export const IMAGE_FALLBACK_WIDTH_THRESHOLD = 2000;
93
- // ============================================================================
94
- // NAVBAR
95
- // ============================================================================
84
+ const IMAGE_FALLBACK_WIDTH_THRESHOLD = 2e3;
96
85
  /** Responsive zoom levels for navbar navigation per screen size */
97
- export const RESPONSIVE_ZOOM_MAP = {
98
- [ScreenSizeEnum.SMALL_MOBILE]: 0.5,
99
- [ScreenSizeEnum.MOBILE]: 0.6,
100
- [ScreenSizeEnum.TABLET]: 0.8,
101
- [ScreenSizeEnum.SMALL_DESKTOP]: 0.9,
102
- [ScreenSizeEnum.MEDIUM_DESKTOP]: 1,
103
- [ScreenSizeEnum.LARGE_DESKTOP]: 1.25,
104
- [ScreenSizeEnum.HUGE_DESKTOP]: 1.5,
86
+ const RESPONSIVE_ZOOM_MAP = {
87
+ [ScreenSizeEnum.SMALL_MOBILE]: .5,
88
+ [ScreenSizeEnum.MOBILE]: .6,
89
+ [ScreenSizeEnum.TABLET]: .8,
90
+ [ScreenSizeEnum.SMALL_DESKTOP]: .9,
91
+ [ScreenSizeEnum.MEDIUM_DESKTOP]: 1,
92
+ [ScreenSizeEnum.LARGE_DESKTOP]: 1.25,
93
+ [ScreenSizeEnum.HUGE_DESKTOP]: 1.5
105
94
  };
106
- // ============================================================================
107
- // PERFORMANCE
108
- // ============================================================================
109
95
  /** Debounce duration in ms for navbar clicks based on performance mode */
110
- export const NAVBAR_DEBOUNCE_MS = {
111
- high: 0,
112
- medium: 100,
113
- low: 400,
96
+ const NAVBAR_DEBOUNCE_MS = {
97
+ high: 0,
98
+ medium: 100,
99
+ low: 400
114
100
  };
115
- // ============================================================================
116
- // TOOLBAR
117
- // ============================================================================
118
101
  /** Epsilon for position comparison to hide toolbar when at home */
119
- export const TOOLBAR_OPACITY_POS_EPS = 1; // px
102
+ const TOOLBAR_OPACITY_POS_EPS = 1;
120
103
  /** Epsilon for scale comparison to hide toolbar when at 1x */
121
- export const TOOLBAR_OPACITY_SCALE_EPS = 0.01; // scale delta
104
+ const TOOLBAR_OPACITY_SCALE_EPS = .01;
105
+
106
+ //#endregion
107
+ export { BLUR_TRANSITION, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, GROW_TRANSITION, IMAGE_FALLBACK_WIDTH_THRESHOLD, INTERACTIVE_SELECTOR, INTRO_ASPECT_RATIO, MAX_DIM_RATIO, MAX_ZOOM, MIN_ZOOMS, MOUSE_WHEEL_ZOOM_SENSITIVITY, NAVBAR_DEBOUNCE_MS, PAN_SPRING, RESPONSIVE_ZOOM_MAP, STAGE2_TRANSITION, ScreenSizeEnum, TOOLBAR_OPACITY_POS_EPS, TOOLBAR_OPACITY_SCALE_EPS, TRACKPAD_ZOOM_SENSITIVITY, VIEWPORT_HYSTERESIS_BUFFER, ZOOM_BOUND };
122
108
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../../src/lib/constants.ts"],"sourcesContent":["import { type Easing } from \"framer-motion\";\n\n/**\n * Canvas Library Constants\n * All configurable constants consolidated in one place\n */\n\n// ============================================================================\n// SCREEN SIZE BREAKPOINTS\n// ============================================================================\n\nexport enum ScreenSizeEnum {\n SMALL_MOBILE = \"small-mobile\",\n MOBILE = \"mobile\",\n TABLET = \"tablet\",\n SMALL_DESKTOP = \"small-desktop\",\n MEDIUM_DESKTOP = \"medium-desktop\",\n LARGE_DESKTOP = \"large-desktop\",\n HUGE_DESKTOP = \"huge-desktop\",\n}\n\n// ============================================================================\n// CANVAS DIMENSIONS\n// ============================================================================\n\n/** Default canvas width in pixels */\nexport const DEFAULT_CANVAS_WIDTH = 6000;\n\n/** Default canvas height in pixels */\nexport const DEFAULT_CANVAS_HEIGHT = 4000;\n\n// ============================================================================\n// INTRO ANIMATION\n// ============================================================================\n\n/** Maximum dimensions ratio for the intro box relative to viewport */\nexport const MAX_DIM_RATIO = {\n width: 0.8,\n height: 0.5,\n} as const;\n\n/** Intro box aspect ratio (width:height) */\nexport const INTRO_ASPECT_RATIO = 3 / 2;\n\n/** Grow animation transition config */\nexport const GROW_TRANSITION = {\n duration: 0.96,\n delay: 3.14,\n ease: [0.35, 0.1, 0.8, 1] as Easing,\n} as const;\n\n/** Blur mask animation transition config */\nexport const BLUR_TRANSITION = {\n duration: 0.85,\n delay: 1.25,\n ease: \"easeIn\" as Easing,\n} as const;\n\n/** Stage 2 pan-to-home transition config */\nexport const STAGE2_TRANSITION = {\n duration: 0.96,\n ease: [0.37, 0.1, 0.6, 1],\n} as const;\n\n// ============================================================================\n// ZOOM & PAN\n// ============================================================================\n\n/** Maximum zoom level */\nexport const MAX_ZOOM = 3;\n\n/** Minimum zoom bound multiplier to prevent zooming out past canvas edges */\nexport const ZOOM_BOUND = 1.05;\n\n/** Minimum zoom levels per screen size */\nexport const MIN_ZOOMS: Record<ScreenSizeEnum, number> = {\n [ScreenSizeEnum.SMALL_MOBILE]: 0.3,\n [ScreenSizeEnum.MOBILE]: 0.35,\n [ScreenSizeEnum.TABLET]: 0.25,\n [ScreenSizeEnum.SMALL_DESKTOP]: 0.15,\n [ScreenSizeEnum.MEDIUM_DESKTOP]: 0.1,\n [ScreenSizeEnum.LARGE_DESKTOP]: 0.1,\n [ScreenSizeEnum.HUGE_DESKTOP]: 0.1,\n} as const;\n\n/** Pan animation spring config */\nexport const PAN_SPRING = {\n visualDuration: 0.34,\n type: \"spring\",\n stiffness: 200,\n damping: 25,\n} as const;\n\n/** Wheel zoom sensitivity for mouse wheel */\nexport const MOUSE_WHEEL_ZOOM_SENSITIVITY = 0.0015;\n\n/** Wheel zoom sensitivity for trackpad */\nexport const TRACKPAD_ZOOM_SENSITIVITY = 0.015;\n\n// ============================================================================\n// INTERACTIONS\n// ============================================================================\n\n/** CSS selector for interactive elements that should not trigger pan */\nexport const INTERACTIVE_SELECTOR =\n \"button,[role='button'],input,textarea,[contenteditable='true'],\" +\n \"[data-toolbar-button],[data-navbar-button]\";\n\n// ============================================================================\n// VIEWPORT CULLING\n// ============================================================================\n\n/** Buffer zone in pixels for hysteresis visibility detection */\nexport const VIEWPORT_HYSTERESIS_BUFFER = 120;\n\n/** Threshold for showing image fallback on smaller screens */\nexport const IMAGE_FALLBACK_WIDTH_THRESHOLD = 2000;\n\n// ============================================================================\n// NAVBAR\n// ============================================================================\n\n/** Responsive zoom levels for navbar navigation per screen size */\nexport const RESPONSIVE_ZOOM_MAP: Record<ScreenSizeEnum, number> = {\n [ScreenSizeEnum.SMALL_MOBILE]: 0.5,\n [ScreenSizeEnum.MOBILE]: 0.6,\n [ScreenSizeEnum.TABLET]: 0.8,\n [ScreenSizeEnum.SMALL_DESKTOP]: 0.9,\n [ScreenSizeEnum.MEDIUM_DESKTOP]: 1,\n [ScreenSizeEnum.LARGE_DESKTOP]: 1.25,\n [ScreenSizeEnum.HUGE_DESKTOP]: 1.5,\n} as const;\n\n// ============================================================================\n// PERFORMANCE\n// ============================================================================\n\n/** Debounce duration in ms for navbar clicks based on performance mode */\nexport const NAVBAR_DEBOUNCE_MS = {\n high: 0,\n medium: 100,\n low: 400,\n} as const;\n\n// ============================================================================\n// TOOLBAR\n// ============================================================================\n\n/** Epsilon for position comparison to hide toolbar when at home */\nexport const TOOLBAR_OPACITY_POS_EPS = 1; // px\n\n/** Epsilon for scale comparison to hide toolbar when at 1x */\nexport const TOOLBAR_OPACITY_SCALE_EPS = 0.01; // scale delta\n"],"mappings":";;;;;AAWA,IAAY,0DAAL;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAQJ,MAAa,uBAAuB;;AAGpC,MAAa,wBAAwB;;AAOrC,MAAa,gBAAgB;CACzB,OAAO;CACP,QAAQ;CACX;;AAGD,MAAa,qBAAqB,IAAI;;AAGtC,MAAa,kBAAkB;CAC3B,UAAU;CACV,OAAO;CACP,MAAM;EAAC;EAAM;EAAK;EAAK;EAAE;CAC5B;;AAGD,MAAa,kBAAkB;CAC3B,UAAU;CACV,OAAO;CACP,MAAM;CACT;;AAGD,MAAa,oBAAoB;CAC7B,UAAU;CACV,MAAM;EAAC;EAAM;EAAK;EAAK;EAAE;CAC5B;;AAOD,MAAa,WAAW;;AAGxB,MAAa,aAAa;;AAG1B,MAAa,YAA4C;EACpD,eAAe,eAAe;EAC9B,eAAe,SAAS;EACxB,eAAe,SAAS;EACxB,eAAe,gBAAgB;EAC/B,eAAe,iBAAiB;EAChC,eAAe,gBAAgB;EAC/B,eAAe,eAAe;CAClC;;AAGD,MAAa,aAAa;CACtB,gBAAgB;CAChB,MAAM;CACN,WAAW;CACX,SAAS;CACZ;;AAGD,MAAa,+BAA+B;;AAG5C,MAAa,4BAA4B;;AAOzC,MAAa,uBACT;;AAQJ,MAAa,6BAA6B;;AAG1C,MAAa,iCAAiC;;AAO9C,MAAa,sBAAsD;EAC9D,eAAe,eAAe;EAC9B,eAAe,SAAS;EACxB,eAAe,SAAS;EACxB,eAAe,gBAAgB;EAC/B,eAAe,iBAAiB;EAChC,eAAe,gBAAgB;EAC/B,eAAe,eAAe;CAClC;;AAOD,MAAa,qBAAqB;CAC9B,MAAM;CACN,QAAQ;CACR,KAAK;CACR;;AAOD,MAAa,0BAA0B;;AAGvC,MAAa,4BAA4B"}
package/dist/lib/utils.js CHANGED
@@ -1,10 +1,15 @@
1
1
  import { clsx } from "clsx";
2
2
  import { twMerge } from "tailwind-merge";
3
+
4
+ //#region src/lib/utils.ts
3
5
  /**
4
- * Utility function to merge Tailwind CSS classes.
5
- * Combines clsx for conditional classes with tailwind-merge for deduplication.
6
- */
7
- export function cn(...inputs) {
8
- return twMerge(clsx(inputs));
6
+ * Utility function to merge Tailwind CSS classes.
7
+ * Combines clsx for conditional classes with tailwind-merge for deduplication.
8
+ */
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
9
11
  }
12
+
13
+ //#endregion
14
+ export { cn };
10
15
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function to merge Tailwind CSS classes.\n * Combines clsx for conditional classes with tailwind-merge for deduplication.\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,GAAG,GAAG,QAAsB;AAC1C,QAAO,QAAQ,KAAK,OAAO,CAAC"}
@@ -2,6 +2,7 @@
2
2
  * Generic types for the canvas library
3
3
  * Apps should extend these types with their specific enums and constants
4
4
  */
5
+ import type { Transition } from "framer-motion";
5
6
  export interface SectionCoordinates {
6
7
  x: number;
7
8
  y: number;
@@ -126,6 +127,27 @@ export interface NavbarButtonConfig {
126
127
  /** Label inline styles */
127
128
  labelStyle?: React.CSSProperties;
128
129
  }
130
+ /**
131
+ * Animation timing configuration for intro animations.
132
+ * Re-exports Framer Motion's Transition type for full flexibility.
133
+ *
134
+ * @example
135
+ * // Simple duration-based transition
136
+ * const timing: AnimationTimingConfig = {
137
+ * duration: 1.5,
138
+ * delay: 0.5,
139
+ * ease: "easeInOut"
140
+ * };
141
+ *
142
+ * @example
143
+ * // Custom bezier curve
144
+ * const timing: AnimationTimingConfig = {
145
+ * duration: 0.96,
146
+ * delay: 3.14,
147
+ * ease: [0.35, 0.1, 0.8, 1]
148
+ * };
149
+ */
150
+ export type AnimationTimingConfig = Transition;
129
151
  /**
130
152
  * Configuration options for the canvas navbar
131
153
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}