react-rx 2.0.4 → 2.1.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 (65) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/dist/cjs/__tests__/strictmode.test.d.ts +1 -0
  4. package/dist/cjs/__tests__/strictmode.test.js +111 -0
  5. package/dist/cjs/__tests__/useAsObservable.test.d.ts +1 -0
  6. package/dist/cjs/__tests__/useAsObservable.test.js +77 -0
  7. package/dist/cjs/__tests__/useObservable.test.d.ts +1 -0
  8. package/dist/cjs/__tests__/useObservable.test.js +116 -0
  9. package/dist/cjs/displayName.js +1 -0
  10. package/dist/cjs/reactiveComponent.js +2 -0
  11. package/dist/cjs/useAsObservable.js +12 -3
  12. package/dist/cjs/useIsomorphicEffect.d.ts +2 -2
  13. package/dist/cjs/useObservable.js +22 -6
  14. package/dist/cjs/utils.js +5 -0
  15. package/dist/es2015/__tests__/strictmode.test.d.ts +1 -0
  16. package/dist/es2015/__tests__/strictmode.test.js +69 -0
  17. package/dist/es2015/__tests__/useAsObservable.test.d.ts +1 -0
  18. package/dist/es2015/__tests__/useAsObservable.test.js +72 -0
  19. package/dist/es2015/__tests__/useObservable.test.d.ts +1 -0
  20. package/dist/es2015/__tests__/useObservable.test.js +110 -0
  21. package/dist/es2015/displayName.js +1 -0
  22. package/dist/es2015/reactiveComponent.js +2 -0
  23. package/dist/es2015/useAsObservable.js +13 -4
  24. package/dist/es2015/useIsomorphicEffect.d.ts +2 -2
  25. package/dist/es2015/useObservable.js +23 -7
  26. package/dist/es2015/utils.js +5 -0
  27. package/dist/esm/__tests__/strictmode.test.d.ts +1 -0
  28. package/dist/esm/__tests__/strictmode.test.js +109 -0
  29. package/dist/esm/__tests__/useAsObservable.test.d.ts +1 -0
  30. package/dist/esm/__tests__/useAsObservable.test.js +72 -0
  31. package/dist/esm/__tests__/useObservable.test.d.ts +1 -0
  32. package/dist/esm/__tests__/useObservable.test.js +114 -0
  33. package/dist/esm/displayName.js +1 -0
  34. package/dist/esm/reactiveComponent.js +2 -0
  35. package/dist/esm/useAsObservable.js +13 -4
  36. package/dist/esm/useIsomorphicEffect.d.ts +2 -2
  37. package/dist/esm/useObservable.js +23 -7
  38. package/dist/esm/utils.js +5 -0
  39. package/package.json +106 -24
  40. package/src/__tests__/strictmode.test.ts +79 -0
  41. package/src/__tests__/useAsObservable.test.tsx +94 -0
  42. package/src/__tests__/useObservable.test.tsx +145 -0
  43. package/src/displayName.ts +1 -0
  44. package/src/reactiveComponent.ts +3 -0
  45. package/src/useAsObservable.ts +14 -4
  46. package/src/useObservable.ts +30 -10
  47. package/src/useWithObservable.ts +1 -0
  48. package/src/utils.ts +5 -0
  49. package/.eslintrc.json +0 -13
  50. package/.idea/codeStyles/Project.xml +0 -113
  51. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  52. package/.idea/compiler.xml +0 -6
  53. package/.idea/encodings.xml +0 -4
  54. package/.idea/inspectionProfiles/Project_Default.xml +0 -7
  55. package/.idea/jsonSchemas.xml +0 -25
  56. package/.idea/markdown-navigator-enh.xml +0 -29
  57. package/.idea/markdown-navigator.xml +0 -55
  58. package/.idea/markdown.xml +0 -9
  59. package/.idea/misc.xml +0 -0
  60. package/.idea/modules.xml +0 -8
  61. package/.idea/react-rx.iml +0 -17
  62. package/.idea/vcs.xml +0 -6
  63. package/.prettierrc +0 -8
  64. package/jest.config.ts +0 -14
  65. package/tsconfig.json +0 -12
@@ -1,6 +1,5 @@
1
1
  import {BehaviorSubject, Observable} from 'rxjs'
2
- import {useCallback, useRef} from 'react'
3
- import {useIsomorphicEffect} from './useIsomorphicEffect'
2
+ import {useCallback, useEffect, useRef} from 'react'
4
3
  import {distinctUntilChanged} from 'rxjs/operators'
5
4
 
6
5
  /**
@@ -33,7 +32,7 @@ export function useAsObservable<T, K = T>(
33
32
 
34
33
  const [observable] = ref.current
35
34
 
36
- useIsomorphicEffect(() => {
35
+ useEffect(() => {
37
36
  if (!ref.current) {
38
37
  return
39
38
  }
@@ -41,11 +40,22 @@ export function useAsObservable<T, K = T>(
41
40
  subject.next(value)
42
41
  }, [value, ref])
43
42
 
44
- useIsomorphicEffect(() => {
43
+ const shouldRestoreSubscriptionRef = useRef(false)
44
+ useEffect(() => {
45
+ if (shouldRestoreSubscriptionRef.current) {
46
+ if (!ref.current) {
47
+ ref.current = setup()
48
+ }
49
+ shouldRestoreSubscriptionRef.current = false
50
+ }
51
+
45
52
  return () => {
46
53
  if (!ref.current) {
47
54
  return
48
55
  }
56
+ // React StrictMode will call effects as `setup + teardown + setup` thus we can't trust this callback as "react is about to unmount"
57
+ // Tracking this ref lets us set the subscription back up on the next `setup` call if needed, and if it really did unmounted then all is well
58
+ shouldRestoreSubscriptionRef.current = true
49
59
  const [, subject] = ref.current
50
60
  subject.complete()
51
61
  ref.current = undefined
@@ -1,8 +1,7 @@
1
1
  import {Observable, Subscription} from 'rxjs'
2
- import {DependencyList, useMemo} from 'react'
2
+ import {DependencyList, useEffect, useMemo, useRef} from 'react'
3
3
  import {useSyncExternalStore} from 'use-sync-external-store/shim'
4
4
  import {shareReplay, tap} from 'rxjs/operators'
5
- import {useIsomorphicEffect} from './useIsomorphicEffect'
6
5
 
7
6
  function getValue<T>(value: T): T extends () => infer U ? U : T {
8
7
  return typeof value === 'function' ? value() : value
@@ -22,25 +21,34 @@ function getOrCreateStore<T>(inputObservable: Observable<T>, initialValue: T) {
22
21
  shareReplay({refCount: true, bufferSize: 1}),
23
22
  tap(value => (entry.currentValue = value)),
24
23
  )
24
+
25
+ // Eagerly subscribe to sync set `entry.currentValue` to what the observable returns
25
26
  entry.subscription = entry.observable.subscribe()
26
27
 
27
28
  cache.set(inputObservable, entry as CacheRecord<T>)
28
29
  }
29
- return cache.get(inputObservable)
30
+ return cache.get(inputObservable)!
30
31
  }
31
32
 
32
33
  export function useObservable<T>(observable: Observable<T>): T | undefined
33
34
  export function useObservable<T>(observable: Observable<T>, initialValue: T): T
34
35
  export function useObservable<T>(observable: Observable<T>, initialValue: () => T): T
35
36
  export function useObservable<T>(observable: Observable<T>, initialValue?: T | (() => T)) {
36
- const [getSnapshot, subscribe] = useMemo(() => {
37
- const record = getOrCreateStore(observable, getValue(initialValue))!
37
+ const [getSnapshot, subscribe] = useMemo<
38
+ [() => T, Parameters<typeof useSyncExternalStore>[0]]
39
+ >(() => {
40
+ const store = getOrCreateStore(observable, getValue(initialValue))
41
+ if (store.subscription.closed) {
42
+ store.subscription = store.observable.subscribe()
43
+ }
38
44
  return [
39
45
  function getSnapshot() {
40
- return record.currentValue
46
+ // @TODO: perf opt opportunity: we could do `store.subscription.unsubscribe()` here to clear up some memory, as this subscription is only needed to provide a sync initialValue.
47
+ return store.currentValue
41
48
  },
42
- function subscribe(callback: (value: T) => void) {
43
- const sub = record.observable.subscribe(next => callback(next))
49
+ function subscribe(callback: () => void) {
50
+ // @TODO: perf opt opportunity: we could do `store.subscription.unsubscribe()` here as we only need 1 subscription active to keep the observer alive
51
+ const sub = store.observable.subscribe(callback)
44
52
  return () => {
45
53
  sub.unsubscribe()
46
54
  }
@@ -48,9 +56,21 @@ export function useObservable<T>(observable: Observable<T>, initialValue?: T | (
48
56
  ]
49
57
  }, [observable])
50
58
 
51
- useIsomorphicEffect(() => {
59
+ const shouldRestoreSubscriptionRef = useRef(false)
60
+ useEffect(() => {
61
+ const store = getOrCreateStore(observable, getValue(initialValue))
62
+ if (shouldRestoreSubscriptionRef.current) {
63
+ if (store.subscription.closed) {
64
+ store.subscription = store.observable.subscribe()
65
+ }
66
+ shouldRestoreSubscriptionRef.current = false
67
+ }
68
+
52
69
  return () => {
53
- getOrCreateStore(observable, getValue(initialValue))!.subscription.unsubscribe()
70
+ // React StrictMode will call effects as `setup + teardown + setup` thus we can't trust this callback as "react is about to unmount"
71
+ // Tracking this ref lets us set the subscription back up on the next `setup` call if needed, and if it really did unmounted then all is well
72
+ shouldRestoreSubscriptionRef.current = !store.subscription.closed
73
+ store.subscription.unsubscribe()
54
74
  }
55
75
  }, [observable])
56
76
 
@@ -1,3 +1,4 @@
1
+ /* eslint-disable react-hooks/rules-of-hooks */
1
2
  import {Observable} from 'rxjs'
2
3
  import {useObservable} from './useObservable'
3
4
  import {useAsObservable} from './useAsObservable'
package/src/utils.ts CHANGED
@@ -12,7 +12,9 @@ export function observeState<T>(
12
12
  export function observeState<T>(
13
13
  initial?: T | (() => T),
14
14
  ): [Observable<T | undefined>, Dispatch<SetStateAction<T | undefined>>] {
15
+ // eslint-disable-next-line react-hooks/rules-of-hooks
15
16
  const [value, update] = useState<T | undefined>(initial)
17
+ // eslint-disable-next-line react-hooks/rules-of-hooks
16
18
  return [useAsObservable(value), update]
17
19
  }
18
20
 
@@ -23,6 +25,7 @@ export function observeCallback<T, K>(
23
25
  export function observeCallback<T, K>(
24
26
  operator?: OperatorFunction<T, K>,
25
27
  ): [Observable<T | K>, (arg: T) => void] {
28
+ // eslint-disable-next-line react-hooks/rules-of-hooks
26
29
  const ref = useRef<[Observable<T | K>, (arg: T) => void]>()
27
30
  if (!ref.current) {
28
31
  ref.current = operator ? observableCallback<T, K>(operator) : observableCallback<T>()
@@ -31,10 +34,12 @@ export function observeCallback<T, K>(
31
34
  }
32
35
 
33
36
  export function observeContext<T>(context: Context<T>): Observable<T> {
37
+ // eslint-disable-next-line react-hooks/rules-of-hooks
34
38
  return useAsObservable(useContext<T>(context))
35
39
  }
36
40
 
37
41
  export function observeElement<T>(): [Observable<T | null>, (el: T | null) => void] {
42
+ // eslint-disable-next-line react-hooks/rules-of-hooks
38
43
  const ref = useRef<[Observable<T | null>, (value: T | null) => void]>()
39
44
  if (!ref.current) {
40
45
  ref.current = createState<T | null>(null)
package/.eslintrc.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "env": {
3
- "node": true,
4
- "browser": true
5
- },
6
- "parser": "@typescript-eslint/parser",
7
- "extends": ["plugin:@typescript-eslint/recommended", "prettier"],
8
- "rules": {
9
- "prettier/prettier": "error",
10
- "@typescript-eslint/explicit-function-return-type": "off"
11
- },
12
- "plugins": ["@typescript-eslint", "prettier", "react"]
13
- }
@@ -1,113 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <code_scheme name="Project" version="173">
3
- <option name="OTHER_INDENT_OPTIONS">
4
- <value>
5
- <option name="INDENT_SIZE" value="2" />
6
- <option name="TAB_SIZE" value="2" />
7
- </value>
8
- </option>
9
- <HTMLCodeStyleSettings>
10
- <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
11
- <option name="HTML_ENFORCE_QUOTES" value="true" />
12
- </HTMLCodeStyleSettings>
13
- <JSCodeStyleSettings version="0">
14
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
15
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
16
- <option name="FORCE_QUOTE_STYlE" value="true" />
17
- <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
18
- <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
19
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
20
- </JSCodeStyleSettings>
21
- <MarkdownNavigatorCodeStyleSettings>
22
- <option name="RIGHT_MARGIN" value="72" />
23
- </MarkdownNavigatorCodeStyleSettings>
24
- <TypeScriptCodeStyleSettings version="0">
25
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
26
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
27
- <option name="FORCE_QUOTE_STYlE" value="true" />
28
- <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
29
- <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
30
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
31
- </TypeScriptCodeStyleSettings>
32
- <VueCodeStyleSettings>
33
- <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
34
- <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
35
- </VueCodeStyleSettings>
36
- <XML>
37
- <option name="XML_SPACE_INSIDE_EMPTY_TAG" value="true" />
38
- <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
39
- </XML>
40
- <codeStyleSettings language="CSS">
41
- <indentOptions>
42
- <option name="INDENT_SIZE" value="2" />
43
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
44
- <option name="TAB_SIZE" value="2" />
45
- </indentOptions>
46
- </codeStyleSettings>
47
- <codeStyleSettings language="HTML">
48
- <option name="SOFT_MARGINS" value="80" />
49
- <indentOptions>
50
- <option name="INDENT_SIZE" value="2" />
51
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
52
- <option name="TAB_SIZE" value="2" />
53
- </indentOptions>
54
- </codeStyleSettings>
55
- <codeStyleSettings language="JSON">
56
- <indentOptions>
57
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
58
- <option name="TAB_SIZE" value="2" />
59
- </indentOptions>
60
- </codeStyleSettings>
61
- <codeStyleSettings language="Jade">
62
- <indentOptions>
63
- <option name="INDENT_SIZE" value="2" />
64
- <option name="TAB_SIZE" value="2" />
65
- </indentOptions>
66
- </codeStyleSettings>
67
- <codeStyleSettings language="JavaScript">
68
- <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
69
- <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
70
- <option name="KEEP_SIMPLE_BLOCKS_IN_ONE_LINE" value="true" />
71
- <option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="true" />
72
- <option name="SOFT_MARGINS" value="80" />
73
- <indentOptions>
74
- <option name="INDENT_SIZE" value="2" />
75
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
76
- <option name="TAB_SIZE" value="2" />
77
- </indentOptions>
78
- </codeStyleSettings>
79
- <codeStyleSettings language="LESS">
80
- <indentOptions>
81
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
82
- <option name="TAB_SIZE" value="2" />
83
- </indentOptions>
84
- </codeStyleSettings>
85
- <codeStyleSettings language="SASS">
86
- <indentOptions>
87
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
88
- <option name="TAB_SIZE" value="2" />
89
- </indentOptions>
90
- </codeStyleSettings>
91
- <codeStyleSettings language="SCSS">
92
- <indentOptions>
93
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
94
- <option name="TAB_SIZE" value="2" />
95
- </indentOptions>
96
- </codeStyleSettings>
97
- <codeStyleSettings language="TypeScript">
98
- <option name="SOFT_MARGINS" value="80" />
99
- <indentOptions>
100
- <option name="INDENT_SIZE" value="2" />
101
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
102
- <option name="TAB_SIZE" value="2" />
103
- </indentOptions>
104
- </codeStyleSettings>
105
- <codeStyleSettings language="XML">
106
- <indentOptions>
107
- <option name="INDENT_SIZE" value="2" />
108
- <option name="CONTINUATION_INDENT_SIZE" value="4" />
109
- <option name="TAB_SIZE" value="2" />
110
- </indentOptions>
111
- </codeStyleSettings>
112
- </code_scheme>
113
- </component>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
- </state>
5
- </component>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="TypeScriptCompiler">
4
- <option name="nodeInterpreterTextField" value="node" />
5
- </component>
6
- </project>
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Encoding" addBOMForNewFiles="with NO BOM" />
4
- </project>
@@ -1,7 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
5
- <inspection_tool class="TypescriptExplicitMemberType" enabled="false" level="INFORMATION" enabled_by_default="false" />
6
- </profile>
7
- </component>
@@ -1,25 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="JsonSchemaMappingsProjectConfiguration">
4
- <state>
5
- <map>
6
- <entry key="package">
7
- <value>
8
- <SchemaInfo>
9
- <option name="name" value="package" />
10
- <option name="relativePathToSchema" value="http://json.schemastore.org/package" />
11
- <option name="applicationDefined" value="true" />
12
- <option name="patterns">
13
- <list>
14
- <Item>
15
- <option name="path" value="package.json" />
16
- </Item>
17
- </list>
18
- </option>
19
- </SchemaInfo>
20
- </value>
21
- </entry>
22
- </map>
23
- </state>
24
- </component>
25
- </project>
@@ -1,29 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="MarkdownEnhProjectSettings">
4
- <AnnotatorSettings targetHasSpaces="true" linkCaseMismatch="true" wikiCaseMismatch="true" wikiLinkHasDashes="true" notUnderWikiHome="true" targetNotWikiPageExt="true" notUnderSourceWikiHome="true" targetNameHasAnchor="true" targetPathHasAnchor="true" wikiLinkHasSlash="true" wikiLinkHasSubdir="true" wikiLinkHasOnlyAnchor="true" linkTargetsWikiHasExt="true" linkTargetsWikiHasBadExt="true" notUnderSameRepo="true" targetNotUnderVcs="false" linkNeedsExt="true" linkHasBadExt="true" linkTargetNeedsExt="true" linkTargetHasBadExt="true" wikiLinkNotInWiki="true" imageTargetNotInRaw="true" repoRelativeAcrossVcsRoots="true" multipleWikiTargetsMatch="true" unresolvedLinkReference="true" linkIsIgnored="true" anchorIsIgnored="true" anchorIsUnresolved="true" anchorLineReferenceIsUnresolved="true" anchorLineReferenceFormat="true" anchorHasDuplicates="true" abbreviationDuplicates="true" abbreviationNotUsed="true" attributeIdDuplicateDefinition="true" attributeIdNotUsed="true" footnoteDuplicateDefinition="true" footnoteUnresolved="true" footnoteDuplicates="true" footnoteNotUsed="true" macroDuplicateDefinition="true" macroUnresolved="true" macroDuplicates="true" macroNotUsed="true" referenceDuplicateDefinition="true" referenceUnresolved="true" referenceDuplicates="true" referenceNotUsed="true" referenceUnresolvedNumericId="true" enumRefDuplicateDefinition="true" enumRefUnresolved="true" enumRefDuplicates="true" enumRefNotUsed="true" enumRefLinkUnresolved="true" enumRefLinkDuplicates="true" simTocUpdateNeeded="true" simTocTitleSpaceNeeded="true" />
5
- <HtmlExportSettings updateOnSave="false" parentDir="" targetDir="" cssDir="css" scriptDir="js" plainHtml="false" imageDir="" copyLinkedImages="false" imagePathType="0" targetPathType="2" targetExt="" useTargetExt="false" noCssNoScripts="false" useElementStyleAttribute="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" />
6
- <LinkMapSettings>
7
- <textMaps />
8
- </LinkMapSettings>
9
- </component>
10
- <component name="MarkdownNavigatorHistory">
11
- <PasteImageHistory checkeredTransparentBackground="false" filename="image" directory="" onPasteImageTargetRef="3" onPasteLinkText="0" onPasteImageElement="1" onPasteLinkElement="1" onPasteReferenceElement="2" cornerRadius="20" borderColor="0" transparentColor="16777215" borderWidth="1" trimTop="0" trimBottom="0" trimLeft="0" trimRight="0" transparent="false" roundCorners="false" showPreview="true" bordered="false" scaled="false" cropped="false" hideInapplicableOperations="false" preserveLinkFormat="false" scale="50" scalingInterpolation="1" transparentTolerance="0" saveAsDefaultOnOK="false" linkFormat="0" addHighlights="false" showHighlightCoordinates="true" showHighlights="false" mouseSelectionAddsHighlight="false" outerFilled="false" outerFillColor="0" outerFillTransparent="true" outerFillAlpha="30">
12
- <highlightList />
13
- <directories />
14
- <filenames />
15
- </PasteImageHistory>
16
- <CopyImageHistory checkeredTransparentBackground="false" filename="image" directory="" onPasteImageTargetRef="3" onPasteLinkText="0" onPasteImageElement="1" onPasteLinkElement="1" onPasteReferenceElement="2" cornerRadius="20" borderColor="0" transparentColor="16777215" borderWidth="1" trimTop="0" trimBottom="0" trimLeft="0" trimRight="0" transparent="false" roundCorners="false" showPreview="true" bordered="false" scaled="false" cropped="false" hideInapplicableOperations="false" preserveLinkFormat="false" scale="50" scalingInterpolation="1" transparentTolerance="0" saveAsDefaultOnOK="false" linkFormat="0" addHighlights="false" showHighlightCoordinates="true" showHighlights="false" mouseSelectionAddsHighlight="false" outerFilled="false" outerFillColor="0" outerFillTransparent="true" outerFillAlpha="30">
17
- <highlightList />
18
- <directories />
19
- <filenames />
20
- </CopyImageHistory>
21
- <PasteLinkHistory onPasteImageTargetRef="3" onPasteTargetRef="1" onPasteLinkText="0" onPasteImageElement="1" onPasteLinkElement="1" onPasteWikiElement="2" onPasteReferenceElement="2" hideInapplicableOperations="false" preserveLinkFormat="false" useHeadingForLinkText="false" linkFormat="0" saveAsDefaultOnOK="false" />
22
- <TableToJsonHistory>
23
- <entries />
24
- </TableToJsonHistory>
25
- <TableSortHistory>
26
- <entries />
27
- </TableSortHistory>
28
- </component>
29
- </project>
@@ -1,55 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="FlexmarkProjectSettings">
4
- <FlexmarkHtmlSettings flexmarkSpecExampleRendering="0" flexmarkSpecExampleRenderHtml="false">
5
- <flexmarkSectionLanguages>
6
- <option name="1" value="Markdown" />
7
- <option name="2" value="HTML" />
8
- <option name="3" value="flexmark-ast:1" />
9
- </flexmarkSectionLanguages>
10
- </FlexmarkHtmlSettings>
11
- </component>
12
- <component name="MarkdownProjectSettings">
13
- <PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" synchronizePreviewPosition="true" highlightPreviewType="LINE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="true" showSelectionInPreview="true" lastLayoutSetsDefault="false">
14
- <PanelProvider>
15
- <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" />
16
- </PanelProvider>
17
- </PreviewSettings>
18
- <ParserSettings gitHubSyntaxChange="false" correctedInvalidSettings="false" emojiShortcuts="1" emojiImages="0">
19
- <PegdownExtensions>
20
- <option name="ANCHORLINKS" value="true" />
21
- <option name="ATXHEADERSPACE" value="true" />
22
- <option name="FENCED_CODE_BLOCKS" value="true" />
23
- <option name="INTELLIJ_DUMMY_IDENTIFIER" value="true" />
24
- <option name="RELAXEDHRULES" value="true" />
25
- <option name="STRIKETHROUGH" value="true" />
26
- <option name="TABLES" value="true" />
27
- <option name="TASKLISTITEMS" value="true" />
28
- </PegdownExtensions>
29
- <ParserOptions>
30
- <option name="COMMONMARK_LISTS" value="true" />
31
- <option name="EMOJI_SHORTCUTS" value="true" />
32
- <option name="GFM_TABLE_RENDERING" value="true" />
33
- <option name="PRODUCTION_SPEC_PARSER" value="true" />
34
- <option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
35
- </ParserOptions>
36
- </ParserSettings>
37
- <HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" addPageHeader="false" imageUriSerials="false" addDocTypeHtml="true" noParaTags="false" plantUmlConversion="0">
38
- <GeneratorProvider>
39
- <provider providerId="com.vladsch.idea.multimarkdown.editor.text.html.generator" providerName="Unmodified HTML Generator" />
40
- </GeneratorProvider>
41
- <headerTop />
42
- <headerBottom />
43
- <bodyTop />
44
- <bodyBottom />
45
- </HtmlSettings>
46
- <CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssUriSerial="true" isCssTextEnabled="false" isDynamicPageWidth="true">
47
- <StylesheetProvider>
48
- <provider providerId="com.vladsch.idea.multimarkdown.editor.text.html.css" providerName="No Stylesheet" />
49
- </StylesheetProvider>
50
- <ScriptProviders />
51
- <cssText />
52
- <cssUriHistory />
53
- </CssSettings>
54
- </component>
55
- </project>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="MarkdownSettings">
4
- <enabledExtensions>
5
- <entry key="MermaidLanguageExtension" value="false" />
6
- <entry key="PlantUMLLanguageExtension" value="false" />
7
- </enabledExtensions>
8
- </component>
9
- </project>
package/.idea/misc.xml DELETED
File without changes
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/react-rx.iml" filepath="$PROJECT_DIR$/.idea/react-rx.iml" />
6
- </modules>
7
- </component>
8
- </project>
@@ -1,17 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$">
5
- <excludeFolder url="file://$MODULE_DIR$/.build-examples" />
6
- <excludeFolder url="file://$MODULE_DIR$/.cache" />
7
- <excludeFolder url="file://$MODULE_DIR$/.tmp" />
8
- <excludeFolder url="file://$MODULE_DIR$/build" />
9
- <excludeFolder url="file://$MODULE_DIR$/build-web" />
10
- <excludeFolder url="file://$MODULE_DIR$/dist" />
11
- <excludeFolder url="file://$MODULE_DIR$/temp" />
12
- <excludeFolder url="file://$MODULE_DIR$/tmp" />
13
- </content>
14
- <orderEntry type="inheritedJdk" />
15
- <orderEntry type="sourceFolder" forTests="false" />
16
- </component>
17
- </module>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
- </component>
6
- </project>
package/.prettierrc DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "semi": false,
3
- "arrowParens": "avoid",
4
- "printWidth": 100,
5
- "bracketSpacing": false,
6
- "singleQuote": true,
7
- "trailingComma": "all"
8
- }
package/jest.config.ts DELETED
@@ -1,14 +0,0 @@
1
- export default {
2
- preset: 'ts-jest',
3
- // verbose: true,
4
- testEnvironment: 'jsdom',
5
- testEnvironmentOptions: {
6
- url: 'http://localhost/',
7
- },
8
- globals: {
9
- 'ts-jest': {
10
- warnOnly: true,
11
- },
12
- },
13
- rootDir: 'src',
14
- }
package/tsconfig.json DELETED
@@ -1,12 +0,0 @@
1
- {
2
- "include": ["src/**/*"],
3
- "compilerOptions": {
4
- "target": "ES2015",
5
- "strict": true,
6
- "outDir": "dist",
7
- "jsx": "react",
8
- "declaration": true,
9
- "esModuleInterop": true,
10
- "moduleResolution": "node"
11
- }
12
- }