Skip to content

Instantly share code, notes, and snippets.

@mindrones
Last active January 27, 2021 12:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mindrones/fcf9375f64216e1a7c20d3350362ec80 to your computer and use it in GitHub Desktop.
Save mindrones/fcf9375f64216e1a7c20d3350362ec80 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
Machine({
"id": "ExploreRoute",
"initial": "Interactive",
"states": {
"Interactive": {
"type": "parallel",
"states": {
"History": {
"id": "History",
"initial": "Idle",
"states": {
"Idle": {
"on": {
"RESULTS_UPDATED": {
"target": "Idle",
"actions": [
"updateCurrentURL",
"sendCurrentUrlUpdated",
"conditionalLog"
]
},
"CURRENT_URL_UPDATED": {
"target": "Idle",
"actions": [
"updateEntry",
"conditionalLog"
]
}
}
}
}
},
"Selecting": {
"initial": "Idle",
"states": {
"Idle": {
"entry": [
"conditionalLog"
],
"on": {
"SELECTED_FIELDS": {
"target": "Idle",
"actions": [
"selectFields",
"updateQuery",
"sendQueryUpdated"
]
},
"TOGGLED_FIELD_COUNTER": {
"target": "Idle",
"actions": [
"toggleField",
"updateQuery",
"sendQueryUpdated"
]
},
"SELECTED_NEXT_FIELD": {
"target": "Idle",
"actions": [
"selectNextField",
"updateQuery",
"sendQueryUpdated"
]
},
"SELECTED_PREVIOUS_FIELD": {
"target": "Idle",
"actions": [
"selectPreviousField",
"updateQuery",
"sendQueryUpdated"
]
}
}
}
}
},
"Results": {
"id": "Results",
"initial": "CheckMatching",
"on": {
"QUERY_UPDATED": {
"target": "#Results.CheckMatching"
}
},
"states": {
"CheckMatching": {
"entry": [
"conditionalLog"
],
"always": [
{
"target": "Matching",
"cond": "isMatching"
},
{
"target": "Dirty"
}
]
},
"Matching": {
"id": "Matching",
"entry": [
"conditionalLog",
"sendResultsUpdated"
]
},
"Dirty": {
"id": "Dirty",
"initial": "CheckingCache",
"entry": [
"conditionalLog"
],
"states": {
"CheckingCache": {
"entry": [
"conditionalLog",
"setCacheKey"
],
"always": [
{
"target": "#Matching",
"cond": "isInCache",
"actions": [
"loadFromCache"
]
},
{
"target": "Pending"
}
]
},
"Pending": {
"entry": [
"conditionalLog"
],
"invoke": {
"id": "request",
"src": "apiRequest",
"onDone": {
"target": "#Results.Matching",
"actions": [
"updateCache",
"updateCurrentResults"
]
},
"onError": {
"target": "Error"
}
}
},
"Error": {
"id": "Error",
"entry": [
"conditionalLog",
"getError"
]
}
}
}
}
},
"Search": {
"id": "Search",
"initial": "Idle",
"type": "parallel",
"states": {
"SearchInput": {
"id": "SearchInput",
"initial": "Idle",
"states": {
"Idle": {
"entry": [
"conditionalLog"
],
"on": {
"TYPED": {
"target": "Idle",
"actions": [
"updateSearchQuery",
"sendSearchQueryUpdated"
]
},
"SEARCHED": {
"target": "Idle",
"actions": [
"setMenuInactive",
"updateQuery",
"sendQueryUpdated"
]
}
}
}
}
},
"Fields": {
"initial": "Idle",
"on": {
"FIELD_SELECTED": {
"target": ".CheckingCache",
"actions": [
"updateCurrentField",
"sendFieldUpdated"
]
},
"NEXT_FIELD_SELECTED": {
"target": ".CheckingCache",
"actions": [
"selectNextSearchField",
"sendFieldUpdated"
]
},
"PREV_FIELD_SELECTED": {
"target": ".CheckingCache",
"actions": [
"selectPrevSearchField",
"sendFieldUpdated"
]
},
"SEARCH_QUERY_UPDATED": {
"target": ".CheckingCache"
}
},
"states": {
"Idle": {
"on": {
"FIELD_STATS_SHOWN": {
"actions": [
"setMenuActive"
]
},
"FIELD_STATS_HIDDEN": {
"actions": [
"setMenuInactive"
]
}
}
},
"CheckingCache": {
"entry": [
"setStatsCacheKey",
"conditionalLog"
],
"always": [
{
"target": "Idle",
"cond": "isInStatsCache",
"actions": [
"loadStatsFromCache"
]
},
{
"target": "Pending"
}
]
},
"Pending": {
"entry": [
"conditionalLog"
],
"invoke": {
"id": "StatsRequest",
"src": "fieldsStatsRequest",
"onDone": {
"target": "Idle",
"actions": [
"updateStatsCache",
"updateFieldStats",
"sendFieldUpdated"
]
},
"onError": {
"target": "Error"
}
}
},
"Error": {
"id": "FieldsError",
"entry": [
"conditionalLog",
"getFieldsError"
]
}
}
},
"Suggestions": {
"initial": "Idle",
"on": {
"FIELD_UPDATED": {
"target": ".CheckingCache"
},
"SEARCH_QUERY_UPDATED": {
"target": ".CheckingCache"
}
},
"states": {
"Idle": {},
"CheckingCache": {
"entry": [
"conditionalLog",
"setSuggestionsCacheKey"
],
"always": [
{
"target": "Idle",
"cond": "isSuggestionsRequestIncomplete"
},
{
"target": "Idle",
"cond": "isInSuggestionsCache",
"actions": [
"loadSuggestionsFromCache"
]
},
{
"target": "Pending"
}
]
},
"Pending": {
"entry": [
"conditionalLog",
"setAsWaiting"
],
"invoke": {
"id": "SuggestionsRequest",
"src": "suggestionsRequest",
"onDone": {
"target": "Idle",
"actions": [
"updateSuggestionsCache",
"updateSuggestions",
"sendFieldUpdated"
]
},
"onError": {
"target": "Error"
}
}
},
"Error": {
"id": "SuggestionsError",
"entry": [
"conditionalLog",
"getSuggestionsError"
]
}
}
}
}
}
},
"on": {
"DATASET_UPDATED": {
"target": "#ExploreRoute.Interactive",
"actions": [
"selectDataset",
"setDataset",
"setURL"
]
},
"RESET_SOURCES": {
"target": "#ExploreRoute.Interactive",
"actions": [
"resetSources"
]
},
"SELECT_SOURCE": {
"target": "#ExploreRoute.Interactive",
"actions": [
"selectSource"
]
}
}
}
}
}, {
"actions": {
"updateCurrentURL": {
"type": "xstate.assign",
"assignment": () => {}
},
"sendCurrentUrlUpdated": {
"type": "xstate.send",
"event": {
"type": "CURRENT_URL_UPDATED"
},
"id": "CURRENT_URL_UPDATED"
},
"updateEntry": () => {},
"getError": {
"type": "xstate.assign",
"assignment": () => {}
},
"loadFromCache": {
"type": "xstate.assign",
"assignment": () => {}
},
"sendResultsUpdated": {
"type": "xstate.send",
"event": {
"type": "RESULTS_UPDATED"
},
"id": "RESULTS_UPDATED"
},
"setCacheKey": {
"type": "xstate.assign",
"assignment": () => {}
},
"updateCache": {
"type": "xstate.assign",
"assignment": () => {}
},
"updateCurrentResults": {
"type": "xstate.assign",
"assignment": () => {}
},
"conditionalLog": {
"type": "xstate.choose",
"conds": [
{
"cond": "logGuard",
"actions": [
{
"type": "xstate.log",
"label": "conditionalLog",
"expr": () => {}
}
]
}
]
},
"setDataset": {
"type": "xstate.assign",
"assignment": () => {}
},
"setURL": {
"type": "xstate.assign",
"assignment": () => {}
},
"resetSources": () => {},
"selectDataset": () => {},
"selectSource": () => {},
"selectFields": {
"type": "xstate.assign",
"assignment": () => {}
},
"selectNextField": {
"type": "xstate.assign",
"assignment": () => {}
},
"selectPreviousField": {
"type": "xstate.assign",
"assignment": () => {}
},
"sendQueryUpdated": {
"type": "xstate.send",
"event": {
"type": "QUERY_UPDATED"
},
"id": "QUERY_UPDATED"
},
"toggleField": {
"type": "xstate.assign",
"assignment": () => {}
},
"updateQuery": {
"type": "xstate.assign",
"assignment": () => {}
},
"loadStatsFromCache": {
"type": "xstate.assign",
"assignment": () => {}
},
"loadSuggestionsFromCache": {
"type": "xstate.assign",
"assignment": () => {}
},
"selectNextSearchField": {
"type": "xstate.assign",
"assignment": () => {}
},
"selectPrevSearchField": {
"type": "xstate.assign",
"assignment": () => {}
},
"sendFieldUpdated": {
"type": "xstate.send",
"event": {
"type": "FIELD_UPDATED"
},
"id": "FIELD_UPDATED"
},
"sendSearchQueryUpdated": {
"type": "xstate.send",
"event": {
"type": "SEARCH_QUERY_UPDATED"
},
"id": "SEARCH_QUERY_UPDATED"
},
"setAsWaiting": {
"type": "xstate.assign",
"assignment": () => {}
},
"setMenuActive": {
"type": "xstate.assign",
"assignment": () => {}
},
"setMenuInactive": {
"type": "xstate.assign",
"assignment": () => {}
},
"setStatsCacheKey": {
"type": "xstate.assign",
"assignment": () => {}
},
"setSuggestionsCacheKey": {
"type": "xstate.assign",
"assignment": () => {}
},
"updateCurrentField": {
"type": "xstate.assign",
"assignment": () => {}
},
"updateFieldStats": {
"type": "xstate.assign",
"assignment": () => {}
},
"updateSearchQuery": {
"type": "xstate.assign",
"assignment": () => {}
},
"updateStatsCache": {
"type": "xstate.assign",
"assignment": () => {}
},
"updateSuggestions": {
"type": "xstate.assign",
"assignment": () => {}
},
"updateSuggestionsCache": {
"type": "xstate.assign",
"assignment": () => {}
}
},
"guards": {
"isInCache": () => {},
"isMatching": () => {},
"logGuard": () => {},
"isInStatsCache": () => {},
"isInSuggestionsCache": () => {},
"isSuggestionsRequestIncomplete": () => {}
},
"services": {
"apiRequest": () => {},
"fieldsStatsRequest": () => {},
"suggestionsRequest": () => {}
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment