@ethnolib/language-chooser-controller 0.1.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/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@ethnolib/language-chooser-controller",
3
+ "description": "A framework-agnostic controller for a language chooser",
4
+ "author": "SIL Global",
5
+ "license": "MIT",
6
+ "version": "0.1.0",
7
+ "main": "./index.js",
8
+ "types": "./index.d.ts",
9
+ "scripts": {
10
+ "build": "nx vite:build",
11
+ "typecheck": "tsc",
12
+ "test": "nx vite:test --config vitest.config.ts",
13
+ "testonce": "nx vite:test --config vitest.config.ts --run",
14
+ "lint": "eslint ."
15
+ },
16
+ "dependencies": {
17
+ "@ethnolib/find-language": "0.1.20",
18
+ "@ethnolib/state-management-core": "0.1.0"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^20.16.11",
22
+ "tsx": "^4.19.2"
23
+ },
24
+ "volta": {
25
+ "extends": "../../../../package.json"
26
+ }
27
+ }
@@ -0,0 +1,6 @@
1
+ export interface FormattedText {
2
+ text: string;
3
+ isHighlighted: boolean;
4
+ }
5
+ export declare function highlightMatches(matchWith: string, text: string): FormattedText[];
6
+ //# sourceMappingURL=highlight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../src/highlight.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,aAAa,EAAE,CAoBjB"}
@@ -0,0 +1,6 @@
1
+ import { Field } from '@ethnolib/state-management-core';
2
+ export interface Selectable {
3
+ isSelected: Field<boolean>;
4
+ }
5
+ export declare function selectItem(index: number, items: readonly Selectable[]): void;
6
+ //# sourceMappingURL=selectable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectable.d.ts","sourceRoot":"","sources":["../../src/selectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,QAIrE"}
@@ -0,0 +1,19 @@
1
+ import { ILanguage } from '@ethnolib/find-language';
2
+ import { Field } from '@ethnolib/state-management-core';
3
+ interface ViewModelArgs {
4
+ onSelect?: (isSelected: boolean) => void;
5
+ }
6
+ export type LanguageCardViewModel = ReturnType<typeof useLanguageCardViewModel>;
7
+ export declare function useLanguageCardViewModel(language: ILanguage, { onSelect }?: ViewModelArgs): {
8
+ language: ILanguage;
9
+ isSelected: Field<boolean>;
10
+ title: string;
11
+ secondTitle: string | undefined;
12
+ description: (translations?: {
13
+ macrolanguageLabel: string;
14
+ macrolanguageOfRegionLabel: (regions: string) => string;
15
+ languageOfRegionLabel: (regions: string) => string;
16
+ }) => string | undefined;
17
+ };
18
+ export {};
19
+ //# sourceMappingURL=language-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-card.d.ts","sourceRoot":"","sources":["../../../src/view-models/language-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEhF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,EACnB,EAAE,QAAQ,EAAE,GAAE,aAAkB;;;;;iCAgBhB;QACZ,kBAAkB,EAAE,MAAM,CAAC;QAC3B,0BAA0B,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;QACxD,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;KACpD;EAkBJ"}
@@ -0,0 +1,55 @@
1
+ import { ICustomizableLanguageDetails, ILanguage, IOrthography, IRegion, IScript } from '@ethnolib/find-language';
2
+ import { Field } from '@ethnolib/state-management-core';
3
+ interface UseLanguageChooserParams {
4
+ initialLanguages?: ILanguage[];
5
+ }
6
+ export type LanguageChooserViewModel = ReturnType<typeof useLanguageChooserViewModel>;
7
+ export declare function useLanguageChooserViewModel(params?: UseLanguageChooserParams): {
8
+ listedLanguages: Field<{
9
+ language: ILanguage;
10
+ isSelected: Field<boolean>;
11
+ title: string;
12
+ secondTitle: string | undefined;
13
+ description: (translations?: {
14
+ macrolanguageLabel: string;
15
+ macrolanguageOfRegionLabel: (regions: string) => string;
16
+ languageOfRegionLabel: (regions: string) => string;
17
+ }) => string | undefined;
18
+ }[]>;
19
+ listedScripts: Field<{
20
+ script: IScript;
21
+ isSelected: Field<boolean>;
22
+ }[]>;
23
+ searchString: Field<string>;
24
+ tagPreview: Field<string>;
25
+ displayName: Field<string>;
26
+ selectedLanguage: Field<ILanguage | undefined>;
27
+ selectedScript: Field<IScript | undefined>;
28
+ customizations: Field<ICustomizableLanguageDetails | undefined>;
29
+ customLanguageTag: Field<string>;
30
+ isReadyToSubmit: Field<boolean>;
31
+ showUnlistedLanguageModal: Field<(populateWith: {
32
+ name?: string;
33
+ region?: IRegion;
34
+ }) => void>;
35
+ showCustomizeLanguageModal: Field<(populateWith: {
36
+ script?: IScript;
37
+ region?: IRegion;
38
+ dialect?: string;
39
+ }) => void>;
40
+ promptForCustomTag: Field<(populateWith?: string) => void>;
41
+ search: (query: string) => Promise<void>;
42
+ onCustomizeButtonClicked: () => void;
43
+ submitUnlistedLanguageModal: ({ name, region, }: {
44
+ name: string;
45
+ region: IRegion;
46
+ }) => void;
47
+ submitCustomizeLanguageModal: ({ script, region, dialect, }: {
48
+ script?: IScript;
49
+ region?: IRegion;
50
+ dialect?: string;
51
+ }) => void;
52
+ };
53
+ export declare function canSubmitOrthography(selection: IOrthography): boolean;
54
+ export {};
55
+ //# sourceMappingURL=language-chooser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-chooser.d.ts","sourceRoot":"","sources":["../../../src/view-models/language-chooser.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,4BAA4B,EACjC,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,OAAO,EAMb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAQxD,UAAU,wBAAwB;IAChC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAC/C,OAAO,2BAA2B,CACnC,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,MAAM,GAAE,wBAA6B;;;;;;;;;;;;;;;;;;;;;;;;oDAWpB;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;qDAM5C;QACb,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAK,IAAI;8CAKyC,MAAM,KAAK,IAAI;oBAsJvC,MAAM;;qDA2ChC;QACD,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;KACjB;iEAaE;QACD,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;EAoCF;AAsBD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAerE"}
@@ -0,0 +1,12 @@
1
+ import { IScript } from '@ethnolib/find-language';
2
+ import { Field } from '@ethnolib/state-management-core';
3
+ interface ViewModelArgs {
4
+ onSelect?: (isSelected: boolean) => void;
5
+ }
6
+ export type ScriptCardViewModel = ReturnType<typeof useScriptCardViewModel>;
7
+ export declare function useScriptCardViewModel(script: IScript, { onSelect }?: ViewModelArgs): {
8
+ script: IScript;
9
+ isSelected: Field<boolean>;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=script-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-card.d.ts","sourceRoot":"","sources":["../../../src/view-models/script-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,EAAE,QAAQ,EAAE,GAAE,aAAkB;;;EASjC"}
@@ -0,0 +1,9 @@
1
+ import { ILanguage, IScript } from '@ethnolib/find-language';
2
+ interface FakeLanguageParams {
3
+ scriptCount?: number;
4
+ }
5
+ export declare function fakeLanguage({ scriptCount, }?: FakeLanguageParams): ILanguage;
6
+ export declare function fakeLanguages(count: number): ILanguage[];
7
+ export declare function fakeScript(): IScript;
8
+ export {};
9
+ //# sourceMappingURL=fake-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-utils.d.ts","sourceRoot":"","sources":["../../test/fake-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAgB,MAAM,yBAAyB,CAAC;AAE3E,UAAU,kBAAkB;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAC3B,WAAW,GACZ,GAAE,kBAAuB,GAAG,SAAS,CAarC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAExD;AAED,wBAAgB,UAAU,IAAI,OAAO,CAKpC"}
@@ -0,0 +1,4 @@
1
+ import { ILanguage } from '@ethnolib/find-language';
2
+ export declare const NorthernUzbekLanguage: ILanguage;
3
+ export declare const WaataLanguage: ILanguage;
4
+ //# sourceMappingURL=languages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../test/sample-data/languages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,yBAAyB,CAAC;AAElE,eAAO,MAAM,qBAAqB,EAAE,SAiGnC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SA0B3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { IRegion } from 'components/language-chooser/common/find-language';
2
+ export declare const AndorraRegion: IRegion;
3
+ //# sourceMappingURL=regions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../../test/sample-data/regions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kDAAkD,CAAC;AAE3E,eAAO,MAAM,aAAa,EAAE,OAG3B,CAAC"}