@hisptz/dhis2-scorecard 1.2.1 → 1.2.2

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.
@@ -19,6 +19,18 @@ function createScorecardViewStateEngine(defaultOptions) {
19
19
  listener(this.options);
20
20
  }
21
21
  },
22
+ updateOptions(options) {
23
+ this.options = {
24
+ ...this.options,
25
+ ...options
26
+ };
27
+ for (const listener of this.listeners) {
28
+ listener.listener(options[listener.key]);
29
+ }
30
+ for (const listener of this.optionsListeners) {
31
+ listener(this.options);
32
+ }
33
+ },
22
34
  addOptionListener(listener) {
23
35
  this.optionsListeners.push(listener);
24
36
  return () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/viewState.ts"],"names":["value"],"mappings":";;;;AAgBO,SAAS,+BACf,cACC,EAAA;AACD,EAAO,OAAA;AAAA,IACN,OAAS,EAAA,cAAA;AAAA,IACT,WAAW,EAAC;AAAA,IACZ,kBAAkB,EAAC;AAAA,IACnB,YAAA,CACC,KACA,KACC,EAAA;AACD,MAAI,GAAA,CAAA,IAAA,CAAK,OAAS,EAAA,GAAA,EAAK,KAAK,CAAA;AAC5B,MAAM,MAAA,SAAA,GAAkC,KAAK,SAAU,CAAA,MAAA;AAAA,QACtD,CAAC,QAAiC,KAAA,QAAA,CAAS,GAAQ,KAAA;AAAA,OACpD;AACA,MAAA,KAAA,MAAW,YAAY,SAAW,EAAA;AACjC,QAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AAAA;AAExB,MAAW,KAAA,MAAA,QAAA,IAAY,KAAK,gBAAkB,EAAA;AAC7C,QAAA,QAAA,CAAS,KAAK,OAAO,CAAA;AAAA;AACtB,KACD;AAAA,IACA,kBAAkB,QAAmD,EAAA;AACpE,MAAK,IAAA,CAAA,gBAAA,CAAiB,KAAK,QAAQ,CAAA;AAEnC,MAAA,OAAO,MAAM;AACZ,QAAK,IAAA,CAAA,gBAAA,GAAmB,KAAK,gBAAiB,CAAA,MAAA;AAAA,UAC7C,CAAC,MACA,CAAM,KAAA;AAAA,SACR;AAAA,OACD;AAAA,KACD;AAAA,IACA,YAAY,QAA8B,EAAA;AACzC,MAAK,IAAA,CAAA,SAAA,CAAU,KAAK,QAAQ,CAAA;AAC5B,MAAA,OAAO,MAAM;AACZ,QAAK,IAAA,CAAA,SAAA,GAAY,KAAK,SAAU,CAAA,MAAA;AAAA,UAC/B,CAAC,MAA0B,CAAM,KAAA;AAAA,SAClC;AAAA,OACD;AAAA,KACD;AAAA,IACA,eAAe,QAA8B,EAAA;AAC5C,MAAK,IAAA,CAAA,SAAA,GAAY,KAAK,SAAU,CAAA,MAAA;AAAA,QAC/B,CAAC,MAA0B,QAAa,KAAA;AAAA,OACzC;AAAA;AACD,GACD;AACD;AAEO,SAAS,2BAEd,GAAiC,EAAA;AAClC,EAAA,MAAM,aAAa,2BAA4B,EAAA;AAC/C,EAAM,MAAA,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,QAAA;AAAA,IACzB,GAAA,CAAI,UAAW,CAAA,OAAA,EAAS,GAAG;AAAA,GAC5B;AACA,EAAA,SAAA,CAAU,MAAM;AACf,IAAM,MAAA,WAAA,GAAc,WAAW,WAAY,CAAA;AAAA,MAC1C,GAAA;AAAA,MACA,SAASA,MAAO,EAAA;AACf,QAAA,QAAA,CAASA,MAAkB,CAAA;AAAA;AAC5B,KACA,CAAA;AACD,IAAA,OAAO,MAAM;AACZ,MAAY,WAAA,EAAA;AAAA,KACb;AAAA,GACD,EAAG,EAAE,CAAA;AACL,EAAO,OAAA,KAAA;AACR;AAEO,SAAS,uBAA0B,GAAA;AACzC,EAAA,MAAM,aAAa,2BAA4B,EAAA;AAC/C,EAAM,MAAA,CAAC,OAAS,EAAA,UAAU,CAAI,GAAA,QAAA;AAAA,IAC7B,UAAW,CAAA;AAAA,GACZ;AAEA,EAAA,SAAA,CAAU,MAAM;AACf,IAAM,MAAA,WAAA,GAAc,UAAW,CAAA,iBAAA,CAAkB,UAAU,CAAA;AAE3D,IAAA,OAAO,MAAM;AACZ,MAAY,WAAA,EAAA;AAAA,KACb;AAAA,GACD,EAAG,EAAE,CAAA;AAEL,EAAO,OAAA,OAAA;AACR;AAEO,SAAS,4BAA4B,GAAiC,EAAA;AAC5E,EAAA,MAAM,aAAa,2BAA4B,EAAA;AAC/C,EAAA,OAAO,CAAC,KAA4D,KAAA;AACnE,IAAW,UAAA,CAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA,GACnC;AACD","file":"viewState.js","sourcesContent":["import type { ScorecardViewOptions } from \"../schemas/config\";\nimport { get, set } from \"lodash\";\nimport { useScorecardViewStateEngine } from \"../components\";\nimport { useEffect, useState } from \"react\";\n\nexport type ViewOptionListener = {\n\tkey: keyof ScorecardViewOptions;\n\tlistener: (\n\t\tvalue?: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t) => void;\n};\n\nexport type ScorecardViewStateEngine = ReturnType<\n\ttypeof createScorecardViewStateEngine\n>;\n\nexport function createScorecardViewStateEngine(\n\tdefaultOptions: ScorecardViewOptions,\n) {\n\treturn {\n\t\toptions: defaultOptions as ScorecardViewOptions,\n\t\tlisteners: [] as ViewOptionListener[],\n\t\toptionsListeners: [] as Array<(options: ScorecardViewOptions) => void>,\n\t\tupdateOption(\n\t\t\tkey: keyof ScorecardViewOptions,\n\t\t\tvalue: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t\t) {\n\t\t\tset(this.options, key, value);\n\t\t\tconst listeners: ViewOptionListener[] = this.listeners.filter(\n\t\t\t\t(listener: ViewOptionListener) => listener.key === key,\n\t\t\t);\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener.listener(value);\n\t\t\t}\n\t\t\tfor (const listener of this.optionsListeners) {\n\t\t\t\tlistener(this.options);\n\t\t\t}\n\t\t},\n\t\taddOptionListener(listener: (options: ScorecardViewOptions) => void) {\n\t\t\tthis.optionsListeners.push(listener);\n\n\t\t\treturn () => {\n\t\t\t\tthis.optionsListeners = this.optionsListeners.filter(\n\t\t\t\t\t(l: (options: ScorecardViewOptions) => void) =>\n\t\t\t\t\t\tl !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\taddListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t\t(l: ViewOptionListener) => l !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\tremoveListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t(l: ViewOptionListener) => listener !== l,\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport function useScorecardViewStateValue<\n\tValueType extends ScorecardViewOptions[keyof ScorecardViewOptions],\n>(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [value, setValue] = useState<ValueType>(\n\t\tget(viewEngine.options, key) as ValueType,\n\t);\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addListener({\n\t\t\tkey,\n\t\t\tlistener(value) {\n\t\t\t\tsetValue(value as ValueType);\n\t\t\t},\n\t\t});\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\treturn value;\n}\n\nexport function useScorecardViewOptions() {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [options, setOptions] = useState<ScorecardViewOptions>(\n\t\tviewEngine.options,\n\t);\n\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addOptionListener(setOptions);\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\n\treturn options;\n}\n\nexport function useUpdateScorecardViewState(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\treturn (value: ScorecardViewOptions[keyof ScorecardViewOptions]) => {\n\t\tviewEngine.updateOption(key, value);\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../../../src/utils/viewState.ts"],"names":["value"],"mappings":"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","file":"viewState.js","sourcesContent":["import type { ScorecardViewOptions } from \"../schemas/config\";\nimport { get, set } from \"lodash\";\nimport { useScorecardViewStateEngine } from \"../components\";\nimport { useEffect, useState } from \"react\";\n\nexport type ViewOptionListener = {\n\tkey: keyof ScorecardViewOptions;\n\tlistener: (\n\t\tvalue?: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t) => void;\n};\n\nexport type ScorecardViewStateEngine = ReturnType<\n\ttypeof createScorecardViewStateEngine\n>;\n\nexport function createScorecardViewStateEngine(\n\tdefaultOptions: ScorecardViewOptions,\n) {\n\treturn {\n\t\toptions: defaultOptions as ScorecardViewOptions,\n\t\tlisteners: [] as ViewOptionListener[],\n\t\toptionsListeners: [] as Array<(options: ScorecardViewOptions) => void>,\n\t\tupdateOption(\n\t\t\tkey: keyof ScorecardViewOptions,\n\t\t\tvalue: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t\t) {\n\t\t\tset(this.options, key, value);\n\t\t\tconst listeners: ViewOptionListener[] = this.listeners.filter(\n\t\t\t\t(listener: ViewOptionListener) => listener.key === key,\n\t\t\t);\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener.listener(value);\n\t\t\t}\n\t\t\tfor (const listener of this.optionsListeners) {\n\t\t\t\tlistener(this.options);\n\t\t\t}\n\t\t},\n\t\tupdateOptions(options: ScorecardViewOptions) {\n\t\t\tthis.options = {\n\t\t\t\t...this.options,\n\t\t\t\t...options,\n\t\t\t};\n\t\t\tfor (const listener of this.listeners) {\n\t\t\t\tlistener.listener(options[listener.key]);\n\t\t\t}\n\t\t\tfor (const listener of this.optionsListeners) {\n\t\t\t\tlistener(this.options);\n\t\t\t}\n\t\t},\n\t\taddOptionListener(listener: (options: ScorecardViewOptions) => void) {\n\t\t\tthis.optionsListeners.push(listener);\n\n\t\t\treturn () => {\n\t\t\t\tthis.optionsListeners = this.optionsListeners.filter(\n\t\t\t\t\t(l: (options: ScorecardViewOptions) => void) =>\n\t\t\t\t\t\tl !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\taddListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t\t(l: ViewOptionListener) => l !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\tremoveListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t(l: ViewOptionListener) => listener !== l,\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport function useScorecardViewStateValue<\n\tValueType extends ScorecardViewOptions[keyof ScorecardViewOptions],\n>(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [value, setValue] = useState<ValueType>(\n\t\tget(viewEngine.options, key) as ValueType,\n\t);\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addListener({\n\t\t\tkey,\n\t\t\tlistener(value) {\n\t\t\t\tsetValue(value as ValueType);\n\t\t\t},\n\t\t});\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\treturn value;\n}\n\nexport function useScorecardViewOptions() {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [options, setOptions] = useState<ScorecardViewOptions>(\n\t\tviewEngine.options,\n\t);\n\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addOptionListener(setOptions);\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\n\treturn options;\n}\n\nexport function useUpdateScorecardViewState(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\treturn (value: ScorecardViewOptions[keyof ScorecardViewOptions]) => {\n\t\tviewEngine.updateOption(key, value);\n\t};\n}\n"]}
@@ -10,6 +10,7 @@ export declare function useScorecardViewStateEngine(): {
10
10
  listeners: import("../utils/viewState").ViewOptionListener[];
11
11
  optionsListeners: Array<(options: import("../schemas/config").ScorecardViewOptions) => void>;
12
12
  updateOption(key: keyof import("../schemas/config").ScorecardViewOptions, value: import("../schemas/config").ScorecardViewOptions[keyof import("../schemas/config").ScorecardViewOptions]): void;
13
+ updateOptions(options: import("../schemas/config").ScorecardViewOptions): void;
13
14
  addOptionListener(listener: (options: import("../schemas/config").ScorecardViewOptions) => void): () => void;
14
15
  addListener(listener: import("../utils/viewState").ViewOptionListener): () => void;
15
16
  removeListener(listener: import("../utils/viewState").ViewOptionListener): void;
@@ -1 +1 @@
1
- {"version":3,"file":"StateProvider.d.ts","sourceRoot":"","sources":["../../../src/components/StateProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAiB,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAC;AAU1E,MAAM,WAAW,2BAA2B;IAC3C,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;CACpB;AAOD,wBAAgB,2BAA2B;;;;;;;;EAQ1C;AAED,wBAAgB,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;EAQ/C;AAED,wBAAgB,sBAAsB,CAAC,EACtC,QAAQ,EACR,YAAY,EACZ,MAAM,GACN,EAAE,2BAA2B,2CAuB7B"}
1
+ {"version":3,"file":"StateProvider.d.ts","sourceRoot":"","sources":["../../../src/components/StateProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAiB,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAC;AAU1E,MAAM,WAAW,2BAA2B;IAC3C,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;CACpB;AAOD,wBAAgB,2BAA2B;;;;;;;;;EAQ1C;AAED,wBAAgB,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;EAQ/C;AAED,wBAAgB,sBAAsB,CAAC,EACtC,QAAQ,EACR,YAAY,EACZ,MAAM,GACN,EAAE,2BAA2B,2CAuB7B"}
@@ -9,6 +9,7 @@ export declare function createScorecardViewStateEngine(defaultOptions: Scorecard
9
9
  listeners: ViewOptionListener[];
10
10
  optionsListeners: Array<(options: ScorecardViewOptions) => void>;
11
11
  updateOption(key: keyof ScorecardViewOptions, value: ScorecardViewOptions[keyof ScorecardViewOptions]): void;
12
+ updateOptions(options: ScorecardViewOptions): void;
12
13
  addOptionListener(listener: (options: ScorecardViewOptions) => void): () => void;
13
14
  addListener(listener: ViewOptionListener): () => void;
14
15
  removeListener(listener: ViewOptionListener): void;
@@ -1 +1 @@
1
- {"version":3,"file":"viewState.d.ts","sourceRoot":"","sources":["../../../src/utils/viewState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,MAAM,MAAM,kBAAkB,GAAG;IAChC,GAAG,EAAE,MAAM,oBAAoB,CAAC;IAChC,QAAQ,EAAE,CACT,KAAK,CAAC,EAAE,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,KACpD,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAChD,OAAO,8BAA8B,CACrC,CAAC;AAEF,wBAAgB,8BAA8B,CAC7C,cAAc,EAAE,oBAAoB;aAGR,oBAAoB;eAC9B,kBAAkB,EAAE;sBACb,KAAK,CAAC,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;sBAEhE,MAAM,oBAAoB,SACxB,oBAAoB,CAAC,MAAM,oBAAoB,CAAC;gCAa5B,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI;0BAU7C,kBAAkB;6BAQf,kBAAkB;EAM5C;AAED,wBAAgB,0BAA0B,CACzC,SAAS,SAAS,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,EACjE,GAAG,EAAE,MAAM,oBAAoB,aAiBhC;AAED,wBAAgB,uBAAuB;;;;;;;;;;;;;;;EAetC;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,oBAAoB,IAElE,OAAO,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,UAG/D"}
1
+ {"version":3,"file":"viewState.d.ts","sourceRoot":"","sources":["../../../src/utils/viewState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,MAAM,MAAM,kBAAkB,GAAG;IAChC,GAAG,EAAE,MAAM,oBAAoB,CAAC;IAChC,QAAQ,EAAE,CACT,KAAK,CAAC,EAAE,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,KACpD,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAChD,OAAO,8BAA8B,CACrC,CAAC;AAEF,wBAAgB,8BAA8B,CAC7C,cAAc,EAAE,oBAAoB;aAGR,oBAAoB;eAC9B,kBAAkB,EAAE;sBACb,KAAK,CAAC,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;sBAEhE,MAAM,oBAAoB,SACxB,oBAAoB,CAAC,MAAM,oBAAoB,CAAC;2BAajC,oBAAoB;gCAYf,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI;0BAU7C,kBAAkB;6BAQf,kBAAkB;EAM5C;AAED,wBAAgB,0BAA0B,CACzC,SAAS,SAAS,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,EACjE,GAAG,EAAE,MAAM,oBAAoB,aAiBhC;AAED,wBAAgB,uBAAuB;;;;;;;;;;;;;;;EAetC;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,oBAAoB,IAElE,OAAO,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,UAG/D"}
@@ -21,6 +21,18 @@ function createScorecardViewStateEngine(defaultOptions) {
21
21
  listener(this.options);
22
22
  }
23
23
  },
24
+ updateOptions(options) {
25
+ this.options = {
26
+ ...this.options,
27
+ ...options
28
+ };
29
+ for (const listener of this.listeners) {
30
+ listener.listener(options[listener.key]);
31
+ }
32
+ for (const listener of this.optionsListeners) {
33
+ listener(this.options);
34
+ }
35
+ },
24
36
  addOptionListener(listener) {
25
37
  this.optionsListeners.push(listener);
26
38
  return () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/viewState.ts"],"names":["set","useScorecardViewStateEngine","useState","get","useEffect","value"],"mappings":";;;;;;AAgBO,SAAS,+BACf,cACC,EAAA;AACD,EAAO,OAAA;AAAA,IACN,OAAS,EAAA,cAAA;AAAA,IACT,WAAW,EAAC;AAAA,IACZ,kBAAkB,EAAC;AAAA,IACnB,YAAA,CACC,KACA,KACC,EAAA;AACD,MAAIA,UAAA,CAAA,IAAA,CAAK,OAAS,EAAA,GAAA,EAAK,KAAK,CAAA;AAC5B,MAAM,MAAA,SAAA,GAAkC,KAAK,SAAU,CAAA,MAAA;AAAA,QACtD,CAAC,QAAiC,KAAA,QAAA,CAAS,GAAQ,KAAA;AAAA,OACpD;AACA,MAAA,KAAA,MAAW,YAAY,SAAW,EAAA;AACjC,QAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AAAA;AAExB,MAAW,KAAA,MAAA,QAAA,IAAY,KAAK,gBAAkB,EAAA;AAC7C,QAAA,QAAA,CAAS,KAAK,OAAO,CAAA;AAAA;AACtB,KACD;AAAA,IACA,kBAAkB,QAAmD,EAAA;AACpE,MAAK,IAAA,CAAA,gBAAA,CAAiB,KAAK,QAAQ,CAAA;AAEnC,MAAA,OAAO,MAAM;AACZ,QAAK,IAAA,CAAA,gBAAA,GAAmB,KAAK,gBAAiB,CAAA,MAAA;AAAA,UAC7C,CAAC,MACA,CAAM,KAAA;AAAA,SACR;AAAA,OACD;AAAA,KACD;AAAA,IACA,YAAY,QAA8B,EAAA;AACzC,MAAK,IAAA,CAAA,SAAA,CAAU,KAAK,QAAQ,CAAA;AAC5B,MAAA,OAAO,MAAM;AACZ,QAAK,IAAA,CAAA,SAAA,GAAY,KAAK,SAAU,CAAA,MAAA;AAAA,UAC/B,CAAC,MAA0B,CAAM,KAAA;AAAA,SAClC;AAAA,OACD;AAAA,KACD;AAAA,IACA,eAAe,QAA8B,EAAA;AAC5C,MAAK,IAAA,CAAA,SAAA,GAAY,KAAK,SAAU,CAAA,MAAA;AAAA,QAC/B,CAAC,MAA0B,QAAa,KAAA;AAAA,OACzC;AAAA;AACD,GACD;AACD;AAEO,SAAS,2BAEd,GAAiC,EAAA;AAClC,EAAA,MAAM,aAAaC,sCAA4B,EAAA;AAC/C,EAAM,MAAA,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAAC,cAAA;AAAA,IACzBC,UAAA,CAAI,UAAW,CAAA,OAAA,EAAS,GAAG;AAAA,GAC5B;AACA,EAAAC,eAAA,CAAU,MAAM;AACf,IAAM,MAAA,WAAA,GAAc,WAAW,WAAY,CAAA;AAAA,MAC1C,GAAA;AAAA,MACA,SAASC,MAAO,EAAA;AACf,QAAA,QAAA,CAASA,MAAkB,CAAA;AAAA;AAC5B,KACA,CAAA;AACD,IAAA,OAAO,MAAM;AACZ,MAAY,WAAA,EAAA;AAAA,KACb;AAAA,GACD,EAAG,EAAE,CAAA;AACL,EAAO,OAAA,KAAA;AACR;AAEO,SAAS,uBAA0B,GAAA;AACzC,EAAA,MAAM,aAAaJ,sCAA4B,EAAA;AAC/C,EAAM,MAAA,CAAC,OAAS,EAAA,UAAU,CAAI,GAAAC,cAAA;AAAA,IAC7B,UAAW,CAAA;AAAA,GACZ;AAEA,EAAAE,eAAA,CAAU,MAAM;AACf,IAAM,MAAA,WAAA,GAAc,UAAW,CAAA,iBAAA,CAAkB,UAAU,CAAA;AAE3D,IAAA,OAAO,MAAM;AACZ,MAAY,WAAA,EAAA;AAAA,KACb;AAAA,GACD,EAAG,EAAE,CAAA;AAEL,EAAO,OAAA,OAAA;AACR;AAEO,SAAS,4BAA4B,GAAiC,EAAA;AAC5E,EAAA,MAAM,aAAaH,sCAA4B,EAAA;AAC/C,EAAA,OAAO,CAAC,KAA4D,KAAA;AACnE,IAAW,UAAA,CAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA,GACnC;AACD","file":"viewState.js","sourcesContent":["import type { ScorecardViewOptions } from \"../schemas/config\";\nimport { get, set } from \"lodash\";\nimport { useScorecardViewStateEngine } from \"../components\";\nimport { useEffect, useState } from \"react\";\n\nexport type ViewOptionListener = {\n\tkey: keyof ScorecardViewOptions;\n\tlistener: (\n\t\tvalue?: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t) => void;\n};\n\nexport type ScorecardViewStateEngine = ReturnType<\n\ttypeof createScorecardViewStateEngine\n>;\n\nexport function createScorecardViewStateEngine(\n\tdefaultOptions: ScorecardViewOptions,\n) {\n\treturn {\n\t\toptions: defaultOptions as ScorecardViewOptions,\n\t\tlisteners: [] as ViewOptionListener[],\n\t\toptionsListeners: [] as Array<(options: ScorecardViewOptions) => void>,\n\t\tupdateOption(\n\t\t\tkey: keyof ScorecardViewOptions,\n\t\t\tvalue: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t\t) {\n\t\t\tset(this.options, key, value);\n\t\t\tconst listeners: ViewOptionListener[] = this.listeners.filter(\n\t\t\t\t(listener: ViewOptionListener) => listener.key === key,\n\t\t\t);\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener.listener(value);\n\t\t\t}\n\t\t\tfor (const listener of this.optionsListeners) {\n\t\t\t\tlistener(this.options);\n\t\t\t}\n\t\t},\n\t\taddOptionListener(listener: (options: ScorecardViewOptions) => void) {\n\t\t\tthis.optionsListeners.push(listener);\n\n\t\t\treturn () => {\n\t\t\t\tthis.optionsListeners = this.optionsListeners.filter(\n\t\t\t\t\t(l: (options: ScorecardViewOptions) => void) =>\n\t\t\t\t\t\tl !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\taddListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t\t(l: ViewOptionListener) => l !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\tremoveListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t(l: ViewOptionListener) => listener !== l,\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport function useScorecardViewStateValue<\n\tValueType extends ScorecardViewOptions[keyof ScorecardViewOptions],\n>(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [value, setValue] = useState<ValueType>(\n\t\tget(viewEngine.options, key) as ValueType,\n\t);\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addListener({\n\t\t\tkey,\n\t\t\tlistener(value) {\n\t\t\t\tsetValue(value as ValueType);\n\t\t\t},\n\t\t});\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\treturn value;\n}\n\nexport function useScorecardViewOptions() {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [options, setOptions] = useState<ScorecardViewOptions>(\n\t\tviewEngine.options,\n\t);\n\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addOptionListener(setOptions);\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\n\treturn options;\n}\n\nexport function useUpdateScorecardViewState(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\treturn (value: ScorecardViewOptions[keyof ScorecardViewOptions]) => {\n\t\tviewEngine.updateOption(key, value);\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../../src/utils/viewState.ts"],"names":["set","useScorecardViewStateEngine","useState","get","useEffect","value"],"mappings":"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","file":"viewState.js","sourcesContent":["import type { ScorecardViewOptions } from \"../schemas/config\";\nimport { get, set } from \"lodash\";\nimport { useScorecardViewStateEngine } from \"../components\";\nimport { useEffect, useState } from \"react\";\n\nexport type ViewOptionListener = {\n\tkey: keyof ScorecardViewOptions;\n\tlistener: (\n\t\tvalue?: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t) => void;\n};\n\nexport type ScorecardViewStateEngine = ReturnType<\n\ttypeof createScorecardViewStateEngine\n>;\n\nexport function createScorecardViewStateEngine(\n\tdefaultOptions: ScorecardViewOptions,\n) {\n\treturn {\n\t\toptions: defaultOptions as ScorecardViewOptions,\n\t\tlisteners: [] as ViewOptionListener[],\n\t\toptionsListeners: [] as Array<(options: ScorecardViewOptions) => void>,\n\t\tupdateOption(\n\t\t\tkey: keyof ScorecardViewOptions,\n\t\t\tvalue: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t\t) {\n\t\t\tset(this.options, key, value);\n\t\t\tconst listeners: ViewOptionListener[] = this.listeners.filter(\n\t\t\t\t(listener: ViewOptionListener) => listener.key === key,\n\t\t\t);\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener.listener(value);\n\t\t\t}\n\t\t\tfor (const listener of this.optionsListeners) {\n\t\t\t\tlistener(this.options);\n\t\t\t}\n\t\t},\n\t\tupdateOptions(options: ScorecardViewOptions) {\n\t\t\tthis.options = {\n\t\t\t\t...this.options,\n\t\t\t\t...options,\n\t\t\t};\n\t\t\tfor (const listener of this.listeners) {\n\t\t\t\tlistener.listener(options[listener.key]);\n\t\t\t}\n\t\t\tfor (const listener of this.optionsListeners) {\n\t\t\t\tlistener(this.options);\n\t\t\t}\n\t\t},\n\t\taddOptionListener(listener: (options: ScorecardViewOptions) => void) {\n\t\t\tthis.optionsListeners.push(listener);\n\n\t\t\treturn () => {\n\t\t\t\tthis.optionsListeners = this.optionsListeners.filter(\n\t\t\t\t\t(l: (options: ScorecardViewOptions) => void) =>\n\t\t\t\t\t\tl !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\taddListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t\t(l: ViewOptionListener) => l !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\tremoveListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t(l: ViewOptionListener) => listener !== l,\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport function useScorecardViewStateValue<\n\tValueType extends ScorecardViewOptions[keyof ScorecardViewOptions],\n>(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [value, setValue] = useState<ValueType>(\n\t\tget(viewEngine.options, key) as ValueType,\n\t);\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addListener({\n\t\t\tkey,\n\t\t\tlistener(value) {\n\t\t\t\tsetValue(value as ValueType);\n\t\t\t},\n\t\t});\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\treturn value;\n}\n\nexport function useScorecardViewOptions() {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [options, setOptions] = useState<ScorecardViewOptions>(\n\t\tviewEngine.options,\n\t);\n\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addOptionListener(setOptions);\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\n\treturn options;\n}\n\nexport function useUpdateScorecardViewState(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\treturn (value: ScorecardViewOptions[keyof ScorecardViewOptions]) => {\n\t\tviewEngine.updateOption(key, value);\n\t};\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hisptz/dhis2-scorecard",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/types/index.d.ts",