relay-forms-nodeps 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc.js +5 -0
- package/LICENSE +21 -0
- package/README.md +124 -0
- package/lib/RelayFormsTypes.d.ts +37 -0
- package/lib/RelayFormsTypes.js +5 -0
- package/lib/Utils.d.ts +11 -0
- package/lib/Utils.js +87 -0
- package/lib/es/RelayFormsTypes.d.ts +37 -0
- package/lib/es/RelayFormsTypes.js +0 -0
- package/lib/es/Utils.d.ts +11 -0
- package/lib/es/Utils.js +81 -0
- package/lib/es/index.d.ts +9 -0
- package/lib/es/index.js +7 -0
- package/lib/es/relay/RelayModernRecord.d.ts +107 -0
- package/lib/es/relay/RelayModernRecord.js +183 -0
- package/lib/es/relay/RelayModernSelector.d.ts +11 -0
- package/lib/es/relay/RelayModernSelector.js +29 -0
- package/lib/es/relay/RelayModernStore.d.ts +51 -0
- package/lib/es/relay/RelayModernStore.js +355 -0
- package/lib/es/relay/RelayReader.d.ts +14 -0
- package/lib/es/relay/RelayReader.js +86 -0
- package/lib/es/relay/RelayRecordProxy.d.ts +28 -0
- package/lib/es/relay/RelayRecordProxy.js +57 -0
- package/lib/es/relay/RelayRecordSource.d.ts +28 -0
- package/lib/es/relay/RelayRecordSource.js +70 -0
- package/lib/es/relay/RelayRecordSourceMutator.d.ts +36 -0
- package/lib/es/relay/RelayRecordSourceMutator.js +75 -0
- package/lib/es/relay/RelayRecordSourceProxy.d.ts +25 -0
- package/lib/es/relay/RelayRecordSourceProxy.js +52 -0
- package/lib/es/relay/RelayReferenceMarker.d.ts +10 -0
- package/lib/es/relay/RelayReferenceMarker.js +54 -0
- package/lib/es/relay/RelayStoreProvider.d.ts +7 -0
- package/lib/es/relay/RelayStoreProvider.js +16 -0
- package/lib/es/relay/RelayStoreUtils.d.ts +51 -0
- package/lib/es/relay/RelayStoreUtils.js +199 -0
- package/lib/es/relay/RelayTypes.d.ts +92 -0
- package/lib/es/relay/RelayTypes.js +0 -0
- package/lib/es/relay/queries.d.ts +86 -0
- package/lib/es/relay/queries.js +68 -0
- package/lib/es/useForceUpdate.d.ts +1 -0
- package/lib/es/useForceUpdate.js +8 -0
- package/lib/es/useFormSetValue.d.ts +2 -0
- package/lib/es/useFormSetValue.js +84 -0
- package/lib/es/useFormState.d.ts +2 -0
- package/lib/es/useFormState.js +49 -0
- package/lib/es/useFormSubmit.d.ts +2 -0
- package/lib/es/useFormSubmit.js +105 -0
- package/lib/es/useFormValue.d.ts +2 -0
- package/lib/es/useFormValue.js +19 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +20 -0
- package/lib/relay/RelayModernRecord.d.ts +107 -0
- package/lib/relay/RelayModernRecord.js +188 -0
- package/lib/relay/RelayModernSelector.d.ts +11 -0
- package/lib/relay/RelayModernSelector.js +36 -0
- package/lib/relay/RelayModernStore.d.ts +51 -0
- package/lib/relay/RelayModernStore.js +359 -0
- package/lib/relay/RelayReader.d.ts +14 -0
- package/lib/relay/RelayReader.js +92 -0
- package/lib/relay/RelayRecordProxy.d.ts +28 -0
- package/lib/relay/RelayRecordProxy.js +60 -0
- package/lib/relay/RelayRecordSource.d.ts +28 -0
- package/lib/relay/RelayRecordSource.js +75 -0
- package/lib/relay/RelayRecordSourceMutator.d.ts +36 -0
- package/lib/relay/RelayRecordSourceMutator.js +80 -0
- package/lib/relay/RelayRecordSourceProxy.d.ts +25 -0
- package/lib/relay/RelayRecordSourceProxy.js +57 -0
- package/lib/relay/RelayReferenceMarker.d.ts +10 -0
- package/lib/relay/RelayReferenceMarker.js +60 -0
- package/lib/relay/RelayStoreProvider.d.ts +7 -0
- package/lib/relay/RelayStoreProvider.js +22 -0
- package/lib/relay/RelayStoreUtils.d.ts +51 -0
- package/lib/relay/RelayStoreUtils.js +208 -0
- package/lib/relay/RelayTypes.d.ts +92 -0
- package/lib/relay/RelayTypes.js +5 -0
- package/lib/relay/queries.d.ts +86 -0
- package/lib/relay/queries.js +73 -0
- package/lib/umd/relay-forms-nodeps.js +1478 -0
- package/lib/umd/relay-forms-nodeps.js.map +1 -0
- package/lib/umd/relay-forms-nodeps.min.js +2 -0
- package/lib/umd/relay-forms-nodeps.min.js.map +1 -0
- package/lib/useForceUpdate.d.ts +1 -0
- package/lib/useForceUpdate.js +14 -0
- package/lib/useFormSetValue.d.ts +2 -0
- package/lib/useFormSetValue.js +90 -0
- package/lib/useFormState.d.ts +2 -0
- package/lib/useFormState.js +54 -0
- package/lib/useFormSubmit.d.ts +2 -0
- package/lib/useFormSubmit.js +110 -0
- package/lib/useFormValue.d.ts +2 -0
- package/lib/useFormValue.js +25 -0
- package/package.json +89 -0
- package/replace.config.js +5 -0
- package/rollup.config.js +92 -0
- package/tsconfig.esm.json +7 -0
- package/yarn-error.log +127 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relay-forms-nodeps.js","sources":["../../src/relay/RelayStoreProvider.tsx","../../src/relay/RelayStoreUtils.ts","../../src/useForceUpdate.ts","../../src/relay/queries.ts","../../src/relay/RelayModernSelector.ts","../../src/Utils.ts","../../src/useFormState.tsx","../../src/useFormSubmit.tsx","../../src/useFormSetValue.tsx","../../src/useFormValue.tsx","../../node_modules/tslib/tslib.es6.js","../../src/relay/RelayModernRecord.ts","../../src/relay/RelayReader.ts","../../src/relay/RelayRecordSource.ts","../../src/relay/RelayRecordSourceMutator.ts","../../src/relay/RelayRecordProxy.ts","../../src/relay/RelayRecordSourceProxy.ts","../../src/relay/RelayReferenceMarker.ts","../../src/relay/RelayModernStore.ts"],"sourcesContent":["import * as React from 'react';\r\nimport { Store } from './RelayTypes';\r\n\r\nconst ReactRelayContext = React.createContext(null);\r\n\r\nexport const StoreProvider = function<TStore extends Store = Store>(props: {\r\n children: React.ReactNode;\r\n store: TStore;\r\n}): JSX.Element {\r\n const context = React.useMemo(() => ({ store: props.store }), [props.store]);\r\n return (\r\n <ReactRelayContext.Provider value={context}>{props.children}</ReactRelayContext.Provider>\r\n );\r\n};\r\n\r\nexport function useStore<TStore extends Store = Store>(): TStore {\r\n const { store } = React.useContext(ReactRelayContext) as any;\r\n return store as TStore;\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow\r\n * @format\r\n */\r\nexport function isPromise(p: any): boolean {\r\n return !!p && typeof p.then === 'function';\r\n}\r\n\r\n'use strict';\r\n\r\n/**\r\n * Copyright (c) 2013-present, Facebook, Inc.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n *\r\n */\r\nconst aStackPool = [];\r\nconst bStackPool = [];\r\n/**\r\n * Checks if two values are equal. Values may be primitives, arrays, or objects.\r\n * Returns true if both arguments have the same keys and values.\r\n *\r\n * @see http://underscorejs.org\r\n * @copyright 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.\r\n * @license MIT\r\n */\r\n\r\nexport function areEqual(a, b) {\r\n const aStack = aStackPool.length ? aStackPool.pop() : [];\r\n const bStack = bStackPool.length ? bStackPool.pop() : [];\r\n const result = eq(a, b, aStack, bStack);\r\n aStack.length = 0;\r\n bStack.length = 0;\r\n aStackPool.push(aStack);\r\n bStackPool.push(bStack);\r\n return result;\r\n}\r\n\r\nfunction eq(a, b, aStack, bStack) {\r\n if (a === b) {\r\n // Identical objects are equal. `0 === -0`, but they aren't identical.\r\n return a !== 0 || 1 / a == 1 / b;\r\n }\r\n\r\n if (a == null || b == null) {\r\n // a or b can be `null` or `undefined`\r\n return false;\r\n }\r\n\r\n if (typeof a != 'object' || typeof b != 'object') {\r\n return false;\r\n }\r\n\r\n const objToStr = Object.prototype.toString;\r\n const className = objToStr.call(a);\r\n\r\n if (className != objToStr.call(b)) {\r\n return false;\r\n }\r\n\r\n switch (className) {\r\n case '[object String]':\r\n return a == String(b);\r\n\r\n case '[object Number]':\r\n return isNaN(a) || isNaN(b) ? false : a == Number(b);\r\n\r\n case '[object Date]':\r\n case '[object Boolean]':\r\n return +a == +b;\r\n\r\n case '[object RegExp]':\r\n return (\r\n a.source == b.source &&\r\n a.global == b.global &&\r\n a.multiline == b.multiline &&\r\n a.ignoreCase == b.ignoreCase\r\n );\r\n } // Assume equality for cyclic structures.\r\n\r\n let length = aStack.length;\r\n\r\n // eslint-disable-next-line no-plusplus\r\n while (length--) {\r\n if (aStack[length] == a) {\r\n return bStack[length] == b;\r\n }\r\n }\r\n\r\n aStack.push(a);\r\n bStack.push(b);\r\n let size = 0; // Recursively compare objects and arrays.\r\n\r\n if (className === '[object Array]') {\r\n size = a.length;\r\n\r\n if (size !== b.length) {\r\n return false;\r\n } // Deep compare the contents, ignoring non-numeric properties.\r\n\r\n // eslint-disable-next-line no-plusplus\r\n while (size--) {\r\n if (!eq(a[size], b[size], aStack, bStack)) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if (a.constructor !== b.constructor) {\r\n return false;\r\n }\r\n\r\n if (a.hasOwnProperty('valueOf') && b.hasOwnProperty('valueOf')) {\r\n return a.valueOf() == b.valueOf();\r\n }\r\n\r\n const keys = Object.keys(a);\r\n\r\n if (keys.length != Object.keys(b).length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n if (!eq(a[keys[i]], b[keys[i]], aStack, bStack)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n aStack.pop();\r\n bStack.pop();\r\n return true;\r\n}\r\n\r\n/**\r\n * Constants shared by all implementations of RecordSource/MutableRecordSource/etc.\r\n */\r\nexport const RelayStoreUtils = {\r\n ID_KEY: '__id',\r\n REF_KEY: '__ref',\r\n REFS_KEY: '__refs',\r\n ROOT_ID: 'client:root',\r\n};\r\n\r\nexport enum RelayRecordState {\r\n /**\r\n * Record exists (either fetched from the server or produced by a local,\r\n * optimistic update).\r\n */\r\n EXISTENT = 'EXISTENT',\r\n\r\n /**\r\n * Record is known not to exist (either as the result of a mutation, or\r\n * because the server returned `null` when queried for the record).\r\n */\r\n NONEXISTENT = 'NONEXISTENT',\r\n\r\n /**\r\n * Record State is unknown because it has not yet been fetched from the\r\n * server.\r\n */\r\n UNKNOWN = 'UNKNOWN',\r\n}\r\n\r\nexport const LINKED_FIELD = 'LinkedField';\r\n\r\n//const hasWeakSetDefined = typeof WeakSet !== 'undefined';\r\n//const hasWeakMapDefined = typeof WeakMap !== 'undefined';\r\n\r\nfunction checkRecycleData(data) {\r\n return (\r\n typeof data !== 'object' ||\r\n data instanceof Set ||\r\n data instanceof Map ||\r\n //(hasWeakSetDefined && nextData instanceof WeakSet) ||\r\n //(hasWeakMapDefined && nextData instanceof WeakMap) ||\r\n !data\r\n );\r\n}\r\n/**\r\n * Recycles subtrees from `prevData` by replacing equal subtrees in `nextData`.\r\n */\r\nexport function recycleNodesInto<T>(prevData: T, nextData: T): T {\r\n if (prevData === nextData || checkRecycleData(prevData) || checkRecycleData(nextData)) {\r\n return nextData;\r\n }\r\n let canRecycle = false;\r\n\r\n // Assign local variables to preserve Flow type refinement.\r\n const prevArray = Array.isArray(prevData) ? prevData : null;\r\n const nextArray = Array.isArray(nextData) ? nextData : null;\r\n if (prevArray && nextArray) {\r\n canRecycle =\r\n nextArray.reduce((wasEqual, nextItem, ii) => {\r\n const prevValue = prevArray[ii];\r\n const nextValue = recycleNodesInto(prevValue, nextItem);\r\n if (nextValue !== nextArray[ii]) {\r\n nextArray[ii] = nextValue;\r\n }\r\n return wasEqual && nextValue === prevArray[ii];\r\n }, true) && prevArray.length === nextArray.length;\r\n } else if (!prevArray && !nextArray) {\r\n // Assign local variables to preserve Flow type refinement.\r\n const prevObject = prevData;\r\n const nextObject = nextData;\r\n const prevKeys = Object.keys(prevObject);\r\n const nextKeys = Object.keys(nextObject);\r\n canRecycle =\r\n nextKeys.reduce((wasEqual, key) => {\r\n const prevValue = prevObject[key];\r\n const nextValue = recycleNodesInto(prevValue, nextObject[key]);\r\n if (nextValue !== nextObject[key]) {\r\n nextObject[key] = nextValue;\r\n }\r\n return wasEqual && nextValue === prevObject[key];\r\n }, true) && prevKeys.length === nextKeys.length;\r\n }\r\n return canRecycle ? prevData : nextData;\r\n}\r\n\r\nconst ITERATOR_KEY = Symbol.iterator;\r\n\r\nexport function hasOverlappingIDs(seenRecords, updatedRecordIDs): boolean {\r\n // $FlowFixMe: Set is an iterable type, accessing its iterator is allowed.\r\n const iterator = seenRecords[ITERATOR_KEY]();\r\n let next = iterator.next();\r\n while (!next.done) {\r\n const key = next.value;\r\n if (updatedRecordIDs.has(key)) {\r\n return true;\r\n }\r\n next = iterator.next();\r\n }\r\n return false;\r\n}\r\n","import { Reducer, useReducer } from 'react';\r\n\r\nexport function useForceUpdate(): () => void {\r\n const [, forceUpdate] = useReducer<Reducer<number, void>>((x) => x + 1, 0);\r\n return forceUpdate as () => void;\r\n}\r\n","import { LINKED_FIELD } from './RelayStoreUtils';\n\nconst id = {\n name: 'id',\n};\n\nconst key = {\n name: 'key',\n};\n\nconst check = {\n name: 'check',\n};\n\nconst error = {\n name: 'error',\n};\n\nconst value = {\n name: 'value',\n};\n\nconst kindFragment = 'Fragment';\n\nexport declare type QueryErrorsData = {\n readonly form: {\n readonly entries: ReadonlyArray<{\n readonly check: string | null;\n readonly error: string | null;\n readonly id: string;\n readonly key: string;\n } | null> | null;\n readonly isSubmitting: boolean | null;\n readonly isValidating: boolean | null;\n } | null;\n};\n\nexport const QueryErrors = {\n id: '1',\n fragment: {\n kind: kindFragment,\n name: 'queryErrors',\n selections: [\n {\n kind: LINKED_FIELD,\n name: 'form',\n plural: false,\n selections: [\n {\n name: 'isSubmitting',\n },\n {\n name: 'isValidating',\n },\n {\n kind: LINKED_FIELD,\n name: 'entries',\n plural: true,\n selections: [id, key, error, check],\n },\n ],\n },\n ] /*: any*/,\n },\n};\n\nexport declare type QueryFieldsData = {\n readonly form: {\n readonly entries: ReadonlyArray<{\n readonly check: string | null;\n readonly error: string | null;\n readonly id: string;\n readonly key: string;\n readonly value: string | null;\n } | null> | null;\n } | null;\n};\n\nexport const QueryFields = {\n id: '0',\n fragment: {\n kind: kindFragment,\n name: 'queryFields',\n selections: [\n {\n kind: LINKED_FIELD,\n name: 'form',\n plural: false,\n selections: [\n {\n kind: LINKED_FIELD,\n name: 'entries',\n plural: true,\n selections: [id, key, value, error, check],\n },\n ],\n },\n ],\n },\n};\n\nexport declare type FragmentSetData = {\n readonly check: string | null;\n readonly id: string;\n};\n\nexport const FragmentSet = {\n kind: kindFragment,\n name: 'fragmentSet',\n selections: [id, check],\n};\n\nexport const FragmentValue = {\n kind: kindFragment,\n name: 'fragmentValue',\n selections: [id, value, error],\n};\n","/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\n// flowlint ambiguous-object-type:error\r\n\r\nimport { RelayStoreUtils } from './RelayStoreUtils';\r\n\r\nconst { ID_KEY } = RelayStoreUtils;\r\n\r\nfunction createReaderSelector(node: any, dataID: string): any {\r\n return {\r\n //kind: 'SingularReaderSelector',\r\n dataID,\r\n node,\r\n };\r\n}\r\nexport function getSingularSelector(fragment, item): any {\r\n return createReaderSelector(fragment, item[ID_KEY]);\r\n}\r\n\r\nexport function createOperationDescriptor(request: any): any {\r\n const operationDescriptor = {\r\n fragment: createReaderSelector(request.fragment, RelayStoreUtils.ROOT_ID),\r\n identifier: request.identifier,\r\n };\r\n return operationDescriptor;\r\n}\r\n","import { QueryErrors, QueryFields } from './relay/queries';\r\nimport { getSingularSelector, createOperationDescriptor } from './relay/RelayModernSelector';\r\nimport { Store, RecordSourceProxy, Snapshot, RecordProxy } from './relay/RelayTypes';\r\n\r\nconst PREFIX_LOCAL_FORM = 'local:form';\r\n\r\ntype FormStoreUpdater = (store: RecordSourceProxy, form: RecordProxy) => void;\r\n\r\nconst internalCommitLocalUpdate = (environment: Store, updater: FormStoreUpdater): void => {\r\n environment.commitUpdate((store) => {\r\n let localForm = store.get(PREFIX_LOCAL_FORM);\r\n if (!localForm) {\r\n localForm = store.create(PREFIX_LOCAL_FORM).setLinkedRecords([], 'entries');\r\n store.getRoot().setLinkedRecord(localForm, 'form');\r\n }\r\n updater(store, localForm);\r\n });\r\n};\r\n\r\nfunction getFieldId(key): string {\r\n return PREFIX_LOCAL_FORM + '.' + key;\r\n}\r\n\r\nexport function getSnapshot(environment: Store, fragment: any, key: string): Snapshot {\r\n const item = {\r\n __id: getFieldId(key),\r\n };\r\n return environment.lookup(getSingularSelector(fragment, item));\r\n}\r\n\r\nexport const commitResetIntoRelay = (entries, environment): void => {\r\n internalCommitLocalUpdate(environment, (store, form) => {\r\n form.setValue(false, 'isSubmitting');\r\n form.setValue(false, 'isValidating');\r\n entries.forEach((entry) => store.get(getFieldId(entry.key)).setValue('RESET', 'check'));\r\n });\r\n};\r\n\r\nexport const commitValidateIntoRelay = (entries, isSubmitting, environment): void => {\r\n internalCommitLocalUpdate(environment, (store, form) => {\r\n form.setValue(isSubmitting, 'isSubmitting');\r\n form.setValue(true, 'isValidating');\r\n entries.forEach((entry) => store.get(getFieldId(entry.key)).setValue('START', 'check'));\r\n });\r\n};\r\n\r\nexport const commitSubmitEndRelay = (environment): void => {\r\n internalCommitLocalUpdate(environment, (_, form) => {\r\n form.setValue(false, 'isSubmitting');\r\n });\r\n};\r\n\r\nexport const commitValidateEndRelay = (environment): void => {\r\n internalCommitLocalUpdate(environment, (_, form) => {\r\n form.setValue(false, 'isValidating');\r\n });\r\n};\r\n\r\nexport const commitResetField = (environment, key): void => {\r\n const id = getFieldId(key);\r\n internalCommitLocalUpdate(environment, (store, form) => {\r\n const entriesArray = form.getLinkedRecords('entries');\r\n const newEntries = entriesArray.filter((value) => value.getDataID() != id);\r\n form.setLinkedRecords(newEntries, 'entries');\r\n store.delete(id);\r\n });\r\n};\r\n\r\nexport const commitValue = (key, value, check, environment): void => {\r\n const id = getFieldId(key);\r\n internalCommitLocalUpdate(environment, (store, form) => {\r\n let field = store.get(id);\r\n if (!field) {\r\n field = store.create(id);\r\n const entriesArray = form.getLinkedRecords('entries');\r\n entriesArray.push(field);\r\n form.setLinkedRecords(entriesArray, 'entries');\r\n }\r\n field\r\n .setValue(id, 'id')\r\n .setValue(key, 'key')\r\n .setValue(check, 'check')\r\n .setValue(value, 'value');\r\n });\r\n};\r\n\r\nexport const commitErrorIntoRelay = (key, error, environment): void => {\r\n internalCommitLocalUpdate(environment, (store) => {\r\n store\r\n .get(getFieldId(key))\r\n .setValue(error, 'error')\r\n .setValue('DONE', 'check');\r\n });\r\n};\r\n\r\nexport const operationQueryForm = createOperationDescriptor(QueryFields);\r\n\r\nexport const operationQueryErrorsForm = createOperationDescriptor(QueryErrors);\r\n","import * as React from 'react';\r\nimport { QueryErrorsData } from './relay/queries';\r\nimport { useStore } from './relay/RelayStoreProvider';\r\nimport { areEqual } from './relay/RelayStoreUtils';\r\nimport { Snapshot } from './relay/RelayTypes';\r\nimport { FormStateReturn } from './RelayFormsTypes';\r\nimport { useForceUpdate } from './useForceUpdate';\r\nimport { operationQueryErrorsForm } from './Utils';\r\n\r\nexport const useFormState = (): FormStateReturn => {\r\n const ref = React.useRef<FormStateReturn>({\r\n errors: undefined,\r\n isValidating: false,\r\n isSubmitting: false,\r\n isValid: false,\r\n });\r\n\r\n const forceUpdate = useForceUpdate();\r\n const environment = useStore();\r\n\r\n React.useEffect(() => {\r\n function checkError(s: Snapshot): void {\r\n const data: QueryErrorsData = (s as any).data;\r\n const form = data.form;\r\n const entries = form.entries;\r\n const current = ref.current;\r\n const entryErrors = entries.filter((value) => !!value.error);\r\n const entryValidated = entries.filter((value) => value.check === 'DONE');\r\n const errors = entryErrors.length > 0 ? entryErrors : undefined;\r\n const isValidating = form.isValidating;\r\n const isSubmitting = form.isSubmitting;\r\n\r\n const isValid =\r\n entries.length === entryValidated.length &&\r\n (!errors || Object.keys(errors).length === 0);\r\n const newState = {\r\n errors,\r\n isValid,\r\n isValidating,\r\n isSubmitting,\r\n };\r\n if (!areEqual(current, newState)) {\r\n ref.current = newState;\r\n forceUpdate();\r\n }\r\n }\r\n const snapshot = environment.lookup(operationQueryErrorsForm.fragment);\r\n checkError(snapshot);\r\n return environment.subscribe(snapshot, (s) => {\r\n checkError(s);\r\n }).dispose;\r\n }, [environment, forceUpdate]);\r\n\r\n return ref.current;\r\n};\r\n","import * as React from 'react';\r\nimport { QueryFieldsData } from './relay/queries';\r\nimport { useStore } from './relay/RelayStoreProvider';\r\nimport { isPromise } from './relay/RelayStoreUtils';\r\nimport { Snapshot, Store } from './relay/RelayTypes';\r\nimport { FormSubmitOptions, FunctionOnSubmit, FormSubmitReturn } from './RelayFormsTypes';\r\nimport {\r\n commitValidateEndRelay,\r\n commitValidateIntoRelay,\r\n commitSubmitEndRelay,\r\n operationQueryForm,\r\n commitResetIntoRelay,\r\n} from './Utils';\r\n\r\nexport const useFormSubmit = <ValueType extends object = object>({\r\n onSubmit,\r\n}: FormSubmitOptions<ValueType>): FormSubmitReturn => {\r\n const environment = useStore();\r\n\r\n React.useEffect(() => {\r\n return environment.retain(operationQueryForm).dispose;\r\n }, [environment]);\r\n\r\n const ref = React.useRef({\r\n isSubmitting: false,\r\n isValidating: false,\r\n error: undefined,\r\n subscription: undefined,\r\n });\r\n\r\n const internalValidate = React.useCallback(\r\n (snapshot: Snapshot, isSubmitting) => {\r\n ref.current.isValidating = true;\r\n const data: QueryFieldsData = (snapshot as any).data;\r\n const filtered = data.form.entries.filter((value) => value.check === 'INIT');\r\n commitValidateIntoRelay(filtered, isSubmitting, environment);\r\n },\r\n [environment],\r\n );\r\n\r\n const execute = React.useCallback(\r\n (\r\n environment: Store,\r\n snapshot: Snapshot,\r\n dispose: () => void,\r\n onSubmit?: FunctionOnSubmit<object>,\r\n ): void => {\r\n const data: QueryFieldsData = (snapshot as any).data;\r\n const entries = data.form.entries;\r\n const filtered = entries.filter((value) => value.check === 'DONE');\r\n if (filtered.length === entries.length) {\r\n const errors = entries.filter((value) => !!value.error);\r\n commitValidateEndRelay(environment);\r\n ref.current.isValidating = false;\r\n const internalDispose = (): void => {\r\n dispose();\r\n if (ref.current.isSubmitting) {\r\n ref.current.isSubmitting = false;\r\n commitSubmitEndRelay(environment);\r\n }\r\n };\r\n if (ref.current.isSubmitting && onSubmit && errors.length === 0) {\r\n const result = {};\r\n entries.forEach((entry) => {\r\n result[entry.key] = entry.value;\r\n });\r\n const submit = onSubmit(result);\r\n\r\n if (isPromise(submit)) {\r\n (submit as Promise<void>).then(internalDispose).catch(internalDispose);\r\n return;\r\n }\r\n }\r\n internalDispose();\r\n }\r\n },\r\n [],\r\n );\r\n\r\n const reset = React.useCallback(() => {\r\n const snapshot = environment.lookup(operationQueryForm.fragment);\r\n if (ref.current.isValidating && ref.current.isSubmitting) {\r\n return;\r\n }\r\n const data: QueryFieldsData = (snapshot as any).data;\r\n commitResetIntoRelay(data.form.entries, environment);\r\n }, [environment]);\r\n\r\n const subscribe = React.useCallback(\r\n (submit = false) => {\r\n const snapshot = environment.lookup(operationQueryForm.fragment);\r\n const { subscription } = ref.current;\r\n subscription && subscription.dispose();\r\n function dispose(): void {\r\n subscription && subscription.dispose();\r\n ref.current.subscription = null;\r\n }\r\n ref.current.subscription = environment.subscribe(snapshot, (s) =>\r\n execute(environment, s, dispose, onSubmit),\r\n );\r\n internalValidate(snapshot, submit);\r\n execute(environment, snapshot, dispose, onSubmit);\r\n },\r\n [environment, internalValidate, execute, onSubmit],\r\n );\r\n\r\n const validate = React.useCallback(() => {\r\n if (!ref.current.isValidating) {\r\n subscribe(false);\r\n }\r\n }, [subscribe]);\r\n\r\n const submit = React.useCallback(\r\n (event?: React.BaseSyntheticEvent<any>) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n if (!ref.current.isSubmitting) {\r\n ref.current.isSubmitting = true;\r\n subscribe(true);\r\n }\r\n },\r\n [subscribe],\r\n );\r\n\r\n const result = React.useMemo(() => {\r\n return {\r\n submit,\r\n validate,\r\n reset,\r\n };\r\n }, [submit, validate, reset]);\r\n return result;\r\n};\r\n","import * as React from 'react';\r\nimport { FragmentSet, FragmentSetData } from './relay/queries';\r\nimport { useStore } from './relay/RelayStoreProvider';\r\nimport { isPromise } from './relay/RelayStoreUtils';\r\nimport { Snapshot } from './relay/RelayTypes';\r\nimport { FormSetValueOptions, FormSetValueReturn } from './RelayFormsTypes';\r\nimport { useForceUpdate } from './useForceUpdate';\r\nimport { commitValue, commitErrorIntoRelay, commitResetField, getSnapshot } from './Utils';\r\n\r\nexport function useFormSetValue<ValueType>({\r\n key,\r\n initialValue,\r\n validate,\r\n validateOnChange,\r\n}: FormSetValueOptions<ValueType>): FormSetValueReturn<ValueType> {\r\n const forceUpdate = useForceUpdate();\r\n const environment = useStore();\r\n const ref = React.useRef({\r\n value: initialValue,\r\n error: undefined,\r\n check: validate ? 'INIT' : 'DONE',\r\n isChecking: false,\r\n });\r\n\r\n const setValue = React.useCallback(\r\n (newValue) => {\r\n ref.current.value = newValue;\r\n if (ref.current.check === 'DONE' && validate) {\r\n ref.current.check = 'START';\r\n }\r\n commitValue(key, newValue, ref.current.check, environment);\r\n forceUpdate();\r\n },\r\n [environment, key, validate, forceUpdate],\r\n );\r\n\r\n React.useEffect(() => {\r\n //commitResetField(environment, key);\r\n commitValue(key, initialValue, ref.current.check, environment);\r\n const snapshot = getSnapshot(environment, FragmentSet, key);\r\n\r\n const disposeSubscrition = environment.subscribe(snapshot, (s: Snapshot) => {\r\n const { check } = (s as any).data as FragmentSetData;\r\n const isStart = check === 'START';\r\n const isReset = check === 'RESET';\r\n ref.current.check = check;\r\n if (isReset) {\r\n ref.current.check = validate ? 'INIT' : 'DONE';\r\n setValue(initialValue);\r\n } else {\r\n if (!validate) {\r\n commitErrorIntoRelay(key, undefined, environment);\r\n return;\r\n }\r\n if (isStart && !ref.current.isChecking) {\r\n internalValidate(ref.current.value);\r\n }\r\n }\r\n }).dispose;\r\n\r\n const dispose = (): void => {\r\n disposeSubscrition();\r\n commitResetField(environment, key);\r\n };\r\n\r\n function finalizeCheck(error): void {\r\n ref.current.isChecking = false;\r\n if (ref.current.error !== error) {\r\n ref.current.error = error;\r\n forceUpdate();\r\n }\r\n commitErrorIntoRelay(key, error, environment);\r\n }\r\n\r\n function internalValidate(value): void {\r\n ref.current.isChecking = true;\r\n const result = validate(value);\r\n function internalFinalize(error): void {\r\n if (value !== ref.current.value) {\r\n internalValidate(ref.current.value);\r\n return;\r\n }\r\n finalizeCheck(error);\r\n }\r\n if (isPromise(result)) {\r\n (result as Promise<string | undefined>)\r\n .then(internalFinalize)\r\n .catch(internalFinalize);\r\n } else {\r\n internalFinalize(result);\r\n }\r\n }\r\n if (validateOnChange) {\r\n internalValidate(initialValue);\r\n }\r\n return dispose;\r\n }, [environment, initialValue, key, setValue, validate, validateOnChange, forceUpdate]);\r\n\r\n return [ref.current, setValue];\r\n}\r\n","import * as React from 'react';\r\nimport { FragmentValue } from './relay/queries';\r\nimport { useStore } from './relay/RelayStoreProvider';\r\nimport { Snapshot } from './relay/RelayTypes';\r\nimport { FormValueStateReturn } from './RelayFormsTypes';\r\nimport { getSnapshot } from './Utils';\r\n\r\nexport function useFormValue<ValueType>(key: string): FormValueStateReturn<ValueType> {\r\n const environment = useStore();\r\n\r\n const snapshot = React.useMemo(() => {\r\n return getSnapshot(environment, FragmentValue, key);\r\n }, [key, environment]);\r\n\r\n const [data, setData] = React.useState<FormValueStateReturn<any>>((snapshot as any).data);\r\n\r\n React.useEffect(() => {\r\n return environment.subscribe(snapshot, (s: Snapshot) => {\r\n setData((s as any).data);\r\n }).dispose;\r\n }, [environment, snapshot, setData]);\r\n\r\n return data;\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow\r\n * @format\r\n */\r\nimport { areEqual, RelayStoreUtils } from './RelayStoreUtils';\r\n\r\nconst { ID_KEY, REF_KEY, REFS_KEY } = RelayStoreUtils;\r\n\r\n/**\r\n * @public\r\n *\r\n * Low-level record manipulation methods.\r\n *\r\n * A note about perf: we use long-hand property access rather than computed\r\n * properties in this file for speed ie.\r\n *\r\n * const object = {};\r\n * object[KEY] = value;\r\n * record[storageKey] = object;\r\n *\r\n * instead of:\r\n *\r\n * record[storageKey] = {\r\n * [KEY]: value,\r\n * };\r\n *\r\n * The latter gets transformed by Babel into something like:\r\n *\r\n * function _defineProperty(obj, key, value) {\r\n * if (key in obj) {\r\n * Object.defineProperty(obj, key, {\r\n * value: value,\r\n * enumerable: true,\r\n * configurable: true,\r\n * writable: true,\r\n * });\r\n * } else {\r\n * obj[key] = value;\r\n * }\r\n * return obj;\r\n * }\r\n *\r\n * record[storageKey] = _defineProperty({}, KEY, value);\r\n *\r\n * A quick benchmark shows that computed property access is an order of\r\n * magnitude slower (times in seconds for 100,000 iterations):\r\n *\r\n * best avg sd\r\n * computed 0.02175 0.02292 0.00113\r\n * manual 0.00110 0.00123 0.00008\r\n */\r\n\r\n/**\r\n * @public\r\n *\r\n * Create a new record.\r\n */\r\nfunction create(dataID) {\r\n // See perf note above for why we aren't using computed property access.\r\n const record = {};\r\n record[ID_KEY] = dataID;\r\n return record;\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Get a scalar (non-link) field value.\r\n */\r\nfunction getValue(record, storageKey) {\r\n return record[storageKey];\r\n}\r\n\r\n/**\r\n * @private\r\n *\r\n * Get the value of a field as a reference to another record. Throws if the\r\n * field has a different type.\r\n */\r\nfunction getLinkedRecordKey(record, storageKey, key) {\r\n const link = record[storageKey];\r\n if (link == null) {\r\n return link;\r\n }\r\n return link[key];\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Get the value of a field as a reference to another record. Throws if the\r\n * field has a different type.\r\n */\r\nfunction getLinkedRecordID(record, storageKey) {\r\n return getLinkedRecordKey(record, storageKey, REF_KEY);\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Get the value of a field as a list of references to other records. Throws if\r\n * the field has a different type.\r\n */\r\nfunction getLinkedRecordIDs(record, storageKey: string) {\r\n return getLinkedRecordKey(record, storageKey, REFS_KEY);\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Compares the fields of a previous and new record, returning either the\r\n * previous record if all fields are equal or a new record (with merged fields)\r\n * if any fields have changed.\r\n */\r\nfunction update(prevRecord, nextRecord) {\r\n let updated = null;\r\n const keys = Object.keys(nextRecord);\r\n for (let ii = 0; ii < keys.length; ii++) {\r\n const key = keys[ii];\r\n if (updated || !areEqual(prevRecord[key], nextRecord[key])) {\r\n updated = updated !== null ? updated : { ...prevRecord };\r\n updated[key] = nextRecord[key];\r\n }\r\n }\r\n return updated !== null ? updated : prevRecord;\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Set the value of a storageKey to a scalar.\r\n * YES\r\n */\r\nfunction setValue(record, storageKey, value) {\r\n record[storageKey] = value;\r\n}\r\n\r\n/**\r\n * @private\r\n *\r\n * Get the value of a field as a reference to another record. Throws if the\r\n * field has a different type.\r\n */\r\nfunction setLinkedRecordKey(record, storageKey, linkedID, key) {\r\n // See perf note above for why we aren't using computed property access.\r\n const link = {};\r\n link[key] = linkedID;\r\n record[storageKey] = link;\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Set the value of a field to a reference to another record.\r\n */\r\nfunction setLinkedRecordID(record, storageKey: string, linkedID): void {\r\n setLinkedRecordKey(record, storageKey, linkedID, REF_KEY);\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Set the value of a field to a list of references other records.\r\n */\r\nfunction setLinkedRecordIDs(record, storageKey: string, linkedIDs): void {\r\n setLinkedRecordKey(record, storageKey, linkedIDs, REFS_KEY);\r\n}\r\n\r\nexport const RelayModernRecord = {\r\n create,\r\n getLinkedRecordID,\r\n getLinkedRecordIDs,\r\n getValue,\r\n setValue,\r\n setLinkedRecordID,\r\n setLinkedRecordIDs,\r\n update,\r\n};\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\nimport { RelayModernRecord } from './RelayModernRecord';\r\nimport { LINKED_FIELD } from './RelayStoreUtils';\r\n\r\nexport function relayRead(recordSource, selector) {\r\n const reader = new RelayReader(recordSource, selector);\r\n return reader.read();\r\n}\r\n\r\n/**\r\n * @private\r\n */\r\nclass RelayReader {\r\n _recordSource;\r\n _seenRecords;\r\n _selector;\r\n\r\n constructor(recordSource, selector) {\r\n this._recordSource = recordSource;\r\n this._seenRecords = new Set();\r\n this._selector = selector;\r\n }\r\n\r\n read() {\r\n const { node, dataID } = this._selector;\r\n const data = this._traverse(node, dataID, null);\r\n return {\r\n data,\r\n seenRecords: this._seenRecords,\r\n selector: this._selector,\r\n };\r\n }\r\n\r\n _traverse(node, dataID, prevData) {\r\n if (dataID == null) {\r\n return dataID;\r\n }\r\n const record = this._recordSource.get(dataID);\r\n this._seenRecords.add(dataID);\r\n if (record == null) {\r\n return record;\r\n }\r\n const data = prevData || {};\r\n this._traverseSelections(node.selections, record, data);\r\n return data;\r\n }\r\n\r\n _traverseSelections(selections, record, data) /* had all expected data */ {\r\n for (let i = 0; i < selections.length; i++) {\r\n const selection = selections[i];\r\n const name = selection.name;\r\n const prevData = data[name];\r\n let value = null;\r\n if (selection.kind == LINKED_FIELD) {\r\n if (selection.plural) {\r\n const ids = RelayModernRecord.getLinkedRecordIDs(record, name);\r\n if (ids != null) {\r\n const linkedArray = prevData || [];\r\n ids.forEach((linkedID, nextIndex) => {\r\n const prevItem = linkedArray[nextIndex];\r\n linkedArray[nextIndex] = this._traverse(selection, linkedID, prevItem);\r\n });\r\n value = linkedArray;\r\n }\r\n } else {\r\n const id = RelayModernRecord.getLinkedRecordID(record, name);\r\n value = this._traverse(selection, id, prevData);\r\n }\r\n } else {\r\n // relay-forms, now default scalar\r\n value = RelayModernRecord.getValue(record, name);\r\n //this._readScalar(selection, record, data);\r\n }\r\n data[name] = value;\r\n }\r\n }\r\n}\r\n","/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\nimport { RelayRecordState } from './RelayStoreUtils';\r\nimport { MutableRecordSource, Record, RecordState } from './RelayTypes';\r\n\r\nconst { EXISTENT, NONEXISTENT, UNKNOWN } = RelayRecordState;\r\n\r\n/**\r\n * An implementation of the `MutableRecordSource` interface (defined in\r\n * `RelayStoreTypes`) that holds all records in memory (JS Map).\r\n */\r\nexport class RelayRecordSource implements MutableRecordSource {\r\n _records;\r\n\r\n constructor(records?) {\r\n this._records = new Map();\r\n if (records != null) {\r\n Object.keys(records).forEach((key) => {\r\n this._records.set(key, records[key]);\r\n });\r\n }\r\n }\r\n\r\n clear(): void {\r\n this._records = new Map();\r\n }\r\n\r\n delete(dataID): void {\r\n this._records.set(dataID, null);\r\n }\r\n\r\n get(dataID): Record | null | undefined {\r\n return this._records.get(dataID);\r\n }\r\n\r\n getRecordIDs(): Array<string> {\r\n return Array.from(this._records.keys());\r\n }\r\n\r\n getStatus(dataID): RecordState {\r\n if (!this._records.has(dataID)) {\r\n return UNKNOWN;\r\n }\r\n return this._records.get(dataID) == null ? NONEXISTENT : EXISTENT;\r\n }\r\n\r\n has(dataID): boolean {\r\n return this._records.has(dataID);\r\n }\r\n\r\n remove(dataID): void {\r\n this._records.delete(dataID);\r\n }\r\n\r\n set(dataID, record): void {\r\n this._records.set(dataID, record);\r\n }\r\n\r\n size(): number {\r\n return this._records.size;\r\n }\r\n\r\n toJSON(): any {\r\n const obj = {};\r\n for (const [key, value] of this._records.entries()) {\r\n obj[key] = value;\r\n }\r\n return obj;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\nimport { RelayModernRecord } from './RelayModernRecord';\r\nimport { MutableRecordSource, Record, RecordSource } from './RelayTypes';\r\n\r\n/**\r\n * @internal\r\n *\r\n * Wrapper API that is an amalgam of the `RelayModernRecord` API and\r\n * `MutableRecordSource` interface, implementing copy-on-write semantics for records\r\n * in a record source.\r\n *\r\n * Modifications are applied to fresh copies of records:\r\n * - Records in `base` are never modified.\r\n * - Modifications cause a fresh version of a record to be created in `sink`.\r\n * These sink records contain only modified fields.\r\n */\r\nexport class RelayRecordSourceMutator {\r\n __sources: Array<RecordSource>;\r\n _base: RecordSource;\r\n _sink: MutableRecordSource;\r\n\r\n constructor(base, sink) {\r\n this.__sources = [sink, base];\r\n this._base = base;\r\n this._sink = sink;\r\n }\r\n\r\n _getSinkRecord(dataID): Record {\r\n let sinkRecord = this._sink.get(dataID);\r\n if (!sinkRecord) {\r\n sinkRecord = RelayModernRecord.create(dataID);\r\n this._sink.set(dataID, sinkRecord);\r\n }\r\n return sinkRecord;\r\n }\r\n\r\n create(dataID): void {\r\n const record = RelayModernRecord.create(dataID);\r\n this._sink.set(dataID, record);\r\n }\r\n\r\n delete(dataID): void {\r\n this._sink.delete(dataID);\r\n }\r\n\r\n getStatus(dataID) {\r\n return this._sink.has(dataID) ? this._sink.getStatus(dataID) : this._base.getStatus(dataID);\r\n }\r\n\r\n setValue(dataID, storageKey: string, value): void {\r\n const sinkRecord = this._getSinkRecord(dataID);\r\n RelayModernRecord.setValue(sinkRecord, storageKey, value);\r\n }\r\n\r\n setLinkedRecordID(dataID, storageKey, linkedID) {\r\n const sinkRecord = this._getSinkRecord(dataID);\r\n RelayModernRecord.setLinkedRecordID(sinkRecord, storageKey, linkedID);\r\n }\r\n\r\n getLinkedRecordIDs(dataID, storageKey: string) {\r\n for (let ii = 0; ii < this.__sources.length; ii++) {\r\n const record = this.__sources[ii].get(dataID);\r\n if (record) {\r\n const linkedIDs = RelayModernRecord.getLinkedRecordIDs(record, storageKey);\r\n if (linkedIDs !== undefined) {\r\n return linkedIDs;\r\n }\r\n } else if (record === null) {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n setLinkedRecordIDs(dataID, storageKey: string, linkedIDs): void {\r\n const sinkRecord = this._getSinkRecord(dataID);\r\n RelayModernRecord.setLinkedRecordIDs(sinkRecord, storageKey, linkedIDs);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\n// flowlint ambiguous-object-type:error\r\n\r\n'use strict';\r\n\r\nimport { RelayRecordSourceMutator } from './RelayRecordSourceMutator';\r\nimport { RecordProxy } from './RelayTypes';\r\n\r\n/**\r\n * @internal\r\n *\r\n * A helper class for manipulating a given record from a record source via an\r\n * imperative/OO-style API.\r\n */\r\nexport class RelayRecordProxy implements RecordProxy {\r\n _dataID;\r\n _mutator: RelayRecordSourceMutator;\r\n _source;\r\n\r\n constructor(source, mutator, dataID) {\r\n this._dataID = dataID;\r\n this._mutator = mutator;\r\n this._source = source;\r\n }\r\n\r\n getDataID(): string {\r\n return this._dataID;\r\n }\r\n\r\n setValue(value, name: string) {\r\n this._mutator.setValue(this._dataID, name, value);\r\n return this;\r\n }\r\n\r\n setLinkedRecord(record: RecordProxy, name: string) {\r\n const linkedID = record.getDataID();\r\n this._mutator.setLinkedRecordID(this._dataID, name, linkedID);\r\n return this;\r\n }\r\n\r\n getLinkedRecords(name: string): Array<RecordProxy | null | undefined> | null | undefined {\r\n const linkedIDs = this._mutator.getLinkedRecordIDs(this._dataID, name);\r\n if (linkedIDs == null) {\r\n return linkedIDs;\r\n }\r\n return linkedIDs.map((linkedID) => {\r\n return linkedID != null ? this._source.get(linkedID) : linkedID;\r\n });\r\n }\r\n\r\n setLinkedRecords(records, name: string): RecordProxy {\r\n const linkedIDs = records.map((record) => record && record.getDataID());\r\n this._mutator.setLinkedRecordIDs(this._dataID, name, linkedIDs);\r\n return this;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow\r\n * @format\r\n */\r\n\r\nimport { RelayRecordProxy } from './RelayRecordProxy';\r\nimport { RelayRecordSourceMutator } from './RelayRecordSourceMutator';\r\nimport { RelayStoreUtils, RelayRecordState } from './RelayStoreUtils';\r\nimport { RecordSourceProxy } from './RelayTypes';\r\n\r\n/**\r\n * @internal\r\n *\r\n * A helper for manipulating a `RecordSource` via an imperative/OO-style API.\r\n */\r\nexport class RelayRecordSourceProxy implements RecordSourceProxy {\r\n __mutator: RelayRecordSourceMutator;\r\n _proxies;\r\n\r\n constructor(mutator) {\r\n this.__mutator = mutator;\r\n this._proxies = {};\r\n }\r\n\r\n create(dataID) {\r\n this.__mutator.create(dataID);\r\n delete this._proxies[dataID];\r\n return this.get(dataID);\r\n }\r\n\r\n delete(dataID) {\r\n delete this._proxies[dataID];\r\n this.__mutator.delete(dataID);\r\n }\r\n\r\n get(dataID) {\r\n if (!this._proxies.hasOwnProperty(dataID)) {\r\n const status = this.__mutator.getStatus(dataID);\r\n if (status === RelayRecordState.EXISTENT) {\r\n this._proxies[dataID] = new RelayRecordProxy(this, this.__mutator, dataID);\r\n } else {\r\n this._proxies[dataID] = status === RelayRecordState.NONEXISTENT ? null : undefined;\r\n }\r\n }\r\n return this._proxies[dataID];\r\n }\r\n\r\n getRoot() {\r\n let root = this.get(RelayStoreUtils.ROOT_ID);\r\n if (!root) {\r\n root = this.create(RelayStoreUtils.ROOT_ID);\r\n }\r\n return root;\r\n }\r\n}\r\n","/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\nimport { RelayModernRecord } from './RelayModernRecord';\r\nimport { LINKED_FIELD } from './RelayStoreUtils';\r\n\r\nexport function mark(recordSource, selector, references): void {\r\n const { dataID, node } = selector;\r\n const marker = new RelayReferenceMarker(recordSource, references);\r\n marker.mark(node, dataID);\r\n}\r\n\r\n/**\r\n * @private\r\n */\r\nclass RelayReferenceMarker {\r\n _recordSource;\r\n _references;\r\n\r\n constructor(recordSource, references) {\r\n this._recordSource = recordSource;\r\n this._references = references;\r\n }\r\n\r\n mark(node, dataID): void {\r\n this._traverse(node, dataID);\r\n }\r\n\r\n _traverse(node, dataID): void {\r\n if (dataID != null) {\r\n this._references.add(dataID);\r\n const record = this._recordSource.get(dataID);\r\n record != null && this._traverseSelections(node.selections, record);\r\n }\r\n }\r\n\r\n _traverseSelections(selections, record): void {\r\n selections.forEach((selection) => {\r\n const name = selection.name;\r\n if (selection.kind == LINKED_FIELD) {\r\n if (selection.plural) {\r\n const linkedIDs = RelayModernRecord.getLinkedRecordIDs(record, name) || [];\r\n linkedIDs.forEach((linkedID) => {\r\n this._traverse(selection, linkedID);\r\n });\r\n } else {\r\n const linkedID = RelayModernRecord.getLinkedRecordID(record, name);\r\n this._traverse(selection, linkedID);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\n// flowlint ambiguous-object-type:error\r\n\r\n'use strict';\r\n\r\nimport { RelayModernRecord } from './RelayModernRecord';\r\nimport { relayRead } from './RelayReader';\r\nimport { RelayRecordSource } from './RelayRecordSource';\r\nimport { RelayRecordSourceMutator } from './RelayRecordSourceMutator';\r\nimport { RelayRecordSourceProxy } from './RelayRecordSourceProxy';\r\nimport { mark } from './RelayReferenceMarker';\r\nimport { hasOverlappingIDs, recycleNodesInto, RelayStoreUtils } from './RelayStoreUtils';\r\nimport { MutableRecordSource, Store } from './RelayTypes';\r\n\r\nconst resolvedPromise = Promise.resolve();\r\n\r\n/**\r\n * An alternative to setImmediate based on Promise.\r\n */\r\nfunction resolveImmediate(callback: () => void) {\r\n resolvedPromise.then(callback).catch(throwNext);\r\n}\r\n\r\nfunction throwNext(error) {\r\n setTimeout(() => {\r\n throw error;\r\n }, 0);\r\n}\r\n\r\nconst { ROOT_ID } = RelayStoreUtils;\r\n\r\nexport function createStore() {\r\n return new RelayModernStore(new RelayRecordSource());\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * An implementation of the `Store` interface defined in `RelayStoreTypes`.\r\n *\r\n * Note that a Store takes ownership of all records provided to it: other\r\n * objects may continue to hold a reference to such records but may not mutate\r\n * them. The static Relay core is architected to avoid mutating records that may have been\r\n * passed to a store: operations that mutate records will either create fresh\r\n * records or clone existing records and modify the clones. Record immutability\r\n * is also enforced in development mode by freezing all records passed to a store.\r\n */\r\nexport class RelayModernStore implements Store {\r\n _gcRun;\r\n _recordSource: MutableRecordSource;\r\n _roots;\r\n _updatedRecordIDs;\r\n _currentWriteEpoch;\r\n _subs;\r\n\r\n constructor(source: MutableRecordSource) {\r\n this._currentWriteEpoch = 0;\r\n this._gcRun = null;\r\n this._recordSource = source;\r\n this._roots = new Map();\r\n this._updatedRecordIDs = new Set();\r\n this._subs = new Set();\r\n\r\n initializeRecordSource(this._recordSource);\r\n }\r\n\r\n getSource() {\r\n return this._recordSource;\r\n }\r\n\r\n commitUpdate(updater): void {\r\n const sink = new RelayRecordSource();\r\n const mutator = new RelayRecordSourceMutator(this.getSource(), sink);\r\n const recordSourceProxy = new RelayRecordSourceProxy(mutator);\r\n updater(recordSourceProxy);\r\n this.publish(sink);\r\n this.notify();\r\n }\r\n\r\n retain(operation) {\r\n const id = operation.identifier;\r\n let disposed = false;\r\n const dispose = () => {\r\n // Ensure each retain can only dispose once\r\n if (disposed) {\r\n return;\r\n }\r\n disposed = true;\r\n // For Flow: guard against the entry somehow not existing\r\n const rootEntry = this._roots.get(id);\r\n if (rootEntry == null) {\r\n return;\r\n }\r\n // Decrement the ref count: if it becomes zero it is eligible\r\n // for release.\r\n rootEntry.refCount -= 1;\r\n\r\n if (rootEntry.refCount === 0) {\r\n this._roots.delete(id);\r\n this.scheduleGC();\r\n }\r\n };\r\n\r\n const rootEntry = this._roots.get(id);\r\n if (rootEntry != null) {\r\n // If we've previously retained this operation, increment the refCount\r\n rootEntry.refCount += 1;\r\n } else {\r\n // Otherwise create a new entry for the operation\r\n this._roots.set(id, {\r\n operation,\r\n refCount: 1,\r\n });\r\n }\r\n\r\n return { dispose };\r\n }\r\n\r\n lookup(selector) {\r\n const source = this.getSource();\r\n return relayRead(source, selector);\r\n }\r\n\r\n // This method will return a list of updated owners from the subscriptions\r\n notify() {\r\n this._currentWriteEpoch += 1;\r\n const updateIds = this._updatedRecordIDs;\r\n const hasUpdatedRecords = updateIds.size !== 0;\r\n const source = this.getSource();\r\n this._subs.forEach((subscription) => {\r\n this._updateSub(source, subscription, updateIds, hasUpdatedRecords);\r\n });\r\n this._updatedRecordIDs.clear();\r\n }\r\n\r\n _updateSub(source, subscription, updatedRecordIDs, hasUpdatedRecords: boolean) {\r\n const { callback, snapshot } = subscription;\r\n const hasOverlappingUpdates =\r\n hasUpdatedRecords && hasOverlappingIDs(snapshot.seenRecords, updatedRecordIDs);\r\n if (hasOverlappingUpdates) {\r\n let nextSnapshot = relayRead(source, snapshot.selector);\r\n const nextData = recycleNodesInto(snapshot.data, nextSnapshot.data);\r\n nextSnapshot = {\r\n data: nextData,\r\n seenRecords: nextSnapshot.seenRecords,\r\n selector: nextSnapshot.selector,\r\n };\r\n subscription.snapshot = nextSnapshot;\r\n if (nextSnapshot.data !== snapshot.data) {\r\n callback(nextSnapshot);\r\n }\r\n }\r\n }\r\n\r\n publish(source): void {\r\n const target = this.getSource();\r\n updateTargetFromSource(target, source, this._updatedRecordIDs);\r\n }\r\n\r\n subscribe(snapshot, callback: (snapshot) => void) {\r\n const subscription = { callback, snapshot };\r\n const dispose = () => {\r\n this._subs.delete(subscription);\r\n };\r\n this._subs.add(subscription);\r\n return { dispose };\r\n }\r\n\r\n scheduleGC() {\r\n if (this._gcRun) {\r\n return;\r\n }\r\n this._gcRun = this._collect();\r\n resolveImmediate(this._gcStep);\r\n }\r\n\r\n _gcStep = (): void => {\r\n if (this._gcRun) {\r\n if (this._gcRun.next().done) {\r\n this._gcRun = null;\r\n } else {\r\n resolveImmediate(this._gcStep);\r\n }\r\n }\r\n };\r\n\r\n *_collect(): Generator<void, void, void> {\r\n /* eslint-disable no-labels */\r\n top: while (true) {\r\n const startEpoch = this._currentWriteEpoch;\r\n const references = new Set();\r\n\r\n // Mark all records that are traversable from a root\r\n for (const { operation } of this._roots.values()) {\r\n mark(this._recordSource, operation.fragment, references);\r\n // Yield for other work after each operation\r\n yield;\r\n\r\n // If the store was updated, restart\r\n if (startEpoch !== this._currentWriteEpoch) {\r\n continue top;\r\n }\r\n }\r\n\r\n // Sweep records without references\r\n if (references.size === 0) {\r\n // Short-circuit if *nothing* is referenced\r\n this._recordSource.clear();\r\n } else {\r\n // Evict any unreferenced nodes\r\n const storeIDs = this._recordSource.getRecordIDs();\r\n for (let ii = 0; ii < storeIDs.length; ii++) {\r\n const dataID = storeIDs[ii];\r\n if (!references.has(dataID)) {\r\n this._recordSource.remove(dataID);\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n }\r\n}\r\n\r\nfunction initializeRecordSource(target) {\r\n if (!target.has(ROOT_ID)) {\r\n const rootRecord = RelayModernRecord.create(ROOT_ID);\r\n target.set(ROOT_ID, rootRecord);\r\n }\r\n}\r\n\r\n/**\r\n * Updates the target with information from source, also updating a mapping of\r\n * which records in the target were changed as a result.\r\n * Additionally, will mark records as invalidated at the current write epoch\r\n * given the set of record ids marked as stale in this update.\r\n */\r\nfunction updateTargetFromSource(target, source, updatedRecordIDs): void {\r\n // Update the target based on the changes present in source\r\n const dataIDs = source.getRecordIDs();\r\n for (let ii = 0; ii < dataIDs.length; ii++) {\r\n const dataID = dataIDs[ii];\r\n const sourceRecord = source.get(dataID);\r\n const targetRecord = target.get(dataID);\r\n if (sourceRecord && targetRecord) {\r\n // ReactFlightClientResponses are lazy and only materialize when readRoot\r\n // is called when we read the field, so if the record is a Flight field\r\n // we always use the new record's data regardless of whether\r\n // it actually changed. Let React take care of reconciliation instead.\r\n const nextRecord = RelayModernRecord.update(targetRecord, sourceRecord);\r\n if (nextRecord !== targetRecord) {\r\n updatedRecordIDs.add(dataID);\r\n target.set(dataID, nextRecord);\r\n }\r\n } else if (sourceRecord === null) {\r\n target.delete(dataID);\r\n if (targetRecord !== null) {\r\n updatedRecordIDs.add(dataID);\r\n }\r\n } else if (sourceRecord) {\r\n target.set(dataID, sourceRecord);\r\n updatedRecordIDs.add(dataID);\r\n } // don't add explicit undefined\r\n }\r\n}\r\n"],"names":["ReactRelayContext","React","createContext","StoreProvider","props","context","useMemo","store","createElement","Provider","value","children","useStore","isPromise","p","then","aStackPool","bStackPool","areEqual","a","b","aStack","length","pop","bStack","result","eq","push","objToStr","Object","prototype","toString","className","call","String","isNaN","Number","source","global","multiline","ignoreCase","size","constructor","hasOwnProperty","valueOf","keys","i","RelayStoreUtils","ID_KEY","REF_KEY","REFS_KEY","ROOT_ID","RelayRecordState","LINKED_FIELD","checkRecycleData","data","Set","Map","recycleNodesInto","prevData","nextData","canRecycle","prevArray","Array","isArray","nextArray","reduce","wasEqual","nextItem","ii","prevValue","nextValue","prevObject_1","nextObject_1","prevKeys","nextKeys","key","ITERATOR_KEY","Symbol","iterator","hasOverlappingIDs","seenRecords","updatedRecordIDs","next","done","has","useForceUpdate","_a","useReducer","x","forceUpdate","id","name","check","error","kindFragment","QueryErrors","fragment","kind","selections","plural","QueryFields","FragmentSet","FragmentValue","createReaderSelector","node","dataID","getSingularSelector","item","createOperationDescriptor","request","operationDescriptor","identifier","PREFIX_LOCAL_FORM","internalCommitLocalUpdate","environment","updater","commitUpdate","localForm","get","create","setLinkedRecords","getRoot","setLinkedRecord","getFieldId","getSnapshot","__id","lookup","commitResetIntoRelay","entries","form","setValue","forEach","entry","commitValidateIntoRelay","isSubmitting","commitSubmitEndRelay","_","commitValidateEndRelay","commitResetField","entriesArray","getLinkedRecords","newEntries","filter","getDataID","delete","commitValue","field","commitErrorIntoRelay","operationQueryForm","operationQueryErrorsForm","useFormState","ref","useRef","errors","undefined","isValidating","isValid","useEffect","checkError","s","current","entryErrors","entryValidated","newState","snapshot","subscribe","dispose","useFormSubmit","onSubmit","retain","subscription","internalValidate","useCallback","filtered","execute","internalDispose","result_1","submit_1","catch","reset","submit","validate","event","preventDefault","useFormSetValue","initialValue","validateOnChange","isChecking","newValue","disposeSubscrition","isStart","isReset","finalizeCheck","internalFinalize","useFormValue","useState","setData","record","getValue","storageKey","getLinkedRecordKey","link","getLinkedRecordID","getLinkedRecordIDs","update","prevRecord","nextRecord","updated","__assign","setLinkedRecordKey","linkedID","setLinkedRecordID","setLinkedRecordIDs","linkedIDs","RelayModernRecord","relayRead","recordSource","selector","reader","RelayReader","read","_recordSource","_seenRecords","_selector","_traverse","add","_traverseSelections","_this","selection","name_1","ids","linkedArray_1","nextIndex","prevItem","this_1","EXISTENT","NONEXISTENT","UNKNOWN","RelayRecordSource","records","_records","set","clear","getRecordIDs","from","getStatus","remove","toJSON","obj","_i","_b","RelayRecordSourceMutator","base","sink","__sources","_base","_sink","_getSinkRecord","sinkRecord","RelayRecordProxy","mutator","_dataID","_mutator","_source","map","RelayRecordSourceProxy","__mutator","_proxies","status_1","root","mark","references","marker","RelayReferenceMarker","_references","resolvedPromise","Promise","resolve","resolveImmediate","callback","throwNext","setTimeout","createStore","RelayModernStore","_gcStep","_gcRun","_currentWriteEpoch","_roots","_updatedRecordIDs","_subs","initializeRecordSource","getSource","recordSourceProxy","publish","notify","operation","disposed","rootEntry","refCount","scheduleGC","updateIds","hasUpdatedRecords","_updateSub","hasOverlappingUpdates","nextSnapshot","target","updateTargetFromSource","_collect","startEpoch","values","sent","storeIDs","rootRecord","dataIDs","sourceRecord","targetRecord"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["relay-forms-nodeps"]={},e.React)}(this,(function(e,t){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=r(t),i=n.default.createContext(null);function o(){return n.default.useContext(i).store}function u(e){return!!e&&"function"==typeof e.then}var s,c=[],a=[];function l(e,t){var r=c.length?c.pop():[],n=a.length?a.pop():[],i=function e(t,r,n,i){if(t===r)return 0!==t||1/t==1/r;if(null==t||null==r)return!1;if("object"!=typeof t||"object"!=typeof r)return!1;var o=Object.prototype.toString,u=o.call(t);if(u!=o.call(r))return!1;switch(u){case"[object String]":return t==String(r);case"[object Number]":return!isNaN(t)&&!isNaN(r)&&t==Number(r);case"[object Date]":case"[object Boolean]":return+t==+r;case"[object RegExp]":return t.source==r.source&&t.global==r.global&&t.multiline==r.multiline&&t.ignoreCase==r.ignoreCase}for(var s=n.length;s--;)if(n[s]==t)return i[s]==r;n.push(t),i.push(r);var c=0;if("[object Array]"===u){if((c=t.length)!==r.length)return!1;for(;c--;)if(!e(t[c],r[c],n,i))return!1}else{if(t.constructor!==r.constructor)return!1;if(t.hasOwnProperty("valueOf")&&r.hasOwnProperty("valueOf"))return t.valueOf()==r.valueOf();var a=Object.keys(t);if(a.length!=Object.keys(r).length)return!1;for(var l=0;l<a.length;l++)if(!e(t[a[l]],r[a[l]],n,i))return!1}return n.pop(),i.pop(),!0}(e,t,r,n);return r.length=0,n.length=0,c.push(r),a.push(n),i}function f(e){return"object"!=typeof e||e instanceof Set||e instanceof Map||!e}!function(e){e.EXISTENT="EXISTENT",e.NONEXISTENT="NONEXISTENT",e.UNKNOWN="UNKNOWN"}(s||(s={}));var d=Symbol.iterator;function h(){return t.useReducer((function(e){return e+1}),0)[1]}var p={name:"id"},g={name:"key"},v={name:"check"},_={name:"error"},m={name:"value"},y={id:"1",fragment:{kind:"Fragment",name:"queryErrors",selections:[{kind:"LinkedField",name:"form",plural:!1,selections:[{name:"isSubmitting"},{name:"isValidating"},{kind:"LinkedField",name:"entries",plural:!0,selections:[p,g,_,v]}]}]}},b={kind:"Fragment",name:"fragmentSet",selections:[p,v]},k={kind:"Fragment",name:"fragmentValue",selections:[p,m,_]};function S(e,t){return{dataID:t,node:e}}function R(e){return{fragment:S(e.fragment,"client:root"),identifier:e.identifier}}var E=function(e,t){e.commitUpdate((function(e){var r=e.get("local:form");r||(r=e.create("local:form").setLinkedRecords([],"entries"),e.getRoot().setLinkedRecord(r,"form")),t(e,r)}))};function N(e){return"local:form."+e}function I(e,t,r){var n={__id:N(r)};return e.lookup(function(e,t){return S(e,t.__id)}(t,n))}var D=function(e,t,r,n){var i=N(e);E(n,(function(n,o){var u=n.get(i);if(!u){u=n.create(i);var s=o.getLinkedRecords("entries");s.push(u),o.setLinkedRecords(s,"entries")}u.setValue(i,"id").setValue(e,"key").setValue(r,"check").setValue(t,"value")}))},V=function(e,t,r){E(r,(function(r){r.get(N(e)).setValue(t,"error").setValue("DONE","check")}))},O=R({id:"0",fragment:{kind:"Fragment",name:"queryFields",selections:[{kind:"LinkedField",name:"form",plural:!1,selections:[{kind:"LinkedField",name:"entries",plural:!0,selections:[p,g,m,_,v]}]}]}}),T=R(y),w=function(){return(w=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function j(e,t,r){var n=e[t];return null==n?n:n[r]}function C(e,t,r,n){var i={};i[n]=r,e[t]=i}var L=function(e){var t={};return t.__id=e,t},x=function(e,t){return j(e,t,"__ref")},F=function(e,t){return j(e,t,"__refs")},A=function(e,t){for(var r=null,n=Object.keys(t),i=0;i<n.length;i++){var o=n[i];!r&&l(e[o],t[o])||((r=null!==r?r:w({},e))[o]=t[o])}return null!==r?r:e};function M(e,t){return new P(e,t).read()}var P=function(){function e(e,t){this._recordSource=e,this._seenRecords=new Set,this._selector=t}return e.prototype.read=function(){var e=this._selector;return{data:this._traverse(e.node,e.dataID,null),seenRecords:this._seenRecords,selector:this._selector}},e.prototype._traverse=function(e,t,r){if(null==t)return t;var n=this._recordSource.get(t);if(this._seenRecords.add(t),null==n)return n;var i=r||{};return this._traverseSelections(e.selections,n,i),i},e.prototype._traverseSelections=function(e,t,r){for(var n=this,i=function(i){var u=e[i],s=u.name,c=r[s],a=null;if("LinkedField"==u.kind)if(u.plural){var l=F(t,s);if(null!=l){var f=c||[];l.forEach((function(e,t){f[t]=n._traverse(u,e,f[t])})),a=f}}else{var d=x(t,s);a=o._traverse(u,d,c)}else a=function(e,t){return e[t]}(t,s);r[s]=a},o=this,u=0;u<e.length;u++)i(u)},e}(),X=s.EXISTENT,W=s.NONEXISTENT,U=s.UNKNOWN,z=function(){function e(e){var t=this;this._records=new Map,null!=e&&Object.keys(e).forEach((function(r){t._records.set(r,e[r])}))}return e.prototype.clear=function(){this._records=new Map},e.prototype.delete=function(e){this._records.set(e,null)},e.prototype.get=function(e){return this._records.get(e)},e.prototype.getRecordIDs=function(){return Array.from(this._records.keys())},e.prototype.getStatus=function(e){return this._records.has(e)?null==this._records.get(e)?W:X:U},e.prototype.has=function(e){return this._records.has(e)},e.prototype.remove=function(e){this._records.delete(e)},e.prototype.set=function(e,t){this._records.set(e,t)},e.prototype.size=function(){return this._records.size},e.prototype.toJSON=function(){for(var e={},t=0,r=this._records.entries();t<r.length;t++){var n=r[t];e[n[0]]=n[1]}return e},e}(),q=function(){function e(e,t){this.__sources=[t,e],this._base=e,this._sink=t}return e.prototype._getSinkRecord=function(e){var t=this._sink.get(e);return t||(t=L(e),this._sink.set(e,t)),t},e.prototype.create=function(e){var t=L(e);this._sink.set(e,t)},e.prototype.delete=function(e){this._sink.delete(e)},e.prototype.getStatus=function(e){return this._sink.has(e)?this._sink.getStatus(e):this._base.getStatus(e)},e.prototype.setValue=function(e,t,r){!function(e,t,r){e[t]=r}(this._getSinkRecord(e),t,r)},e.prototype.setLinkedRecordID=function(e,t,r){!function(e,t,r){C(e,t,r,"__ref")}(this._getSinkRecord(e),t,r)},e.prototype.getLinkedRecordIDs=function(e,t){for(var r=0;r<this.__sources.length;r++){var n=this.__sources[r].get(e);if(n){var i=F(n,t);if(void 0!==i)return i}else if(null===n)return null}},e.prototype.setLinkedRecordIDs=function(e,t,r){!function(e,t,r){C(e,t,r,"__refs")}(this._getSinkRecord(e),t,r)},e}(),G=function(){function e(e,t,r){this._dataID=r,this._mutator=t,this._source=e}return e.prototype.getDataID=function(){return this._dataID},e.prototype.setValue=function(e,t){return this._mutator.setValue(this._dataID,t,e),this},e.prototype.setLinkedRecord=function(e,t){var r=e.getDataID();return this._mutator.setLinkedRecordID(this._dataID,t,r),this},e.prototype.getLinkedRecords=function(e){var t=this,r=this._mutator.getLinkedRecordIDs(this._dataID,e);return null==r?r:r.map((function(e){return null!=e?t._source.get(e):e}))},e.prototype.setLinkedRecords=function(e,t){var r=e.map((function(e){return e&&e.getDataID()}));return this._mutator.setLinkedRecordIDs(this._dataID,t,r),this},e}(),K=function(){function e(e){this.__mutator=e,this._proxies={}}return e.prototype.create=function(e){return this.__mutator.create(e),delete this._proxies[e],this.get(e)},e.prototype.delete=function(e){delete this._proxies[e],this.__mutator.delete(e)},e.prototype.get=function(e){if(!this._proxies.hasOwnProperty(e)){var t=this.__mutator.getStatus(e);this._proxies[e]=t===s.EXISTENT?new G(this,this.__mutator,e):t===s.NONEXISTENT?null:void 0}return this._proxies[e]},e.prototype.getRoot=function(){var e=this.get("client:root");return e||(e=this.create("client:root")),e},e}(),B=function(){function e(e,t){this._recordSource=e,this._references=t}return e.prototype.mark=function(e,t){this._traverse(e,t)},e.prototype._traverse=function(e,t){if(null!=t){this._references.add(t);var r=this._recordSource.get(t);null!=r&&this._traverseSelections(e.selections,r)}},e.prototype._traverseSelections=function(e,t){var r=this;e.forEach((function(e){var n=e.name;if("LinkedField"==e.kind)if(e.plural)(F(t,n)||[]).forEach((function(t){r._traverse(e,t)}));else{var i=x(t,n);r._traverse(e,i)}}))},e}(),J=Promise.resolve();function H(e){J.then(e).catch(Q)}function Q(e){setTimeout((function(){throw e}),0)}var Y=function(){function e(e){var t=this;this._gcStep=function(){t._gcRun&&(t._gcRun.next().done?t._gcRun=null:H(t._gcStep))},this._currentWriteEpoch=0,this._gcRun=null,this._recordSource=e,this._roots=new Map,this._updatedRecordIDs=new Set,this._subs=new Set,function(e){if(!e.has("client:root")){var t=L("client:root");e.set("client:root",t)}}(this._recordSource)}return e.prototype.getSource=function(){return this._recordSource},e.prototype.commitUpdate=function(e){var t=new z,r=new q(this.getSource(),t);e(new K(r)),this.publish(t),this.notify()},e.prototype.retain=function(e){var t=this,r=e.identifier,n=!1,i=this._roots.get(r);return null!=i?i.refCount+=1:this._roots.set(r,{operation:e,refCount:1}),{dispose:function(){if(!n){n=!0;var e=t._roots.get(r);null!=e&&(e.refCount-=1,0===e.refCount&&(t._roots.delete(r),t.scheduleGC()))}}}},e.prototype.lookup=function(e){return M(this.getSource(),e)},e.prototype.notify=function(){var e=this;this._currentWriteEpoch+=1;var t=this._updatedRecordIDs,r=0!==t.size,n=this.getSource();this._subs.forEach((function(i){e._updateSub(n,i,t,r)})),this._updatedRecordIDs.clear()},e.prototype._updateSub=function(e,t,r,n){var i=t.callback,o=t.snapshot;if(n&&function(e,t){for(var r=e[d](),n=r.next();!n.done;){if(t.has(n.value))return!0;n=r.next()}return!1}(o.seenRecords,r)){var u=M(e,o.selector),s=function e(t,r){if(t===r||f(t)||f(r))return r;var n=!1,i=Array.isArray(t)?t:null,o=Array.isArray(r)?r:null;if(i&&o)n=o.reduce((function(t,r,n){var u=e(i[n],r);return u!==o[n]&&(o[n]=u),t&&u===i[n]}),!0)&&i.length===o.length;else if(!i&&!o){var u=t,s=r,c=Object.keys(u),a=Object.keys(s);n=a.reduce((function(t,r){var n=e(u[r],s[r]);return n!==s[r]&&(s[r]=n),t&&n===u[r]}),!0)&&c.length===a.length}return n?t:r}(o.data,u.data);t.snapshot=u={data:s,seenRecords:u.seenRecords,selector:u.selector},u.data!==o.data&&i(u)}},e.prototype.publish=function(e){!function(e,t,r){for(var n=t.getRecordIDs(),i=0;i<n.length;i++){var o=n[i],u=t.get(o),s=e.get(o);if(u&&s){var c=A(s,u);c!==s&&(r.add(o),e.set(o,c))}else null===u?(e.delete(o),null!==s&&r.add(o)):u&&(e.set(o,u),r.add(o))}}(this.getSource(),e,this._updatedRecordIDs)},e.prototype.subscribe=function(e,t){var r=this,n={callback:t,snapshot:e};return this._subs.add(n),{dispose:function(){r._subs.delete(n)}}},e.prototype.scheduleGC=function(){this._gcRun||(this._gcRun=this._collect(),H(this._gcStep))},e.prototype._collect=function(){var e,t,r,n,i,o,u;return function(e,t){var r,n,i,o,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;u;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return u.label++,{value:o[1],done:!1};case 5:u.label++,n=o[1],o=[0];continue;case 7:o=u.ops.pop(),u.trys.pop();continue;default:if(!((i=(i=u.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){u=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){u.label=o[1];break}if(6===o[0]&&u.label<i[1]){u.label=i[1],i=o;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(o);break}i[2]&&u.ops.pop(),u.trys.pop();continue}o=t.call(e,u)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}(this,(function(s){switch(s.label){case 0:e=this._currentWriteEpoch,t=new Set,r=0,n=this._roots.values(),s.label=1;case 1:return r<n.length?(function(e,t,r){var n=t.dataID,i=t.node;new B(e,r).mark(i,n)}(this._recordSource,n[r].operation.fragment,t),[4]):[3,4];case 2:if(s.sent(),e!==this._currentWriteEpoch)return[3,0];s.label=3;case 3:return r++,[3,1];case 4:if(0===t.size)this._recordSource.clear();else for(i=this._recordSource.getRecordIDs(),o=0;o<i.length;o++)t.has(u=i[o])||this._recordSource.remove(u);return[2];case 5:return[2]}}))},e}();e.RecordSource=z,e.Store=Y,e.StoreProvider=function(e){var t=n.default.useMemo((function(){return{store:e.store}}),[e.store]);return n.default.createElement(i.Provider,{value:t},e.children)},e.createStore=function(){return new Y(new z)},e.useFormSetValue=function(e){var t=e.key,r=e.initialValue,i=e.validate,s=e.validateOnChange,c=h(),a=o(),l=n.default.useRef({value:r,error:void 0,check:i?"INIT":"DONE",isChecking:!1}),f=n.default.useCallback((function(e){l.current.value=e,"DONE"===l.current.check&&i&&(l.current.check="START"),D(t,e,l.current.check,a),c()}),[a,t,i,c]);return n.default.useEffect((function(){D(t,r,l.current.check,a);var e=I(a,b,t),n=a.subscribe(e,(function(e){var n=e.data.check,u="START"===n,s="RESET"===n;if(l.current.check=n,s)l.current.check=i?"INIT":"DONE",f(r);else{if(!i)return void V(t,void 0,a);u&&!l.current.isChecking&&o(l.current.value)}})).dispose;function o(e){l.current.isChecking=!0;var r=i(e);function n(r){e===l.current.value?function(e){l.current.isChecking=!1,l.current.error!==e&&(l.current.error=e,c()),V(t,e,a)}(r):o(l.current.value)}u(r)?r.then(n).catch(n):n(r)}return s&&o(r),function(){n(),function(e,t){var r=N(t);E(e,(function(e,t){var n=t.getLinkedRecords("entries").filter((function(e){return e.getDataID()!=r}));t.setLinkedRecords(n,"entries"),e.delete(r)}))}(a,t)}}),[a,r,t,f,i,s,c]),[l.current,f]},e.useFormState=function(){var e=n.default.useRef({errors:void 0,isValidating:!1,isSubmitting:!1,isValid:!1}),t=h(),r=o();return n.default.useEffect((function(){function n(r){var n=r.data.form,i=n.entries,o=e.current,u=i.filter((function(e){return!!e.error})),s=i.filter((function(e){return"DONE"===e.check})),c=u.length>0?u:void 0,a=n.isValidating,f=n.isSubmitting,d={errors:c,isValid:i.length===s.length&&(!c||0===Object.keys(c).length),isValidating:a,isSubmitting:f};l(o,d)||(e.current=d,t())}var i=r.lookup(T.fragment);return n(i),r.subscribe(i,(function(e){n(e)})).dispose}),[r,t]),e.current},e.useFormSubmit=function(e){var t=e.onSubmit,r=o();n.default.useEffect((function(){return r.retain(O).dispose}),[r]);var i=n.default.useRef({isSubmitting:!1,isValidating:!1,error:void 0,subscription:void 0}),s=n.default.useCallback((function(e,t){i.current.isValidating=!0,function(e,t,r){E(r,(function(r,n){n.setValue(t,"isSubmitting"),n.setValue(!0,"isValidating"),e.forEach((function(e){return r.get(N(e.key)).setValue("START","check")}))}))}(e.data.form.entries.filter((function(e){return"INIT"===e.check})),t,r)}),[r]),c=n.default.useCallback((function(e,t,r,n){var o=t.data.form.entries;if(o.filter((function(e){return"DONE"===e.check})).length===o.length){var s=o.filter((function(e){return!!e.error}));!function(e){E(e,(function(e,t){t.setValue(!1,"isValidating")}))}(e),i.current.isValidating=!1;var c=function(){r(),i.current.isSubmitting&&(i.current.isSubmitting=!1,function(e){E(e,(function(e,t){t.setValue(!1,"isSubmitting")}))}(e))};if(i.current.isSubmitting&&n&&0===s.length){var a={};o.forEach((function(e){a[e.key]=e.value}));var l=n(a);if(u(l))return void l.then(c).catch(c)}c()}}),[]),a=n.default.useCallback((function(){var e=r.lookup(O.fragment);i.current.isValidating&&i.current.isSubmitting||function(e,t){E(t,(function(t,r){r.setValue(!1,"isSubmitting"),r.setValue(!1,"isValidating"),e.forEach((function(e){return t.get(N(e.key)).setValue("RESET","check")}))}))}(e.data.form.entries,r)}),[r]),l=n.default.useCallback((function(e){void 0===e&&(e=!1);var n=r.lookup(O.fragment),o=i.current.subscription;function u(){o&&o.dispose(),i.current.subscription=null}o&&o.dispose(),i.current.subscription=r.subscribe(n,(function(e){return c(r,e,u,t)})),s(n,e),c(r,n,u,t)}),[r,s,c,t]),f=n.default.useCallback((function(){i.current.isValidating||l(!1)}),[l]),d=n.default.useCallback((function(e){e&&e.preventDefault(),i.current.isSubmitting||(i.current.isSubmitting=!0,l(!0))}),[l]);return n.default.useMemo((function(){return{submit:d,validate:f,reset:a}}),[d,f,a])},e.useFormValue=function(e){var t=o(),r=n.default.useMemo((function(){return I(t,k,e)}),[e,t]),i=n.default.useState(r.data),u=i[0],s=i[1];return n.default.useEffect((function(){return t.subscribe(r,(function(e){s(e.data)})).dispose}),[t,r,s]),u},Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
+
//# sourceMappingURL=relay-forms-nodeps.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relay-forms-nodeps.min.js","sources":["../../src/relay/RelayStoreProvider.tsx","../../src/relay/RelayStoreUtils.ts","../../src/useForceUpdate.ts","../../src/relay/queries.ts","../../src/relay/RelayModernSelector.ts","../../src/Utils.ts","../../node_modules/tslib/tslib.es6.js","../../src/relay/RelayModernRecord.ts","../../src/relay/RelayReader.ts","../../src/relay/RelayRecordSource.ts","../../src/relay/RelayRecordSourceMutator.ts","../../src/relay/RelayRecordProxy.ts","../../src/relay/RelayRecordSourceProxy.ts","../../src/relay/RelayReferenceMarker.ts","../../src/relay/RelayModernStore.ts","../../src/useFormSetValue.tsx","../../src/useFormState.tsx","../../src/useFormSubmit.tsx","../../src/useFormValue.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { Store } from './RelayTypes';\r\n\r\nconst ReactRelayContext = React.createContext(null);\r\n\r\nexport const StoreProvider = function<TStore extends Store = Store>(props: {\r\n children: React.ReactNode;\r\n store: TStore;\r\n}): JSX.Element {\r\n const context = React.useMemo(() => ({ store: props.store }), [props.store]);\r\n return (\r\n <ReactRelayContext.Provider value={context}>{props.children}</ReactRelayContext.Provider>\r\n );\r\n};\r\n\r\nexport function useStore<TStore extends Store = Store>(): TStore {\r\n const { store } = React.useContext(ReactRelayContext) as any;\r\n return store as TStore;\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow\r\n * @format\r\n */\r\nexport function isPromise(p: any): boolean {\r\n return !!p && typeof p.then === 'function';\r\n}\r\n\r\n'use strict';\r\n\r\n/**\r\n * Copyright (c) 2013-present, Facebook, Inc.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n *\r\n */\r\nconst aStackPool = [];\r\nconst bStackPool = [];\r\n/**\r\n * Checks if two values are equal. Values may be primitives, arrays, or objects.\r\n * Returns true if both arguments have the same keys and values.\r\n *\r\n * @see http://underscorejs.org\r\n * @copyright 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.\r\n * @license MIT\r\n */\r\n\r\nexport function areEqual(a, b) {\r\n const aStack = aStackPool.length ? aStackPool.pop() : [];\r\n const bStack = bStackPool.length ? bStackPool.pop() : [];\r\n const result = eq(a, b, aStack, bStack);\r\n aStack.length = 0;\r\n bStack.length = 0;\r\n aStackPool.push(aStack);\r\n bStackPool.push(bStack);\r\n return result;\r\n}\r\n\r\nfunction eq(a, b, aStack, bStack) {\r\n if (a === b) {\r\n // Identical objects are equal. `0 === -0`, but they aren't identical.\r\n return a !== 0 || 1 / a == 1 / b;\r\n }\r\n\r\n if (a == null || b == null) {\r\n // a or b can be `null` or `undefined`\r\n return false;\r\n }\r\n\r\n if (typeof a != 'object' || typeof b != 'object') {\r\n return false;\r\n }\r\n\r\n const objToStr = Object.prototype.toString;\r\n const className = objToStr.call(a);\r\n\r\n if (className != objToStr.call(b)) {\r\n return false;\r\n }\r\n\r\n switch (className) {\r\n case '[object String]':\r\n return a == String(b);\r\n\r\n case '[object Number]':\r\n return isNaN(a) || isNaN(b) ? false : a == Number(b);\r\n\r\n case '[object Date]':\r\n case '[object Boolean]':\r\n return +a == +b;\r\n\r\n case '[object RegExp]':\r\n return (\r\n a.source == b.source &&\r\n a.global == b.global &&\r\n a.multiline == b.multiline &&\r\n a.ignoreCase == b.ignoreCase\r\n );\r\n } // Assume equality for cyclic structures.\r\n\r\n let length = aStack.length;\r\n\r\n // eslint-disable-next-line no-plusplus\r\n while (length--) {\r\n if (aStack[length] == a) {\r\n return bStack[length] == b;\r\n }\r\n }\r\n\r\n aStack.push(a);\r\n bStack.push(b);\r\n let size = 0; // Recursively compare objects and arrays.\r\n\r\n if (className === '[object Array]') {\r\n size = a.length;\r\n\r\n if (size !== b.length) {\r\n return false;\r\n } // Deep compare the contents, ignoring non-numeric properties.\r\n\r\n // eslint-disable-next-line no-plusplus\r\n while (size--) {\r\n if (!eq(a[size], b[size], aStack, bStack)) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if (a.constructor !== b.constructor) {\r\n return false;\r\n }\r\n\r\n if (a.hasOwnProperty('valueOf') && b.hasOwnProperty('valueOf')) {\r\n return a.valueOf() == b.valueOf();\r\n }\r\n\r\n const keys = Object.keys(a);\r\n\r\n if (keys.length != Object.keys(b).length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n if (!eq(a[keys[i]], b[keys[i]], aStack, bStack)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n aStack.pop();\r\n bStack.pop();\r\n return true;\r\n}\r\n\r\n/**\r\n * Constants shared by all implementations of RecordSource/MutableRecordSource/etc.\r\n */\r\nexport const RelayStoreUtils = {\r\n ID_KEY: '__id',\r\n REF_KEY: '__ref',\r\n REFS_KEY: '__refs',\r\n ROOT_ID: 'client:root',\r\n};\r\n\r\nexport enum RelayRecordState {\r\n /**\r\n * Record exists (either fetched from the server or produced by a local,\r\n * optimistic update).\r\n */\r\n EXISTENT = 'EXISTENT',\r\n\r\n /**\r\n * Record is known not to exist (either as the result of a mutation, or\r\n * because the server returned `null` when queried for the record).\r\n */\r\n NONEXISTENT = 'NONEXISTENT',\r\n\r\n /**\r\n * Record State is unknown because it has not yet been fetched from the\r\n * server.\r\n */\r\n UNKNOWN = 'UNKNOWN',\r\n}\r\n\r\nexport const LINKED_FIELD = 'LinkedField';\r\n\r\n//const hasWeakSetDefined = typeof WeakSet !== 'undefined';\r\n//const hasWeakMapDefined = typeof WeakMap !== 'undefined';\r\n\r\nfunction checkRecycleData(data) {\r\n return (\r\n typeof data !== 'object' ||\r\n data instanceof Set ||\r\n data instanceof Map ||\r\n //(hasWeakSetDefined && nextData instanceof WeakSet) ||\r\n //(hasWeakMapDefined && nextData instanceof WeakMap) ||\r\n !data\r\n );\r\n}\r\n/**\r\n * Recycles subtrees from `prevData` by replacing equal subtrees in `nextData`.\r\n */\r\nexport function recycleNodesInto<T>(prevData: T, nextData: T): T {\r\n if (prevData === nextData || checkRecycleData(prevData) || checkRecycleData(nextData)) {\r\n return nextData;\r\n }\r\n let canRecycle = false;\r\n\r\n // Assign local variables to preserve Flow type refinement.\r\n const prevArray = Array.isArray(prevData) ? prevData : null;\r\n const nextArray = Array.isArray(nextData) ? nextData : null;\r\n if (prevArray && nextArray) {\r\n canRecycle =\r\n nextArray.reduce((wasEqual, nextItem, ii) => {\r\n const prevValue = prevArray[ii];\r\n const nextValue = recycleNodesInto(prevValue, nextItem);\r\n if (nextValue !== nextArray[ii]) {\r\n nextArray[ii] = nextValue;\r\n }\r\n return wasEqual && nextValue === prevArray[ii];\r\n }, true) && prevArray.length === nextArray.length;\r\n } else if (!prevArray && !nextArray) {\r\n // Assign local variables to preserve Flow type refinement.\r\n const prevObject = prevData;\r\n const nextObject = nextData;\r\n const prevKeys = Object.keys(prevObject);\r\n const nextKeys = Object.keys(nextObject);\r\n canRecycle =\r\n nextKeys.reduce((wasEqual, key) => {\r\n const prevValue = prevObject[key];\r\n const nextValue = recycleNodesInto(prevValue, nextObject[key]);\r\n if (nextValue !== nextObject[key]) {\r\n nextObject[key] = nextValue;\r\n }\r\n return wasEqual && nextValue === prevObject[key];\r\n }, true) && prevKeys.length === nextKeys.length;\r\n }\r\n return canRecycle ? prevData : nextData;\r\n}\r\n\r\nconst ITERATOR_KEY = Symbol.iterator;\r\n\r\nexport function hasOverlappingIDs(seenRecords, updatedRecordIDs): boolean {\r\n // $FlowFixMe: Set is an iterable type, accessing its iterator is allowed.\r\n const iterator = seenRecords[ITERATOR_KEY]();\r\n let next = iterator.next();\r\n while (!next.done) {\r\n const key = next.value;\r\n if (updatedRecordIDs.has(key)) {\r\n return true;\r\n }\r\n next = iterator.next();\r\n }\r\n return false;\r\n}\r\n","import { Reducer, useReducer } from 'react';\r\n\r\nexport function useForceUpdate(): () => void {\r\n const [, forceUpdate] = useReducer<Reducer<number, void>>((x) => x + 1, 0);\r\n return forceUpdate as () => void;\r\n}\r\n","import { LINKED_FIELD } from './RelayStoreUtils';\n\nconst id = {\n name: 'id',\n};\n\nconst key = {\n name: 'key',\n};\n\nconst check = {\n name: 'check',\n};\n\nconst error = {\n name: 'error',\n};\n\nconst value = {\n name: 'value',\n};\n\nconst kindFragment = 'Fragment';\n\nexport declare type QueryErrorsData = {\n readonly form: {\n readonly entries: ReadonlyArray<{\n readonly check: string | null;\n readonly error: string | null;\n readonly id: string;\n readonly key: string;\n } | null> | null;\n readonly isSubmitting: boolean | null;\n readonly isValidating: boolean | null;\n } | null;\n};\n\nexport const QueryErrors = {\n id: '1',\n fragment: {\n kind: kindFragment,\n name: 'queryErrors',\n selections: [\n {\n kind: LINKED_FIELD,\n name: 'form',\n plural: false,\n selections: [\n {\n name: 'isSubmitting',\n },\n {\n name: 'isValidating',\n },\n {\n kind: LINKED_FIELD,\n name: 'entries',\n plural: true,\n selections: [id, key, error, check],\n },\n ],\n },\n ] /*: any*/,\n },\n};\n\nexport declare type QueryFieldsData = {\n readonly form: {\n readonly entries: ReadonlyArray<{\n readonly check: string | null;\n readonly error: string | null;\n readonly id: string;\n readonly key: string;\n readonly value: string | null;\n } | null> | null;\n } | null;\n};\n\nexport const QueryFields = {\n id: '0',\n fragment: {\n kind: kindFragment,\n name: 'queryFields',\n selections: [\n {\n kind: LINKED_FIELD,\n name: 'form',\n plural: false,\n selections: [\n {\n kind: LINKED_FIELD,\n name: 'entries',\n plural: true,\n selections: [id, key, value, error, check],\n },\n ],\n },\n ],\n },\n};\n\nexport declare type FragmentSetData = {\n readonly check: string | null;\n readonly id: string;\n};\n\nexport const FragmentSet = {\n kind: kindFragment,\n name: 'fragmentSet',\n selections: [id, check],\n};\n\nexport const FragmentValue = {\n kind: kindFragment,\n name: 'fragmentValue',\n selections: [id, value, error],\n};\n","/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\n// flowlint ambiguous-object-type:error\r\n\r\nimport { RelayStoreUtils } from './RelayStoreUtils';\r\n\r\nconst { ID_KEY } = RelayStoreUtils;\r\n\r\nfunction createReaderSelector(node: any, dataID: string): any {\r\n return {\r\n //kind: 'SingularReaderSelector',\r\n dataID,\r\n node,\r\n };\r\n}\r\nexport function getSingularSelector(fragment, item): any {\r\n return createReaderSelector(fragment, item[ID_KEY]);\r\n}\r\n\r\nexport function createOperationDescriptor(request: any): any {\r\n const operationDescriptor = {\r\n fragment: createReaderSelector(request.fragment, RelayStoreUtils.ROOT_ID),\r\n identifier: request.identifier,\r\n };\r\n return operationDescriptor;\r\n}\r\n","import { QueryErrors, QueryFields } from './relay/queries';\r\nimport { getSingularSelector, createOperationDescriptor } from './relay/RelayModernSelector';\r\nimport { Store, RecordSourceProxy, Snapshot, RecordProxy } from './relay/RelayTypes';\r\n\r\nconst PREFIX_LOCAL_FORM = 'local:form';\r\n\r\ntype FormStoreUpdater = (store: RecordSourceProxy, form: RecordProxy) => void;\r\n\r\nconst internalCommitLocalUpdate = (environment: Store, updater: FormStoreUpdater): void => {\r\n environment.commitUpdate((store) => {\r\n let localForm = store.get(PREFIX_LOCAL_FORM);\r\n if (!localForm) {\r\n localForm = store.create(PREFIX_LOCAL_FORM).setLinkedRecords([], 'entries');\r\n store.getRoot().setLinkedRecord(localForm, 'form');\r\n }\r\n updater(store, localForm);\r\n });\r\n};\r\n\r\nfunction getFieldId(key): string {\r\n return PREFIX_LOCAL_FORM + '.' + key;\r\n}\r\n\r\nexport function getSnapshot(environment: Store, fragment: any, key: string): Snapshot {\r\n const item = {\r\n __id: getFieldId(key),\r\n };\r\n return environment.lookup(getSingularSelector(fragment, item));\r\n}\r\n\r\nexport const commitResetIntoRelay = (entries, environment): void => {\r\n internalCommitLocalUpdate(environment, (store, form) => {\r\n form.setValue(false, 'isSubmitting');\r\n form.setValue(false, 'isValidating');\r\n entries.forEach((entry) => store.get(getFieldId(entry.key)).setValue('RESET', 'check'));\r\n });\r\n};\r\n\r\nexport const commitValidateIntoRelay = (entries, isSubmitting, environment): void => {\r\n internalCommitLocalUpdate(environment, (store, form) => {\r\n form.setValue(isSubmitting, 'isSubmitting');\r\n form.setValue(true, 'isValidating');\r\n entries.forEach((entry) => store.get(getFieldId(entry.key)).setValue('START', 'check'));\r\n });\r\n};\r\n\r\nexport const commitSubmitEndRelay = (environment): void => {\r\n internalCommitLocalUpdate(environment, (_, form) => {\r\n form.setValue(false, 'isSubmitting');\r\n });\r\n};\r\n\r\nexport const commitValidateEndRelay = (environment): void => {\r\n internalCommitLocalUpdate(environment, (_, form) => {\r\n form.setValue(false, 'isValidating');\r\n });\r\n};\r\n\r\nexport const commitResetField = (environment, key): void => {\r\n const id = getFieldId(key);\r\n internalCommitLocalUpdate(environment, (store, form) => {\r\n const entriesArray = form.getLinkedRecords('entries');\r\n const newEntries = entriesArray.filter((value) => value.getDataID() != id);\r\n form.setLinkedRecords(newEntries, 'entries');\r\n store.delete(id);\r\n });\r\n};\r\n\r\nexport const commitValue = (key, value, check, environment): void => {\r\n const id = getFieldId(key);\r\n internalCommitLocalUpdate(environment, (store, form) => {\r\n let field = store.get(id);\r\n if (!field) {\r\n field = store.create(id);\r\n const entriesArray = form.getLinkedRecords('entries');\r\n entriesArray.push(field);\r\n form.setLinkedRecords(entriesArray, 'entries');\r\n }\r\n field\r\n .setValue(id, 'id')\r\n .setValue(key, 'key')\r\n .setValue(check, 'check')\r\n .setValue(value, 'value');\r\n });\r\n};\r\n\r\nexport const commitErrorIntoRelay = (key, error, environment): void => {\r\n internalCommitLocalUpdate(environment, (store) => {\r\n store\r\n .get(getFieldId(key))\r\n .setValue(error, 'error')\r\n .setValue('DONE', 'check');\r\n });\r\n};\r\n\r\nexport const operationQueryForm = createOperationDescriptor(QueryFields);\r\n\r\nexport const operationQueryErrorsForm = createOperationDescriptor(QueryErrors);\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow\r\n * @format\r\n */\r\nimport { areEqual, RelayStoreUtils } from './RelayStoreUtils';\r\n\r\nconst { ID_KEY, REF_KEY, REFS_KEY } = RelayStoreUtils;\r\n\r\n/**\r\n * @public\r\n *\r\n * Low-level record manipulation methods.\r\n *\r\n * A note about perf: we use long-hand property access rather than computed\r\n * properties in this file for speed ie.\r\n *\r\n * const object = {};\r\n * object[KEY] = value;\r\n * record[storageKey] = object;\r\n *\r\n * instead of:\r\n *\r\n * record[storageKey] = {\r\n * [KEY]: value,\r\n * };\r\n *\r\n * The latter gets transformed by Babel into something like:\r\n *\r\n * function _defineProperty(obj, key, value) {\r\n * if (key in obj) {\r\n * Object.defineProperty(obj, key, {\r\n * value: value,\r\n * enumerable: true,\r\n * configurable: true,\r\n * writable: true,\r\n * });\r\n * } else {\r\n * obj[key] = value;\r\n * }\r\n * return obj;\r\n * }\r\n *\r\n * record[storageKey] = _defineProperty({}, KEY, value);\r\n *\r\n * A quick benchmark shows that computed property access is an order of\r\n * magnitude slower (times in seconds for 100,000 iterations):\r\n *\r\n * best avg sd\r\n * computed 0.02175 0.02292 0.00113\r\n * manual 0.00110 0.00123 0.00008\r\n */\r\n\r\n/**\r\n * @public\r\n *\r\n * Create a new record.\r\n */\r\nfunction create(dataID) {\r\n // See perf note above for why we aren't using computed property access.\r\n const record = {};\r\n record[ID_KEY] = dataID;\r\n return record;\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Get a scalar (non-link) field value.\r\n */\r\nfunction getValue(record, storageKey) {\r\n return record[storageKey];\r\n}\r\n\r\n/**\r\n * @private\r\n *\r\n * Get the value of a field as a reference to another record. Throws if the\r\n * field has a different type.\r\n */\r\nfunction getLinkedRecordKey(record, storageKey, key) {\r\n const link = record[storageKey];\r\n if (link == null) {\r\n return link;\r\n }\r\n return link[key];\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Get the value of a field as a reference to another record. Throws if the\r\n * field has a different type.\r\n */\r\nfunction getLinkedRecordID(record, storageKey) {\r\n return getLinkedRecordKey(record, storageKey, REF_KEY);\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Get the value of a field as a list of references to other records. Throws if\r\n * the field has a different type.\r\n */\r\nfunction getLinkedRecordIDs(record, storageKey: string) {\r\n return getLinkedRecordKey(record, storageKey, REFS_KEY);\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Compares the fields of a previous and new record, returning either the\r\n * previous record if all fields are equal or a new record (with merged fields)\r\n * if any fields have changed.\r\n */\r\nfunction update(prevRecord, nextRecord) {\r\n let updated = null;\r\n const keys = Object.keys(nextRecord);\r\n for (let ii = 0; ii < keys.length; ii++) {\r\n const key = keys[ii];\r\n if (updated || !areEqual(prevRecord[key], nextRecord[key])) {\r\n updated = updated !== null ? updated : { ...prevRecord };\r\n updated[key] = nextRecord[key];\r\n }\r\n }\r\n return updated !== null ? updated : prevRecord;\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Set the value of a storageKey to a scalar.\r\n * YES\r\n */\r\nfunction setValue(record, storageKey, value) {\r\n record[storageKey] = value;\r\n}\r\n\r\n/**\r\n * @private\r\n *\r\n * Get the value of a field as a reference to another record. Throws if the\r\n * field has a different type.\r\n */\r\nfunction setLinkedRecordKey(record, storageKey, linkedID, key) {\r\n // See perf note above for why we aren't using computed property access.\r\n const link = {};\r\n link[key] = linkedID;\r\n record[storageKey] = link;\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Set the value of a field to a reference to another record.\r\n */\r\nfunction setLinkedRecordID(record, storageKey: string, linkedID): void {\r\n setLinkedRecordKey(record, storageKey, linkedID, REF_KEY);\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * Set the value of a field to a list of references other records.\r\n */\r\nfunction setLinkedRecordIDs(record, storageKey: string, linkedIDs): void {\r\n setLinkedRecordKey(record, storageKey, linkedIDs, REFS_KEY);\r\n}\r\n\r\nexport const RelayModernRecord = {\r\n create,\r\n getLinkedRecordID,\r\n getLinkedRecordIDs,\r\n getValue,\r\n setValue,\r\n setLinkedRecordID,\r\n setLinkedRecordIDs,\r\n update,\r\n};\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\nimport { RelayModernRecord } from './RelayModernRecord';\r\nimport { LINKED_FIELD } from './RelayStoreUtils';\r\n\r\nexport function relayRead(recordSource, selector) {\r\n const reader = new RelayReader(recordSource, selector);\r\n return reader.read();\r\n}\r\n\r\n/**\r\n * @private\r\n */\r\nclass RelayReader {\r\n _recordSource;\r\n _seenRecords;\r\n _selector;\r\n\r\n constructor(recordSource, selector) {\r\n this._recordSource = recordSource;\r\n this._seenRecords = new Set();\r\n this._selector = selector;\r\n }\r\n\r\n read() {\r\n const { node, dataID } = this._selector;\r\n const data = this._traverse(node, dataID, null);\r\n return {\r\n data,\r\n seenRecords: this._seenRecords,\r\n selector: this._selector,\r\n };\r\n }\r\n\r\n _traverse(node, dataID, prevData) {\r\n if (dataID == null) {\r\n return dataID;\r\n }\r\n const record = this._recordSource.get(dataID);\r\n this._seenRecords.add(dataID);\r\n if (record == null) {\r\n return record;\r\n }\r\n const data = prevData || {};\r\n this._traverseSelections(node.selections, record, data);\r\n return data;\r\n }\r\n\r\n _traverseSelections(selections, record, data) /* had all expected data */ {\r\n for (let i = 0; i < selections.length; i++) {\r\n const selection = selections[i];\r\n const name = selection.name;\r\n const prevData = data[name];\r\n let value = null;\r\n if (selection.kind == LINKED_FIELD) {\r\n if (selection.plural) {\r\n const ids = RelayModernRecord.getLinkedRecordIDs(record, name);\r\n if (ids != null) {\r\n const linkedArray = prevData || [];\r\n ids.forEach((linkedID, nextIndex) => {\r\n const prevItem = linkedArray[nextIndex];\r\n linkedArray[nextIndex] = this._traverse(selection, linkedID, prevItem);\r\n });\r\n value = linkedArray;\r\n }\r\n } else {\r\n const id = RelayModernRecord.getLinkedRecordID(record, name);\r\n value = this._traverse(selection, id, prevData);\r\n }\r\n } else {\r\n // relay-forms, now default scalar\r\n value = RelayModernRecord.getValue(record, name);\r\n //this._readScalar(selection, record, data);\r\n }\r\n data[name] = value;\r\n }\r\n }\r\n}\r\n","/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\nimport { RelayRecordState } from './RelayStoreUtils';\r\nimport { MutableRecordSource, Record, RecordState } from './RelayTypes';\r\n\r\nconst { EXISTENT, NONEXISTENT, UNKNOWN } = RelayRecordState;\r\n\r\n/**\r\n * An implementation of the `MutableRecordSource` interface (defined in\r\n * `RelayStoreTypes`) that holds all records in memory (JS Map).\r\n */\r\nexport class RelayRecordSource implements MutableRecordSource {\r\n _records;\r\n\r\n constructor(records?) {\r\n this._records = new Map();\r\n if (records != null) {\r\n Object.keys(records).forEach((key) => {\r\n this._records.set(key, records[key]);\r\n });\r\n }\r\n }\r\n\r\n clear(): void {\r\n this._records = new Map();\r\n }\r\n\r\n delete(dataID): void {\r\n this._records.set(dataID, null);\r\n }\r\n\r\n get(dataID): Record | null | undefined {\r\n return this._records.get(dataID);\r\n }\r\n\r\n getRecordIDs(): Array<string> {\r\n return Array.from(this._records.keys());\r\n }\r\n\r\n getStatus(dataID): RecordState {\r\n if (!this._records.has(dataID)) {\r\n return UNKNOWN;\r\n }\r\n return this._records.get(dataID) == null ? NONEXISTENT : EXISTENT;\r\n }\r\n\r\n has(dataID): boolean {\r\n return this._records.has(dataID);\r\n }\r\n\r\n remove(dataID): void {\r\n this._records.delete(dataID);\r\n }\r\n\r\n set(dataID, record): void {\r\n this._records.set(dataID, record);\r\n }\r\n\r\n size(): number {\r\n return this._records.size;\r\n }\r\n\r\n toJSON(): any {\r\n const obj = {};\r\n for (const [key, value] of this._records.entries()) {\r\n obj[key] = value;\r\n }\r\n return obj;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\nimport { RelayModernRecord } from './RelayModernRecord';\r\nimport { MutableRecordSource, Record, RecordSource } from './RelayTypes';\r\n\r\n/**\r\n * @internal\r\n *\r\n * Wrapper API that is an amalgam of the `RelayModernRecord` API and\r\n * `MutableRecordSource` interface, implementing copy-on-write semantics for records\r\n * in a record source.\r\n *\r\n * Modifications are applied to fresh copies of records:\r\n * - Records in `base` are never modified.\r\n * - Modifications cause a fresh version of a record to be created in `sink`.\r\n * These sink records contain only modified fields.\r\n */\r\nexport class RelayRecordSourceMutator {\r\n __sources: Array<RecordSource>;\r\n _base: RecordSource;\r\n _sink: MutableRecordSource;\r\n\r\n constructor(base, sink) {\r\n this.__sources = [sink, base];\r\n this._base = base;\r\n this._sink = sink;\r\n }\r\n\r\n _getSinkRecord(dataID): Record {\r\n let sinkRecord = this._sink.get(dataID);\r\n if (!sinkRecord) {\r\n sinkRecord = RelayModernRecord.create(dataID);\r\n this._sink.set(dataID, sinkRecord);\r\n }\r\n return sinkRecord;\r\n }\r\n\r\n create(dataID): void {\r\n const record = RelayModernRecord.create(dataID);\r\n this._sink.set(dataID, record);\r\n }\r\n\r\n delete(dataID): void {\r\n this._sink.delete(dataID);\r\n }\r\n\r\n getStatus(dataID) {\r\n return this._sink.has(dataID) ? this._sink.getStatus(dataID) : this._base.getStatus(dataID);\r\n }\r\n\r\n setValue(dataID, storageKey: string, value): void {\r\n const sinkRecord = this._getSinkRecord(dataID);\r\n RelayModernRecord.setValue(sinkRecord, storageKey, value);\r\n }\r\n\r\n setLinkedRecordID(dataID, storageKey, linkedID) {\r\n const sinkRecord = this._getSinkRecord(dataID);\r\n RelayModernRecord.setLinkedRecordID(sinkRecord, storageKey, linkedID);\r\n }\r\n\r\n getLinkedRecordIDs(dataID, storageKey: string) {\r\n for (let ii = 0; ii < this.__sources.length; ii++) {\r\n const record = this.__sources[ii].get(dataID);\r\n if (record) {\r\n const linkedIDs = RelayModernRecord.getLinkedRecordIDs(record, storageKey);\r\n if (linkedIDs !== undefined) {\r\n return linkedIDs;\r\n }\r\n } else if (record === null) {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n setLinkedRecordIDs(dataID, storageKey: string, linkedIDs): void {\r\n const sinkRecord = this._getSinkRecord(dataID);\r\n RelayModernRecord.setLinkedRecordIDs(sinkRecord, storageKey, linkedIDs);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\n// flowlint ambiguous-object-type:error\r\n\r\n'use strict';\r\n\r\nimport { RelayRecordSourceMutator } from './RelayRecordSourceMutator';\r\nimport { RecordProxy } from './RelayTypes';\r\n\r\n/**\r\n * @internal\r\n *\r\n * A helper class for manipulating a given record from a record source via an\r\n * imperative/OO-style API.\r\n */\r\nexport class RelayRecordProxy implements RecordProxy {\r\n _dataID;\r\n _mutator: RelayRecordSourceMutator;\r\n _source;\r\n\r\n constructor(source, mutator, dataID) {\r\n this._dataID = dataID;\r\n this._mutator = mutator;\r\n this._source = source;\r\n }\r\n\r\n getDataID(): string {\r\n return this._dataID;\r\n }\r\n\r\n setValue(value, name: string) {\r\n this._mutator.setValue(this._dataID, name, value);\r\n return this;\r\n }\r\n\r\n setLinkedRecord(record: RecordProxy, name: string) {\r\n const linkedID = record.getDataID();\r\n this._mutator.setLinkedRecordID(this._dataID, name, linkedID);\r\n return this;\r\n }\r\n\r\n getLinkedRecords(name: string): Array<RecordProxy | null | undefined> | null | undefined {\r\n const linkedIDs = this._mutator.getLinkedRecordIDs(this._dataID, name);\r\n if (linkedIDs == null) {\r\n return linkedIDs;\r\n }\r\n return linkedIDs.map((linkedID) => {\r\n return linkedID != null ? this._source.get(linkedID) : linkedID;\r\n });\r\n }\r\n\r\n setLinkedRecords(records, name: string): RecordProxy {\r\n const linkedIDs = records.map((record) => record && record.getDataID());\r\n this._mutator.setLinkedRecordIDs(this._dataID, name, linkedIDs);\r\n return this;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow\r\n * @format\r\n */\r\n\r\nimport { RelayRecordProxy } from './RelayRecordProxy';\r\nimport { RelayRecordSourceMutator } from './RelayRecordSourceMutator';\r\nimport { RelayStoreUtils, RelayRecordState } from './RelayStoreUtils';\r\nimport { RecordSourceProxy } from './RelayTypes';\r\n\r\n/**\r\n * @internal\r\n *\r\n * A helper for manipulating a `RecordSource` via an imperative/OO-style API.\r\n */\r\nexport class RelayRecordSourceProxy implements RecordSourceProxy {\r\n __mutator: RelayRecordSourceMutator;\r\n _proxies;\r\n\r\n constructor(mutator) {\r\n this.__mutator = mutator;\r\n this._proxies = {};\r\n }\r\n\r\n create(dataID) {\r\n this.__mutator.create(dataID);\r\n delete this._proxies[dataID];\r\n return this.get(dataID);\r\n }\r\n\r\n delete(dataID) {\r\n delete this._proxies[dataID];\r\n this.__mutator.delete(dataID);\r\n }\r\n\r\n get(dataID) {\r\n if (!this._proxies.hasOwnProperty(dataID)) {\r\n const status = this.__mutator.getStatus(dataID);\r\n if (status === RelayRecordState.EXISTENT) {\r\n this._proxies[dataID] = new RelayRecordProxy(this, this.__mutator, dataID);\r\n } else {\r\n this._proxies[dataID] = status === RelayRecordState.NONEXISTENT ? null : undefined;\r\n }\r\n }\r\n return this._proxies[dataID];\r\n }\r\n\r\n getRoot() {\r\n let root = this.get(RelayStoreUtils.ROOT_ID);\r\n if (!root) {\r\n root = this.create(RelayStoreUtils.ROOT_ID);\r\n }\r\n return root;\r\n }\r\n}\r\n","/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\nimport { RelayModernRecord } from './RelayModernRecord';\r\nimport { LINKED_FIELD } from './RelayStoreUtils';\r\n\r\nexport function mark(recordSource, selector, references): void {\r\n const { dataID, node } = selector;\r\n const marker = new RelayReferenceMarker(recordSource, references);\r\n marker.mark(node, dataID);\r\n}\r\n\r\n/**\r\n * @private\r\n */\r\nclass RelayReferenceMarker {\r\n _recordSource;\r\n _references;\r\n\r\n constructor(recordSource, references) {\r\n this._recordSource = recordSource;\r\n this._references = references;\r\n }\r\n\r\n mark(node, dataID): void {\r\n this._traverse(node, dataID);\r\n }\r\n\r\n _traverse(node, dataID): void {\r\n if (dataID != null) {\r\n this._references.add(dataID);\r\n const record = this._recordSource.get(dataID);\r\n record != null && this._traverseSelections(node.selections, record);\r\n }\r\n }\r\n\r\n _traverseSelections(selections, record): void {\r\n selections.forEach((selection) => {\r\n const name = selection.name;\r\n if (selection.kind == LINKED_FIELD) {\r\n if (selection.plural) {\r\n const linkedIDs = RelayModernRecord.getLinkedRecordIDs(record, name) || [];\r\n linkedIDs.forEach((linkedID) => {\r\n this._traverse(selection, linkedID);\r\n });\r\n } else {\r\n const linkedID = RelayModernRecord.getLinkedRecordID(record, name);\r\n this._traverse(selection, linkedID);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n/**\r\n * Copyright (c) Facebook, Inc. and its affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * @flow strict-local\r\n * @format\r\n */\r\n\r\n// flowlint ambiguous-object-type:error\r\n\r\n'use strict';\r\n\r\nimport { RelayModernRecord } from './RelayModernRecord';\r\nimport { relayRead } from './RelayReader';\r\nimport { RelayRecordSource } from './RelayRecordSource';\r\nimport { RelayRecordSourceMutator } from './RelayRecordSourceMutator';\r\nimport { RelayRecordSourceProxy } from './RelayRecordSourceProxy';\r\nimport { mark } from './RelayReferenceMarker';\r\nimport { hasOverlappingIDs, recycleNodesInto, RelayStoreUtils } from './RelayStoreUtils';\r\nimport { MutableRecordSource, Store } from './RelayTypes';\r\n\r\nconst resolvedPromise = Promise.resolve();\r\n\r\n/**\r\n * An alternative to setImmediate based on Promise.\r\n */\r\nfunction resolveImmediate(callback: () => void) {\r\n resolvedPromise.then(callback).catch(throwNext);\r\n}\r\n\r\nfunction throwNext(error) {\r\n setTimeout(() => {\r\n throw error;\r\n }, 0);\r\n}\r\n\r\nconst { ROOT_ID } = RelayStoreUtils;\r\n\r\nexport function createStore() {\r\n return new RelayModernStore(new RelayRecordSource());\r\n}\r\n\r\n/**\r\n * @public\r\n *\r\n * An implementation of the `Store` interface defined in `RelayStoreTypes`.\r\n *\r\n * Note that a Store takes ownership of all records provided to it: other\r\n * objects may continue to hold a reference to such records but may not mutate\r\n * them. The static Relay core is architected to avoid mutating records that may have been\r\n * passed to a store: operations that mutate records will either create fresh\r\n * records or clone existing records and modify the clones. Record immutability\r\n * is also enforced in development mode by freezing all records passed to a store.\r\n */\r\nexport class RelayModernStore implements Store {\r\n _gcRun;\r\n _recordSource: MutableRecordSource;\r\n _roots;\r\n _updatedRecordIDs;\r\n _currentWriteEpoch;\r\n _subs;\r\n\r\n constructor(source: MutableRecordSource) {\r\n this._currentWriteEpoch = 0;\r\n this._gcRun = null;\r\n this._recordSource = source;\r\n this._roots = new Map();\r\n this._updatedRecordIDs = new Set();\r\n this._subs = new Set();\r\n\r\n initializeRecordSource(this._recordSource);\r\n }\r\n\r\n getSource() {\r\n return this._recordSource;\r\n }\r\n\r\n commitUpdate(updater): void {\r\n const sink = new RelayRecordSource();\r\n const mutator = new RelayRecordSourceMutator(this.getSource(), sink);\r\n const recordSourceProxy = new RelayRecordSourceProxy(mutator);\r\n updater(recordSourceProxy);\r\n this.publish(sink);\r\n this.notify();\r\n }\r\n\r\n retain(operation) {\r\n const id = operation.identifier;\r\n let disposed = false;\r\n const dispose = () => {\r\n // Ensure each retain can only dispose once\r\n if (disposed) {\r\n return;\r\n }\r\n disposed = true;\r\n // For Flow: guard against the entry somehow not existing\r\n const rootEntry = this._roots.get(id);\r\n if (rootEntry == null) {\r\n return;\r\n }\r\n // Decrement the ref count: if it becomes zero it is eligible\r\n // for release.\r\n rootEntry.refCount -= 1;\r\n\r\n if (rootEntry.refCount === 0) {\r\n this._roots.delete(id);\r\n this.scheduleGC();\r\n }\r\n };\r\n\r\n const rootEntry = this._roots.get(id);\r\n if (rootEntry != null) {\r\n // If we've previously retained this operation, increment the refCount\r\n rootEntry.refCount += 1;\r\n } else {\r\n // Otherwise create a new entry for the operation\r\n this._roots.set(id, {\r\n operation,\r\n refCount: 1,\r\n });\r\n }\r\n\r\n return { dispose };\r\n }\r\n\r\n lookup(selector) {\r\n const source = this.getSource();\r\n return relayRead(source, selector);\r\n }\r\n\r\n // This method will return a list of updated owners from the subscriptions\r\n notify() {\r\n this._currentWriteEpoch += 1;\r\n const updateIds = this._updatedRecordIDs;\r\n const hasUpdatedRecords = updateIds.size !== 0;\r\n const source = this.getSource();\r\n this._subs.forEach((subscription) => {\r\n this._updateSub(source, subscription, updateIds, hasUpdatedRecords);\r\n });\r\n this._updatedRecordIDs.clear();\r\n }\r\n\r\n _updateSub(source, subscription, updatedRecordIDs, hasUpdatedRecords: boolean) {\r\n const { callback, snapshot } = subscription;\r\n const hasOverlappingUpdates =\r\n hasUpdatedRecords && hasOverlappingIDs(snapshot.seenRecords, updatedRecordIDs);\r\n if (hasOverlappingUpdates) {\r\n let nextSnapshot = relayRead(source, snapshot.selector);\r\n const nextData = recycleNodesInto(snapshot.data, nextSnapshot.data);\r\n nextSnapshot = {\r\n data: nextData,\r\n seenRecords: nextSnapshot.seenRecords,\r\n selector: nextSnapshot.selector,\r\n };\r\n subscription.snapshot = nextSnapshot;\r\n if (nextSnapshot.data !== snapshot.data) {\r\n callback(nextSnapshot);\r\n }\r\n }\r\n }\r\n\r\n publish(source): void {\r\n const target = this.getSource();\r\n updateTargetFromSource(target, source, this._updatedRecordIDs);\r\n }\r\n\r\n subscribe(snapshot, callback: (snapshot) => void) {\r\n const subscription = { callback, snapshot };\r\n const dispose = () => {\r\n this._subs.delete(subscription);\r\n };\r\n this._subs.add(subscription);\r\n return { dispose };\r\n }\r\n\r\n scheduleGC() {\r\n if (this._gcRun) {\r\n return;\r\n }\r\n this._gcRun = this._collect();\r\n resolveImmediate(this._gcStep);\r\n }\r\n\r\n _gcStep = (): void => {\r\n if (this._gcRun) {\r\n if (this._gcRun.next().done) {\r\n this._gcRun = null;\r\n } else {\r\n resolveImmediate(this._gcStep);\r\n }\r\n }\r\n };\r\n\r\n *_collect(): Generator<void, void, void> {\r\n /* eslint-disable no-labels */\r\n top: while (true) {\r\n const startEpoch = this._currentWriteEpoch;\r\n const references = new Set();\r\n\r\n // Mark all records that are traversable from a root\r\n for (const { operation } of this._roots.values()) {\r\n mark(this._recordSource, operation.fragment, references);\r\n // Yield for other work after each operation\r\n yield;\r\n\r\n // If the store was updated, restart\r\n if (startEpoch !== this._currentWriteEpoch) {\r\n continue top;\r\n }\r\n }\r\n\r\n // Sweep records without references\r\n if (references.size === 0) {\r\n // Short-circuit if *nothing* is referenced\r\n this._recordSource.clear();\r\n } else {\r\n // Evict any unreferenced nodes\r\n const storeIDs = this._recordSource.getRecordIDs();\r\n for (let ii = 0; ii < storeIDs.length; ii++) {\r\n const dataID = storeIDs[ii];\r\n if (!references.has(dataID)) {\r\n this._recordSource.remove(dataID);\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n }\r\n}\r\n\r\nfunction initializeRecordSource(target) {\r\n if (!target.has(ROOT_ID)) {\r\n const rootRecord = RelayModernRecord.create(ROOT_ID);\r\n target.set(ROOT_ID, rootRecord);\r\n }\r\n}\r\n\r\n/**\r\n * Updates the target with information from source, also updating a mapping of\r\n * which records in the target were changed as a result.\r\n * Additionally, will mark records as invalidated at the current write epoch\r\n * given the set of record ids marked as stale in this update.\r\n */\r\nfunction updateTargetFromSource(target, source, updatedRecordIDs): void {\r\n // Update the target based on the changes present in source\r\n const dataIDs = source.getRecordIDs();\r\n for (let ii = 0; ii < dataIDs.length; ii++) {\r\n const dataID = dataIDs[ii];\r\n const sourceRecord = source.get(dataID);\r\n const targetRecord = target.get(dataID);\r\n if (sourceRecord && targetRecord) {\r\n // ReactFlightClientResponses are lazy and only materialize when readRoot\r\n // is called when we read the field, so if the record is a Flight field\r\n // we always use the new record's data regardless of whether\r\n // it actually changed. Let React take care of reconciliation instead.\r\n const nextRecord = RelayModernRecord.update(targetRecord, sourceRecord);\r\n if (nextRecord !== targetRecord) {\r\n updatedRecordIDs.add(dataID);\r\n target.set(dataID, nextRecord);\r\n }\r\n } else if (sourceRecord === null) {\r\n target.delete(dataID);\r\n if (targetRecord !== null) {\r\n updatedRecordIDs.add(dataID);\r\n }\r\n } else if (sourceRecord) {\r\n target.set(dataID, sourceRecord);\r\n updatedRecordIDs.add(dataID);\r\n } // don't add explicit undefined\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { FragmentSet, FragmentSetData } from './relay/queries';\r\nimport { useStore } from './relay/RelayStoreProvider';\r\nimport { isPromise } from './relay/RelayStoreUtils';\r\nimport { Snapshot } from './relay/RelayTypes';\r\nimport { FormSetValueOptions, FormSetValueReturn } from './RelayFormsTypes';\r\nimport { useForceUpdate } from './useForceUpdate';\r\nimport { commitValue, commitErrorIntoRelay, commitResetField, getSnapshot } from './Utils';\r\n\r\nexport function useFormSetValue<ValueType>({\r\n key,\r\n initialValue,\r\n validate,\r\n validateOnChange,\r\n}: FormSetValueOptions<ValueType>): FormSetValueReturn<ValueType> {\r\n const forceUpdate = useForceUpdate();\r\n const environment = useStore();\r\n const ref = React.useRef({\r\n value: initialValue,\r\n error: undefined,\r\n check: validate ? 'INIT' : 'DONE',\r\n isChecking: false,\r\n });\r\n\r\n const setValue = React.useCallback(\r\n (newValue) => {\r\n ref.current.value = newValue;\r\n if (ref.current.check === 'DONE' && validate) {\r\n ref.current.check = 'START';\r\n }\r\n commitValue(key, newValue, ref.current.check, environment);\r\n forceUpdate();\r\n },\r\n [environment, key, validate, forceUpdate],\r\n );\r\n\r\n React.useEffect(() => {\r\n //commitResetField(environment, key);\r\n commitValue(key, initialValue, ref.current.check, environment);\r\n const snapshot = getSnapshot(environment, FragmentSet, key);\r\n\r\n const disposeSubscrition = environment.subscribe(snapshot, (s: Snapshot) => {\r\n const { check } = (s as any).data as FragmentSetData;\r\n const isStart = check === 'START';\r\n const isReset = check === 'RESET';\r\n ref.current.check = check;\r\n if (isReset) {\r\n ref.current.check = validate ? 'INIT' : 'DONE';\r\n setValue(initialValue);\r\n } else {\r\n if (!validate) {\r\n commitErrorIntoRelay(key, undefined, environment);\r\n return;\r\n }\r\n if (isStart && !ref.current.isChecking) {\r\n internalValidate(ref.current.value);\r\n }\r\n }\r\n }).dispose;\r\n\r\n const dispose = (): void => {\r\n disposeSubscrition();\r\n commitResetField(environment, key);\r\n };\r\n\r\n function finalizeCheck(error): void {\r\n ref.current.isChecking = false;\r\n if (ref.current.error !== error) {\r\n ref.current.error = error;\r\n forceUpdate();\r\n }\r\n commitErrorIntoRelay(key, error, environment);\r\n }\r\n\r\n function internalValidate(value): void {\r\n ref.current.isChecking = true;\r\n const result = validate(value);\r\n function internalFinalize(error): void {\r\n if (value !== ref.current.value) {\r\n internalValidate(ref.current.value);\r\n return;\r\n }\r\n finalizeCheck(error);\r\n }\r\n if (isPromise(result)) {\r\n (result as Promise<string | undefined>)\r\n .then(internalFinalize)\r\n .catch(internalFinalize);\r\n } else {\r\n internalFinalize(result);\r\n }\r\n }\r\n if (validateOnChange) {\r\n internalValidate(initialValue);\r\n }\r\n return dispose;\r\n }, [environment, initialValue, key, setValue, validate, validateOnChange, forceUpdate]);\r\n\r\n return [ref.current, setValue];\r\n}\r\n","import * as React from 'react';\r\nimport { QueryErrorsData } from './relay/queries';\r\nimport { useStore } from './relay/RelayStoreProvider';\r\nimport { areEqual } from './relay/RelayStoreUtils';\r\nimport { Snapshot } from './relay/RelayTypes';\r\nimport { FormStateReturn } from './RelayFormsTypes';\r\nimport { useForceUpdate } from './useForceUpdate';\r\nimport { operationQueryErrorsForm } from './Utils';\r\n\r\nexport const useFormState = (): FormStateReturn => {\r\n const ref = React.useRef<FormStateReturn>({\r\n errors: undefined,\r\n isValidating: false,\r\n isSubmitting: false,\r\n isValid: false,\r\n });\r\n\r\n const forceUpdate = useForceUpdate();\r\n const environment = useStore();\r\n\r\n React.useEffect(() => {\r\n function checkError(s: Snapshot): void {\r\n const data: QueryErrorsData = (s as any).data;\r\n const form = data.form;\r\n const entries = form.entries;\r\n const current = ref.current;\r\n const entryErrors = entries.filter((value) => !!value.error);\r\n const entryValidated = entries.filter((value) => value.check === 'DONE');\r\n const errors = entryErrors.length > 0 ? entryErrors : undefined;\r\n const isValidating = form.isValidating;\r\n const isSubmitting = form.isSubmitting;\r\n\r\n const isValid =\r\n entries.length === entryValidated.length &&\r\n (!errors || Object.keys(errors).length === 0);\r\n const newState = {\r\n errors,\r\n isValid,\r\n isValidating,\r\n isSubmitting,\r\n };\r\n if (!areEqual(current, newState)) {\r\n ref.current = newState;\r\n forceUpdate();\r\n }\r\n }\r\n const snapshot = environment.lookup(operationQueryErrorsForm.fragment);\r\n checkError(snapshot);\r\n return environment.subscribe(snapshot, (s) => {\r\n checkError(s);\r\n }).dispose;\r\n }, [environment, forceUpdate]);\r\n\r\n return ref.current;\r\n};\r\n","import * as React from 'react';\r\nimport { QueryFieldsData } from './relay/queries';\r\nimport { useStore } from './relay/RelayStoreProvider';\r\nimport { isPromise } from './relay/RelayStoreUtils';\r\nimport { Snapshot, Store } from './relay/RelayTypes';\r\nimport { FormSubmitOptions, FunctionOnSubmit, FormSubmitReturn } from './RelayFormsTypes';\r\nimport {\r\n commitValidateEndRelay,\r\n commitValidateIntoRelay,\r\n commitSubmitEndRelay,\r\n operationQueryForm,\r\n commitResetIntoRelay,\r\n} from './Utils';\r\n\r\nexport const useFormSubmit = <ValueType extends object = object>({\r\n onSubmit,\r\n}: FormSubmitOptions<ValueType>): FormSubmitReturn => {\r\n const environment = useStore();\r\n\r\n React.useEffect(() => {\r\n return environment.retain(operationQueryForm).dispose;\r\n }, [environment]);\r\n\r\n const ref = React.useRef({\r\n isSubmitting: false,\r\n isValidating: false,\r\n error: undefined,\r\n subscription: undefined,\r\n });\r\n\r\n const internalValidate = React.useCallback(\r\n (snapshot: Snapshot, isSubmitting) => {\r\n ref.current.isValidating = true;\r\n const data: QueryFieldsData = (snapshot as any).data;\r\n const filtered = data.form.entries.filter((value) => value.check === 'INIT');\r\n commitValidateIntoRelay(filtered, isSubmitting, environment);\r\n },\r\n [environment],\r\n );\r\n\r\n const execute = React.useCallback(\r\n (\r\n environment: Store,\r\n snapshot: Snapshot,\r\n dispose: () => void,\r\n onSubmit?: FunctionOnSubmit<object>,\r\n ): void => {\r\n const data: QueryFieldsData = (snapshot as any).data;\r\n const entries = data.form.entries;\r\n const filtered = entries.filter((value) => value.check === 'DONE');\r\n if (filtered.length === entries.length) {\r\n const errors = entries.filter((value) => !!value.error);\r\n commitValidateEndRelay(environment);\r\n ref.current.isValidating = false;\r\n const internalDispose = (): void => {\r\n dispose();\r\n if (ref.current.isSubmitting) {\r\n ref.current.isSubmitting = false;\r\n commitSubmitEndRelay(environment);\r\n }\r\n };\r\n if (ref.current.isSubmitting && onSubmit && errors.length === 0) {\r\n const result = {};\r\n entries.forEach((entry) => {\r\n result[entry.key] = entry.value;\r\n });\r\n const submit = onSubmit(result);\r\n\r\n if (isPromise(submit)) {\r\n (submit as Promise<void>).then(internalDispose).catch(internalDispose);\r\n return;\r\n }\r\n }\r\n internalDispose();\r\n }\r\n },\r\n [],\r\n );\r\n\r\n const reset = React.useCallback(() => {\r\n const snapshot = environment.lookup(operationQueryForm.fragment);\r\n if (ref.current.isValidating && ref.current.isSubmitting) {\r\n return;\r\n }\r\n const data: QueryFieldsData = (snapshot as any).data;\r\n commitResetIntoRelay(data.form.entries, environment);\r\n }, [environment]);\r\n\r\n const subscribe = React.useCallback(\r\n (submit = false) => {\r\n const snapshot = environment.lookup(operationQueryForm.fragment);\r\n const { subscription } = ref.current;\r\n subscription && subscription.dispose();\r\n function dispose(): void {\r\n subscription && subscription.dispose();\r\n ref.current.subscription = null;\r\n }\r\n ref.current.subscription = environment.subscribe(snapshot, (s) =>\r\n execute(environment, s, dispose, onSubmit),\r\n );\r\n internalValidate(snapshot, submit);\r\n execute(environment, snapshot, dispose, onSubmit);\r\n },\r\n [environment, internalValidate, execute, onSubmit],\r\n );\r\n\r\n const validate = React.useCallback(() => {\r\n if (!ref.current.isValidating) {\r\n subscribe(false);\r\n }\r\n }, [subscribe]);\r\n\r\n const submit = React.useCallback(\r\n (event?: React.BaseSyntheticEvent<any>) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n if (!ref.current.isSubmitting) {\r\n ref.current.isSubmitting = true;\r\n subscribe(true);\r\n }\r\n },\r\n [subscribe],\r\n );\r\n\r\n const result = React.useMemo(() => {\r\n return {\r\n submit,\r\n validate,\r\n reset,\r\n };\r\n }, [submit, validate, reset]);\r\n return result;\r\n};\r\n","import * as React from 'react';\r\nimport { FragmentValue } from './relay/queries';\r\nimport { useStore } from './relay/RelayStoreProvider';\r\nimport { Snapshot } from './relay/RelayTypes';\r\nimport { FormValueStateReturn } from './RelayFormsTypes';\r\nimport { getSnapshot } from './Utils';\r\n\r\nexport function useFormValue<ValueType>(key: string): FormValueStateReturn<ValueType> {\r\n const environment = useStore();\r\n\r\n const snapshot = React.useMemo(() => {\r\n return getSnapshot(environment, FragmentValue, key);\r\n }, [key, environment]);\r\n\r\n const [data, setData] = React.useState<FormValueStateReturn<any>>((snapshot as any).data);\r\n\r\n React.useEffect(() => {\r\n return environment.subscribe(snapshot, (s: Snapshot) => {\r\n setData((s as any).data);\r\n }).dispose;\r\n }, [environment, snapshot, setData]);\r\n\r\n return data;\r\n}\r\n"],"names":["ReactRelayContext","React","createContext","useStore","isPromise","p","then","RelayRecordState","aStackPool","bStackPool","areEqual","a","b","aStack","length","pop","bStack","result","eq","objToStr","Object","prototype","toString","className","call","String","isNaN","Number","source","global","multiline","ignoreCase","push","size","constructor","hasOwnProperty","valueOf","keys","i","checkRecycleData","data","Set","Map","ITERATOR_KEY","Symbol","iterator","useForceUpdate","useReducer","x","id","name","key","check","error","value","QueryErrors","fragment","kind","selections","plural","FragmentSet","FragmentValue","createReaderSelector","node","dataID","createOperationDescriptor","request","identifier","internalCommitLocalUpdate","environment","updater","commitUpdate","store","localForm","get","create","setLinkedRecords","getRoot","setLinkedRecord","getFieldId","PREFIX_LOCAL_FORM","getSnapshot","item","__id","lookup","getSingularSelector","commitValue","form","field","entriesArray","getLinkedRecords","setValue","commitErrorIntoRelay","operationQueryForm","operationQueryErrorsForm","__assign","assign","t","s","n","arguments","apply","this","getLinkedRecordKey","record","storageKey","link","setLinkedRecordKey","linkedID","RelayModernRecord","prevRecord","nextRecord","updated","ii","relayRead","recordSource","selector","RelayReader","read","_recordSource","_seenRecords","_selector","_a","_traverse","seenRecords","prevData","add","_traverseSelections","_this","selection","name_1","ids","linkedArray_1","forEach","nextIndex","this_1","EXISTENT","NONEXISTENT","UNKNOWN","RelayRecordSource","records","_records","set","clear","delete","getRecordIDs","Array","from","getStatus","has","remove","toJSON","obj","_i","entries","_b","RelayRecordSourceMutator","base","sink","__sources","_base","_sink","_getSinkRecord","sinkRecord","setLinkedRecordID","getLinkedRecordIDs","linkedIDs","undefined","setLinkedRecordIDs","RelayRecordProxy","mutator","_dataID","_mutator","_source","getDataID","map","RelayRecordSourceProxy","__mutator","_proxies","status_1","root","RelayReferenceMarker","references","_references","mark","resolvedPromise","Promise","resolve","resolveImmediate","callback","catch","throwNext","setTimeout","RelayModernStore","_gcStep","_gcRun","next","done","_currentWriteEpoch","_roots","_updatedRecordIDs","_subs","target","rootRecord","initializeRecordSource","getSource","publish","notify","retain","operation","disposed","rootEntry","refCount","dispose","scheduleGC","updateIds","hasUpdatedRecords","subscription","_updateSub","updatedRecordIDs","snapshot","hasOverlappingIDs","nextSnapshot","nextData","recycleNodesInto","canRecycle","prevArray","isArray","nextArray","reduce","wasEqual","nextItem","nextValue","prevObject_1","nextObject_1","prevKeys","nextKeys","dataIDs","sourceRecord","targetRecord","updateTargetFromSource","subscribe","_collect","thisArg","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","v","op","TypeError","e","step","startEpoch","values","storeIDs","props","context","useMemo","createElement","Provider","children","initialValue","validate","validateOnChange","forceUpdate","ref","useRef","isChecking","useCallback","newValue","current","useEffect","disposeSubscrition","isStart","isReset","internalValidate","internalFinalize","finalizeCheck","newEntries","filter","commitResetField","errors","isValidating","isSubmitting","isValid","checkError","entryErrors","entryValidated","newState","onSubmit","entry","commitValidateIntoRelay","execute","commitValidateEndRelay","internalDispose","commitSubmitEndRelay","result_1","submit_1","reset","commitResetIntoRelay","submit","event","preventDefault","useState","setData"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useForceUpdate(): () => void;
|