react-rx 1.0.0-beta.4 → 1.0.1

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 (171) hide show
  1. package/.idea/vcs.xml +0 -3
  2. package/.idea/workspace.xml +18 -15
  3. package/dist/cjs/WithObservable.d.ts +3 -3
  4. package/dist/cjs/WithObservable.js +3 -3
  5. package/dist/cjs/index.d.ts +3 -2
  6. package/dist/cjs/index.js +9 -6
  7. package/dist/cjs/reactiveComponent.d.ts +6 -6
  8. package/dist/cjs/reactiveComponent.js +7 -26
  9. package/dist/cjs/useAsObservable.d.ts +1 -0
  10. package/dist/cjs/useAsObservable.js +10 -33
  11. package/dist/cjs/useIsomorphicEffect.d.ts +2 -0
  12. package/dist/cjs/useIsomorphicEffect.js +5 -0
  13. package/dist/cjs/useObservable.d.ts +6 -6
  14. package/dist/cjs/useObservable.js +8 -26
  15. package/dist/cjs/useObservableCallback.d.ts +3 -0
  16. package/dist/cjs/useObservableCallback.js +24 -0
  17. package/dist/cjs/useWithObservable.d.ts +9 -0
  18. package/dist/cjs/useWithObservable.js +11 -0
  19. package/dist/cjs/utils.d.ts +3 -3
  20. package/dist/cjs/utils.js +8 -27
  21. package/dist/cjs/withPropsStream.js +3 -3
  22. package/dist/es2015/WithObservable.d.ts +3 -3
  23. package/dist/es2015/index.d.ts +3 -2
  24. package/dist/es2015/index.js +4 -2
  25. package/dist/es2015/reactiveComponent.d.ts +6 -6
  26. package/dist/es2015/reactiveComponent.js +5 -5
  27. package/dist/es2015/useAsObservable.d.ts +1 -0
  28. package/dist/es2015/useAsObservable.js +10 -14
  29. package/dist/es2015/useIsomorphicEffect.d.ts +2 -0
  30. package/dist/es2015/useIsomorphicEffect.js +2 -0
  31. package/dist/es2015/useObservable.d.ts +6 -6
  32. package/dist/es2015/useObservable.js +8 -7
  33. package/dist/es2015/useObservableCallback.d.ts +3 -0
  34. package/dist/es2015/useObservableCallback.js +19 -0
  35. package/dist/es2015/useWithObservable.d.ts +9 -0
  36. package/dist/es2015/useWithObservable.js +7 -0
  37. package/dist/es2015/utils.d.ts +3 -3
  38. package/dist/es2015/utils.js +5 -5
  39. package/dist/esm/WithObservable.d.ts +3 -3
  40. package/dist/esm/index.d.ts +3 -2
  41. package/dist/esm/index.js +4 -2
  42. package/dist/esm/reactiveComponent.d.ts +6 -6
  43. package/dist/esm/reactiveComponent.js +5 -5
  44. package/dist/esm/useAsObservable.d.ts +1 -0
  45. package/dist/esm/useAsObservable.js +10 -14
  46. package/dist/esm/useIsomorphicEffect.d.ts +2 -0
  47. package/dist/esm/useIsomorphicEffect.js +2 -0
  48. package/dist/esm/useObservable.d.ts +6 -6
  49. package/dist/esm/useObservable.js +8 -7
  50. package/dist/esm/useObservableCallback.d.ts +3 -0
  51. package/dist/esm/useObservableCallback.js +20 -0
  52. package/dist/esm/useWithObservable.d.ts +9 -0
  53. package/dist/esm/useWithObservable.js +7 -0
  54. package/dist/esm/utils.d.ts +3 -3
  55. package/dist/esm/utils.js +5 -5
  56. package/package.json +3 -3
  57. package/src/WithObservable.tsx +4 -3
  58. package/src/index.ts +5 -4
  59. package/src/reactiveComponent.ts +24 -18
  60. package/src/useAsObservable.ts +18 -8
  61. package/src/useIsomorphicEffect.ts +3 -0
  62. package/src/useObservable.ts +17 -19
  63. package/src/useObservableCallback.ts +30 -0
  64. package/src/useWithObservable.ts +23 -0
  65. package/src/utils.ts +8 -8
  66. package/jest.config.js +0 -5
  67. package/website/.babelrc +0 -21
  68. package/website/.prettierrc +0 -7
  69. package/website/README.mdx +0 -1
  70. package/website/package.json +0 -84
  71. package/website/src/@types/babel.d.ts +0 -4
  72. package/website/src/@types/mdx.d.ts +0 -11
  73. package/website/src/@types/react-css-burger.d.ts +0 -4
  74. package/website/src/App.tsx +0 -68
  75. package/website/src/components/Header.tsx +0 -118
  76. package/website/src/components/Link.tsx +0 -18
  77. package/website/src/components/LoadPage.tsx +0 -60
  78. package/website/src/components/Sidebar.tsx +0 -88
  79. package/website/src/components/logos/Github.tsx +0 -10
  80. package/website/src/components/logos/React.tsx +0 -27
  81. package/website/src/components/logos/ReactRxLogo.tsx +0 -39
  82. package/website/src/components/logos/RxJs.tsx +0 -69
  83. package/website/src/components/repl/Checkerboard.tsx +0 -25
  84. package/website/src/components/repl/CodeBlock.tsx +0 -147
  85. package/website/src/components/repl/CodeMirror.tsx +0 -37
  86. package/website/src/components/repl/CodeMirrorMode.tsx +0 -67
  87. package/website/src/components/repl/EvalCode.tsx +0 -55
  88. package/website/src/components/repl/Prelude.tsx +0 -50
  89. package/website/src/components/repl/ShowError.tsx +0 -27
  90. package/website/src/components/repl/codemirror-lib.ts +0 -8
  91. package/website/src/components/repl/codemirror-theme.css +0 -131
  92. package/website/src/components/repl/compile/babel.ts +0 -21
  93. package/website/src/components/repl/eval/evalCallback.ts +0 -27
  94. package/website/src/components/repl/eval/evalCode.ts +0 -7
  95. package/website/src/components/repl/eval/evalExpression.ts +0 -4
  96. package/website/src/components/repl/eval/evalReactDomRender.ts +0 -23
  97. package/website/src/components/repl/index.ts +0 -1
  98. package/website/src/components/repl/runMode.ts +0 -42
  99. package/website/src/datastores/location.ts +0 -14
  100. package/website/src/datastores/page.ts +0 -11
  101. package/website/src/datastores/pageTransition.ts +0 -97
  102. package/website/src/entries/main.css +0 -2
  103. package/website/src/entries/main.tsx +0 -6
  104. package/website/src/examples/FizzBuzz/FizzBuzzExample.tsx +0 -39
  105. package/website/src/examples/FizzBuzz/index.tsx +0 -9
  106. package/website/src/examples/_utils/globalScope.ts +0 -45
  107. package/website/src/examples/animation/AnimationExample.tsx +0 -152
  108. package/website/src/examples/animation/easings.ts +0 -0
  109. package/website/src/examples/animation/index.tsx +0 -15
  110. package/website/src/examples/context/Context.example.jsx +0 -67
  111. package/website/src/examples/context/index.tsx +0 -9
  112. package/website/src/examples/errors/Errors.example.jsx +0 -69
  113. package/website/src/examples/errors/index.tsx +0 -9
  114. package/website/src/examples/event-handlers/EventHandlersExample.tsx +0 -48
  115. package/website/src/examples/event-handlers/index.tsx +0 -9
  116. package/website/src/examples/fetch/FetchExample.jsx +0 -43
  117. package/website/src/examples/fetch/a.txt +0 -1
  118. package/website/src/examples/fetch/b.txt +0 -1
  119. package/website/src/examples/fetch/index.tsx +0 -9
  120. package/website/src/examples/form-data/FormDataExample.jsx +0 -119
  121. package/website/src/examples/form-data/index.tsx +0 -12
  122. package/website/src/examples/form-data/storage.ts +0 -27
  123. package/website/src/examples/forward-ref/ForwardRefExample.tsx +0 -55
  124. package/website/src/examples/forward-ref/index.tsx +0 -9
  125. package/website/src/examples/hello-world/HelloWorld.example.jsx +0 -6
  126. package/website/src/examples/hello-world/index.tsx +0 -9
  127. package/website/src/examples/hooks-interop/HooksInterop.example.tsx +0 -42
  128. package/website/src/examples/hooks-interop/index.tsx +0 -9
  129. package/website/src/examples/passthrough-props/PassThroughPropsExample.jsx +0 -57
  130. package/website/src/examples/passthrough-props/index.tsx +0 -11
  131. package/website/src/examples/reactive-state/ReactiveState.example.jsx +0 -43
  132. package/website/src/examples/reactive-state/index.ts +0 -9
  133. package/website/src/examples/readme-examples/README.mdx +0 -0
  134. package/website/src/examples/readme-examples/index.ts +0 -11
  135. package/website/src/examples/shared-state/SharedState.example.tsx +0 -59
  136. package/website/src/examples/shared-state/index.tsx +0 -9
  137. package/website/src/examples/simple/Counter.example.tsx +0 -14
  138. package/website/src/examples/simple/index.tsx +0 -9
  139. package/website/src/examples/sync/Sync.example.tsx +0 -9
  140. package/website/src/examples/sync/index.tsx +0 -9
  141. package/website/src/examples/tick/TickExample.jsx +0 -51
  142. package/website/src/examples/tick/index.ts +0 -9
  143. package/website/src/examples/todo-app/TodoApp.example.tsx +0 -88
  144. package/website/src/examples/todo-app/index.tsx +0 -12
  145. package/website/src/examples/todo-app/storage.ts +0 -27
  146. package/website/src/examples/use-element/UseElementExample.tsx +0 -70
  147. package/website/src/examples/use-element/index.tsx +0 -9
  148. package/website/src/examples/use-observable/search/SearchExample.tsx +0 -82
  149. package/website/src/examples/use-observable/search/index.tsx +0 -8
  150. package/website/src/examples/use-observable/use-observable/UseObservableExample.tsx +0 -70
  151. package/website/src/examples/use-observable/use-observable/index.tsx +0 -9
  152. package/website/src/index.html +0 -10
  153. package/website/src/mdx-components.tsx +0 -74
  154. package/website/src/pages/Api/Api.mdx +0 -134
  155. package/website/src/pages/Api/ApiPage.tsx +0 -25
  156. package/website/src/pages/Examples/Examples.tsx +0 -105
  157. package/website/src/pages/Examples/ExamplesPage.tsx +0 -13
  158. package/website/src/pages/Guide/Guide.mdx +0 -275
  159. package/website/src/pages/Guide/GuidePage.tsx +0 -25
  160. package/website/src/pages/Index/IndexPage.tsx +0 -50
  161. package/website/src/pages/Index/ReactRxReadme.md +0 -20
  162. package/website/src/pages/NotFound.tsx +0 -3
  163. package/website/src/pages/pages.ts +0 -46
  164. package/website/src/pages/styles.tsx +0 -24
  165. package/website/src/theme.ts +0 -61
  166. package/website/src/utils/parseCodeFenceHeader.ts +0 -32
  167. package/website/tsconfig.json +0 -30
  168. package/website/vercel.json +0 -4
  169. package/website/webpack/config.js +0 -5
  170. package/website/webpack/createConfig.js +0 -95
  171. package/website/webpack/mdx-toc-loader.js +0 -38
package/.idea/vcs.xml CHANGED
@@ -5,8 +5,5 @@
5
5
  <mapping directory="$PROJECT_DIR$/../react-repl" vcs="Git" />
6
6
  <mapping directory="$PROJECT_DIR$" vcs="Git" />
7
7
  <mapping directory="$PROJECT_DIR$/../react-rx.dev" vcs="Git" />
8
- <mapping directory="$PROJECT_DIR$/test-concurrent-mode" vcs="Git" />
9
- <mapping directory="$PROJECT_DIR$/test-concurrent-mode2" vcs="Git" />
10
- <mapping directory="$PROJECT_DIR$/website" vcs="Git" />
11
8
  </component>
12
9
  </project>
@@ -48,7 +48,7 @@
48
48
  <property name="com.intellij.ide.scratch.LRUPopupBuilder$1/New Scratch File" value="JavaScript" />
49
49
  <property name="full.screen.before.presentation.mode" value="true" />
50
50
  <property name="last.edited.regexp" value="jsx{1,2}" />
51
- <property name="last_opened_file_path" value="$PROJECT_DIR$/test-concurrent-mode" />
51
+ <property name="last_opened_file_path" value="$PROJECT_DIR$/src" />
52
52
  <property name="node.js.detected.package.eslint" value="true" />
53
53
  <property name="node.js.detected.package.standard" value="true" />
54
54
  <property name="node.js.detected.package.tslint" value="true" />
@@ -63,17 +63,17 @@
63
63
  <property name="nodejs_npm_path_reset_for_default_project" value="true" />
64
64
  <property name="nodejs_package_manager_path" value="npm" />
65
65
  <property name="prettierjs.PrettierConfiguration.Package" value="$PROJECT_DIR$/node_modules/prettier" />
66
- <property name="settings.editor.selected.configurable" value="settings.javascript.linters.eslint" />
66
+ <property name="settings.editor.selected.configurable" value="project.propVCSSupport.Mappings" />
67
67
  <property name="ts.external.directory.path" value="$PROJECT_DIR$/node_modules/typescript/lib" />
68
68
  <property name="vue.rearranger.settings.migration" value="true" />
69
69
  </component>
70
70
  <component name="RecentsManager">
71
71
  <key name="CopyFile.RECENT_KEYS">
72
+ <recent name="$PROJECT_DIR$/src" />
72
73
  <recent name="$PROJECT_DIR$/test-concurrent-mode" />
73
74
  <recent name="$PROJECT_DIR$/website/src/examples" />
74
75
  <recent name="$PROJECT_DIR$/src/__tests__" />
75
76
  <recent name="$PROJECT_DIR$/../react-rx.dev" />
76
- <recent name="$PROJECT_DIR$/../react-rx.dev/src/entries" />
77
77
  </key>
78
78
  <key name="MoveFile.RECENT_KEYS">
79
79
  <recent name="$PROJECT_DIR$/website/src/examples" />
@@ -83,7 +83,7 @@
83
83
  <recent name="$PROJECT_DIR$/../react-rx.dev/webpack-configs" />
84
84
  </key>
85
85
  </component>
86
- <component name="RunManager" selected="Jest.useObservable.test.tsx">
86
+ <component name="RunManager" selected="Jest.it calls the setup function once, at mount">
87
87
  <configuration name="All Tests" type="JavaScriptTestRunnerJest" nameIsGenerated="true">
88
88
  <node-interpreter value="project" />
89
89
  <node-options value="" />
@@ -103,20 +103,20 @@
103
103
  <test-file value="$PROJECT_DIR$/src/__tests__/asObservable.test.tsx" />
104
104
  <method v="2" />
105
105
  </configuration>
106
- <configuration name="the returned observable should *not* receive a new value when component is rendered with an unchanged value" type="JavaScriptTestRunnerJest" temporary="true" nameIsGenerated="true">
106
+ <configuration name="it calls the setup function once, at mount" type="JavaScriptTestRunnerJest" temporary="true" nameIsGenerated="true">
107
107
  <node-interpreter value="project" />
108
108
  <node-options value="" />
109
109
  <jest-package value="$PROJECT_DIR$/node_modules/jest" />
110
110
  <working-dir value="$PROJECT_DIR$" />
111
111
  <envs />
112
112
  <scope-kind value="TEST" />
113
- <test-file value="$PROJECT_DIR$/src/__tests__/asObservable.test.tsx" />
113
+ <test-file value="$PROJECT_DIR$/src/__tests__/reactiveComponent.test.tsx" />
114
114
  <test-names>
115
- <test-name value="the returned observable should *not* receive a new value when component is rendered with an unchanged value" />
115
+ <test-name value="it calls the setup function once, at mount" />
116
116
  </test-names>
117
117
  <method v="2" />
118
118
  </configuration>
119
- <configuration name="the returned observable should receive a new value when component is rendered with a new value" type="JavaScriptTestRunnerJest" temporary="true" nameIsGenerated="true">
119
+ <configuration name="the returned observable should *not* receive a new value when component is rendered with an unchanged value" type="JavaScriptTestRunnerJest" temporary="true" nameIsGenerated="true">
120
120
  <node-interpreter value="project" />
121
121
  <node-options value="" />
122
122
  <jest-package value="$PROJECT_DIR$/node_modules/jest" />
@@ -125,11 +125,11 @@
125
125
  <scope-kind value="TEST" />
126
126
  <test-file value="$PROJECT_DIR$/src/__tests__/asObservable.test.tsx" />
127
127
  <test-names>
128
- <test-name value="the returned observable should receive a new value when component is rendered with a new value" />
128
+ <test-name value="the returned observable should *not* receive a new value when component is rendered with an unchanged value" />
129
129
  </test-names>
130
130
  <method v="2" />
131
131
  </configuration>
132
- <configuration name="the returned observable should receive a new value when component is rendered with an unchanged value" type="JavaScriptTestRunnerJest" temporary="true" nameIsGenerated="true">
132
+ <configuration name="the returned observable should receive a new value when component is rendered with a new value" type="JavaScriptTestRunnerJest" temporary="true" nameIsGenerated="true">
133
133
  <node-interpreter value="project" />
134
134
  <node-options value="" />
135
135
  <jest-package value="$PROJECT_DIR$/node_modules/jest" />
@@ -138,7 +138,7 @@
138
138
  <scope-kind value="TEST" />
139
139
  <test-file value="$PROJECT_DIR$/src/__tests__/asObservable.test.tsx" />
140
140
  <test-names>
141
- <test-name value="the returned observable should receive a new value when component is rendered with an unchanged value" />
141
+ <test-name value="the returned observable should receive a new value when component is rendered with a new value" />
142
142
  </test-names>
143
143
  <method v="2" />
144
144
  </configuration>
@@ -165,19 +165,19 @@
165
165
  <list>
166
166
  <item itemvalue="Jest.All Tests" />
167
167
  <item itemvalue="Jest.useObservable.test.tsx" />
168
- <item itemvalue="Jest.the returned observable should receive a new value when component is rendered with a new value" />
169
- <item itemvalue="Jest.the returned observable should receive a new value when component is rendered with an unchanged value" />
170
- <item itemvalue="Jest.the returned observable should *not* receive a new value when component is rendered with an unchanged value" />
171
168
  <item itemvalue="Jest.asObservable.test.tsx" />
169
+ <item itemvalue="Jest.it calls the setup function once, at mount" />
170
+ <item itemvalue="Jest.the returned observable should *not* receive a new value when component is rendered with an unchanged value" />
171
+ <item itemvalue="Jest.the returned observable should receive a new value when component is rendered with a new value" />
172
172
  <item itemvalue="Jest.useAsObservable.test.tsx" />
173
173
  </list>
174
174
  <recent_temporary>
175
175
  <list>
176
+ <item itemvalue="Jest.it calls the setup function once, at mount" />
176
177
  <item itemvalue="Jest.useAsObservable.test.tsx" />
177
178
  <item itemvalue="Jest.asObservable.test.tsx" />
178
179
  <item itemvalue="Jest.the returned observable should receive a new value when component is rendered with a new value" />
179
180
  <item itemvalue="Jest.the returned observable should *not* receive a new value when component is rendered with an unchanged value" />
180
- <item itemvalue="Jest.the returned observable should receive a new value when component is rendered with an unchanged value" />
181
181
  </list>
182
182
  </recent_temporary>
183
183
  </component>
@@ -214,6 +214,9 @@
214
214
  <component name="VcsManagerConfiguration">
215
215
  <ignored-roots>
216
216
  <path value="$PROJECT_DIR$/../../_/parcel-plugin-mdx" />
217
+ <path value="$PROJECT_DIR$/test-concurrent-mode" />
218
+ <path value="$PROJECT_DIR$/test-concurrent-mode2" />
219
+ <path value="$PROJECT_DIR$/website" />
217
220
  </ignored-roots>
218
221
  </component>
219
222
  <component name="com.intellij.coverage.CoverageDataManagerImpl">
@@ -1,10 +1,10 @@
1
- import * as React from 'react';
2
1
  import { Observable } from 'rxjs';
2
+ import { ComponentType, ReactNode } from 'react';
3
3
  interface Props<T> {
4
4
  observable: Observable<T>;
5
- children: (value: T) => React.ReactNode;
5
+ children: (value: T) => ReactNode;
6
6
  }
7
- declare type ObservableComponent<T> = React.ComponentType<Props<T>>;
7
+ declare type ObservableComponent<T> = ComponentType<Props<T>>;
8
8
  /**
9
9
  * @deprecated Use the useObservable hook instead
10
10
  */
@@ -4,9 +4,9 @@ exports.WithObservable = void 0;
4
4
  var operators_1 = require("rxjs/operators");
5
5
  var reactiveComponent_1 = require("./reactiveComponent");
6
6
  function createWithObservable() {
7
- return reactiveComponent_1.reactiveComponent(function (props$) {
8
- return props$.pipe(operators_1.distinctUntilChanged(function (props, prevProps) { return props.observable === prevProps.observable; }), operators_1.switchMap(function (props) {
9
- return props.observable.pipe(operators_1.map(function (observableValue) { return props.children(observableValue); }));
7
+ return (0, reactiveComponent_1.reactiveComponent)(function (props$) {
8
+ return props$.pipe((0, operators_1.distinctUntilChanged)(function (props, prevProps) { return props.observable === prevProps.observable; }), (0, operators_1.switchMap)(function (props) {
9
+ return props.observable.pipe((0, operators_1.map)(function (observableValue) { return props.children(observableValue); }));
10
10
  }));
11
11
  });
12
12
  }
@@ -1,6 +1,7 @@
1
1
  export { reactiveComponent, reactiveComponent as rxComponent, forwardRef } from './reactiveComponent';
2
- export { useObservable, useMemoObservable } from './useObservable';
3
- export { useAsObservable } from './useAsObservable';
4
2
  export { observeState, observeCallback, observeContext, observeElement } from './utils';
5
3
  export { observeState as state, observeCallback as handler, observeContext as context, observeElement as elementRef, } from './utils';
6
4
  export { observableCallback } from 'observable-callback';
5
+ export { useObservable, useMemoObservable } from './useObservable';
6
+ export { useAsObservable } from './useAsObservable';
7
+ export { useObservableCallback } from './useObservableCallback';
package/dist/cjs/index.js CHANGED
@@ -1,16 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.observableCallback = exports.elementRef = exports.context = exports.handler = exports.state = exports.observeElement = exports.observeContext = exports.observeCallback = exports.observeState = exports.useAsObservable = exports.useMemoObservable = exports.useObservable = exports.forwardRef = exports.rxComponent = exports.reactiveComponent = void 0;
3
+ exports.useObservableCallback = exports.useAsObservable = exports.useMemoObservable = exports.useObservable = exports.observableCallback = exports.elementRef = exports.context = exports.handler = exports.state = exports.observeElement = exports.observeContext = exports.observeCallback = exports.observeState = exports.forwardRef = exports.rxComponent = exports.reactiveComponent = void 0;
4
4
  // Main package exports
5
5
  var reactiveComponent_1 = require("./reactiveComponent");
6
6
  Object.defineProperty(exports, "reactiveComponent", { enumerable: true, get: function () { return reactiveComponent_1.reactiveComponent; } });
7
7
  Object.defineProperty(exports, "rxComponent", { enumerable: true, get: function () { return reactiveComponent_1.reactiveComponent; } });
8
8
  Object.defineProperty(exports, "forwardRef", { enumerable: true, get: function () { return reactiveComponent_1.forwardRef; } });
9
- var useObservable_1 = require("./useObservable");
10
- Object.defineProperty(exports, "useObservable", { enumerable: true, get: function () { return useObservable_1.useObservable; } });
11
- Object.defineProperty(exports, "useMemoObservable", { enumerable: true, get: function () { return useObservable_1.useMemoObservable; } });
12
- var useAsObservable_1 = require("./useAsObservable");
13
- Object.defineProperty(exports, "useAsObservable", { enumerable: true, get: function () { return useAsObservable_1.useAsObservable; } });
14
9
  var utils_1 = require("./utils");
15
10
  Object.defineProperty(exports, "observeState", { enumerable: true, get: function () { return utils_1.observeState; } });
16
11
  Object.defineProperty(exports, "observeCallback", { enumerable: true, get: function () { return utils_1.observeCallback; } });
@@ -23,3 +18,11 @@ Object.defineProperty(exports, "context", { enumerable: true, get: function () {
23
18
  Object.defineProperty(exports, "elementRef", { enumerable: true, get: function () { return utils_2.observeElement; } });
24
19
  var observable_callback_1 = require("observable-callback");
25
20
  Object.defineProperty(exports, "observableCallback", { enumerable: true, get: function () { return observable_callback_1.observableCallback; } });
21
+ // hooks
22
+ var useObservable_1 = require("./useObservable");
23
+ Object.defineProperty(exports, "useObservable", { enumerable: true, get: function () { return useObservable_1.useObservable; } });
24
+ Object.defineProperty(exports, "useMemoObservable", { enumerable: true, get: function () { return useObservable_1.useMemoObservable; } });
25
+ var useAsObservable_1 = require("./useAsObservable");
26
+ Object.defineProperty(exports, "useAsObservable", { enumerable: true, get: function () { return useAsObservable_1.useAsObservable; } });
27
+ var useObservableCallback_1 = require("./useObservableCallback");
28
+ Object.defineProperty(exports, "useObservableCallback", { enumerable: true, get: function () { return useObservableCallback_1.useObservableCallback; } });
@@ -1,8 +1,8 @@
1
- import * as React from 'react';
2
1
  import { Observable } from 'rxjs';
3
- declare type Component<Props> = (input$: Observable<Props>) => Observable<React.ReactNode>;
4
- export declare function reactiveComponent<Props>(observable: Observable<Props>): React.FunctionComponent<{}>;
5
- export declare function reactiveComponent<Props>(component: Component<Props>): React.FunctionComponent<Props>;
6
- declare type ForwardRefComponent<RefType, Props> = (input$: Observable<Props>, ref: React.Ref<RefType>) => Observable<React.ReactNode>;
7
- export declare function forwardRef<RefType, Props = {}>(component: ForwardRefComponent<RefType, Props>): React.ForwardRefExoticComponent<React.PropsWithoutRef<Props> & React.RefAttributes<RefType>>;
2
+ import { FunctionComponent, ReactNode, Ref } from 'react';
3
+ declare type Component<Props> = (input$: Observable<Props>) => Observable<ReactNode>;
4
+ export declare function reactiveComponent<Props>(observable: Observable<Props>): FunctionComponent<{}>;
5
+ export declare function reactiveComponent<Props>(component: Component<Props>): FunctionComponent<Props>;
6
+ declare type ForwardRefComponent<RefType, Props> = (input$: Observable<Props>, ref: Ref<RefType>) => Observable<ReactNode>;
7
+ export declare function forwardRef<RefType, Props = {}>(component: ForwardRefComponent<RefType, Props>): import("react").ForwardRefExoticComponent<import("react").PropsWithoutRef<Props> & import("react").RefAttributes<RefType>>;
8
8
  export {};
@@ -1,39 +1,20 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  Object.defineProperty(exports, "__esModule", { value: true });
22
3
  exports.forwardRef = exports.reactiveComponent = void 0;
23
- var React = __importStar(require("react"));
24
4
  var displayName_1 = require("./displayName");
25
5
  var useAsObservable_1 = require("./useAsObservable");
26
6
  var useObservable_1 = require("./useObservable");
7
+ var react_1 = require("react");
27
8
  function fromComponent(component) {
28
9
  var wrappedComponent = function (props) {
29
- return React.createElement(React.Fragment, null, useObservable_1.useObservable(React.useRef(component(useAsObservable_1.useAsObservable(props))).current));
10
+ return (0, react_1.createElement)(react_1.Fragment, null, (0, useObservable_1.useObservable)((0, react_1.useRef)(component((0, useAsObservable_1.useAsObservable)(props))).current));
30
11
  };
31
- wrappedComponent.displayName = displayName_1.wrapDisplayName(component, 'reactiveComponent');
12
+ wrappedComponent.displayName = (0, displayName_1.wrapDisplayName)(component, 'reactiveComponent');
32
13
  return wrappedComponent;
33
14
  }
34
15
  function fromObservable(input$) {
35
16
  return function ReactiveComponent() {
36
- return React.createElement(React.Fragment, null, useObservable_1.useObservable(input$));
17
+ return (0, react_1.createElement)(react_1.Fragment, null, (0, useObservable_1.useObservable)(input$));
37
18
  };
38
19
  }
39
20
  function reactiveComponent(observableOrComponent) {
@@ -43,10 +24,10 @@ function reactiveComponent(observableOrComponent) {
43
24
  }
44
25
  exports.reactiveComponent = reactiveComponent;
45
26
  function forwardRef(component) {
46
- var wrappedComponent = React.forwardRef(function (props, ref) {
47
- return React.createElement(React.Fragment, null, useObservable_1.useObservable(React.useRef(component(useAsObservable_1.useAsObservable(props), ref)).current));
27
+ var wrappedComponent = (0, react_1.forwardRef)(function (props, ref) {
28
+ return (0, react_1.createElement)(react_1.Fragment, null, (0, useObservable_1.useObservable)((0, react_1.useRef)(component((0, useAsObservable_1.useAsObservable)(props), ref)).current));
48
29
  });
49
- wrappedComponent.displayName = displayName_1.wrapDisplayName(component, 'reactiveComponent');
30
+ wrappedComponent.displayName = (0, displayName_1.wrapDisplayName)(component, 'reactiveComponent');
50
31
  return wrappedComponent;
51
32
  }
52
33
  exports.forwardRef = forwardRef;
@@ -6,3 +6,4 @@ import { Observable } from 'rxjs';
6
6
  * @param value
7
7
  */
8
8
  export declare function useAsObservable<T>(value: T): Observable<T>;
9
+ export declare function useAsObservable<T, K>(value: T, operator: (input: Observable<T>) => Observable<K>): Observable<K>;
@@ -1,41 +1,18 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  Object.defineProperty(exports, "__esModule", { value: true });
22
3
  exports.useAsObservable = void 0;
23
4
  var rxjs_1 = require("rxjs");
24
- var React = __importStar(require("react"));
25
- /**
26
- * React hook to convert any props or state value into an observable
27
- * Returns an observable representing updates to any React value (props, state or any other calculated value)
28
- * Note: the returned observable is the same instance throughout the component lifecycle
29
- * @param value
30
- */
31
- function useAsObservable(value) {
32
- var isInitial = React.useRef(true);
33
- var subjectRef = React.useRef(new rxjs_1.BehaviorSubject(value));
34
- var observableRef = React.useRef();
5
+ var react_1 = require("react");
6
+ var useIsomorphicEffect_1 = require("./useIsomorphicEffect");
7
+ function useAsObservable(value, operator) {
8
+ var isInitial = (0, react_1.useRef)(true);
9
+ var subjectRef = (0, react_1.useRef)(new rxjs_1.BehaviorSubject(value));
10
+ var observableRef = (0, react_1.useRef)();
35
11
  if (!observableRef.current) {
36
- observableRef.current = subjectRef.current.asObservable();
12
+ var observable = subjectRef.current.asObservable();
13
+ observableRef.current = operator ? observable.pipe(operator) : observable;
37
14
  }
38
- React.useEffect(function () {
15
+ (0, useIsomorphicEffect_1.useIsomorphicEffect)(function () {
39
16
  if (isInitial.current) {
40
17
  isInitial.current = false;
41
18
  }
@@ -44,7 +21,7 @@ function useAsObservable(value) {
44
21
  subjectRef.current.next(value);
45
22
  }
46
23
  }, [value]);
47
- React.useEffect(function () {
24
+ (0, useIsomorphicEffect_1.useIsomorphicEffect)(function () {
48
25
  return function () {
49
26
  return subjectRef.current.complete();
50
27
  };
@@ -0,0 +1,2 @@
1
+ import { useLayoutEffect } from 'react';
2
+ export declare const useIsomorphicEffect: typeof useLayoutEffect;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useIsomorphicEffect = void 0;
4
+ var react_1 = require("react");
5
+ exports.useIsomorphicEffect = typeof window !== 'undefined' ? react_1.useLayoutEffect : react_1.useEffect;
@@ -1,7 +1,7 @@
1
- import * as React from 'react';
2
1
  import { Observable } from 'rxjs';
3
- export declare function useObservable<T>(observable$: Observable<T>): T | undefined;
4
- export declare function useObservable<T>(observable$: Observable<T>, initialValue: T): T;
5
- export declare function useObservable<T>(observable$: Observable<T>, initialValue: () => T): T;
6
- export declare function useMemoObservable<T>(observableOrFactory: Observable<T> | (() => Observable<T>), deps: React.DependencyList): Observable<T | undefined>;
7
- export declare function useMemoObservable<T>(observableOrFactory: Observable<T> | (() => Observable<T>), deps: React.DependencyList, initialValue: T | (() => T)): Observable<T>;
2
+ import { DependencyList } from 'react';
3
+ export declare function useObservable<T>(observable: Observable<T>): T | undefined;
4
+ export declare function useObservable<T>(observable: Observable<T>, initialValue: T): T;
5
+ export declare function useObservable<T>(observable: Observable<T>, initialValue: () => T): T;
6
+ export declare function useMemoObservable<T>(observableOrFactory: Observable<T> | (() => Observable<T>), deps: DependencyList): T | undefined;
7
+ export declare function useMemoObservable<T>(observableOrFactory: Observable<T> | (() => Observable<T>), deps: DependencyList, initialValue: T | (() => T)): T;
@@ -1,33 +1,15 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  Object.defineProperty(exports, "__esModule", { value: true });
22
3
  exports.useMemoObservable = exports.useObservable = void 0;
23
- var React = __importStar(require("react"));
4
+ var react_1 = require("react");
5
+ var useIsomorphicEffect_1 = require("./useIsomorphicEffect");
24
6
  function getValue(value) {
25
7
  return typeof value === 'function' ? value() : value;
26
8
  }
27
9
  function useObservable(observable, initialValue) {
28
- var subscription = React.useRef();
29
- var isInitial = React.useRef(true);
30
- var _a = React.useState(function () {
10
+ var subscription = (0, react_1.useRef)();
11
+ var isInitial = (0, react_1.useRef)(true);
12
+ var _a = (0, react_1.useState)(function () {
31
13
  var isSync = true;
32
14
  var syncVal = getValue(initialValue);
33
15
  subscription.current = observable.subscribe(function (nextVal) {
@@ -41,8 +23,8 @@ function useObservable(observable, initialValue) {
41
23
  isSync = false;
42
24
  return syncVal;
43
25
  }), value = _a[0], setState = _a[1];
44
- React.useEffect(function () {
45
- // when the observable$ changes after initial (possibly sync render)
26
+ (0, useIsomorphicEffect_1.useIsomorphicEffect)(function () {
27
+ // when the observable changes after initial (possibly sync render)
46
28
  if (!isInitial.current) {
47
29
  subscription.current = observable.subscribe(function (nextVal) { return setState(nextVal); });
48
30
  }
@@ -58,6 +40,6 @@ function useObservable(observable, initialValue) {
58
40
  }
59
41
  exports.useObservable = useObservable;
60
42
  function useMemoObservable(observableOrFactory, deps, initialValue) {
61
- return useObservable(React.useMemo(function () { return getValue(observableOrFactory); }, deps), initialValue);
43
+ return useObservable((0, react_1.useMemo)(function () { return getValue(observableOrFactory); }, deps), initialValue);
62
44
  }
63
45
  exports.useMemoObservable = useMemoObservable;
@@ -0,0 +1,3 @@
1
+ import { DependencyList } from 'react';
2
+ import { Observable } from 'rxjs';
3
+ export declare function useObservableCallback<T, U>(fn: (arg: Observable<T>) => Observable<U>, dependencies?: DependencyList): (arg: T) => void;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useObservableCallback = void 0;
4
+ var react_1 = require("react");
5
+ var observable_callback_1 = require("observable-callback");
6
+ var EMPTY_DEPS = [];
7
+ function useObservableCallback(fn, dependencies) {
8
+ if (dependencies === void 0) { dependencies = EMPTY_DEPS; }
9
+ var callbackRef = (0, react_1.useRef)();
10
+ if (!callbackRef.current) {
11
+ callbackRef.current = (0, observable_callback_1.observableCallback)();
12
+ }
13
+ var _a = callbackRef.current, calls$ = _a[0], call = _a[1];
14
+ // eslint-disable-next-line react-hooks/exhaustive-deps
15
+ var callback = (0, react_1.useCallback)(fn, dependencies);
16
+ (0, react_1.useEffect)(function () {
17
+ var subscription = calls$.pipe(callback).subscribe();
18
+ return function () {
19
+ subscription.unsubscribe();
20
+ };
21
+ }, [calls$, call, callback]);
22
+ return call;
23
+ }
24
+ exports.useObservableCallback = useObservableCallback;
@@ -0,0 +1,9 @@
1
+ import { Observable } from 'rxjs';
2
+ /**
3
+ * React hook to convert any props or state value into an observable
4
+ * Returns an observable representing updates to any React value (props, state or any other calculated value)
5
+ * Note: the returned observable is the same instance throughout the component lifecycle
6
+ * @param value
7
+ */
8
+ export declare function useWithObservable<T>(value: T): T | undefined;
9
+ export declare function useWithObservable<T, K>(value: T, operator: (input: Observable<T>) => Observable<K>): K | undefined;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useWithObservable = void 0;
4
+ var useObservable_1 = require("./useObservable");
5
+ var useAsObservable_1 = require("./useAsObservable");
6
+ function useWithObservable(value, operator) {
7
+ return operator
8
+ ? (0, useObservable_1.useObservable)((0, useAsObservable_1.useAsObservable)(value, operator))
9
+ : (0, useObservable_1.useObservable)((0, useAsObservable_1.useAsObservable)(value));
10
+ }
11
+ exports.useWithObservable = useWithObservable;
@@ -1,7 +1,7 @@
1
1
  import { Observable, OperatorFunction } from 'rxjs';
2
- import * as React from 'react';
3
- export declare function observeState<T>(initial: T | (() => T)): [Observable<T>, React.Dispatch<React.SetStateAction<T>>];
2
+ import { Dispatch, SetStateAction, Context } from 'react';
3
+ export declare function observeState<T>(initial: T | (() => T)): [Observable<T>, Dispatch<SetStateAction<T>>];
4
4
  export declare function observeCallback<T>(): [Observable<T>, (arg: T) => void];
5
5
  export declare function observeCallback<T, K>(operator: OperatorFunction<T, K>): [Observable<K>, (arg: T) => void];
6
- export declare function observeContext<T>(context: React.Context<T>): Observable<T>;
6
+ export declare function observeContext<T>(context: Context<T>): Observable<T>;
7
7
  export declare function observeElement<T>(): [Observable<T | null>, (el: T | null) => void];
package/dist/cjs/utils.js CHANGED
@@ -1,49 +1,30 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  Object.defineProperty(exports, "__esModule", { value: true });
22
3
  exports.observeElement = exports.observeContext = exports.observeCallback = exports.observeState = void 0;
23
- var React = __importStar(require("react"));
24
4
  var useAsObservable_1 = require("./useAsObservable");
25
5
  var observable_callback_1 = require("observable-callback");
26
6
  var operators_1 = require("rxjs/operators");
27
- var createState = function (initialState) { return observable_callback_1.observableCallback(operators_1.startWith(initialState)); };
7
+ var react_1 = require("react");
8
+ var createState = function (initialState) { return (0, observable_callback_1.observableCallback)((0, operators_1.startWith)(initialState)); };
28
9
  function observeState(initial) {
29
- var _a = React.useState(initial), value = _a[0], update = _a[1];
30
- return [useAsObservable_1.useAsObservable(value), update];
10
+ var _a = (0, react_1.useState)(initial), value = _a[0], update = _a[1];
11
+ return [(0, useAsObservable_1.useAsObservable)(value), update];
31
12
  }
32
13
  exports.observeState = observeState;
33
14
  function observeCallback(operator) {
34
- var ref = React.useRef();
15
+ var ref = (0, react_1.useRef)();
35
16
  if (!ref.current) {
36
- ref.current = operator ? observable_callback_1.observableCallback(operator) : observable_callback_1.observableCallback();
17
+ ref.current = operator ? (0, observable_callback_1.observableCallback)(operator) : (0, observable_callback_1.observableCallback)();
37
18
  }
38
19
  return ref.current;
39
20
  }
40
21
  exports.observeCallback = observeCallback;
41
22
  function observeContext(context) {
42
- return useAsObservable_1.useAsObservable(React.useContext(context));
23
+ return (0, useAsObservable_1.useAsObservable)((0, react_1.useContext)(context));
43
24
  }
44
25
  exports.observeContext = observeContext;
45
26
  function observeElement() {
46
- var ref = React.useRef();
27
+ var ref = (0, react_1.useRef)();
47
28
  if (!ref.current) {
48
29
  ref.current = createState(null);
49
30
  }
@@ -39,13 +39,13 @@ var reactiveComponent_1 = require("./reactiveComponent");
39
39
  * @deprecated Use reactiveComponent instead
40
40
  */
41
41
  function withPropsStream(observableOrFactory, TargetComponent) {
42
- var ComposedComponent = reactiveComponent_1.reactiveComponent(function (sourceProps$) {
42
+ var ComposedComponent = (0, reactiveComponent_1.reactiveComponent)(function (sourceProps$) {
43
43
  var targetProps$ = typeof observableOrFactory === 'function'
44
44
  ? observableOrFactory(sourceProps$)
45
45
  : observableOrFactory;
46
- return targetProps$.pipe(operators_1.map(function (props) { return React.createElement(TargetComponent, __assign({}, props)); }));
46
+ return targetProps$.pipe((0, operators_1.map)(function (props) { return React.createElement(TargetComponent, __assign({}, props)); }));
47
47
  });
48
- ComposedComponent.displayName = displayName_1.wrapDisplayName(TargetComponent, 'withPropsStream');
48
+ ComposedComponent.displayName = (0, displayName_1.wrapDisplayName)(TargetComponent, 'withPropsStream');
49
49
  return ComposedComponent;
50
50
  }
51
51
  exports.withPropsStream = withPropsStream;
@@ -1,10 +1,10 @@
1
- import * as React from 'react';
2
1
  import { Observable } from 'rxjs';
2
+ import { ComponentType, ReactNode } from 'react';
3
3
  interface Props<T> {
4
4
  observable: Observable<T>;
5
- children: (value: T) => React.ReactNode;
5
+ children: (value: T) => ReactNode;
6
6
  }
7
- declare type ObservableComponent<T> = React.ComponentType<Props<T>>;
7
+ declare type ObservableComponent<T> = ComponentType<Props<T>>;
8
8
  /**
9
9
  * @deprecated Use the useObservable hook instead
10
10
  */
@@ -1,6 +1,7 @@
1
1
  export { reactiveComponent, reactiveComponent as rxComponent, forwardRef } from './reactiveComponent';
2
- export { useObservable, useMemoObservable } from './useObservable';
3
- export { useAsObservable } from './useAsObservable';
4
2
  export { observeState, observeCallback, observeContext, observeElement } from './utils';
5
3
  export { observeState as state, observeCallback as handler, observeContext as context, observeElement as elementRef, } from './utils';
6
4
  export { observableCallback } from 'observable-callback';
5
+ export { useObservable, useMemoObservable } from './useObservable';
6
+ export { useAsObservable } from './useAsObservable';
7
+ export { useObservableCallback } from './useObservableCallback';
@@ -1,7 +1,9 @@
1
1
  // Main package exports
2
2
  export { reactiveComponent, reactiveComponent as rxComponent, forwardRef } from './reactiveComponent';
3
- export { useObservable, useMemoObservable } from './useObservable';
4
- export { useAsObservable } from './useAsObservable';
5
3
  export { observeState, observeCallback, observeContext, observeElement } from './utils';
6
4
  export { observeState as state, observeCallback as handler, observeContext as context, observeElement as elementRef, } from './utils';
7
5
  export { observableCallback } from 'observable-callback';
6
+ // hooks
7
+ export { useObservable, useMemoObservable } from './useObservable';
8
+ export { useAsObservable } from './useAsObservable';
9
+ export { useObservableCallback } from './useObservableCallback';