react-native-maplibre-gl-js 1.4.2 → 1.4.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.
Files changed (108) hide show
  1. package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.js +130 -0
  2. package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.js.map +1 -0
  3. package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.mock.js +12 -0
  4. package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.mock.js.map +1 -0
  5. package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.test.unit.js +220 -0
  6. package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.test.unit.js.map +1 -0
  7. package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.types.js +4 -0
  8. package/lib/module/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.types.js.map +1 -0
  9. package/lib/module/react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.js +42 -0
  10. package/lib/module/react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.js.map +1 -0
  11. package/lib/module/react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.mock.js +5 -0
  12. package/lib/module/react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.mock.js.map +1 -0
  13. package/lib/module/react-native/components-factories/{web-objects/hooks → hooks}/useWebObjectMethodsProxy.js +1 -1
  14. package/lib/module/react-native/components-factories/hooks/useWebObjectMethodsProxy.js.map +1 -0
  15. package/lib/module/react-native/components-factories/hooks/useWebObjectMethodsProxy.mock.js.map +1 -0
  16. package/lib/module/react-native/components-factories/map-sources/createMapSourceAsComponent.js +14 -2
  17. package/lib/module/react-native/components-factories/map-sources/createMapSourceAsComponent.js.map +1 -1
  18. package/lib/module/react-native/components-factories/map-sources/createMapSourceAsComponent.test.integration.js +92 -0
  19. package/lib/module/react-native/components-factories/map-sources/createMapSourceAsComponent.test.integration.js.map +1 -0
  20. package/lib/module/react-native/components-factories/map-sources/createMapSourceAsComponent.test.unit.js +30 -0
  21. package/lib/module/react-native/components-factories/map-sources/createMapSourceAsComponent.test.unit.js.map +1 -0
  22. package/lib/module/react-native/components-factories/web-objects/createWebObjectAsComponent.js +17 -5
  23. package/lib/module/react-native/components-factories/web-objects/createWebObjectAsComponent.js.map +1 -1
  24. package/lib/module/react-native/components-factories/web-objects/createWebObjectAsComponent.test.integration.js +24 -31
  25. package/lib/module/react-native/components-factories/web-objects/createWebObjectAsComponent.test.integration.js.map +1 -1
  26. package/lib/module/react-native/components-factories/web-objects/createWebObjectAsComponent.test.unit.js +6 -6
  27. package/lib/module/react-native/components-factories/web-objects/createWebObjectAsComponent.test.unit.js.map +1 -1
  28. package/lib/module/web/controllers/CoreController.js +6 -1
  29. package/lib/module/web/controllers/CoreController.js.map +1 -1
  30. package/lib/module/web/controllers/MapSourcesController.js +40 -48
  31. package/lib/module/web/controllers/MapSourcesController.js.map +1 -1
  32. package/lib/module/web/controllers/WebObjectsController.js +109 -70
  33. package/lib/module/web/controllers/WebObjectsController.js.map +1 -1
  34. package/lib/module/web/generated/webview_static_html.js +194 -142
  35. package/lib/module/web/generated/webview_static_html.js.map +1 -1
  36. package/lib/typescript/src/communication/messages.types.d.ts +14 -13
  37. package/lib/typescript/src/communication/messages.types.d.ts.map +1 -1
  38. package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.d.ts +13 -0
  39. package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.d.ts.map +1 -0
  40. package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.mock.d.ts +10 -0
  41. package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.mock.d.ts.map +1 -0
  42. package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.test.unit.d.ts +2 -0
  43. package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.test.unit.d.ts.map +1 -0
  44. package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.types.d.ts +17 -0
  45. package/lib/typescript/src/react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.types.d.ts.map +1 -0
  46. package/lib/typescript/src/react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.d.ts +9 -0
  47. package/lib/typescript/src/react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.d.ts.map +1 -0
  48. package/lib/typescript/src/react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.mock.d.ts +3 -0
  49. package/lib/typescript/src/react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.mock.d.ts.map +1 -0
  50. package/lib/typescript/src/react-native/components-factories/{web-objects/hooks → hooks}/useWebObjectMethodsProxy.d.ts +1 -1
  51. package/lib/typescript/src/react-native/components-factories/hooks/useWebObjectMethodsProxy.d.ts.map +1 -0
  52. package/lib/typescript/src/react-native/components-factories/hooks/useWebObjectMethodsProxy.mock.d.ts.map +1 -0
  53. package/lib/typescript/src/react-native/components-factories/map-sources/createMapSourceAsComponent.d.ts.map +1 -1
  54. package/lib/typescript/src/react-native/components-factories/map-sources/createMapSourceAsComponent.test.integration.d.ts +2 -0
  55. package/lib/typescript/src/react-native/components-factories/map-sources/createMapSourceAsComponent.test.integration.d.ts.map +1 -0
  56. package/lib/typescript/src/react-native/components-factories/map-sources/createMapSourceAsComponent.test.unit.d.ts +2 -0
  57. package/lib/typescript/src/react-native/components-factories/map-sources/createMapSourceAsComponent.test.unit.d.ts.map +1 -0
  58. package/lib/typescript/src/react-native/components-factories/web-objects/createWebObjectAsComponent.d.ts.map +1 -1
  59. package/lib/typescript/src/web/controllers/CoreController.d.ts.map +1 -1
  60. package/lib/typescript/src/web/controllers/MapSourcesController.d.ts +6 -0
  61. package/lib/typescript/src/web/controllers/MapSourcesController.d.ts.map +1 -1
  62. package/lib/typescript/src/web/controllers/WebObjectsController.d.ts +11 -0
  63. package/lib/typescript/src/web/controllers/WebObjectsController.d.ts.map +1 -1
  64. package/lib/typescript/src/web/generated/webview_static_html.d.ts +1 -1
  65. package/lib/typescript/src/web/generated/webview_static_html.d.ts.map +1 -1
  66. package/package.json +1 -1
  67. package/lib/module/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.js +0 -62
  68. package/lib/module/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.js.map +0 -1
  69. package/lib/module/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.mock.js +0 -5
  70. package/lib/module/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.mock.js.map +0 -1
  71. package/lib/module/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.types.js +0 -43
  72. package/lib/module/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.types.js.map +0 -1
  73. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMethodsProxy.js.map +0 -1
  74. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMethodsProxy.mock.js.map +0 -1
  75. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.js +0 -79
  76. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.js.map +0 -1
  77. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.mock.js +0 -10
  78. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.mock.js.map +0 -1
  79. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.test.unit.js +0 -202
  80. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.test.unit.js.map +0 -1
  81. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.types.js +0 -2
  82. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.types.js.map +0 -1
  83. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountWithProps.js +0 -57
  84. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountWithProps.js.map +0 -1
  85. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountWithProps.mock.js +0 -5
  86. package/lib/module/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountWithProps.mock.js.map +0 -1
  87. package/lib/typescript/src/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.d.ts +0 -13
  88. package/lib/typescript/src/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.d.ts.map +0 -1
  89. package/lib/typescript/src/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.mock.d.ts +0 -3
  90. package/lib/typescript/src/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.mock.d.ts.map +0 -1
  91. package/lib/typescript/src/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.types.d.ts +0 -10
  92. package/lib/typescript/src/react-native/components-factories/map-sources/hooks/useMapSourceMountUnmountUpdateCallbacks.types.d.ts.map +0 -1
  93. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMethodsProxy.d.ts.map +0 -1
  94. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMethodsProxy.mock.d.ts.map +0 -1
  95. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.d.ts +0 -18
  96. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.d.ts.map +0 -1
  97. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.mock.d.ts +0 -9
  98. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.mock.d.ts.map +0 -1
  99. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.test.unit.d.ts +0 -2
  100. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.test.unit.d.ts.map +0 -1
  101. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.types.d.ts +0 -8
  102. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountCallbacks.types.d.ts.map +0 -1
  103. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountWithProps.d.ts +0 -13
  104. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountWithProps.d.ts.map +0 -1
  105. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountWithProps.mock.d.ts +0 -3
  106. package/lib/typescript/src/react-native/components-factories/web-objects/hooks/useWebObjectMountUnmountWithProps.mock.d.ts.map +0 -1
  107. /package/lib/module/react-native/components-factories/{web-objects/hooks → hooks}/useWebObjectMethodsProxy.mock.js +0 -0
  108. /package/lib/typescript/src/react-native/components-factories/{web-objects/hooks → hooks}/useWebObjectMethodsProxy.mock.d.ts +0 -0
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+
3
+ import { useCallback } from 'react';
4
+ import useMapAtoms from "../../hooks/atoms/useMapAtoms.js";
5
+
6
+ /**
7
+ * @param input - The RN object props, etc..
8
+ * @returns – The callbacks used to mount, update and unmount the web object /
9
+ * map source and its listeners.
10
+ */
11
+ const useMountUnmountUpdateCallbacks = input => {
12
+ // States.
13
+ // - Global.
14
+ const {
15
+ dispatchMessage,
16
+ setWebObjectListeners,
17
+ deleteWebObjectListeners,
18
+ setMapSourceListeners,
19
+ deleteMapSourceListeners
20
+ } = useMapAtoms();
21
+ const mount = useCallback(() => {
22
+ switch (input.type) {
23
+ case 'webObject':
24
+ {
25
+ dispatchMessage({
26
+ type: `webObjectMount`,
27
+ payload: {
28
+ options: input.props.options,
29
+ listeners: input.props.listeners,
30
+ objectId: input.objectId,
31
+ objectType: input.objectType
32
+ }
33
+ });
34
+ setWebObjectListeners({
35
+ objectId: input.objectId,
36
+ listeners: input.props.listeners ?? {}
37
+ });
38
+ break;
39
+ }
40
+ case 'mapSource':
41
+ {
42
+ dispatchMessage({
43
+ type: `mapSourceMount`,
44
+ payload: input.props
45
+ });
46
+ setMapSourceListeners({
47
+ sourceId: input.props.id,
48
+ listeners: input.props.layers.map(item => item.listeners ? {
49
+ layerId: item.layer.id,
50
+ listeners: item.listeners
51
+ } : undefined).filter(item => item !== undefined) ?? []
52
+ });
53
+ break;
54
+ }
55
+ }
56
+ }, [input, dispatchMessage, setWebObjectListeners, setMapSourceListeners]);
57
+ const update = useCallback(() => {
58
+ switch (input.type) {
59
+ case 'webObject':
60
+ {
61
+ dispatchMessage({
62
+ type: `webObjectUpdate`,
63
+ payload: {
64
+ options: input.props.options,
65
+ listeners: input.props.listeners,
66
+ objectId: input.objectId,
67
+ objectType: input.objectType
68
+ }
69
+ });
70
+ setWebObjectListeners({
71
+ objectId: input.objectId,
72
+ listeners: input.props.listeners ?? {}
73
+ });
74
+ break;
75
+ }
76
+ case 'mapSource':
77
+ {
78
+ dispatchMessage({
79
+ type: `mapSourceUpdate`,
80
+ payload: input.props
81
+ });
82
+ setMapSourceListeners({
83
+ sourceId: input.props.id,
84
+ listeners: input.props.layers.map(item => item.listeners ? {
85
+ layerId: item.layer.id,
86
+ listeners: item.listeners
87
+ } : undefined).filter(item => item !== undefined) ?? []
88
+ });
89
+ break;
90
+ }
91
+ }
92
+ }, [input, dispatchMessage, setWebObjectListeners, setMapSourceListeners]);
93
+ const unmount = useCallback(() => {
94
+ switch (input.type) {
95
+ case 'webObject':
96
+ {
97
+ dispatchMessage({
98
+ type: `webObjectUnmount`,
99
+ payload: {
100
+ objectId: input.objectId
101
+ }
102
+ });
103
+ deleteWebObjectListeners({
104
+ objectId: input.objectId
105
+ });
106
+ break;
107
+ }
108
+ case 'mapSource':
109
+ {
110
+ dispatchMessage({
111
+ type: `mapSourceUnmount`,
112
+ payload: {
113
+ sourceId: input.props.id
114
+ }
115
+ });
116
+ deleteMapSourceListeners({
117
+ sourceId: input.props.id
118
+ });
119
+ break;
120
+ }
121
+ }
122
+ }, [input, dispatchMessage, deleteWebObjectListeners, deleteMapSourceListeners]);
123
+ return {
124
+ mount,
125
+ update,
126
+ unmount
127
+ };
128
+ };
129
+ export default useMountUnmountUpdateCallbacks;
130
+ //# sourceMappingURL=useMountUnmountUpdateCallbacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useMapAtoms","useMountUnmountUpdateCallbacks","input","dispatchMessage","setWebObjectListeners","deleteWebObjectListeners","setMapSourceListeners","deleteMapSourceListeners","mount","type","payload","options","props","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":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ export const mount = jest.fn();
4
+ export const update = jest.fn();
5
+ export const unmount = jest.fn();
6
+ const useMountUnmountUpdateCallbacksMock = () => ({
7
+ mount,
8
+ update,
9
+ unmount
10
+ });
11
+ export default useMountUnmountUpdateCallbacksMock;
12
+ //# sourceMappingURL=useMountUnmountUpdateCallbacks.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mount","jest","fn","update","unmount","useMountUnmountUpdateCallbacksMock"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.mock.ts"],"mappings":";;AAAA,OAAO,MAAMA,KAAK,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;AAC9B,OAAO,MAAMC,MAAM,GAAGF,IAAI,CAACC,EAAE,CAAC,CAAC;AAC/B,OAAO,MAAME,OAAO,GAAGH,IAAI,CAACC,EAAE,CAAC,CAAC;AAEhC,MAAMG,kCAAkC,GAAGA,CAAA,MAIrC;EACJL,KAAK;EACLG,MAAM;EACNC;AACF,CAAC,CAAC;AAEF,eAAeC,kCAAkC","ignoreList":[]}
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+
3
+ import { render, act } from '@testing-library/react-native';
4
+ import { jest } from '@jest/globals';
5
+ import useMountUnmountUpdateCallbacks from "./useMountUnmountUpdateCallbacks.js";
6
+ import { deleteMapSourceListenersMock, deleteWebObjectListenersMock, dispatchMessageMock, setMapSourceListenersMock, setWebObjectListenersMock } from "../../hooks/atoms/useMapAtoms.mock.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ jest.mock('./../../hooks/atoms/useMapAtoms', () => require('./../../hooks/atoms/useMapAtoms.mock'));
9
+ describe('useMountUnmountUpdateCallbacks', () => {
10
+ beforeEach(() => {
11
+ jest.clearAllMocks();
12
+ });
13
+ describe('Given a Probe using useMountUnmountUpdateCallbacks for web object type is rendered', () => {
14
+ const options = {
15
+ foo: 'bar'
16
+ };
17
+ const listeners = {
18
+ onTap: 'tapFunction'
19
+ };
20
+ const objectId = 'obj-1';
21
+ const objectType = 'map';
22
+ let mount;
23
+ let update;
24
+ let unmount;
25
+ beforeEach(() => {
26
+ /**
27
+ * Probe that uses useMountUnmountUpdateCallbacks for a web object.
28
+ */
29
+ const Probe = () => {
30
+ const callbacks = useMountUnmountUpdateCallbacks({
31
+ type: 'webObject',
32
+ props: {
33
+ options,
34
+ listeners
35
+ },
36
+ objectId,
37
+ objectType
38
+ });
39
+ mount = callbacks.mount;
40
+ update = callbacks.update;
41
+ unmount = callbacks.unmount;
42
+ return null;
43
+ };
44
+ render(/*#__PURE__*/_jsx(Probe, {}));
45
+ });
46
+ describe('When mount is called', () => {
47
+ beforeEach(() => {
48
+ act(() => mount());
49
+ });
50
+ test('Then webObjectMount message is sent and listeners are set', () => {
51
+ expect(dispatchMessageMock).toHaveBeenCalledTimes(1);
52
+ expect(dispatchMessageMock).toHaveBeenCalledWith({
53
+ type: 'webObjectMount',
54
+ payload: {
55
+ objectId,
56
+ objectType,
57
+ options,
58
+ listeners
59
+ }
60
+ });
61
+ expect(setWebObjectListenersMock).toHaveBeenCalledTimes(1);
62
+ expect(setWebObjectListenersMock).toHaveBeenCalledWith({
63
+ objectId,
64
+ listeners
65
+ });
66
+ });
67
+ });
68
+ describe('When update is called', () => {
69
+ beforeEach(() => {
70
+ act(() => update());
71
+ });
72
+ test('Then webObjectUpdate message is sent and listeners are set', () => {
73
+ expect(dispatchMessageMock).toHaveBeenCalledTimes(1);
74
+ expect(dispatchMessageMock).toHaveBeenCalledWith({
75
+ type: 'webObjectUpdate',
76
+ payload: {
77
+ objectId,
78
+ objectType,
79
+ options,
80
+ listeners
81
+ }
82
+ });
83
+ expect(setWebObjectListenersMock).toHaveBeenCalledTimes(1);
84
+ expect(setWebObjectListenersMock).toHaveBeenCalledWith({
85
+ objectId,
86
+ listeners
87
+ });
88
+ });
89
+ });
90
+ describe('When unmount is called', () => {
91
+ beforeEach(() => {
92
+ act(() => unmount());
93
+ });
94
+ test('Then webObjectUnmount message is sent and listeners are deleted', () => {
95
+ expect(dispatchMessageMock).toHaveBeenCalledTimes(1);
96
+ expect(dispatchMessageMock).toHaveBeenCalledWith({
97
+ type: 'webObjectUnmount',
98
+ payload: {
99
+ objectId
100
+ }
101
+ });
102
+ expect(deleteWebObjectListenersMock).toHaveBeenCalledTimes(1);
103
+ expect(deleteWebObjectListenersMock).toHaveBeenCalledWith({
104
+ objectId
105
+ });
106
+ });
107
+ });
108
+ });
109
+ describe('Given a Probe using useMountUnmountUpdateCallbacks for map source type is rendered', () => {
110
+ const sourceId = 'src-1';
111
+ const source = {
112
+ foo: 'bar'
113
+ };
114
+ const layers = [{
115
+ layer: {
116
+ id: 'layer-1',
117
+ type: 'fill'
118
+ },
119
+ listeners: {
120
+ click: () => 'tapFunction'
121
+ }
122
+ }];
123
+ let mount;
124
+ let update;
125
+ let unmount;
126
+ beforeEach(() => {
127
+ /**
128
+ * Probe that uses useMountUnmountUpdateCallbacks for a map source.
129
+ */
130
+ const Probe = () => {
131
+ const callbacks = useMountUnmountUpdateCallbacks({
132
+ type: 'mapSource',
133
+ props: {
134
+ id: sourceId,
135
+ source,
136
+ layers
137
+ }
138
+ });
139
+ mount = callbacks.mount;
140
+ update = callbacks.update;
141
+ unmount = callbacks.unmount;
142
+ return null;
143
+ };
144
+ render(/*#__PURE__*/_jsx(Probe, {}));
145
+ });
146
+ describe('When mount is called', () => {
147
+ beforeEach(() => {
148
+ act(() => mount());
149
+ });
150
+ test('Then mapSourceMount message is sent and listeners are set', () => {
151
+ expect(dispatchMessageMock).toHaveBeenCalledTimes(1);
152
+ expect(dispatchMessageMock).toHaveBeenCalledWith({
153
+ type: 'mapSourceMount',
154
+ payload: {
155
+ id: sourceId,
156
+ source,
157
+ layers
158
+ }
159
+ });
160
+ expect(setMapSourceListenersMock).toHaveBeenCalledTimes(1);
161
+ expect(setMapSourceListenersMock).toHaveBeenCalledWith({
162
+ sourceId,
163
+ listeners: layers.map(({
164
+ layer,
165
+ listeners
166
+ }) => ({
167
+ layerId: layer.id,
168
+ listeners
169
+ }))
170
+ });
171
+ });
172
+ });
173
+ describe('When update is called', () => {
174
+ beforeEach(() => {
175
+ act(() => update());
176
+ });
177
+ test('Then mapSourceUpdate message is sent and listeners are set', () => {
178
+ expect(dispatchMessageMock).toHaveBeenCalledTimes(1);
179
+ expect(dispatchMessageMock).toHaveBeenCalledWith({
180
+ type: 'mapSourceUpdate',
181
+ payload: {
182
+ id: sourceId,
183
+ source,
184
+ layers
185
+ }
186
+ });
187
+ expect(setMapSourceListenersMock).toHaveBeenCalledTimes(1);
188
+ expect(setMapSourceListenersMock).toHaveBeenCalledWith({
189
+ sourceId,
190
+ listeners: layers.map(({
191
+ layer,
192
+ listeners
193
+ }) => ({
194
+ layerId: layer.id,
195
+ listeners
196
+ }))
197
+ });
198
+ });
199
+ });
200
+ describe('When unmount is called', () => {
201
+ beforeEach(() => {
202
+ act(() => unmount());
203
+ });
204
+ test('Then mapSourceUnmount message is sent and listeners are deleted', () => {
205
+ expect(dispatchMessageMock).toHaveBeenCalledTimes(1);
206
+ expect(dispatchMessageMock).toHaveBeenCalledWith({
207
+ type: 'mapSourceUnmount',
208
+ payload: {
209
+ sourceId
210
+ }
211
+ });
212
+ expect(deleteMapSourceListenersMock).toHaveBeenCalledTimes(1);
213
+ expect(deleteMapSourceListenersMock).toHaveBeenCalledWith({
214
+ sourceId
215
+ });
216
+ });
217
+ });
218
+ });
219
+ });
220
+ //# sourceMappingURL=useMountUnmountUpdateCallbacks.test.unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","act","jest","useMountUnmountUpdateCallbacks","deleteMapSourceListenersMock","deleteWebObjectListenersMock","dispatchMessageMock","setMapSourceListenersMock","setWebObjectListenersMock","jsx","_jsx","mock","require","describe","beforeEach","clearAllMocks","options","foo","listeners","onTap","objectId","objectType","mount","update","unmount","Probe","callbacks","type","props","test","expect","toHaveBeenCalledTimes","toHaveBeenCalledWith","payload","sourceId","source","layers","layer","id","click","map","layerId"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.test.unit.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=useMountUnmountUpdateCallbacks.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useMountUnmountUpdateCallbacks.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ import useMountUnmountUpdateCallbacks from "./useMountUnmountUpdateCallbacks.js";
4
+ import { useEffect, useRef } from 'react';
5
+ import useMapAtoms from "../../hooks/atoms/useMapAtoms.js";
6
+
7
+ /**
8
+ * Mount, update, unmount the component as a web object / map source within the
9
+ * web world on component mount, component props update, or component unmount.
10
+ * @param input - The RN object props, etc..
11
+ */
12
+ export const useMountUpdateUnmountWhenNeeded = input => {
13
+ // Refs.
14
+ const hasBeenMounted = useRef(false);
15
+ // States.
16
+ // - Global.
17
+ const {
18
+ isWebWorldReady
19
+ } = useMapAtoms();
20
+ // Behaviors.
21
+ const {
22
+ mount,
23
+ update
24
+ } = useMountUnmountUpdateCallbacks(input);
25
+
26
+ // Mount the object/source only when props have changed (and it's already
27
+ // mounted in the web world), or that it has never been mounted.
28
+ useEffect(() => {
29
+ if (!isWebWorldReady) {
30
+ return;
31
+ }
32
+ if (!hasBeenMounted.current) {
33
+ mount();
34
+ hasBeenMounted.current = true;
35
+ } else {
36
+ update();
37
+ }
38
+ // TODO when unmount?
39
+ }, [mount, update, hasBeenMounted, isWebWorldReady]);
40
+ };
41
+ export default useMountUpdateUnmountWhenNeeded;
42
+ //# sourceMappingURL=useMountUpdateUnmountWhenNeeded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMountUnmountUpdateCallbacks","useEffect","useRef","useMapAtoms","useMountUpdateUnmountWhenNeeded","input","hasBeenMounted","isWebWorldReady","mount","update","current"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.ts"],"mappings":";;AAAA,OAAOA,8BAA8B,MAAM,qCAAkC;AAE7E,SAASC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,OAAOC,WAAW,MAAM,kCAA+B;;AAEvD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,+BAA+B,GAC1CC,KAA8B,IAC3B;EACH;EACA,MAAMC,cAAc,GAAGJ,MAAM,CAAU,KAAK,CAAC;EAC7C;EACA;EACA,MAAM;IAAEK;EAAgB,CAAC,GAAGJ,WAAW,CAAC,CAAC;EACzC;EACA,MAAM;IAAEK,KAAK;IAAEC;EAAO,CAAC,GAAGT,8BAA8B,CAACK,KAAK,CAAC;;EAE/D;EACA;EACAJ,SAAS,CAAC,MAAM;IACd,IAAI,CAACM,eAAe,EAAE;MACpB;IACF;IAEA,IAAI,CAACD,cAAc,CAACI,OAAO,EAAE;MAC3BF,KAAK,CAAC,CAAC;MACPF,cAAc,CAACI,OAAO,GAAG,IAAI;IAC/B,CAAC,MAAM;MACLD,MAAM,CAAC,CAAC;IACV;IACA;EACF,CAAC,EAAE,CAACD,KAAK,EAAEC,MAAM,EAAEH,cAAc,EAAEC,eAAe,CAAC,CAAC;AACtD,CAAC;AAED,eAAeH,+BAA+B","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ const useMountUpdateUnmountWhenNeededMock = jest.fn();
4
+ export default useMountUpdateUnmountWhenNeededMock;
5
+ //# sourceMappingURL=useMountUpdateUnmountWhenNeeded.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMountUpdateUnmountWhenNeededMock","jest","fn"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useMountUpdateUnmountWhenNeeded.mock.ts"],"mappings":";;AAAA,MAAMA,mCAAmC,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;AAErD,eAAeF,mCAAmC","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { useCallback, useImperativeHandle, useMemo } from 'react';
4
- import useMapAtoms from "../../../hooks/atoms/useMapAtoms.js";
4
+ import useMapAtoms from "../../hooks/atoms/useMapAtoms.js";
5
5
 
6
6
  /**
7
7
  * Create a proxy to call the methods of the corresponding web world object,
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useImperativeHandle","useMemo","useMapAtoms","useWebObjectMethodsProxy","ref","objectId","dispatchMessage","setWebObjectPendingMethodResponse","createProxy","Proxy","get","_","propKey","args","Promise","resolve","requestId","Math","random","toString","slice","type","payload","method","methodsProxy"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useWebObjectMethodsProxy.ts"],"mappings":";;AAAA,SAEEA,WAAW,EACXC,mBAAmB,EACnBC,OAAO,QACF,OAAO;AAMd,OAAOC,WAAW,MAAM,kCAA+B;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,GAAGA,CACtCC,GAAsB,EACtBC,QAAqB,KAClB;EACH;EACA;EACA,MAAM;IAAEC,eAAe;IAAEC;EAAkC,CAAC,GAAGL,WAAW,CAAC,CAAC;EAE5E,MAAMM,WAAW,GAAGT,WAAW,CAAC,MAAW;IACzC,OAAO,IAAIU,KAAK,CACd,CAAC,CAAC,EACF;MACEC,GAAGA,CAACC,CAAC,EAAEC,OAAO,EAAE;QACd,IAAIA,OAAO,KAAK,OAAO,EAAE;UACvB,OAAO,MAAMP,QAAQ;QACvB;QACA,OAAO,CAAC,GAAGQ,IAAW,KAAK;UACzB,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;YAC9B;YACA,MAAMC,SAAuC,GAAGC,IAAI,CAACC,MAAM,CAAC,CAAC,CAC1DC,QAAQ,CAAC,EAAE,CAAC,CACZC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACf;YACAb,iCAAiC,CAAC;cAAES,SAAS;cAAED;YAAQ,CAAC,CAAC;YACzD;YACAT,eAAe,CAAC;cACde,IAAI,EAAE,qBAAqB;cAC3BC,OAAO,EAAE;gBACPN,SAAS;gBACTX,QAAQ;gBACRkB,MAAM,EAAEX,OAAiB;gBACzBC;cACF;YACF,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC;MACH;IACF,CACF,CAAC;EACH,CAAC,EAAE,CAACR,QAAQ,EAAEC,eAAe,EAAEC,iCAAiC,CAAC,CAAC;EAElE,MAAMiB,YAAY,GAAGvB,OAAO,CAAC,MAAMO,WAAW,CAAC,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAChE;EACAR,mBAAmB,CAACI,GAAG,EAAE,MAAMoB,YAAY,CAAC;AAC9C,CAAC;AAED,eAAerB,wBAAwB","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useWebObjectMethodsProxyMock","jest","fn"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/hooks/useWebObjectMethodsProxy.mock.ts"],"mappings":";;AAAA,MAAMA,4BAA4B,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;AAE9C,eAAeF,4BAA4B","ignoreList":[]}
@@ -1,11 +1,23 @@
1
1
  "use strict";
2
2
 
3
- import useMapSourceMountUnmountUpdateCallbacksTypes from "./hooks/useMapSourceMountUnmountUpdateCallbacks.types.js";
3
+ import { useMemo } from 'react';
4
+ import useMountUpdateUnmountWhenNeeded from "../hooks/useMountUpdateUnmountWhenNeeded.js";
4
5
  const createMapSourceAsComponent = () => {
5
6
  return props => {
6
7
  // Mount the map source on launch and update the map source properties when
7
8
  // they changed in the component body.
8
- useMapSourceMountUnmountUpdateCallbacksTypes(props);
9
+ // TODO unmount to be added in comment.
10
+ const input = useMemo(() => ({
11
+ type: 'mapSource',
12
+ props: {
13
+ id: props.id,
14
+ source: props.source,
15
+ layers: props.layers
16
+ }
17
+ }),
18
+ // Decompose props to avoid useless re-rendering of the component.
19
+ [props.id, props.source, props.layers]);
20
+ useMountUpdateUnmountWhenNeeded(input);
9
21
  return null;
10
22
  };
11
23
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useMapSourceMountUnmountUpdateCallbacksTypes","createMapSourceAsComponent","props"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/map-sources/createMapSourceAsComponent.ts"],"mappings":";;AACA,OAAOA,4CAA4C,MAAM,0DAAuD;AAEhH,MAAMC,0BAA0B,GAAGA,CAAA,KAAyC;EAC1E,OAAQC,KAAY,IAAK;IACvB;IACA;IACAF,4CAA4C,CAAQE,KAAK,CAAC;IAE1D,OAAO,IAAI;EACb,CAAC;AACH,CAAC;AAED,eAAeD,0BAA0B","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","useMountUpdateUnmountWhenNeeded","createMapSourceAsComponent","props","input","type","id","source","layers"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/map-sources/createMapSourceAsComponent.ts"],"mappings":";;AACA,SAASA,OAAO,QAAQ,OAAO;AAE/B,OAAOC,+BAA+B,MAAM,6CAA0C;AAEtF,MAAMC,0BAA0B,GAAGA,CAAA,KAAyC;EAC1E,OAAQC,KAAY,IAAK;IACvB;IACA;IACA;IACA,MAAMC,KAA8B,GAAGJ,OAAO,CAC5C,OAAO;MACLK,IAAI,EAAE,WAAW;MACjBF,KAAK,EAAE;QACLG,EAAE,EAAEH,KAAK,CAACG,EAAE;QACZC,MAAM,EAAEJ,KAAK,CAACI,MAAM;QACpBC,MAAM,EAAEL,KAAK,CAACK;MAChB;IACF,CAAC,CAAC;IACF;IACA,CAACL,KAAK,CAACG,EAAE,EAAEH,KAAK,CAACI,MAAM,EAAEJ,KAAK,CAACK,MAAM,CACvC,CAAC;IACDP,+BAA+B,CAACG,KAAK,CAAC;IAEtC,OAAO,IAAI;EACb,CAAC;AACH,CAAC;AAED,eAAeF,0BAA0B","ignoreList":[]}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ import { render, screen, waitFor } from '@testing-library/react-native';
4
+ import { jest } from '@jest/globals';
5
+ import { setIsWebWorldReady } from "../../hooks/atoms/useMapAtoms.mock.js";
6
+ import { mount, unmount, update } from "../hooks/useMountUnmountUpdateCallbacks.mock.js";
7
+ import createMapSourceAsComponent from "./createMapSourceAsComponent.js";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ jest.mock('./../../hooks/atoms/useMapAtoms', () => require('./../../hooks/atoms/useMapAtoms.mock'));
10
+ jest.mock('./../hooks/useMountUnmountUpdateCallbacks', () => require('./../hooks/useMountUnmountUpdateCallbacks.mock'));
11
+ describe('createMapSourceAsComponent', () => {
12
+ beforeEach(() => {
13
+ jest.clearAllMocks();
14
+ });
15
+ describe('Given the map source is rendered and the web world is ready', () => {
16
+ let Component;
17
+ beforeEach(() => {
18
+ Component = createMapSourceAsComponent();
19
+ setIsWebWorldReady(true);
20
+ render(/*#__PURE__*/_jsx(Component, {
21
+ id: 'src-1',
22
+ source: {},
23
+ layers: []
24
+ }));
25
+ });
26
+ describe('When nothing', () => {
27
+ beforeEach(() => {});
28
+ test('Then only mount is called', () => {
29
+ waitFor(() => {
30
+ expect(mount).toHaveBeenCalledTimes(1);
31
+ expect(update).toHaveBeenCalledTimes(0);
32
+ expect(unmount).toHaveBeenCalledTimes(0);
33
+ });
34
+ });
35
+ });
36
+ describe('When rerendered with no change', () => {
37
+ beforeEach(() => {
38
+ screen.rerender(/*#__PURE__*/_jsx(Component, {
39
+ id: 'src-1',
40
+ source: {},
41
+ layers: []
42
+ }));
43
+ });
44
+ test('Then mount and then update is called', () => {
45
+ waitFor(() => {
46
+ expect(mount).toHaveBeenCalledTimes(1);
47
+ expect(update).toHaveBeenCalledTimes(1);
48
+ expect(unmount).toHaveBeenCalledTimes(0);
49
+ });
50
+ });
51
+ });
52
+ describe('When rerendered with new source', () => {
53
+ beforeEach(() => {
54
+ screen.rerender(/*#__PURE__*/_jsx(Component, {
55
+ id: 'src-1',
56
+ source: {
57
+ new: 'new'
58
+ },
59
+ layers: []
60
+ }));
61
+ });
62
+ test('Then mount and then update is called', () => {
63
+ waitFor(() => {
64
+ expect(mount).toHaveBeenCalledTimes(1);
65
+ expect(update).toHaveBeenCalledTimes(1);
66
+ expect(unmount).toHaveBeenCalledTimes(0);
67
+ });
68
+ });
69
+ });
70
+ describe('When rerendered with new layer', () => {
71
+ beforeEach(() => {
72
+ screen.rerender(/*#__PURE__*/_jsx(Component, {
73
+ id: 'src-1',
74
+ source: {},
75
+ layers: [{
76
+ layer: {
77
+ id: 'layer'
78
+ }
79
+ }]
80
+ }));
81
+ });
82
+ test('Then mount and then update is called', () => {
83
+ waitFor(() => {
84
+ expect(mount).toHaveBeenCalledTimes(1);
85
+ expect(update).toHaveBeenCalledTimes(1);
86
+ expect(unmount).toHaveBeenCalledTimes(0);
87
+ });
88
+ });
89
+ });
90
+ });
91
+ });
92
+ //# sourceMappingURL=createMapSourceAsComponent.test.integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","screen","waitFor","jest","setIsWebWorldReady","mount","unmount","update","createMapSourceAsComponent","jsx","_jsx","mock","require","describe","beforeEach","clearAllMocks","Component","id","source","layers","test","expect","toHaveBeenCalledTimes","rerender","new","layer"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/map-sources/createMapSourceAsComponent.test.integration.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ import { render } from '@testing-library/react-native';
4
+ import createMapSourceAsComponent from "./createMapSourceAsComponent.js";
5
+ import { jest } from '@jest/globals';
6
+ import useMountUpdateUnmountWhenNeeded from "../hooks/useMountUpdateUnmountWhenNeeded.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ jest.mock('./../hooks/useWebObjectMethodsProxy', () => require('./../hooks/useWebObjectMethodsProxy.mock'));
9
+ jest.mock('./../hooks/useMountUpdateUnmountWhenNeeded', () => require('./../hooks/useMountUpdateUnmountWhenNeeded.mock'));
10
+ describe('createMapSourceAsComponent', () => {
11
+ beforeEach(() => {
12
+ jest.clearAllMocks();
13
+ });
14
+ describe('Given the map source is rendered', () => {
15
+ beforeEach(() => {
16
+ const Component = createMapSourceAsComponent();
17
+ render(/*#__PURE__*/_jsx(Component, {
18
+ id: 'src-1',
19
+ source: {},
20
+ layers: []
21
+ }));
22
+ });
23
+ describe('When nothing', () => {
24
+ test('Then it has set the mount/update/unmount hooks', () => {
25
+ expect(useMountUpdateUnmountWhenNeeded).toHaveBeenCalledTimes(1);
26
+ });
27
+ });
28
+ });
29
+ });
30
+ //# sourceMappingURL=createMapSourceAsComponent.test.unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","createMapSourceAsComponent","jest","useMountUpdateUnmountWhenNeeded","jsx","_jsx","mock","require","describe","beforeEach","clearAllMocks","Component","id","source","layers","test","expect","toHaveBeenCalledTimes"],"sourceRoot":"../../../../../src","sources":["react-native/components-factories/map-sources/createMapSourceAsComponent.test.unit.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,+BAA+B;AACtD,OAAOC,0BAA0B,MAAM,iCAA8B;AACrE,SAASC,IAAI,QAAQ,eAAe;AACpC,OAAOC,+BAA+B,MAAM,6CAA0C;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEtFH,IAAI,CAACI,IAAI,CAAC,qCAAqC,EAAE,MAC/CC,OAAO,CAAC,0CAA0C,CACpD,CAAC;AAEDL,IAAI,CAACI,IAAI,CAAC,4CAA4C,EAAE,MACtDC,OAAO,CAAC,iDAAiD,CAC3D,CAAC;AAEDC,QAAQ,CAAC,4BAA4B,EAAE,MAAM;EAC3CC,UAAU,CAAC,MAAM;IACfP,IAAI,CAACQ,aAAa,CAAC,CAAC;EACtB,CAAC,CAAC;EAEFF,QAAQ,CAAC,kCAAkC,EAAE,MAAM;IACjDC,UAAU,CAAC,MAAM;MACf,MAAME,SAAS,GAAGV,0BAA0B,CAAC,CAAC;MAC9CD,MAAM,cACJK,IAAA,CAACM,SAAS;QACRC,EAAE,EAAE,OAAQ;QACZC,MAAM,EAAE,CAAC,CAAE;QACXC,MAAM,EAAE;MAAG,CACZ,CACH,CAAC;IACH,CAAC,CAAC;IAEFN,QAAQ,CAAC,cAAc,EAAE,MAAM;MAC7BO,IAAI,CAAC,gDAAgD,EAAE,MAAM;QAC3DC,MAAM,CAACb,+BAA+B,CAAC,CAACc,qBAAqB,CAAC,CAAC,CAAC;MAClE,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}