@sudobility/sudojo_lib 0.0.4
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/dist/hooks/index.d.ts +27 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +27 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useDailyGame.d.ts +64 -0
- package/dist/hooks/useDailyGame.d.ts.map +1 -0
- package/dist/hooks/useDailyGame.js +120 -0
- package/dist/hooks/useDailyGame.js.map +1 -0
- package/dist/hooks/useGame.d.ts +104 -0
- package/dist/hooks/useGame.d.ts.map +1 -0
- package/dist/hooks/useGame.js +546 -0
- package/dist/hooks/useGame.js.map +1 -0
- package/dist/hooks/useGamePersistence.d.ts +63 -0
- package/dist/hooks/useGamePersistence.d.ts.map +1 -0
- package/dist/hooks/useGamePersistence.js +124 -0
- package/dist/hooks/useGamePersistence.js.map +1 -0
- package/dist/hooks/useGameTeaching.d.ts +89 -0
- package/dist/hooks/useGameTeaching.d.ts.map +1 -0
- package/dist/hooks/useGameTeaching.js +230 -0
- package/dist/hooks/useGameTeaching.js.map +1 -0
- package/dist/hooks/useGameTimer.d.ts +43 -0
- package/dist/hooks/useGameTimer.d.ts.map +1 -0
- package/dist/hooks/useGameTimer.js +68 -0
- package/dist/hooks/useGameTimer.js.map +1 -0
- package/dist/hooks/useHint.d.ts +105 -0
- package/dist/hooks/useHint.d.ts.map +1 -0
- package/dist/hooks/useHint.js +179 -0
- package/dist/hooks/useHint.js.map +1 -0
- package/dist/hooks/useLearning.d.ts +100 -0
- package/dist/hooks/useLearning.d.ts.map +1 -0
- package/dist/hooks/useLearning.js +127 -0
- package/dist/hooks/useLearning.js.map +1 -0
- package/dist/hooks/useLevelGame.d.ts +68 -0
- package/dist/hooks/useLevelGame.d.ts.map +1 -0
- package/dist/hooks/useLevelGame.js +128 -0
- package/dist/hooks/useLevelGame.js.map +1 -0
- package/dist/hooks/useLevels.d.ts +93 -0
- package/dist/hooks/useLevels.d.ts.map +1 -0
- package/dist/hooks/useLevels.js +98 -0
- package/dist/hooks/useLevels.js.map +1 -0
- package/dist/hooks/useLocalStorage.d.ts +26 -0
- package/dist/hooks/useLocalStorage.d.ts.map +1 -0
- package/dist/hooks/useLocalStorage.js +75 -0
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/hooks/useSudoku.d.ts +125 -0
- package/dist/hooks/useSudoku.d.ts.map +1 -0
- package/dist/hooks/useSudoku.js +655 -0
- package/dist/hooks/useSudoku.js.map +1 -0
- package/dist/hooks/useTechniques.d.ts +92 -0
- package/dist/hooks/useTechniques.d.ts.map +1 -0
- package/dist/hooks/useTechniques.js +108 -0
- package/dist/hooks/useTechniques.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/test/setup.d.ts +2 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/dist/test/setup.js +35 -0
- package/dist/test/setup.js.map +1 -0
- package/dist/types/display.d.ts +142 -0
- package/dist/types/display.d.ts.map +1 -0
- package/dist/types/display.js +94 -0
- package/dist/types/display.js.map +1 -0
- package/dist/types/game.d.ts +201 -0
- package/dist/types/game.d.ts.map +1 -0
- package/dist/types/game.js +26 -0
- package/dist/types/game.js.map +1 -0
- package/dist/types/gamePersistence.d.ts +31 -0
- package/dist/types/gamePersistence.d.ts.map +1 -0
- package/dist/types/gamePersistence.js +15 -0
- package/dist/types/gamePersistence.js.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/progress.d.ts +43 -0
- package/dist/types/progress.d.ts.map +1 -0
- package/dist/types/progress.js +19 -0
- package/dist/types/progress.js.map +1 -0
- package/dist/types/settings.d.ts +19 -0
- package/dist/types/settings.d.ts.map +1 -0
- package/dist/types/settings.js +12 -0
- package/dist/types/settings.js.map +1 -0
- package/dist/types/subscription.d.ts +27 -0
- package/dist/types/subscription.d.ts.map +1 -0
- package/dist/types/subscription.js +8 -0
- package/dist/types/subscription.js.map +1 -0
- package/dist/types/sudoku.d.ts +147 -0
- package/dist/types/sudoku.d.ts.map +1 -0
- package/dist/types/sudoku.js +125 -0
- package/dist/types/sudoku.js.map +1 -0
- package/dist/utils/auth.d.ts +25 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +47 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/board.d.ts +116 -0
- package/dist/utils/board.d.ts.map +1 -0
- package/dist/utils/board.js +291 -0
- package/dist/utils/board.js.map +1 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +23 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/progress.d.ts +44 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +104 -0
- package/dist/utils/progress.js.map +1 -0
- package/dist/utils/scramble.d.ts +35 -0
- package/dist/utils/scramble.d.ts.map +1 -0
- package/dist/utils/scramble.js +270 -0
- package/dist/utils/scramble.js.map +1 -0
- package/dist/utils/subscription.d.ts +82 -0
- package/dist/utils/subscription.d.ts.map +1 -0
- package/dist/utils/subscription.js +117 -0
- package/dist/utils/subscription.js.map +1 -0
- package/dist/utils/sudokuPresenter.d.ts +62 -0
- package/dist/utils/sudokuPresenter.d.ts.map +1 -0
- package/dist/utils/sudokuPresenter.js +403 -0
- package/dist/utils/sudokuPresenter.js.map +1 -0
- package/dist/utils/sudokuScrambler.d.ts +61 -0
- package/dist/utils/sudokuScrambler.d.ts.map +1 -0
- package/dist/utils/sudokuScrambler.js +223 -0
- package/dist/utils/sudokuScrambler.js.map +1 -0
- package/dist/utils/technique.d.ts +41 -0
- package/dist/utils/technique.d.ts.map +1 -0
- package/dist/utils/technique.js +106 -0
- package/dist/utils/technique.js.map +1 -0
- package/dist/utils/theme.d.ts +31 -0
- package/dist/utils/theme.d.ts.map +1 -0
- package/dist/utils/theme.js +40 -0
- package/dist/utils/theme.js.map +1 -0
- package/dist/utils/time.d.ts +22 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +41 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/validation.d.ts +107 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +248 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook for fetching and managing Sudoku solving techniques
|
|
3
|
+
*/
|
|
4
|
+
import type { Technique } from '@sudobility/sudojo_types';
|
|
5
|
+
import type { NetworkClient } from '@sudobility/types';
|
|
6
|
+
import { type SudojoAuth, type SudojoConfig } from '@sudobility/sudojo_client';
|
|
7
|
+
export interface UseTechniquesOptions {
|
|
8
|
+
/** Network client for API calls */
|
|
9
|
+
networkClient: NetworkClient;
|
|
10
|
+
/** Sudojo API configuration */
|
|
11
|
+
config: SudojoConfig;
|
|
12
|
+
/** Auth credentials (optional for public data) */
|
|
13
|
+
auth?: SudojoAuth;
|
|
14
|
+
/** Optional level UUID to filter techniques */
|
|
15
|
+
levelUuid?: string;
|
|
16
|
+
/** Whether to enable the query */
|
|
17
|
+
enabled?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface UseTechniquesResult {
|
|
20
|
+
/** All techniques (optionally filtered by level) */
|
|
21
|
+
techniques: Technique[];
|
|
22
|
+
/** Whether techniques are loading */
|
|
23
|
+
isLoading: boolean;
|
|
24
|
+
/** Error if loading failed */
|
|
25
|
+
error: Error | null;
|
|
26
|
+
/** Refetch techniques */
|
|
27
|
+
refetch: () => void;
|
|
28
|
+
/** Get technique by UUID */
|
|
29
|
+
getTechniqueByUuid: (uuid: string) => Technique | undefined;
|
|
30
|
+
/** Techniques sorted by index */
|
|
31
|
+
sortedTechniques: Technique[];
|
|
32
|
+
/** Group techniques by level UUID */
|
|
33
|
+
techniquesByLevel: Map<string, Technique[]>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Hook for fetching and managing solving techniques
|
|
37
|
+
*
|
|
38
|
+
* @param options - Hook options
|
|
39
|
+
* @returns Techniques data and utilities
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* function TechniqueList({ levelUuid }: { levelUuid: string }) {
|
|
44
|
+
* const { techniques, isLoading, sortedTechniques } = useTechniques({
|
|
45
|
+
* networkClient,
|
|
46
|
+
* config: { baseUrl: 'https://api.sudojo.com' },
|
|
47
|
+
* levelUuid,
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* if (isLoading) return <Loading />;
|
|
51
|
+
*
|
|
52
|
+
* return (
|
|
53
|
+
* <ul>
|
|
54
|
+
* {sortedTechniques.map(technique => (
|
|
55
|
+
* <li key={technique.uuid}>{technique.title}</li>
|
|
56
|
+
* ))}
|
|
57
|
+
* </ul>
|
|
58
|
+
* );
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function useTechniques(options: UseTechniquesOptions): UseTechniquesResult;
|
|
63
|
+
export interface UseTechniqueOptions {
|
|
64
|
+
/** Network client for API calls */
|
|
65
|
+
networkClient: NetworkClient;
|
|
66
|
+
/** Sudojo API configuration */
|
|
67
|
+
config: SudojoConfig;
|
|
68
|
+
/** Auth credentials (optional for public data) */
|
|
69
|
+
auth?: SudojoAuth;
|
|
70
|
+
/** Technique UUID to fetch */
|
|
71
|
+
techniqueUuid: string;
|
|
72
|
+
/** Whether to enable the query */
|
|
73
|
+
enabled?: boolean;
|
|
74
|
+
}
|
|
75
|
+
export interface UseTechniqueResult {
|
|
76
|
+
/** The fetched technique */
|
|
77
|
+
technique: Technique | null;
|
|
78
|
+
/** Whether technique is loading */
|
|
79
|
+
isLoading: boolean;
|
|
80
|
+
/** Error if loading failed */
|
|
81
|
+
error: Error | null;
|
|
82
|
+
/** Refetch technique */
|
|
83
|
+
refetch: () => void;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Hook for fetching a single technique by UUID
|
|
87
|
+
*
|
|
88
|
+
* @param options - Hook options
|
|
89
|
+
* @returns Technique data
|
|
90
|
+
*/
|
|
91
|
+
export declare function useTechnique(options: UseTechniqueOptions): UseTechniqueResult;
|
|
92
|
+
//# sourceMappingURL=useTechniques.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTechniques.d.ts","sourceRoot":"","sources":["../../src/hooks/useTechniques.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EAGlB,MAAM,2BAA2B,CAAC;AAKnC,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,+BAA+B;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,kDAAkD;IAClD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,yBAAyB;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4BAA4B;IAC5B,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IAC5D,iCAAiC;IACjC,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,qCAAqC;IACrC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAgErB;AAED,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,+BAA+B;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,kDAAkD;IAClD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,mCAAmC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,wBAAwB;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAgC7E"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook for fetching and managing Sudoku solving techniques
|
|
3
|
+
*/
|
|
4
|
+
import { useMemo } from 'react';
|
|
5
|
+
import { useSudojoTechnique, useSudojoTechniques, } from '@sudobility/sudojo_client';
|
|
6
|
+
/** Default empty auth for public endpoints */
|
|
7
|
+
const DEFAULT_AUTH = { accessToken: '' };
|
|
8
|
+
/**
|
|
9
|
+
* Hook for fetching and managing solving techniques
|
|
10
|
+
*
|
|
11
|
+
* @param options - Hook options
|
|
12
|
+
* @returns Techniques data and utilities
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* function TechniqueList({ levelUuid }: { levelUuid: string }) {
|
|
17
|
+
* const { techniques, isLoading, sortedTechniques } = useTechniques({
|
|
18
|
+
* networkClient,
|
|
19
|
+
* config: { baseUrl: 'https://api.sudojo.com' },
|
|
20
|
+
* levelUuid,
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* if (isLoading) return <Loading />;
|
|
24
|
+
*
|
|
25
|
+
* return (
|
|
26
|
+
* <ul>
|
|
27
|
+
* {sortedTechniques.map(technique => (
|
|
28
|
+
* <li key={technique.uuid}>{technique.title}</li>
|
|
29
|
+
* ))}
|
|
30
|
+
* </ul>
|
|
31
|
+
* );
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function useTechniques(options) {
|
|
36
|
+
const { networkClient, config, auth = DEFAULT_AUTH, levelUuid, enabled = true, } = options;
|
|
37
|
+
const queryParams = useMemo(() => {
|
|
38
|
+
if (!levelUuid)
|
|
39
|
+
return undefined;
|
|
40
|
+
return { level_uuid: levelUuid };
|
|
41
|
+
}, [levelUuid]);
|
|
42
|
+
const { data, isLoading, error, refetch } = useSudojoTechniques(networkClient, config, auth, queryParams, { enabled });
|
|
43
|
+
const techniques = useMemo(() => {
|
|
44
|
+
if (!data?.success || !data.data)
|
|
45
|
+
return [];
|
|
46
|
+
return data.data;
|
|
47
|
+
}, [data]);
|
|
48
|
+
const sortedTechniques = useMemo(() => {
|
|
49
|
+
return [...techniques].sort((a, b) => {
|
|
50
|
+
// First sort by level UUID, then by index
|
|
51
|
+
if (a.level_uuid !== b.level_uuid) {
|
|
52
|
+
return (a.level_uuid ?? '').localeCompare(b.level_uuid ?? '');
|
|
53
|
+
}
|
|
54
|
+
return a.index - b.index;
|
|
55
|
+
});
|
|
56
|
+
}, [techniques]);
|
|
57
|
+
const getTechniqueByUuid = useMemo(() => {
|
|
58
|
+
const techniqueMap = new Map(techniques.map(t => [t.uuid, t]));
|
|
59
|
+
return (uuid) => techniqueMap.get(uuid);
|
|
60
|
+
}, [techniques]);
|
|
61
|
+
const techniquesByLevel = useMemo(() => {
|
|
62
|
+
const byLevel = new Map();
|
|
63
|
+
for (const technique of sortedTechniques) {
|
|
64
|
+
const key = technique.level_uuid ?? '';
|
|
65
|
+
const existing = byLevel.get(key) ?? [];
|
|
66
|
+
existing.push(technique);
|
|
67
|
+
byLevel.set(key, existing);
|
|
68
|
+
}
|
|
69
|
+
return byLevel;
|
|
70
|
+
}, [sortedTechniques]);
|
|
71
|
+
return {
|
|
72
|
+
techniques,
|
|
73
|
+
isLoading,
|
|
74
|
+
error: error ?? null,
|
|
75
|
+
refetch: () => {
|
|
76
|
+
refetch();
|
|
77
|
+
},
|
|
78
|
+
getTechniqueByUuid,
|
|
79
|
+
sortedTechniques,
|
|
80
|
+
techniquesByLevel,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Hook for fetching a single technique by UUID
|
|
85
|
+
*
|
|
86
|
+
* @param options - Hook options
|
|
87
|
+
* @returns Technique data
|
|
88
|
+
*/
|
|
89
|
+
export function useTechnique(options) {
|
|
90
|
+
const { networkClient, config, auth = DEFAULT_AUTH, techniqueUuid, enabled = true, } = options;
|
|
91
|
+
const { data, isLoading, error, refetch } = useSudojoTechnique(networkClient, config, auth, techniqueUuid, {
|
|
92
|
+
enabled: enabled && !!techniqueUuid,
|
|
93
|
+
});
|
|
94
|
+
const technique = useMemo(() => {
|
|
95
|
+
if (!data?.success || !data.data)
|
|
96
|
+
return null;
|
|
97
|
+
return data.data;
|
|
98
|
+
}, [data]);
|
|
99
|
+
return {
|
|
100
|
+
technique,
|
|
101
|
+
isLoading,
|
|
102
|
+
error: error ?? null,
|
|
103
|
+
refetch: () => {
|
|
104
|
+
refetch();
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=useTechniques.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTechniques.js","sourceRoot":"","sources":["../../src/hooks/useTechniques.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @sudobility/sudojo_lib - Business logic library for Sudojo app
|
|
3
|
+
*
|
|
4
|
+
* This library provides:
|
|
5
|
+
* - Game state management with useSudoku hook (ported from renderable)
|
|
6
|
+
* - Board scrambling utilities
|
|
7
|
+
* - Game validation (mistakes, completion)
|
|
8
|
+
* - Level, technique, and learning data hooks
|
|
9
|
+
* - Teaching/hint integration with solver
|
|
10
|
+
* - Legacy useGame hook for backward compatibility
|
|
11
|
+
*/
|
|
12
|
+
export type { CellPosition, CellState, GameBoard, GameHint, GameMove, GameSettings, GameState, GameStatus, ScrambleConfig, ScrambleResult, TeachingState, } from './types';
|
|
13
|
+
export { DEFAULT_GAME_SETTINGS, DEFAULT_SCRAMBLE_CONFIG } from './types';
|
|
14
|
+
export type { SudokuCell, SudokuBoard, SudokuPlay, SudokuPlaySettings, SudokuAppSettings, SudokuGameState, SudokuDisplay, PlayingSource, } from './types';
|
|
15
|
+
export { DEFAULT_PLAY_SETTINGS, DEFAULT_APP_SETTINGS, createEmptyCell, createEmptyBoard, cellHasError, rowOf, columnOf, blockOf, cellIndex, getRowIndices, getColumnIndices, getBlockIndices, getRelatedIndices, } from './types';
|
|
16
|
+
export type { HintArea, HintCell, HintCellActions, DisplayHintStep, CellDisplayState, PencilmarkDisplayState, UIColorPalette, } from './types';
|
|
17
|
+
export { ThemeColor, SudokuColor, UIColorLight, UIColorDark } from './types';
|
|
18
|
+
export type { CompletedPuzzle, GameStats, UserProgress } from './types';
|
|
19
|
+
export { DEFAULT_PROGRESS, PROGRESS_STORAGE_KEY } from './types';
|
|
20
|
+
export type { DigitDisplay, AppSettings } from './types';
|
|
21
|
+
export { DEFAULT_SETTINGS, SETTINGS_STORAGE_KEY } from './types';
|
|
22
|
+
export type { Product, Subscription } from './types';
|
|
23
|
+
export { DEFAULT_SUBSCRIPTION } from './types';
|
|
24
|
+
export type { SavedGameState, GamePersistenceKey } from './types';
|
|
25
|
+
export { GAME_STORAGE_PREFIX, getGameStorageKey } from './types';
|
|
26
|
+
export { BLOCK_SIZE, BOARD_SIZE, cloneBoard, countFilledCells, createGameBoard, getBlockCells, getBlockIndex, getBoardStateString, getColumnCells, getEmptyCells, getPencilmarksString, getRelatedCells, getRowCells, isValidPlacement, parseBoardString, stringifyBoard, TOTAL_CELLS, noScramble, scrambleBoard, autoRemovePencilmarks, clearHighlights, countMistakes, getIncorrectCells, getProgressPercentage, isBoardFilled, isCellCorrect, isGameComplete, isValueCorrect, updateCellErrors, updateCellHighlights, validateGameState, } from './utils';
|
|
27
|
+
export type { ScramblerProtocol, SudokuScrambleResult } from './utils';
|
|
28
|
+
export { Scrambler, NonScrambler, scrambleSudokuBoard, parsePuzzleString, cellsToPuzzleString, cellsToStateString, cellsToInputString, cellsToPencilmarksString, } from './utils';
|
|
29
|
+
export type { PresentBoardOptions } from './utils';
|
|
30
|
+
export { presentBoard, calculateCellHints, themeColorToCSS, getColorPalette, getCellsWithDigit, getSelectedDigit, computeSelectedDigitCells, } from './utils';
|
|
31
|
+
export { formatTime, parseTime } from './utils';
|
|
32
|
+
export { calculateStats, calculateStreak, isPuzzleCompleted, getCompletedLevelIds, getCompletedDailyDates, } from './utils';
|
|
33
|
+
export { getFirebaseErrorMessage, getFirebaseErrorCode, formatFirebaseError, } from './utils';
|
|
34
|
+
export type { ThemePreference, ResolvedTheme } from './utils';
|
|
35
|
+
export { THEME_STORAGE_KEY, getSystemTheme, resolveTheme, isValidThemePreference, } from './utils';
|
|
36
|
+
export { convertPackageToProduct, parseCustomerInfo, getPeriodDisplayName, isBestValuePlan, getRevenueCatErrorMessage, } from './utils';
|
|
37
|
+
export { getTechniqueIconUrl, TECHNIQUE_TO_HELP_FILE, HELP_FILE_TO_TECHNIQUE, getHelpFileUrl, getTechniqueFromHelpFile, extractBodyContent, } from './utils';
|
|
38
|
+
export { useLevel, useLevels, useTechnique, useTechniques, useLearning, useLearningItem, useGame, useSudoku, useGameTeaching, useLevelGame, useDailyGame, useGameTimer, useGamePersistence, useAutoSave, useLocalStorage, useHint, } from './hooks';
|
|
39
|
+
export type { UseLevelOptions, UseLevelResult, UseLevelsOptions, UseLevelsResult, UseTechniqueOptions, UseTechniqueResult, UseTechniquesOptions, UseTechniquesResult, UseLearningItemOptions, UseLearningItemResult, UseLearningOptions, UseLearningResult, UseGameOptions, UseGameResult, UseSudokuOptions, UseSudokuResult, UseGameTeachingOptions, UseGameTeachingResult, UseLevelGameOptions, UseLevelGameResult, UseDailyGameOptions, UseDailyGameResult, GameFetchStatus, UseGameTimerOptions, UseGameTimerResult, UseGamePersistenceOptions, UseGamePersistenceResult, UseHintOptions, UseHintResult, HintBoardData, } from './hooks';
|
|
40
|
+
export type { Board, Challenge, Daily, Learning, Level, Technique, } from '@sudobility/sudojo_types';
|
|
41
|
+
export type { SudojoConfig, SudojoAuth } from '@sudobility/sudojo_client';
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @sudobility/sudojo_lib - Business logic library for Sudojo app
|
|
3
|
+
*
|
|
4
|
+
* This library provides:
|
|
5
|
+
* - Game state management with useSudoku hook (ported from renderable)
|
|
6
|
+
* - Board scrambling utilities
|
|
7
|
+
* - Game validation (mistakes, completion)
|
|
8
|
+
* - Level, technique, and learning data hooks
|
|
9
|
+
* - Teaching/hint integration with solver
|
|
10
|
+
* - Legacy useGame hook for backward compatibility
|
|
11
|
+
*/
|
|
12
|
+
export { DEFAULT_GAME_SETTINGS, DEFAULT_SCRAMBLE_CONFIG } from './types';
|
|
13
|
+
export { DEFAULT_PLAY_SETTINGS, DEFAULT_APP_SETTINGS, createEmptyCell, createEmptyBoard, cellHasError, rowOf, columnOf, blockOf, cellIndex, getRowIndices, getColumnIndices, getBlockIndices, getRelatedIndices, } from './types';
|
|
14
|
+
export { ThemeColor, SudokuColor, UIColorLight, UIColorDark } from './types';
|
|
15
|
+
export { DEFAULT_PROGRESS, PROGRESS_STORAGE_KEY } from './types';
|
|
16
|
+
export { DEFAULT_SETTINGS, SETTINGS_STORAGE_KEY } from './types';
|
|
17
|
+
export { DEFAULT_SUBSCRIPTION } from './types';
|
|
18
|
+
export { GAME_STORAGE_PREFIX, getGameStorageKey } from './types';
|
|
19
|
+
// Legacy Utilities (useGame hook)
|
|
20
|
+
export {
|
|
21
|
+
// Board utilities
|
|
22
|
+
BLOCK_SIZE, BOARD_SIZE, cloneBoard, countFilledCells, createGameBoard, getBlockCells, getBlockIndex, getBoardStateString, getColumnCells, getEmptyCells, getPencilmarksString, getRelatedCells, getRowCells, isValidPlacement, parseBoardString, stringifyBoard, TOTAL_CELLS,
|
|
23
|
+
// Scramble utilities
|
|
24
|
+
noScramble, scrambleBoard,
|
|
25
|
+
// Validation utilities
|
|
26
|
+
autoRemovePencilmarks, clearHighlights, countMistakes, getIncorrectCells, getProgressPercentage, isBoardFilled, isCellCorrect, isGameComplete, isValueCorrect, updateCellErrors, updateCellHighlights, validateGameState, } from './utils';
|
|
27
|
+
export { Scrambler, NonScrambler, scrambleSudokuBoard, parsePuzzleString, cellsToPuzzleString, cellsToStateString, cellsToInputString, cellsToPencilmarksString, } from './utils';
|
|
28
|
+
export { presentBoard, calculateCellHints, themeColorToCSS, getColorPalette, getCellsWithDigit, getSelectedDigit, computeSelectedDigitCells, } from './utils';
|
|
29
|
+
// Time Utilities
|
|
30
|
+
export { formatTime, parseTime } from './utils';
|
|
31
|
+
// Progress Utilities
|
|
32
|
+
export { calculateStats, calculateStreak, isPuzzleCompleted, getCompletedLevelIds, getCompletedDailyDates, } from './utils';
|
|
33
|
+
// Auth Utilities
|
|
34
|
+
export { getFirebaseErrorMessage, getFirebaseErrorCode, formatFirebaseError, } from './utils';
|
|
35
|
+
export { THEME_STORAGE_KEY, getSystemTheme, resolveTheme, isValidThemePreference, } from './utils';
|
|
36
|
+
// Subscription Utilities
|
|
37
|
+
export { convertPackageToProduct, parseCustomerInfo, getPeriodDisplayName, isBestValuePlan, getRevenueCatErrorMessage, } from './utils';
|
|
38
|
+
// Technique Utilities
|
|
39
|
+
export { getTechniqueIconUrl, TECHNIQUE_TO_HELP_FILE, HELP_FILE_TO_TECHNIQUE, getHelpFileUrl, getTechniqueFromHelpFile, extractBodyContent, } from './utils';
|
|
40
|
+
// Hooks
|
|
41
|
+
export {
|
|
42
|
+
// Levels
|
|
43
|
+
useLevel, useLevels,
|
|
44
|
+
// Techniques
|
|
45
|
+
useTechnique, useTechniques,
|
|
46
|
+
// Learning
|
|
47
|
+
useLearning, useLearningItem,
|
|
48
|
+
// Game (legacy)
|
|
49
|
+
useGame,
|
|
50
|
+
// Sudoku (ported from renderable)
|
|
51
|
+
useSudoku,
|
|
52
|
+
// Teaching
|
|
53
|
+
useGameTeaching,
|
|
54
|
+
// Game fetching (with auth/subscription handling)
|
|
55
|
+
useLevelGame, useDailyGame,
|
|
56
|
+
// Game timer
|
|
57
|
+
useGameTimer,
|
|
58
|
+
// Game persistence
|
|
59
|
+
useGamePersistence, useAutoSave,
|
|
60
|
+
// Local storage
|
|
61
|
+
useLocalStorage,
|
|
62
|
+
// Hint
|
|
63
|
+
useHint, } from './hooks';
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
// Mock window.localStorage
|
|
3
|
+
const localStorageMock = {
|
|
4
|
+
getItem: vi.fn(),
|
|
5
|
+
setItem: vi.fn(),
|
|
6
|
+
removeItem: vi.fn(),
|
|
7
|
+
clear: vi.fn(),
|
|
8
|
+
};
|
|
9
|
+
global.localStorage = localStorageMock;
|
|
10
|
+
// Mock window event listeners
|
|
11
|
+
const addEventListenerMock = vi.fn();
|
|
12
|
+
const removeEventListenerMock = vi.fn();
|
|
13
|
+
Object.defineProperty(window, 'addEventListener', {
|
|
14
|
+
writable: true,
|
|
15
|
+
value: addEventListenerMock,
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(window, 'removeEventListener', {
|
|
18
|
+
writable: true,
|
|
19
|
+
value: removeEventListenerMock,
|
|
20
|
+
});
|
|
21
|
+
// Mock window.matchMedia
|
|
22
|
+
Object.defineProperty(window, 'matchMedia', {
|
|
23
|
+
writable: true,
|
|
24
|
+
value: vi.fn().mockImplementation(query => ({
|
|
25
|
+
matches: false,
|
|
26
|
+
media: query,
|
|
27
|
+
onchange: null,
|
|
28
|
+
addListener: vi.fn(),
|
|
29
|
+
removeListener: vi.fn(),
|
|
30
|
+
addEventListener: vi.fn(),
|
|
31
|
+
removeEventListener: vi.fn(),
|
|
32
|
+
dispatchEvent: vi.fn(),
|
|
33
|
+
})),
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,2BAA2B;AAC3B,MAAM,gBAAgB,GAAG;IACvB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;CACf,CAAC;AACF,MAAM,CAAC,YAAY,GAAG,gBAAuB,CAAC;AAE9C,8BAA8B;AAC9B,MAAM,oBAAoB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACrC,MAAM,uBAAuB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAExC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE;IAChD,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,oBAAoB;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,EAAE;IACnD,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,uBAAuB;CAC/B,CAAC,CAAC;AAEH,yBAAyB;AACzB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;IAC1C,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;QACpB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;QACvB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;QACzB,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE;QAC5B,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;KACvB,CAAC,CAAC;CACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display types for Sudoku rendering
|
|
3
|
+
*
|
|
4
|
+
* Matches Kotlin renderable types exactly
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Theme colors for the UI - matches Kotlin ThemeColor enum
|
|
8
|
+
*/
|
|
9
|
+
export declare enum ThemeColor {
|
|
10
|
+
NONE = "NONE",
|
|
11
|
+
CLEAR = "CLEAR",
|
|
12
|
+
LABEL = "LABEL",
|
|
13
|
+
LABEL_SECONDARY = "LABEL_SECONDARY",
|
|
14
|
+
LABEL_TERTIARY = "LABEL_TERTIARY",
|
|
15
|
+
LABEL_QUATERNARY = "LABEL_QUATERNARY",
|
|
16
|
+
BACKGROUND = "BACKGROUND",
|
|
17
|
+
BACKGROUND_SECONDARY = "BACKGROUND_SECONDARY",
|
|
18
|
+
BACKGROUND_TERTIARY = "BACKGROUND_TERTIARY",
|
|
19
|
+
BACKGROUND_QUATERNARY = "BACKGROUND_QUATERNARY",
|
|
20
|
+
SELECTED = "SELECTED",
|
|
21
|
+
SUCCESS = "SUCCESS",
|
|
22
|
+
WARNING = "WARNING",
|
|
23
|
+
WARNING_SECONDARY = "WARNING_SECONDARY",
|
|
24
|
+
ERROR = "ERROR",
|
|
25
|
+
DISABLED = "DISABLED"
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Sudoku-specific colors - matches Kotlin SudokuColor enum
|
|
29
|
+
*/
|
|
30
|
+
export declare enum SudokuColor {
|
|
31
|
+
NONE = "none",
|
|
32
|
+
CLEAR = "clear",
|
|
33
|
+
BLUE = "blue",
|
|
34
|
+
GREEN = "green",
|
|
35
|
+
YELLOW = "yellow",
|
|
36
|
+
ORANGE = "orange",
|
|
37
|
+
RED = "red",
|
|
38
|
+
WHITE = "white",
|
|
39
|
+
LIGHT_GRAY = "lightgray",
|
|
40
|
+
BLACK = "black",
|
|
41
|
+
GRAY = "gray",
|
|
42
|
+
ACTION = "action",
|
|
43
|
+
SECONDARY_ACTION = "secondary-action",
|
|
44
|
+
DISABLED = "disabled"
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Area type for highlighting - matches HintArea.Type
|
|
48
|
+
*/
|
|
49
|
+
export type HintAreaType = 'row' | 'column' | 'block';
|
|
50
|
+
/**
|
|
51
|
+
* Highlighted area in a hint - matches HintArea
|
|
52
|
+
*/
|
|
53
|
+
export interface HintArea {
|
|
54
|
+
type: HintAreaType;
|
|
55
|
+
color: SudokuColor | null;
|
|
56
|
+
index: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Actions to perform on a cell - matches HintCellActions
|
|
60
|
+
*/
|
|
61
|
+
export interface HintCellActions {
|
|
62
|
+
select: number | null;
|
|
63
|
+
unselect: number | null;
|
|
64
|
+
add: number[] | null;
|
|
65
|
+
remove: number[] | null;
|
|
66
|
+
highlight: number[] | null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Cell display information in a hint - matches HintCell
|
|
70
|
+
*/
|
|
71
|
+
export interface HintCell {
|
|
72
|
+
index: number;
|
|
73
|
+
color: SudokuColor | null;
|
|
74
|
+
fill: boolean;
|
|
75
|
+
actions?: HintCellActions;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* A single hint step - matches HintStep
|
|
79
|
+
*/
|
|
80
|
+
export interface HintStep {
|
|
81
|
+
title: string;
|
|
82
|
+
text: string;
|
|
83
|
+
areas?: HintArea[] | null;
|
|
84
|
+
cells?: HintCell[] | null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Complete display state for a single cell
|
|
88
|
+
*/
|
|
89
|
+
export interface CellDisplayState {
|
|
90
|
+
/** Cell index (0-80) */
|
|
91
|
+
index: number;
|
|
92
|
+
/** Background color */
|
|
93
|
+
backgroundColor: ThemeColor;
|
|
94
|
+
/** Border color (null for no border) */
|
|
95
|
+
borderColor: ThemeColor | null;
|
|
96
|
+
/** Text color */
|
|
97
|
+
textColor: ThemeColor | null;
|
|
98
|
+
/** The digit to display (1-9) or null */
|
|
99
|
+
digit: number | null;
|
|
100
|
+
/** Whether this is a given (original) digit */
|
|
101
|
+
isGiven: boolean;
|
|
102
|
+
/** Pencilmarks to display */
|
|
103
|
+
pencilmarks: PencilmarkDisplayState[];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Display state for a single pencilmark
|
|
107
|
+
*/
|
|
108
|
+
export interface PencilmarkDisplayState {
|
|
109
|
+
/** The digit (1-9) */
|
|
110
|
+
digit: number;
|
|
111
|
+
/** Color of the pencilmark */
|
|
112
|
+
color: ThemeColor | null;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* UI color palette - matches UIColorType from sudojo-web
|
|
116
|
+
*/
|
|
117
|
+
export interface UIColorPalette {
|
|
118
|
+
systemBackground: string;
|
|
119
|
+
secondarySystemBackground: string;
|
|
120
|
+
tertiarySystemBackground: string;
|
|
121
|
+
label: string;
|
|
122
|
+
secondaryLabel: string;
|
|
123
|
+
tertiaryLabel: string;
|
|
124
|
+
quaternaryLabel: string;
|
|
125
|
+
systemBlue: string;
|
|
126
|
+
systemGreen: string;
|
|
127
|
+
systemOrange: string;
|
|
128
|
+
systemPurple: string;
|
|
129
|
+
systemRed: string;
|
|
130
|
+
systemYellow: string;
|
|
131
|
+
systemGray: string;
|
|
132
|
+
clear: string;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Light mode color palette - matches sudojo-web UIColorLight
|
|
136
|
+
*/
|
|
137
|
+
export declare const UIColorLight: UIColorPalette;
|
|
138
|
+
/**
|
|
139
|
+
* Dark mode color palette - matches sudojo-web UIColorDark
|
|
140
|
+
*/
|
|
141
|
+
export declare const UIColorDark: UIColorPalette;
|
|
142
|
+
//# sourceMappingURL=display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/types/display.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display types for Sudoku rendering
|
|
3
|
+
*
|
|
4
|
+
* Matches Kotlin renderable types exactly
|
|
5
|
+
*/
|
|
6
|
+
// =============================================================================
|
|
7
|
+
// Theme Color (matches ThemeColor.kt)
|
|
8
|
+
// =============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Theme colors for the UI - matches Kotlin ThemeColor enum
|
|
11
|
+
*/
|
|
12
|
+
export var ThemeColor;
|
|
13
|
+
(function (ThemeColor) {
|
|
14
|
+
ThemeColor["NONE"] = "NONE";
|
|
15
|
+
ThemeColor["CLEAR"] = "CLEAR";
|
|
16
|
+
ThemeColor["LABEL"] = "LABEL";
|
|
17
|
+
ThemeColor["LABEL_SECONDARY"] = "LABEL_SECONDARY";
|
|
18
|
+
ThemeColor["LABEL_TERTIARY"] = "LABEL_TERTIARY";
|
|
19
|
+
ThemeColor["LABEL_QUATERNARY"] = "LABEL_QUATERNARY";
|
|
20
|
+
ThemeColor["BACKGROUND"] = "BACKGROUND";
|
|
21
|
+
ThemeColor["BACKGROUND_SECONDARY"] = "BACKGROUND_SECONDARY";
|
|
22
|
+
ThemeColor["BACKGROUND_TERTIARY"] = "BACKGROUND_TERTIARY";
|
|
23
|
+
ThemeColor["BACKGROUND_QUATERNARY"] = "BACKGROUND_QUATERNARY";
|
|
24
|
+
ThemeColor["SELECTED"] = "SELECTED";
|
|
25
|
+
ThemeColor["SUCCESS"] = "SUCCESS";
|
|
26
|
+
ThemeColor["WARNING"] = "WARNING";
|
|
27
|
+
ThemeColor["WARNING_SECONDARY"] = "WARNING_SECONDARY";
|
|
28
|
+
ThemeColor["ERROR"] = "ERROR";
|
|
29
|
+
ThemeColor["DISABLED"] = "DISABLED";
|
|
30
|
+
})(ThemeColor || (ThemeColor = {}));
|
|
31
|
+
// =============================================================================
|
|
32
|
+
// Sudoku Color (matches SudokuColor in Shared.kt)
|
|
33
|
+
// =============================================================================
|
|
34
|
+
/**
|
|
35
|
+
* Sudoku-specific colors - matches Kotlin SudokuColor enum
|
|
36
|
+
*/
|
|
37
|
+
export var SudokuColor;
|
|
38
|
+
(function (SudokuColor) {
|
|
39
|
+
SudokuColor["NONE"] = "none";
|
|
40
|
+
SudokuColor["CLEAR"] = "clear";
|
|
41
|
+
SudokuColor["BLUE"] = "blue";
|
|
42
|
+
SudokuColor["GREEN"] = "green";
|
|
43
|
+
SudokuColor["YELLOW"] = "yellow";
|
|
44
|
+
SudokuColor["ORANGE"] = "orange";
|
|
45
|
+
SudokuColor["RED"] = "red";
|
|
46
|
+
SudokuColor["WHITE"] = "white";
|
|
47
|
+
SudokuColor["LIGHT_GRAY"] = "lightgray";
|
|
48
|
+
SudokuColor["BLACK"] = "black";
|
|
49
|
+
SudokuColor["GRAY"] = "gray";
|
|
50
|
+
SudokuColor["ACTION"] = "action";
|
|
51
|
+
SudokuColor["SECONDARY_ACTION"] = "secondary-action";
|
|
52
|
+
SudokuColor["DISABLED"] = "disabled";
|
|
53
|
+
})(SudokuColor || (SudokuColor = {}));
|
|
54
|
+
/**
|
|
55
|
+
* Light mode color palette - matches sudojo-web UIColorLight
|
|
56
|
+
*/
|
|
57
|
+
export const UIColorLight = {
|
|
58
|
+
systemBackground: '#FFFFFF',
|
|
59
|
+
secondarySystemBackground: '#F2F2F7FF',
|
|
60
|
+
tertiarySystemBackground: '#FFFFFFFF',
|
|
61
|
+
label: '#000000FF',
|
|
62
|
+
secondaryLabel: '#3C3C4399',
|
|
63
|
+
tertiaryLabel: '#3C3C434D',
|
|
64
|
+
quaternaryLabel: '#3C3C432E',
|
|
65
|
+
systemBlue: '#007AFFFF',
|
|
66
|
+
systemGreen: '#34C759FF',
|
|
67
|
+
systemOrange: '#FF9500FF',
|
|
68
|
+
systemPurple: '#AF52DEFF',
|
|
69
|
+
systemRed: '#FF3B30FF',
|
|
70
|
+
systemYellow: '#FFCC00FF',
|
|
71
|
+
systemGray: '#8E8E93FF',
|
|
72
|
+
clear: '#00000000',
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Dark mode color palette - matches sudojo-web UIColorDark
|
|
76
|
+
*/
|
|
77
|
+
export const UIColorDark = {
|
|
78
|
+
systemBackground: '#000000FF',
|
|
79
|
+
secondarySystemBackground: '#1C1C1EFF',
|
|
80
|
+
tertiarySystemBackground: '#2C2C2EFF',
|
|
81
|
+
label: '#FFFFFFFF',
|
|
82
|
+
secondaryLabel: '#EBEBF599',
|
|
83
|
+
tertiaryLabel: '#EBEBF54D',
|
|
84
|
+
quaternaryLabel: '#EBEBF52E',
|
|
85
|
+
systemBlue: '#0A84FFFF',
|
|
86
|
+
systemGreen: '#30D158FF',
|
|
87
|
+
systemOrange: '#FF9F0AFF',
|
|
88
|
+
systemPurple: '#BF5AF2FF',
|
|
89
|
+
systemRed: '#FF453AFF',
|
|
90
|
+
systemYellow: '#FFD60AFF',
|
|
91
|
+
systemGray: '#8E8E93FF',
|
|
92
|
+
clear: '#00000000',
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/types/display.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAN,IAAY,UAiBX;AAjBD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,6BAAe,CAAA;IACf,6BAAe,CAAA;IACf,iDAAmC,CAAA;IACnC,+CAAiC,CAAA;IACjC,mDAAqC,CAAA;IACrC,uCAAyB,CAAA;IACzB,2DAA6C,CAAA;IAC7C,yDAA2C,CAAA;IAC3C,6DAA+C,CAAA;IAC/C,mCAAqB,CAAA;IACrB,iCAAmB,CAAA;IACnB,iCAAmB,CAAA;IACnB,qDAAuC,CAAA;IACvC,6BAAe,CAAA;IACf,mCAAqB,CAAA;AACvB,CAAC,EAjBW,UAAU,KAAV,UAAU,QAiBrB;AAED,gFAAgF;AAChF,kDAAkD;AAClD,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAN,IAAY,WAeX;AAfD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,0BAAW,CAAA;IACX,8BAAe,CAAA;IACf,uCAAwB,CAAA;IACxB,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,gCAAiB,CAAA;IACjB,oDAAqC,CAAA;IACrC,oCAAqB,CAAA;AACvB,CAAC,EAfW,WAAW,KAAX,WAAW,QAetB;AA8GD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,gBAAgB,EAAE,SAAS;IAC3B,yBAAyB,EAAE,WAAW;IACtC,wBAAwB,EAAE,WAAW;IACrC,KAAK,EAAE,WAAW;IAClB,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,WAAW;IAC1B,eAAe,EAAE,WAAW;IAC5B,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,WAAW;IACxB,YAAY,EAAE,WAAW;IACzB,YAAY,EAAE,WAAW;IACzB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,WAAW;IACzB,UAAU,EAAE,WAAW;IACvB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,gBAAgB,EAAE,WAAW;IAC7B,yBAAyB,EAAE,WAAW;IACtC,wBAAwB,EAAE,WAAW;IACrC,KAAK,EAAE,WAAW;IAClB,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,WAAW;IAC1B,eAAe,EAAE,WAAW;IAC5B,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,WAAW;IACxB,YAAY,EAAE,WAAW;IACzB,YAAY,EAAE,WAAW;IACzB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,WAAW;IACzB,UAAU,EAAE,WAAW;IACvB,KAAK,EAAE,WAAW;CACnB,CAAC"}
|