@adcops/autocore-react 3.3.6 → 3.3.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoCoreTag.d.ts","sourceRoot":"","sources":["../../src/hooks/useAutoCoreTag.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEzF,wBAAgB,oBAAoB,CAAC,IAAI,SAAS,SAAS,SAAS,EAAE,EACpE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAC3D,IAAI,EAAE,IAAI;8BAYc,CAAC,2CAA4B,CAAC;;;;;;;+BAyB7B,CAAC,4CAA6B,SAAS,CAAC,EAAE;4BAOrD,CAAC;;kCAY6B,CAAC;;;iCAUlB,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,mBAAM,CAAC,KAAK,CAAC,SAAQ,GAAG,EAAE;;;;;;;uCAW7C,MAAM;;EAKlD"}
1
+ {"version":3,"file":"useAutoCoreTag.d.ts","sourceRoot":"","sources":["../../src/hooks/useAutoCoreTag.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEzF,wBAAgB,oBAAoB,CAAC,IAAI,SAAS,SAAS,SAAS,EAAE,EAClE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAC3D,IAAI,EAAE,IAAI;8BAYc,CAAC,2CAA4B,CAAC;;;;;;;+BAyB7B,CAAC,4CAA6B,SAAS,CAAC,EAAE;4BAO/C,CAAC;;kCAYyB,CAAC;;;iCAUpB,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,mBAAM,CAAC,KAAK,CAAC,SAAQ,GAAG,EAAE;;;;;;;uCAW3C,MAAM;;EAKtD"}
@@ -1 +1 @@
1
- import{useCallback,useContext,useMemo}from"react";export function makeAutoCoreTagHooks(e,a){return{useAutoCoreTag:s=>{const{values:t,rawValues:u,isLoading:o,write:r,tap:n}=useContext(e),l=(e=>a.find(a=>a.fqdn===e))(s);if(!l)throw new Error(`useAutoCoreTag: unknown tagName '${String(s)}'`);const i=useCallback(e=>r(s,e),[r,s]),c=useCallback(()=>n?.(s),[n,s]);return{value:t[s],rawValue:u[s],write:i,tap:c,isLoading:o}},useAutoCoreTags:a=>{const{values:s,rawValues:t,isLoading:u,write:o}=useContext(e);return{values:useMemo(()=>Object.fromEntries(a.map(e=>[e,s[e]])),[s,a]),rawValues:useMemo(()=>Object.fromEntries(a.map(e=>[e,t[e]])),[t,a]),write:useCallback(async(e,a)=>{await o(e,a)},[o]),isLoading:u}},useAutoCoreSelect:(a,s=[])=>{const{values:t,isLoading:u}=useContext(e);return{selected:useMemo(()=>a(t),[t,...s]),isLoading:u}},useScales:()=>{const{scales:a,updateScale:s}=useContext(e),t=useCallback(e=>a[e],[a]);return{scales:a,updateScale:s,getScale:t}}}}
1
+ import{useCallback,useContext,useMemo}from"react";export function makeAutoCoreTagHooks(e,a){return{useAutoCoreTag:t=>{const{values:s,rawValues:u,isLoading:o,write:r,tap:n}=useContext(e),l=(e=>a.find(a=>a.tagName===e))(t);if(!l)throw new Error(`useAutoCoreTag: unknown tagName '${String(t)}'`);const i=useCallback(e=>r(t,e),[r,t]),c=useCallback(()=>n?.(t),[n,t]);return{value:s[t],rawValue:u[t],write:i,tap:c,isLoading:o}},useAutoCoreTags:a=>{const{values:t,rawValues:s,isLoading:u,write:o}=useContext(e);return{values:useMemo(()=>Object.fromEntries(a.map(e=>[e,t[e]])),[t,a]),rawValues:useMemo(()=>Object.fromEntries(a.map(e=>[e,s[e]])),[s,a]),write:useCallback(async(e,a)=>{await o(e,a)},[o]),isLoading:u}},useAutoCoreSelect:(a,t=[])=>{const{values:s,isLoading:u}=useContext(e);return{selected:useMemo(()=>a(s),[s,...t]),isLoading:u}},useScales:()=>{const{scales:a,updateScale:t}=useContext(e),s=useCallback(e=>a[e],[a]);return{scales:a,updateScale:t,getScale:s}}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adcops/autocore-react",
3
- "version": "3.3.6",
3
+ "version": "3.3.8",
4
4
  "description": "A React component library for industrial user interfaces.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -2,7 +2,7 @@
2
2
  * Copyright (C) 2025 Automated Design Corp.. All Rights Reserved.
3
3
  * Created Date: 2025-09-05 08:03:32
4
4
  * -----
5
- * Last Modified: 2026-01-29 09:33:40
5
+ * Last Modified: 2026-03-05 06:27:56
6
6
  * -----
7
7
  *
8
8
  */
@@ -17,87 +17,87 @@ import { useCallback, useContext, useMemo } from "react";
17
17
  import type { BaseContextValue, TagConfig, TagValueMap } from "../core/AutoCoreTagTypes";
18
18
 
19
19
  export function makeAutoCoreTagHooks<Spec extends readonly TagConfig[]>(
20
- Context: React.Context<BaseContextValue<TagValueMap<Spec>>>,
21
- tags: Spec
20
+ Context: React.Context<BaseContextValue<TagValueMap<Spec>>>,
21
+ tags: Spec
22
22
  ) {
23
- type VMap = TagValueMap<Spec>;
24
- type TagNames = keyof VMap & string;
25
-
26
- const findCfg = (tagName: string) =>
27
- tags.find(t => t.fqdn === tagName) as (Spec[number] | undefined);
28
-
29
- /**
30
- * Access a single tag by name.
31
- * Returns current value, raw value, direct server writer, and tap helper.
32
- */
33
- const useAutoCoreTag = <K extends TagNames>(tagName: K) => {
34
- const { values, rawValues, isLoading, write: ctxWrite, tap: ctxTap } = useContext(Context);
35
-
36
- const cfg = findCfg(tagName as string);
37
- if (!cfg) throw new Error(`useAutoCoreTag: unknown tagName '${String(tagName)}'`);
38
-
39
- const write = useCallback(
40
- (displayValue: VMap[K]) => ctxWrite(tagName, displayValue),
41
- [ctxWrite, tagName]
42
- );
43
-
44
- const tap = useCallback(() => ctxTap?.(tagName), [ctxTap, tagName]);
45
-
46
- return {
47
- value: values[tagName] as VMap[K],
48
- rawValue: rawValues[tagName as string],
49
- write,
50
- tap,
51
- isLoading,
52
- } as const;
53
- };
54
-
55
- /**
56
- * Access multiple tags at once with a bulk writer.
57
- */
58
- const useAutoCoreTags = <K extends TagNames>(tagNames: readonly K[]) => {
59
- const { values, rawValues, isLoading, write: ctxWrite } = useContext(Context);
60
-
61
- const subset = useMemo(
62
- () =>
63
- Object.fromEntries(
64
- tagNames.map(k => [k, values[k] as VMap[K]])
65
- ) as { [P in K]: VMap[P] },
66
- [values, tagNames]
67
- );
68
-
69
- const rawSubset = useMemo(
70
- () =>
71
- Object.fromEntries(
72
- tagNames.map(k => [k, rawValues[k as string]])
73
- ) as { [P in K]: unknown },
74
- [rawValues, tagNames]
75
- );
76
-
77
- const write = useCallback(async (tagName: K, value: VMap[K]) => {
78
- await ctxWrite(tagName, value);
79
- }, [ctxWrite]);
80
-
81
- return { values: subset, rawValues: rawSubset, write, isLoading } as const;
82
- };
83
-
84
- /**
85
- * Compute a derived value from the full tag state.
86
- */
87
- const useAutoCoreSelect = <R>(selector: (all: Readonly<Partial<VMap>>) => R, deps: any[] = []) => {
88
- const { values, isLoading } = useContext(Context);
89
- const selected = useMemo(() => selector(values), [values, ...deps]);
90
- return { selected, isLoading } as const;
91
- };
92
-
93
- /**
94
- * Access scale configurations and update functions.
95
- */
96
- const useScales = () => {
97
- const { scales, updateScale } = useContext(Context);
98
- const getScale = useCallback((scaleName: string) => scales[scaleName], [scales]);
99
- return { scales, updateScale, getScale } as const;
100
- };
101
-
102
- return { useAutoCoreTag, useAutoCoreTags, useAutoCoreSelect, useScales } as const;
23
+ type VMap = TagValueMap<Spec>;
24
+ type TagNames = keyof VMap & string;
25
+
26
+ const findCfg = (tagName: string) =>
27
+ tags.find(t => t.tagName === tagName) as (Spec[number] | undefined);
28
+
29
+ /**
30
+ * Access a single tag by name.
31
+ * Returns current value, raw value, direct server writer, and tap helper.
32
+ */
33
+ const useAutoCoreTag = <K extends TagNames>(tagName: K) => {
34
+ const { values, rawValues, isLoading, write: ctxWrite, tap: ctxTap } = useContext(Context);
35
+
36
+ const cfg = findCfg(tagName as string);
37
+ if (!cfg) throw new Error(`useAutoCoreTag: unknown tagName '${String(tagName)}'`);
38
+
39
+ const write = useCallback(
40
+ (displayValue: VMap[K]) => ctxWrite(tagName, displayValue),
41
+ [ctxWrite, tagName]
42
+ );
43
+
44
+ const tap = useCallback(() => ctxTap?.(tagName), [ctxTap, tagName]);
45
+
46
+ return {
47
+ value: values[tagName] as VMap[K],
48
+ rawValue: rawValues[tagName as string],
49
+ write,
50
+ tap,
51
+ isLoading,
52
+ } as const;
53
+ };
54
+
55
+ /**
56
+ * Access multiple tags at once with a bulk writer.
57
+ */
58
+ const useAutoCoreTags = <K extends TagNames>(tagNames: readonly K[]) => {
59
+ const { values, rawValues, isLoading, write: ctxWrite } = useContext(Context);
60
+
61
+ const subset = useMemo(
62
+ () =>
63
+ Object.fromEntries(
64
+ tagNames.map(k => [k, values[k] as VMap[K]])
65
+ ) as { [P in K]: VMap[P] },
66
+ [values, tagNames]
67
+ );
68
+
69
+ const rawSubset = useMemo(
70
+ () =>
71
+ Object.fromEntries(
72
+ tagNames.map(k => [k, rawValues[k as string]])
73
+ ) as { [P in K]: unknown },
74
+ [rawValues, tagNames]
75
+ );
76
+
77
+ const write = useCallback(async (tagName: K, value: VMap[K]) => {
78
+ await ctxWrite(tagName, value);
79
+ }, [ctxWrite]);
80
+
81
+ return { values: subset, rawValues: rawSubset, write, isLoading } as const;
82
+ };
83
+
84
+ /**
85
+ * Compute a derived value from the full tag state.
86
+ */
87
+ const useAutoCoreSelect = <R>(selector: (all: Readonly<Partial<VMap>>) => R, deps: any[] = []) => {
88
+ const { values, isLoading } = useContext(Context);
89
+ const selected = useMemo(() => selector(values), [values, ...deps]);
90
+ return { selected, isLoading } as const;
91
+ };
92
+
93
+ /**
94
+ * Access scale configurations and update functions.
95
+ */
96
+ const useScales = () => {
97
+ const { scales, updateScale } = useContext(Context);
98
+ const getScale = useCallback((scaleName: string) => scales[scaleName], [scales]);
99
+ return { scales, updateScale, getScale } as const;
100
+ };
101
+
102
+ return { useAutoCoreTag, useAutoCoreTags, useAutoCoreSelect, useScales } as const;
103
103
  }