react-native-maplibre-gl-js 1.23.2 → 1.23.3
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/module/communication/messages.utils.js +61 -0
- package/lib/module/communication/messages.utils.js.map +1 -1
- package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.js +33 -30
- package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.js.map +1 -1
- package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.utils.js +8 -61
- package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.utils.js.map +1 -1
- package/lib/module/react-native/components-factories/hooks/useWebObjectMethodsProxy.js +1 -1
- package/lib/module/react-native/components-factories/hooks/useWebObjectMethodsProxy.js.map +1 -1
- package/lib/typescript/src/communication/messages.utils.d.ts +4 -1
- package/lib/typescript/src/communication/messages.utils.d.ts.map +1 -1
- package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.d.ts.map +1 -1
- package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.utils.d.ts +1 -4
- package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.utils.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -25,4 +25,65 @@ export const isWebObjectListenerOnHTMLElement = listener => {
|
|
|
25
25
|
return 'elementListener' in listener;
|
|
26
26
|
};
|
|
27
27
|
export const getHTMLElementDescriptorListenerName = listener => `${listener.eventName}${listener.cssSelector}`;
|
|
28
|
+
export const removeHTMLElementListeners = (options, optionsThatAreHTMLElements) => {
|
|
29
|
+
if (!options || typeof options !== 'object') {
|
|
30
|
+
return options;
|
|
31
|
+
}
|
|
32
|
+
if (Array.isArray(options)) {
|
|
33
|
+
return options.map(opt => removeHTMLElementListeners(opt, optionsThatAreHTMLElements));
|
|
34
|
+
}
|
|
35
|
+
const result = {};
|
|
36
|
+
for (const key in options) {
|
|
37
|
+
if (optionsThatAreHTMLElements.includes(key) && Array.isArray(options[key]?.listeners)) {
|
|
38
|
+
result[key] = {
|
|
39
|
+
...options[key],
|
|
40
|
+
listeners: options[key].listeners.map(({
|
|
41
|
+
cssSelector,
|
|
42
|
+
eventName
|
|
43
|
+
}) => ({
|
|
44
|
+
cssSelector,
|
|
45
|
+
eventName
|
|
46
|
+
}))
|
|
47
|
+
};
|
|
48
|
+
} else {
|
|
49
|
+
result[key] = removeHTMLElementListeners(options[key], optionsThatAreHTMLElements);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
};
|
|
54
|
+
export const extractHTMLElementListenersFromOptions = (options, optionsThatAreHTMLElements) => {
|
|
55
|
+
let callbacks = {};
|
|
56
|
+
for (const key of optionsThatAreHTMLElements) {
|
|
57
|
+
callbacks = {
|
|
58
|
+
...callbacks,
|
|
59
|
+
...extractHTMLElementListenersFromDescriptor(options?.[key])
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return callbacks;
|
|
63
|
+
};
|
|
64
|
+
export const extractHTMLElementListenersFromMethodArgs = methodArgs => {
|
|
65
|
+
let callbacks = {};
|
|
66
|
+
for (const arg of methodArgs) {
|
|
67
|
+
// TODO we need a more robust way to identify HTMLElements. A class for
|
|
68
|
+
// HTMLElementDescriptor could be created.
|
|
69
|
+
if (!arg?.listeners) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
callbacks = {
|
|
73
|
+
...callbacks,
|
|
74
|
+
...extractHTMLElementListenersFromDescriptor(arg)
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
return callbacks;
|
|
78
|
+
};
|
|
79
|
+
const extractHTMLElementListenersFromDescriptor = htmlElement => {
|
|
80
|
+
const callbacks = {};
|
|
81
|
+
const htmlListeners = htmlElement?.listeners;
|
|
82
|
+
htmlListeners?.forEach(listener => {
|
|
83
|
+
callbacks[getHTMLElementDescriptorListenerName(listener)] = {
|
|
84
|
+
elementListener: listener.callback
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
return callbacks;
|
|
88
|
+
};
|
|
28
89
|
//# sourceMappingURL=messages.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isWebObjectListenerOnRN","listener","isWebObjectListenerOnObject","isWebObjectListenerOnMapLayer","isWebObjectListenerOnHTMLElement","getHTMLElementDescriptorListenerName","eventName","cssSelector"],"sourceRoot":"../../../src","sources":["communication/messages.utils.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["isWebObjectListenerOnRN","listener","isWebObjectListenerOnObject","isWebObjectListenerOnMapLayer","isWebObjectListenerOnHTMLElement","getHTMLElementDescriptorListenerName","eventName","cssSelector","removeHTMLElementListeners","options","optionsThatAreHTMLElements","Array","isArray","map","opt","result","key","includes","listeners","extractHTMLElementListenersFromOptions","callbacks","extractHTMLElementListenersFromDescriptor","extractHTMLElementListenersFromMethodArgs","methodArgs","arg","htmlElement","htmlListeners","forEach","elementListener","callback"],"sourceRoot":"../../../src","sources":["communication/messages.utils.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
4
|
import useMapAtoms from "../../hooks/atoms/useMapAtoms.js";
|
|
5
|
-
import {
|
|
5
|
+
import { useStableValue } from "./useMountUnmountUpdateCallbacks.utils.js";
|
|
6
|
+
import { extractHTMLElementListenersFromOptions, removeHTMLElementListeners } from "../../../communication/messages.utils.js";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* @param input - The RN object props, etc.
|
|
@@ -19,24 +20,26 @@ const useMountUnmountUpdateCallbacks = input => {
|
|
|
19
20
|
setMapSourceListeners,
|
|
20
21
|
deleteMapSourceListeners
|
|
21
22
|
} = useMapAtoms();
|
|
23
|
+
// Behaviors.
|
|
24
|
+
const stableInput = useStableValue(input);
|
|
22
25
|
const mount = useCallback(() => {
|
|
23
|
-
switch (
|
|
26
|
+
switch (stableInput.type) {
|
|
24
27
|
case 'webObject':
|
|
25
28
|
{
|
|
26
29
|
dispatchMessage({
|
|
27
30
|
type: `webObjectMount`,
|
|
28
31
|
payload: {
|
|
29
|
-
options: removeHTMLElementListeners(
|
|
30
|
-
listeners:
|
|
31
|
-
objectId:
|
|
32
|
-
objectType:
|
|
32
|
+
options: removeHTMLElementListeners(stableInput.props.options, stableInput.optionsThatAreHTMLElements),
|
|
33
|
+
listeners: stableInput.props.listeners,
|
|
34
|
+
objectId: stableInput.objectId,
|
|
35
|
+
objectType: stableInput.objectType
|
|
33
36
|
}
|
|
34
37
|
});
|
|
35
38
|
setWebObjectListeners({
|
|
36
|
-
objectId:
|
|
39
|
+
objectId: stableInput.objectId,
|
|
37
40
|
listeners: {
|
|
38
|
-
...(
|
|
39
|
-
...extractHTMLElementListenersFromOptions(
|
|
41
|
+
...(stableInput.props.listeners ?? {}),
|
|
42
|
+
...extractHTMLElementListenersFromOptions(stableInput.props.options, stableInput.optionsThatAreHTMLElements)
|
|
40
43
|
}
|
|
41
44
|
});
|
|
42
45
|
break;
|
|
@@ -45,11 +48,11 @@ const useMountUnmountUpdateCallbacks = input => {
|
|
|
45
48
|
{
|
|
46
49
|
dispatchMessage({
|
|
47
50
|
type: `mapSourceMount`,
|
|
48
|
-
payload:
|
|
51
|
+
payload: stableInput.props
|
|
49
52
|
});
|
|
50
53
|
setMapSourceListeners({
|
|
51
|
-
sourceId:
|
|
52
|
-
listeners:
|
|
54
|
+
sourceId: stableInput.props.id,
|
|
55
|
+
listeners: stableInput.props.layers.map(item => item.listeners ? {
|
|
53
56
|
layerId: item.layer.id,
|
|
54
57
|
listeners: item.listeners
|
|
55
58
|
} : undefined).filter(item => item !== undefined) ?? []
|
|
@@ -57,23 +60,23 @@ const useMountUnmountUpdateCallbacks = input => {
|
|
|
57
60
|
break;
|
|
58
61
|
}
|
|
59
62
|
}
|
|
60
|
-
}, [
|
|
63
|
+
}, [stableInput, dispatchMessage, setWebObjectListeners, setMapSourceListeners]);
|
|
61
64
|
const update = useCallback(() => {
|
|
62
|
-
switch (
|
|
65
|
+
switch (stableInput.type) {
|
|
63
66
|
case 'webObject':
|
|
64
67
|
{
|
|
65
68
|
dispatchMessage({
|
|
66
69
|
type: `webObjectUpdate`,
|
|
67
70
|
payload: {
|
|
68
|
-
options:
|
|
69
|
-
listeners:
|
|
70
|
-
objectId:
|
|
71
|
-
objectType:
|
|
71
|
+
options: stableInput.props.options,
|
|
72
|
+
listeners: stableInput.props.listeners,
|
|
73
|
+
objectId: stableInput.objectId,
|
|
74
|
+
objectType: stableInput.objectType
|
|
72
75
|
}
|
|
73
76
|
});
|
|
74
77
|
setWebObjectListeners({
|
|
75
|
-
objectId:
|
|
76
|
-
listeners:
|
|
78
|
+
objectId: stableInput.objectId,
|
|
79
|
+
listeners: stableInput.props.listeners ?? {}
|
|
77
80
|
});
|
|
78
81
|
break;
|
|
79
82
|
}
|
|
@@ -81,11 +84,11 @@ const useMountUnmountUpdateCallbacks = input => {
|
|
|
81
84
|
{
|
|
82
85
|
dispatchMessage({
|
|
83
86
|
type: `mapSourceUpdate`,
|
|
84
|
-
payload:
|
|
87
|
+
payload: stableInput.props
|
|
85
88
|
});
|
|
86
89
|
setMapSourceListeners({
|
|
87
|
-
sourceId:
|
|
88
|
-
listeners:
|
|
90
|
+
sourceId: stableInput.props.id,
|
|
91
|
+
listeners: stableInput.props.layers.map(item => item.listeners ? {
|
|
89
92
|
layerId: item.layer.id,
|
|
90
93
|
listeners: item.listeners
|
|
91
94
|
} : undefined).filter(item => item !== undefined) ?? []
|
|
@@ -93,19 +96,19 @@ const useMountUnmountUpdateCallbacks = input => {
|
|
|
93
96
|
break;
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
|
-
}, [
|
|
99
|
+
}, [stableInput, dispatchMessage, setWebObjectListeners, setMapSourceListeners]);
|
|
97
100
|
const unmount = useCallback(() => {
|
|
98
|
-
switch (
|
|
101
|
+
switch (stableInput.type) {
|
|
99
102
|
case 'webObject':
|
|
100
103
|
{
|
|
101
104
|
dispatchMessage({
|
|
102
105
|
type: `webObjectUnmount`,
|
|
103
106
|
payload: {
|
|
104
|
-
objectId:
|
|
107
|
+
objectId: stableInput.objectId
|
|
105
108
|
}
|
|
106
109
|
});
|
|
107
110
|
deleteWebObjectListeners({
|
|
108
|
-
objectId:
|
|
111
|
+
objectId: stableInput.objectId
|
|
109
112
|
});
|
|
110
113
|
break;
|
|
111
114
|
}
|
|
@@ -114,16 +117,16 @@ const useMountUnmountUpdateCallbacks = input => {
|
|
|
114
117
|
dispatchMessage({
|
|
115
118
|
type: `mapSourceUnmount`,
|
|
116
119
|
payload: {
|
|
117
|
-
sourceId:
|
|
120
|
+
sourceId: stableInput.props.id
|
|
118
121
|
}
|
|
119
122
|
});
|
|
120
123
|
deleteMapSourceListeners({
|
|
121
|
-
sourceId:
|
|
124
|
+
sourceId: stableInput.props.id
|
|
122
125
|
});
|
|
123
126
|
break;
|
|
124
127
|
}
|
|
125
128
|
}
|
|
126
|
-
}, [
|
|
129
|
+
}, [stableInput, dispatchMessage, deleteWebObjectListeners, deleteMapSourceListeners]);
|
|
127
130
|
return {
|
|
128
131
|
mount,
|
|
129
132
|
update,
|
package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useMapAtoms","extractHTMLElementListenersFromOptions","removeHTMLElementListeners","useMountUnmountUpdateCallbacks","input","dispatchMessage","setWebObjectListeners","deleteWebObjectListeners","setMapSourceListeners","deleteMapSourceListeners","mount","type","payload","options","props","optionsThatAreHTMLElements","listeners","objectId","objectType","sourceId","id","layers","map","item","layerId","layer","undefined","filter","update","unmount"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AAEnC,OAAOC,WAAW,MAAM,kCAA+B;AACvD,SACEC,sCAAsC,EACtCC,0BAA0B,QACrB,
|
|
1
|
+
{"version":3,"names":["useCallback","useMapAtoms","useStableValue","extractHTMLElementListenersFromOptions","removeHTMLElementListeners","useMountUnmountUpdateCallbacks","input","dispatchMessage","setWebObjectListeners","deleteWebObjectListeners","setMapSourceListeners","deleteMapSourceListeners","stableInput","mount","type","payload","options","props","optionsThatAreHTMLElements","listeners","objectId","objectType","sourceId","id","layers","map","item","layerId","layer","undefined","filter","update","unmount"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.utils.js
CHANGED
|
@@ -1,65 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const result = {};
|
|
12
|
-
for (const key in options) {
|
|
13
|
-
if (optionsThatAreHTMLElements.includes(key) && Array.isArray(options[key]?.listeners)) {
|
|
14
|
-
result[key] = {
|
|
15
|
-
...options[key],
|
|
16
|
-
listeners: options[key].listeners.map(({
|
|
17
|
-
cssSelector,
|
|
18
|
-
eventName
|
|
19
|
-
}) => ({
|
|
20
|
-
cssSelector,
|
|
21
|
-
eventName
|
|
22
|
-
}))
|
|
23
|
-
};
|
|
24
|
-
} else {
|
|
25
|
-
result[key] = removeHTMLElementListeners(options[key], optionsThatAreHTMLElements);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return result;
|
|
29
|
-
};
|
|
30
|
-
export const extractHTMLElementListenersFromOptions = (options, optionsThatAreHTMLElements) => {
|
|
31
|
-
let callbacks = {};
|
|
32
|
-
for (const key of optionsThatAreHTMLElements) {
|
|
33
|
-
callbacks = {
|
|
34
|
-
...callbacks,
|
|
35
|
-
...extractHTMLElementListenersFromDescriptor(options?.[key])
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
return callbacks;
|
|
39
|
-
};
|
|
40
|
-
export const extractHTMLElementListenersFromMethodArgs = methodArgs => {
|
|
41
|
-
let callbacks = {};
|
|
42
|
-
for (const arg of methodArgs) {
|
|
43
|
-
// TODO we need a more robust way to identify HTMLElements. A class for
|
|
44
|
-
// HTMLElementDescriptor could be created.
|
|
45
|
-
if (!arg?.listeners) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
callbacks = {
|
|
49
|
-
...callbacks,
|
|
50
|
-
...extractHTMLElementListenersFromDescriptor(arg)
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
return callbacks;
|
|
54
|
-
};
|
|
55
|
-
const extractHTMLElementListenersFromDescriptor = htmlElement => {
|
|
56
|
-
const callbacks = {};
|
|
57
|
-
const htmlListeners = htmlElement?.listeners;
|
|
58
|
-
htmlListeners?.forEach(listener => {
|
|
59
|
-
callbacks[getHTMLElementDescriptorListenerName(listener)] = {
|
|
60
|
-
elementListener: listener.callback
|
|
61
|
-
};
|
|
62
|
-
});
|
|
63
|
-
return callbacks;
|
|
3
|
+
import { useRef } from 'react';
|
|
4
|
+
import equal from 'fast-deep-equal';
|
|
5
|
+
export const useStableValue = value => {
|
|
6
|
+
const ref = useRef(value);
|
|
7
|
+
if (!equal(ref.current, value)) {
|
|
8
|
+
ref.current = value;
|
|
9
|
+
}
|
|
10
|
+
return ref.current;
|
|
64
11
|
};
|
|
65
12
|
//# sourceMappingURL=useMountUnmountUpdateCallbacks.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useRef","equal","useStableValue","value","ref","current"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.utils.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,OAAO;AAC9B,OAAOC,KAAK,MAAM,iBAAiB;AAEnC,OAAO,MAAMC,cAAc,GAAOC,KAAQ,IAAQ;EAChD,MAAMC,GAAG,GAAGJ,MAAM,CAAIG,KAAK,CAAC;EAC5B,IAAI,CAACF,KAAK,CAACG,GAAG,CAACC,OAAO,EAAEF,KAAK,CAAC,EAAE;IAC9BC,GAAG,CAACC,OAAO,GAAGF,KAAK;EACrB;EACA,OAAOC,GAAG,CAACC,OAAO;AACpB,CAAC","ignoreList":[]}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { useCallback, useImperativeHandle, useMemo, useRef } from 'react';
|
|
4
4
|
import useMapAtoms from "../../hooks/atoms/useMapAtoms.js";
|
|
5
|
-
import { extractHTMLElementListenersFromMethodArgs } from "./useMountUnmountUpdateCallbacks.utils.js";
|
|
6
5
|
import { genRequestId } from "./useWebObjectMethodsProxy.utils.js";
|
|
6
|
+
import { extractHTMLElementListenersFromMethodArgs } from "../../../communication/messages.utils.js";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Create a proxy to call the methods of the corresponding web world object,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useImperativeHandle","useMemo","useRef","useMapAtoms","
|
|
1
|
+
{"version":3,"names":["useCallback","useImperativeHandle","useMemo","useRef","useMapAtoms","genRequestId","extractHTMLElementListenersFromMethodArgs","useWebObjectMethodsProxy","ref","objectId","methodsThatContainHTMLElements","methodsThatContainHTMLElementsRef","dispatchMessage","setWebObjectPendingMethodResponse","updateWebObjectListeners","createProxy","Proxy","get","_","propKey","args","Promise","resolve","requestId","current","includes","newListeners","type","payload","method","methodsProxy"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useWebObjectMethodsProxy.ts"],"mappings":";;AAAA,SAEEA,WAAW,EACXC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,QACD,OAAO;AAKd,OAAOC,WAAW,MAAM,kCAA+B;AACvD,SAASC,YAAY,QAAQ,qCAAkC;AAC/D,SAASC,yCAAyC,QAAQ,0CAAuC;;AAEjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,GAAGA,CACtCC,GAAsB,EACtBC,QAAqB,EACrBC,8BAAiD,KAC9C;EACH;EACA,MAAMC,iCAAiC,GAAGR,MAAM,CAC9CO,8BACF,CAAC;EACD;EACA;EACA,MAAM;IACJE,eAAe;IACfC,iCAAiC;IACjCC;EACF,CAAC,GAAGV,WAAW,CAAC,CAAC;EAEjB,MAAMW,WAAW,GAAGf,WAAW,CAAC,MAAW;IACzC,OAAO,IAAIgB,KAAK,CACd,CAAC,CAAC,EACF;MACEC,GAAGA,CAACC,CAAC,EAAEC,OAAO,EAAE;QACd,IAAIA,OAAO,KAAK,OAAO,EAAE;UACvB,OAAO,MAAMV,QAAQ;QACvB;QACA,OAAO,CAAC,GAAGW,IAAW,KAAK;UACzB,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;YAC9B,MAAMC,SAAS,GAAGlB,YAAY,CAAC,CAAC;YAChC;YACA,IACEM,iCAAiC,CAACa,OAAO,CAACC,QAAQ,CAChDN,OACF,CAAC,EACD;cACAL,wBAAwB,CAAC;gBACvBL,QAAQ;gBACRiB,YAAY,EAAEpB,yCAAyC,CAACc,IAAI;cAC9D,CAAC,CAAC;YACJ;YACA;YACAP,iCAAiC,CAAC;cAAEU,SAAS;cAAED;YAAQ,CAAC,CAAC;YACzD;YACAV,eAAe,CAAC;cACde,IAAI,EAAE,qBAAqB;cAC3BC,OAAO,EAAE;gBACPL,SAAS;gBACTd,QAAQ;gBACRoB,MAAM,EAAEV,OAAiB;gBACzBC;cACF;YACF,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC;MACH;IACF,CACF,CAAC;EACH,CAAC,EAAE,CACDX,QAAQ,EACRI,iCAAiC,EACjCD,eAAe,EACfE,wBAAwB,CACzB,CAAC;EAEF,MAAMgB,YAAY,GAAG5B,OAAO,CAAC,MAAMa,WAAW,CAAC,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAChE;EACAd,mBAAmB,CAACO,GAAG,EAAE,MAAMsB,YAAY,CAAC;AAC9C,CAAC;AAED,eAAevB,wBAAwB","ignoreList":[]}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import type { WebObjectListenerOnHTMLElement, WebObjectListenerOnMapLayer, WebObjectListenerOnObject, WebObjectListenerOnRN } from '../react-native/components-factories/web-objects/createWebObjectAsComponent.types';
|
|
1
|
+
import type { WebObjectListenerOnHTMLElement, WebObjectListenerOnMapLayer, WebObjectListenerOnObject, WebObjectListenerOnRN, WebObjectListeners } from '../react-native/components-factories/web-objects/createWebObjectAsComponent.types';
|
|
2
2
|
import type { HTMLElementDescriptorListener } from './messages.types';
|
|
3
3
|
export declare const isWebObjectListenerOnRN: (listener?: WebObjectListenerOnRN<any> | WebObjectListenerOnObject<any> | WebObjectListenerOnHTMLElement<any> | WebObjectListenerOnMapLayer<any>) => boolean;
|
|
4
4
|
export declare const isWebObjectListenerOnObject: (listener?: WebObjectListenerOnRN<any> | WebObjectListenerOnObject<any> | WebObjectListenerOnHTMLElement<any> | WebObjectListenerOnMapLayer<any>) => boolean;
|
|
5
5
|
export declare const isWebObjectListenerOnMapLayer: (listener?: WebObjectListenerOnRN<any> | WebObjectListenerOnObject<any> | WebObjectListenerOnHTMLElement<any> | WebObjectListenerOnMapLayer<any>) => boolean;
|
|
6
6
|
export declare const isWebObjectListenerOnHTMLElement: (listener?: WebObjectListenerOnRN<any> | WebObjectListenerOnObject<any> | WebObjectListenerOnHTMLElement<any> | WebObjectListenerOnMapLayer<any>) => boolean;
|
|
7
7
|
export declare const getHTMLElementDescriptorListenerName: (listener: HTMLElementDescriptorListener) => string;
|
|
8
|
+
export declare const removeHTMLElementListeners: (options: any, optionsThatAreHTMLElements: readonly string[]) => any;
|
|
9
|
+
export declare const extractHTMLElementListenersFromOptions: (options: any, optionsThatAreHTMLElements: readonly string[]) => WebObjectListeners;
|
|
10
|
+
export declare const extractHTMLElementListenersFromMethodArgs: (methodArgs: any[]) => WebObjectListeners;
|
|
8
11
|
//# sourceMappingURL=messages.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.utils.d.ts","sourceRoot":"","sources":["../../../../src/communication/messages.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"messages.utils.d.ts","sourceRoot":"","sources":["../../../../src/communication/messages.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,mFAAmF,CAAA;AAC1F,OAAO,KAAK,EAEV,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AAEzB,eAAO,MAAM,uBAAuB,GAClC,WACI,qBAAqB,CAAC,GAAG,CAAC,GAC1B,yBAAyB,CAAC,GAAG,CAAC,GAC9B,8BAA8B,CAAC,GAAG,CAAC,GACnC,2BAA2B,CAAC,GAAG,CAAC,KACnC,OAKF,CAAA;AAED,eAAO,MAAM,2BAA2B,GACtC,WACI,qBAAqB,CAAC,GAAG,CAAC,GAC1B,yBAAyB,CAAC,GAAG,CAAC,GAC9B,8BAA8B,CAAC,GAAG,CAAC,GACnC,2BAA2B,CAAC,GAAG,CAAC,KACnC,OAKF,CAAA;AAED,eAAO,MAAM,6BAA6B,GACxC,WACI,qBAAqB,CAAC,GAAG,CAAC,GAC1B,yBAAyB,CAAC,GAAG,CAAC,GAC9B,8BAA8B,CAAC,GAAG,CAAC,GACnC,2BAA2B,CAAC,GAAG,CAAC,KACnC,OAKF,CAAA;AAED,eAAO,MAAM,gCAAgC,GAC3C,WACI,qBAAqB,CAAC,GAAG,CAAC,GAC1B,yBAAyB,CAAC,GAAG,CAAC,GAC9B,8BAA8B,CAAC,GAAG,CAAC,GACnC,2BAA2B,CAAC,GAAG,CAAC,KACnC,OAKF,CAAA;AAED,eAAO,MAAM,oCAAoC,GAC/C,UAAU,6BAA6B,KACtC,MAAwD,CAAA;AAE3D,eAAO,MAAM,0BAA0B,GACrC,SAAS,GAAG,EACZ,4BAA4B,SAAS,MAAM,EAAE,KAC5C,GAiCF,CAAA;AAED,eAAO,MAAM,sCAAsC,GACjD,SAAS,GAAG,EACZ,4BAA4B,SAAS,MAAM,EAAE,KAC5C,kBAWF,CAAA;AAED,eAAO,MAAM,yCAAyC,GACpD,YAAY,GAAG,EAAE,KAChB,kBAgBF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMountUnmountUpdateCallbacks.d.ts","sourceRoot":"","sources":["../../../../../../src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"useMountUnmountUpdateCallbacks.d.ts","sourceRoot":"","sources":["../../../../../../src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;AAQrF;;;;GAIG;AACH,QAAA,MAAM,8BAA8B,GAAI,OAAO,uBAAuB;;;;CA+IrE,CAAA;AAED,eAAe,8BAA8B,CAAA"}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const removeHTMLElementListeners: (options: any, optionsThatAreHTMLElements: readonly string[]) => any;
|
|
3
|
-
export declare const extractHTMLElementListenersFromOptions: (options: any, optionsThatAreHTMLElements: readonly string[]) => WebObjectListeners;
|
|
4
|
-
export declare const extractHTMLElementListenersFromMethodArgs: (methodArgs: any[]) => WebObjectListeners;
|
|
1
|
+
export declare const useStableValue: <T>(value: T) => T;
|
|
5
2
|
//# sourceMappingURL=useMountUnmountUpdateCallbacks.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMountUnmountUpdateCallbacks.utils.d.ts","sourceRoot":"","sources":["../../../../../../src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMountUnmountUpdateCallbacks.utils.d.ts","sourceRoot":"","sources":["../../../../../../src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CAM5C,CAAA"}
|
package/package.json
CHANGED