@efxlab/motion-canvas-responsive 4.0.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.
- package/lib/components/ParticleGroup.d.ts +9 -0
- package/lib/components/ParticleGroup.d.ts.map +1 -0
- package/lib/components/ParticleGroup.js +20 -0
- package/lib/components/ParticleGroup.js.map +1 -0
- package/lib/components/RatioLayer.d.ts +7 -0
- package/lib/components/RatioLayer.d.ts.map +1 -0
- package/lib/components/RatioLayer.js +8 -0
- package/lib/components/RatioLayer.js.map +1 -0
- package/lib/components/index.d.ts +3 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/index.js +3 -0
- package/lib/components/index.js.map +1 -0
- package/lib/context/ResponsiveContext.d.ts +45 -0
- package/lib/context/ResponsiveContext.d.ts.map +1 -0
- package/lib/context/ResponsiveContext.js +118 -0
- package/lib/context/ResponsiveContext.js.map +1 -0
- package/lib/context/ResponsiveContext.test.d.ts +2 -0
- package/lib/context/ResponsiveContext.test.d.ts.map +1 -0
- package/lib/context/ResponsiveContext.test.js +74 -0
- package/lib/helpers/color.d.ts +26 -0
- package/lib/helpers/color.d.ts.map +1 -0
- package/lib/helpers/color.js +10 -0
- package/lib/helpers/color.js.map +1 -0
- package/lib/helpers/filter.d.ts +25 -0
- package/lib/helpers/filter.d.ts.map +1 -0
- package/lib/helpers/filter.js +8 -0
- package/lib/helpers/filter.js.map +1 -0
- package/lib/helpers/helpers.test.d.ts +2 -0
- package/lib/helpers/helpers.test.d.ts.map +1 -0
- package/lib/helpers/helpers.test.js +224 -0
- package/lib/helpers/index.d.ts +8 -0
- package/lib/helpers/index.d.ts.map +1 -0
- package/lib/helpers/index.js +8 -0
- package/lib/helpers/index.js.map +1 -0
- package/lib/helpers/path.d.ts +32 -0
- package/lib/helpers/path.d.ts.map +1 -0
- package/lib/helpers/path.js +28 -0
- package/lib/helpers/path.js.map +1 -0
- package/lib/helpers/position.d.ts +20 -0
- package/lib/helpers/position.d.ts.map +1 -0
- package/lib/helpers/position.js +52 -0
- package/lib/helpers/position.js.map +1 -0
- package/lib/helpers/rotation.d.ts +33 -0
- package/lib/helpers/rotation.d.ts.map +1 -0
- package/lib/helpers/rotation.js +14 -0
- package/lib/helpers/rotation.js.map +1 -0
- package/lib/helpers/scale.d.ts +31 -0
- package/lib/helpers/scale.d.ts.map +1 -0
- package/lib/helpers/scale.js +24 -0
- package/lib/helpers/scale.js.map +1 -0
- package/lib/helpers/visibility.d.ts +21 -0
- package/lib/helpers/visibility.d.ts.map +1 -0
- package/lib/helpers/visibility.js +7 -0
- package/lib/helpers/visibility.js.map +1 -0
- package/lib/hooks/index.d.ts +5 -0
- package/lib/hooks/index.d.ts.map +1 -0
- package/lib/hooks/index.js +5 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/hooks/useRatio.d.ts +2 -0
- package/lib/hooks/useRatio.d.ts.map +1 -0
- package/lib/hooks/useRatio.js +2 -0
- package/lib/hooks/useRatio.js.map +1 -0
- package/lib/hooks/useRatioEffect.d.ts +5 -0
- package/lib/hooks/useRatioEffect.d.ts.map +1 -0
- package/lib/hooks/useRatioEffect.js +29 -0
- package/lib/hooks/useRatioEffect.js.map +1 -0
- package/lib/hooks/useRatioElement.d.ts +11 -0
- package/lib/hooks/useRatioElement.d.ts.map +1 -0
- package/lib/hooks/useRatioElement.js +47 -0
- package/lib/hooks/useRatioElement.js.map +1 -0
- package/lib/hooks/useResponsive.d.ts +3 -0
- package/lib/hooks/useResponsive.d.ts.map +1 -0
- package/lib/hooks/useResponsive.js +29 -0
- package/lib/hooks/useResponsive.js.map +1 -0
- package/lib/hooks/useResponsiveAnimation.d.ts +3 -0
- package/lib/hooks/useResponsiveAnimation.d.ts.map +1 -0
- package/lib/hooks/useResponsiveAnimation.js +5 -0
- package/lib/hooks/useResponsiveAnimation.js.map +1 -0
- package/lib/index.d.ts +20 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +12 -0
- package/lib/index.js.map +1 -0
- package/lib/layout/ResponsiveLayout.d.ts +39 -0
- package/lib/layout/ResponsiveLayout.d.ts.map +1 -0
- package/lib/layout/ResponsiveLayout.js +48 -0
- package/lib/layout/ResponsiveLayout.js.map +1 -0
- package/lib/layout/ResponsiveLayout.test.d.ts +2 -0
- package/lib/layout/ResponsiveLayout.test.d.ts.map +1 -0
- package/lib/layout/ResponsiveLayout.test.js +65 -0
- package/lib/scene/index.d.ts +3 -0
- package/lib/scene/index.d.ts.map +1 -0
- package/lib/scene/index.js +3 -0
- package/lib/scene/index.js.map +1 -0
- package/lib/scene/integration.d.ts +7 -0
- package/lib/scene/integration.d.ts.map +1 -0
- package/lib/scene/integration.js +7 -0
- package/lib/scene/integration.js.map +1 -0
- package/lib/scene/makeResponsiveScene.d.ts +19 -0
- package/lib/scene/makeResponsiveScene.d.ts.map +1 -0
- package/lib/scene/makeResponsiveScene.js +19 -0
- package/lib/scene/makeResponsiveScene.js.map +1 -0
- package/lib/types.d.ts +35 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/package.json +42 -0
- package/src/components/ParticleGroup.tsx +36 -0
- package/src/components/RatioLayer.tsx +19 -0
- package/src/components/index.ts +2 -0
- package/src/context/ResponsiveContext.test.ts +112 -0
- package/src/context/ResponsiveContext.ts +146 -0
- package/src/helpers/color.ts +21 -0
- package/src/helpers/filter.ts +18 -0
- package/src/helpers/helpers.test.ts +252 -0
- package/src/helpers/index.ts +7 -0
- package/src/helpers/path.ts +49 -0
- package/src/helpers/position.ts +75 -0
- package/src/helpers/rotation.ts +27 -0
- package/src/helpers/scale.ts +42 -0
- package/src/helpers/visibility.ts +13 -0
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useRatio.ts +1 -0
- package/src/hooks/useRatioEffect.ts +42 -0
- package/src/hooks/useRatioElement.ts +61 -0
- package/src/hooks/useResponsive.ts +36 -0
- package/src/hooks/useResponsiveAnimation.ts +8 -0
- package/src/index.ts +17 -0
- package/src/layout/ResponsiveLayout.test.ts +82 -0
- package/src/layout/ResponsiveLayout.ts +89 -0
- package/src/scene/index.ts +2 -0
- package/src/scene/integration.ts +13 -0
- package/src/scene/makeResponsiveScene.ts +49 -0
- package/src/types.ts +44 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
export interface ParticleGroupProps {
|
|
3
|
+
count: number;
|
|
4
|
+
compositeOperation?: GlobalCompositeOperation;
|
|
5
|
+
opacity?: number;
|
|
6
|
+
children: (index: number) => ReactElement;
|
|
7
|
+
}
|
|
8
|
+
export declare function ParticleGroup({ count, compositeOperation, opacity, children, }: ParticleGroupProps): ReactElement[];
|
|
9
|
+
//# sourceMappingURL=ParticleGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticleGroup.d.ts","sourceRoot":"","sources":["../../src/components/ParticleGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,YAAY,EAAC,MAAM,OAAO,CAAC;AAGjE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC;CAC3C;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,kBAAkC,EAClC,OAAW,EACX,QAAQ,GACT,EAAE,kBAAkB,GAAG,YAAY,EAAE,CAoBrC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { cloneElement, isValidElement } from 'react';
|
|
2
|
+
import { useRatio } from '../layout/ResponsiveLayout';
|
|
3
|
+
export function ParticleGroup({ count, compositeOperation = 'source-over', opacity = 1, children, }) {
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
+
const _layout = useRatio();
|
|
6
|
+
const elements = [];
|
|
7
|
+
for (let i = 0; i < count; i++) {
|
|
8
|
+
const child = children(i);
|
|
9
|
+
if (isValidElement(child)) {
|
|
10
|
+
const childOpacity = child.props.opacity ?? 1;
|
|
11
|
+
elements.push(cloneElement(child, {
|
|
12
|
+
key: i,
|
|
13
|
+
compositeOperation,
|
|
14
|
+
opacity: childOpacity * opacity,
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return elements;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ParticleGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticleGroup.js","sourceRoot":"","sources":["../../src/components/ParticleGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,cAAc,EAAe,MAAM,OAAO,CAAC;AACjE,OAAO,EAAC,QAAQ,EAAC,MAAM,4BAA4B,CAAC;AASpD,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,kBAAkB,GAAG,aAAa,EAClC,OAAO,GAAG,CAAC,EACX,QAAQ,GACW;IACnB,6DAA6D;IAC7D,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAI,KAAK,CAAC,KAAa,CAAC,OAAO,IAAI,CAAC,CAAC;YACvD,QAAQ,CAAC,IAAI,CACX,YAAY,CAAC,KAAK,EAAE;gBAClB,GAAG,EAAE,CAAC;gBACN,kBAAkB;gBAClB,OAAO,EAAE,YAAY,GAAG,OAAO;aACzB,CAAC,CACV,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { UseRatioElementOptions } from '../hooks/useRatioElement';
|
|
3
|
+
export interface RatioLayerProps extends UseRatioElementOptions {
|
|
4
|
+
children?: React.ReactElement | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function RatioLayer({ children, ...options }: RatioLayerProps): React.ReactElement | null;
|
|
7
|
+
//# sourceMappingURL=RatioLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RatioLayer.d.ts","sourceRoot":"","sources":["../../src/components/RatioLayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,eAAgB,SAAQ,sBAAsB;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;CACtC;AAED,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,GAAG,OAAO,EACX,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAK7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RatioLayer.js","sourceRoot":"","sources":["../../src/components/RatioLayer.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,GAEhB,MAAM,0BAA0B,CAAC;AAMlC,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,GAAG,OAAO,EACM;IAChB,OAAO,eAAe,CAAC;QACrB,GAAG,OAAO;QACV,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,IAAI,IAAI;KAChC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Vector2 } from '@efxlab/motion-canvas-core';
|
|
2
|
+
import type { RatioClass, RatioId, ResponsiveRatioConfig, ResponsiveRatiosConfig, ResponsiveState } from '../types';
|
|
3
|
+
export declare function startResponsive(state: ResponsiveState): void;
|
|
4
|
+
export declare function endResponsive(state: ResponsiveState): void;
|
|
5
|
+
export declare function useResponsiveContext(): ResponsiveState;
|
|
6
|
+
export declare function getResponsiveState(): ResponsiveState | undefined;
|
|
7
|
+
export declare function setGlobalRatio(ratio: RatioId, width: number, height: number): void;
|
|
8
|
+
export declare function getGlobalRatio(): ResponsiveState;
|
|
9
|
+
export declare function initResponsiveFromSize(size: Vector2, ratio?: RatioId): void;
|
|
10
|
+
export declare function detectRatioClass(aspectRatio: number): RatioClass;
|
|
11
|
+
export declare function parseRatioString(ratio: string): number;
|
|
12
|
+
/**
|
|
13
|
+
* Register custom ratios for the responsive system.
|
|
14
|
+
* This allows templates to define custom aspect ratios beyond the defaults.
|
|
15
|
+
*
|
|
16
|
+
* @param ratios - Object mapping ratio IDs to their configuration
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* registerCustomRatios({
|
|
21
|
+
* 'cinema': { aspect: '21:9' },
|
|
22
|
+
* 'story': { aspect: '9:18' },
|
|
23
|
+
* 'portrait2': { aspect: '3:4' },
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function registerCustomRatios(ratios: ResponsiveRatiosConfig): void;
|
|
28
|
+
/**
|
|
29
|
+
* Get all registered custom ratios.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getCustomRatios(): ResponsiveRatiosConfig;
|
|
32
|
+
/**
|
|
33
|
+
* Get ratio configuration for a specific ratio ID.
|
|
34
|
+
* Checks custom ratios first, then falls back to defaults.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getRatioConfig(ratioId: string): ResponsiveRatioConfig | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Get all available ratio configurations (custom + default).
|
|
39
|
+
*/
|
|
40
|
+
export declare function getAllRatioConfigs(): ResponsiveRatiosConfig;
|
|
41
|
+
/**
|
|
42
|
+
* Clear all custom ratios.
|
|
43
|
+
*/
|
|
44
|
+
export declare function clearCustomRatios(): void;
|
|
45
|
+
//# sourceMappingURL=ResponsiveContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponsiveContext.d.ts","sourceRoot":"","sources":["../../src/context/ResponsiveContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EAChB,MAAM,UAAU,CAAC;AA6BlB,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,QAErD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,QAInD;AAED,wBAAgB,oBAAoB,IAAI,eAAe,CAMtD;AAED,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,SAAS,CAEhE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAI3E;AAED,wBAAgB,cAAc,IAAI,eAAe,CAEhD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAE,OAAgB,QAE5E;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAWhE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAEzE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,sBAAsB,CAExD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GACd,qBAAqB,GAAG,SAAS,CAEnC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,sBAAsB,CAE3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
const ResponsiveStack = [];
|
|
2
|
+
// Custom ratio registry
|
|
3
|
+
const CustomRatios = {};
|
|
4
|
+
// Default built-in ratios
|
|
5
|
+
const RATIO_16X9 = '16x9';
|
|
6
|
+
const RATIO_9X16 = '9x16';
|
|
7
|
+
const RATIO_4X3 = '4x3';
|
|
8
|
+
const RATIO_1X1 = '1x1';
|
|
9
|
+
const DefaultRatios = {
|
|
10
|
+
[RATIO_16X9]: { aspect: '16:9' },
|
|
11
|
+
[RATIO_9X16]: { aspect: '9:16' },
|
|
12
|
+
[RATIO_4X3]: { aspect: '4:3' },
|
|
13
|
+
[RATIO_1X1]: { aspect: '1:1' },
|
|
14
|
+
fullwindow: { aspect: 'auto' },
|
|
15
|
+
};
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
17
|
+
let globalResponsiveState = {
|
|
18
|
+
ratio: '16x9',
|
|
19
|
+
ratioClass: 'landscape',
|
|
20
|
+
width: 1920,
|
|
21
|
+
height: 1080,
|
|
22
|
+
};
|
|
23
|
+
export function startResponsive(state) {
|
|
24
|
+
ResponsiveStack.push(state);
|
|
25
|
+
}
|
|
26
|
+
export function endResponsive(state) {
|
|
27
|
+
if (ResponsiveStack.pop() !== state) {
|
|
28
|
+
throw new Error('startResponsive/endResponsive called out of order.');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function useResponsiveContext() {
|
|
32
|
+
const state = ResponsiveStack.at(-1);
|
|
33
|
+
if (!state) {
|
|
34
|
+
return globalResponsiveState;
|
|
35
|
+
}
|
|
36
|
+
return state;
|
|
37
|
+
}
|
|
38
|
+
export function getResponsiveState() {
|
|
39
|
+
return ResponsiveStack.at(-1) ?? globalResponsiveState;
|
|
40
|
+
}
|
|
41
|
+
export function setGlobalRatio(ratio, width, height) {
|
|
42
|
+
const aspectRatio = width / height;
|
|
43
|
+
const ratioClass = detectRatioClass(aspectRatio);
|
|
44
|
+
globalResponsiveState = { ratio, ratioClass, width, height };
|
|
45
|
+
}
|
|
46
|
+
export function getGlobalRatio() {
|
|
47
|
+
return globalResponsiveState;
|
|
48
|
+
}
|
|
49
|
+
export function initResponsiveFromSize(size, ratio = '16x9') {
|
|
50
|
+
setGlobalRatio(ratio, size.x, size.y);
|
|
51
|
+
}
|
|
52
|
+
export function detectRatioClass(aspectRatio) {
|
|
53
|
+
if (aspectRatio > 2) {
|
|
54
|
+
return 'ultrawide';
|
|
55
|
+
}
|
|
56
|
+
if (aspectRatio > 1) {
|
|
57
|
+
return 'landscape';
|
|
58
|
+
}
|
|
59
|
+
if (aspectRatio === 1) {
|
|
60
|
+
return 'square';
|
|
61
|
+
}
|
|
62
|
+
return 'portrait';
|
|
63
|
+
}
|
|
64
|
+
export function parseRatioString(ratio) {
|
|
65
|
+
const [w, h] = ratio.split(':').map(Number);
|
|
66
|
+
if (w && h) {
|
|
67
|
+
return w / h;
|
|
68
|
+
}
|
|
69
|
+
const parts = ratio.split('x').map(Number);
|
|
70
|
+
if (parts.length === 2 && parts[0] && parts[1]) {
|
|
71
|
+
return parts[0] / parts[1];
|
|
72
|
+
}
|
|
73
|
+
return 16 / 9;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Register custom ratios for the responsive system.
|
|
77
|
+
* This allows templates to define custom aspect ratios beyond the defaults.
|
|
78
|
+
*
|
|
79
|
+
* @param ratios - Object mapping ratio IDs to their configuration
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* registerCustomRatios({
|
|
84
|
+
* 'cinema': { aspect: '21:9' },
|
|
85
|
+
* 'story': { aspect: '9:18' },
|
|
86
|
+
* 'portrait2': { aspect: '3:4' },
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export function registerCustomRatios(ratios) {
|
|
91
|
+
Object.assign(CustomRatios, ratios);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get all registered custom ratios.
|
|
95
|
+
*/
|
|
96
|
+
export function getCustomRatios() {
|
|
97
|
+
return { ...CustomRatios };
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get ratio configuration for a specific ratio ID.
|
|
101
|
+
* Checks custom ratios first, then falls back to defaults.
|
|
102
|
+
*/
|
|
103
|
+
export function getRatioConfig(ratioId) {
|
|
104
|
+
return CustomRatios[ratioId] ?? DefaultRatios[ratioId];
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get all available ratio configurations (custom + default).
|
|
108
|
+
*/
|
|
109
|
+
export function getAllRatioConfigs() {
|
|
110
|
+
return { ...DefaultRatios, ...CustomRatios };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Clear all custom ratios.
|
|
114
|
+
*/
|
|
115
|
+
export function clearCustomRatios() {
|
|
116
|
+
Object.keys(CustomRatios).forEach(key => delete CustomRatios[key]);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=ResponsiveContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponsiveContext.js","sourceRoot":"","sources":["../../src/context/ResponsiveContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponsiveContext.test.d.ts","sourceRoot":"","sources":["../../src/context/ResponsiveContext.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var vitest_1 = require("vitest");
|
|
4
|
+
var ResponsiveContext_1 = require("../context/ResponsiveContext");
|
|
5
|
+
(0, vitest_1.describe)('ResponsiveContext', function () {
|
|
6
|
+
(0, vitest_1.describe)('detectRatioClass', function () {
|
|
7
|
+
(0, vitest_1.it)('should detect landscape ratios (ar > 1)', function () {
|
|
8
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.detectRatioClass)(16 / 9)).toBe('landscape');
|
|
9
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.detectRatioClass)(4 / 3)).toBe('landscape');
|
|
10
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.detectRatioClass)(2)).toBe('landscape');
|
|
11
|
+
});
|
|
12
|
+
(0, vitest_1.it)('should detect portrait ratios (ar < 1)', function () {
|
|
13
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.detectRatioClass)(9 / 16)).toBe('portrait');
|
|
14
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.detectRatioClass)(3 / 4)).toBe('portrait');
|
|
15
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.detectRatioClass)(0.5)).toBe('portrait');
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.it)('should detect square ratios (ar === 1)', function () {
|
|
18
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.detectRatioClass)(1)).toBe('square');
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.it)('should detect ultrawide ratios (ar > 2)', function () {
|
|
21
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.detectRatioClass)(21 / 9)).toBe('ultrawide');
|
|
22
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.detectRatioClass)(3)).toBe('ultrawide');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.describe)('parseRatioString', function () {
|
|
26
|
+
(0, vitest_1.it)('should parse colon-separated ratios', function () {
|
|
27
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.parseRatioString)('16:9')).toBe(16 / 9);
|
|
28
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.parseRatioString)('9:16')).toBe(9 / 16);
|
|
29
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.parseRatioString)('4:3')).toBe(4 / 3);
|
|
30
|
+
});
|
|
31
|
+
(0, vitest_1.it)('should parse x-separated ratios', function () {
|
|
32
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.parseRatioString)('16x9')).toBe(16 / 9);
|
|
33
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.parseRatioString)('9x16')).toBe(9 / 16);
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.it)('should default to 16:9 for invalid input', function () {
|
|
36
|
+
(0, vitest_1.expect)((0, ResponsiveContext_1.parseRatioString)('invalid')).toBe(16 / 9);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
(0, vitest_1.describe)('global state', function () {
|
|
40
|
+
(0, vitest_1.it)('should set and get global ratio', function () {
|
|
41
|
+
(0, ResponsiveContext_1.setGlobalRatio)('9x16', 1080, 1920);
|
|
42
|
+
var state = (0, ResponsiveContext_1.getGlobalRatio)();
|
|
43
|
+
(0, vitest_1.expect)(state.ratio).toBe('9x16');
|
|
44
|
+
(0, vitest_1.expect)(state.width).toBe(1080);
|
|
45
|
+
(0, vitest_1.expect)(state.height).toBe(1920);
|
|
46
|
+
(0, vitest_1.expect)(state.ratioClass).toBe('portrait');
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)('should update ratio class when width/height changes', function () {
|
|
49
|
+
(0, ResponsiveContext_1.setGlobalRatio)('16x9', 1920, 1080);
|
|
50
|
+
var state = (0, ResponsiveContext_1.getGlobalRatio)();
|
|
51
|
+
(0, vitest_1.expect)(state.ratioClass).toBe('landscape');
|
|
52
|
+
(0, ResponsiveContext_1.setGlobalRatio)('9x16', 1080, 1920);
|
|
53
|
+
state = (0, ResponsiveContext_1.getGlobalRatio)();
|
|
54
|
+
(0, vitest_1.expect)(state.ratioClass).toBe('portrait');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
(0, vitest_1.describe)('stack operations', function () {
|
|
58
|
+
(0, vitest_1.it)('should push and pop responsive state', function () {
|
|
59
|
+
var state = { ratio: '16x9', ratioClass: 'landscape', width: 1920, height: 1080 };
|
|
60
|
+
(0, ResponsiveContext_1.startResponsive)(state);
|
|
61
|
+
var result = (0, ResponsiveContext_1.useResponsiveContext)();
|
|
62
|
+
(0, vitest_1.expect)(result.ratio).toBe('16x9');
|
|
63
|
+
(0, ResponsiveContext_1.endResponsive)(state);
|
|
64
|
+
var afterPop = (0, ResponsiveContext_1.useResponsiveContext)();
|
|
65
|
+
(0, vitest_1.expect)(afterPop.ratio).toBe('9x16'); // falls back to global
|
|
66
|
+
});
|
|
67
|
+
(0, vitest_1.it)('should throw on mismatched endResponsive', function () {
|
|
68
|
+
var state1 = { ratio: '16x9', ratioClass: 'landscape', width: 1920, height: 1080 };
|
|
69
|
+
var state2 = { ratio: '9x16', ratioClass: 'portrait', width: 1080, height: 1920 };
|
|
70
|
+
(0, ResponsiveContext_1.startResponsive)(state1);
|
|
71
|
+
(0, vitest_1.expect)(function () { return (0, ResponsiveContext_1.endResponsive)(state2); }).toThrow();
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface ColorHelpers {
|
|
2
|
+
tint: (from: string, to: string) => {
|
|
3
|
+
from: string;
|
|
4
|
+
to: string;
|
|
5
|
+
};
|
|
6
|
+
highlight: (color: string) => {
|
|
7
|
+
color: string;
|
|
8
|
+
duration: number;
|
|
9
|
+
};
|
|
10
|
+
gradient: (colors: string[]) => {
|
|
11
|
+
colors: string[];
|
|
12
|
+
duration: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface StrokeHelpers {
|
|
16
|
+
draw: (duration: number) => {
|
|
17
|
+
duration: number;
|
|
18
|
+
};
|
|
19
|
+
dash: (length: number, gap: number) => {
|
|
20
|
+
length: number;
|
|
21
|
+
gap: number;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export declare const color: ColorHelpers;
|
|
25
|
+
export declare const stroke: StrokeHelpers;
|
|
26
|
+
//# sourceMappingURL=color.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/helpers/color.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,CAAC;IAC/D,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;IAChE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;CACtE;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;IAC/C,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,CAAC;CACtE;AAED,eAAO,MAAM,KAAK,EAAE,YAInB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,aAGpB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const color = {
|
|
2
|
+
tint: (from, to) => ({ from, to }),
|
|
3
|
+
highlight: (color) => ({ color, duration: 0.3 }),
|
|
4
|
+
gradient: (colors) => ({ colors, duration: colors.length * 0.5 }),
|
|
5
|
+
};
|
|
6
|
+
export const stroke = {
|
|
7
|
+
draw: (duration) => ({ duration }),
|
|
8
|
+
dash: (length, gap) => ({ length, gap }),
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/helpers/color.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,KAAK,GAAiB;IACjC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC;IAChD,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC;IACtD,QAAQ,EAAE,CAAC,MAAgB,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,EAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAkB;IACnC,IAAI,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,EAAC,QAAQ,EAAC,CAAC;IACxC,IAAI,EAAE,CAAC,MAAc,EAAE,GAAW,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,GAAG,EAAC,CAAC;CACvD,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface FilterHelpers {
|
|
2
|
+
blur: (from: number, to: number) => {
|
|
3
|
+
from: number;
|
|
4
|
+
to: number;
|
|
5
|
+
duration: number;
|
|
6
|
+
};
|
|
7
|
+
brightness: (value: number) => {
|
|
8
|
+
value: number;
|
|
9
|
+
duration: number;
|
|
10
|
+
};
|
|
11
|
+
contrast: (value: number) => {
|
|
12
|
+
value: number;
|
|
13
|
+
duration: number;
|
|
14
|
+
};
|
|
15
|
+
saturate: (value: number) => {
|
|
16
|
+
value: number;
|
|
17
|
+
duration: number;
|
|
18
|
+
};
|
|
19
|
+
grayscale: (value: number) => {
|
|
20
|
+
value: number;
|
|
21
|
+
duration: number;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export declare const filter: FilterHelpers;
|
|
25
|
+
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/helpers/filter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,KACP;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;IAClD,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;IACjE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;IAC/D,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;IAC/D,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;CACjE;AAED,eAAO,MAAM,MAAM,EAAE,aAMpB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const filter = {
|
|
2
|
+
blur: (from, to) => ({ from, to, duration: 1 }),
|
|
3
|
+
brightness: (value) => ({ value, duration: 0.5 }),
|
|
4
|
+
contrast: (value) => ({ value, duration: 0.5 }),
|
|
5
|
+
saturate: (value) => ({ value, duration: 0.5 }),
|
|
6
|
+
grayscale: (value) => ({ value, duration: 0.5 }),
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/helpers/filter.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,MAAM,GAAkB;IACnC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC;IAC7D,UAAU,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC;IACvD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC;IACrD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC;IACrD,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC;CACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.test.d.ts","sourceRoot":"","sources":["../../src/helpers/helpers.test.ts"],"names":[],"mappings":""}
|