@rtdui/dialogs
Version:
React dialogs base on Rtdui components
1 lines • 8.14 kB
Source Map (JSON)
{"version":3,"file":"dialogs.store.mjs","sources":["../src/dialogs.store.ts"],"sourcesContent":["import { randomId, createStore, useStore, type RtdStore } from \"@rtdui/hooks\";\nimport type { DialogProps } from \"./Dialog\";\n\nexport interface DialogData extends Omit<DialogProps, \"children\"> {\n\tcontent: React.ReactNode;\n\tonOpen?: () => void;\n\tisDirty?: boolean;\n}\n\nexport interface DialogsState {\n\tdialogs: DialogData[];\n}\n\nexport type DialogsStore = RtdStore<DialogsState>;\n\nexport const createDialogsStore = () =>\n\tcreateStore<DialogsState>({\n\t\tdialogs: [],\n\t});\n\nexport const defaultDialogsStore = createDialogsStore();\n\nexport const useDialogs = (store: DialogsStore = defaultDialogsStore) =>\n\tuseStore(store);\n\nexport function updateDialogsState(\n\tstore: DialogsStore,\n\tupdate: (dialogs: DialogData[]) => DialogData[],\n) {\n\tconst state = store.getState();\n\tconst dialogs = update(state.dialogs);\n\n\tstore.setState({\n\t\tdialogs,\n\t});\n}\n\nexport function showDialog(\n\tdialog: DialogData,\n\tstore: DialogsStore = defaultDialogsStore,\n) {\n\tconst dialogId = dialog.dialogId || randomId();\n\n\tupdateDialogsState(store, (dialogs) => {\n\t\tif (\n\t\t\tdialog.dialogId &&\n\t\t\tdialogs.some((d) => d.dialogId === dialog.dialogId)\n\t\t) {\n\t\t\treturn dialogs;\n\t\t}\n\n\t\treturn [...dialogs, { ...dialog, dialogId }];\n\t});\n\n\treturn dialogId;\n}\n\nexport function hideDialog(\n\tdialogId: string,\n\tstore: DialogsStore = defaultDialogsStore,\n) {\n\tupdateDialogsState(store, (dialogs) =>\n\t\tdialogs.filter((d) => {\n\t\t\tif (d.dialogId === dialogId) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}),\n\t);\n\n\treturn dialogId;\n}\n\nexport function updateDialog(\n\tdialog: Partial<DialogData>,\n\tstore: DialogsStore = defaultDialogsStore,\n) {\n\tupdateDialogsState(store, (dialogs) =>\n\t\tdialogs.map((d) => {\n\t\t\tif (d.dialogId === dialog.dialogId) {\n\t\t\t\treturn { ...d, ...dialog };\n\t\t\t}\n\n\t\t\treturn d;\n\t\t}),\n\t);\n\n\treturn dialog.dialogId;\n}\n\nexport function cleanDialogs(store: DialogsStore = defaultDialogsStore) {\n\tupdateDialogsState(store, () => []);\n}\n\nexport const dialogs = {\n\tshow: showDialog,\n\thide: hideDialog,\n\tupdate: updateDialog,\n\tclean: cleanDialogs,\n\tupdateState: updateDialogsState,\n} as const;\n"],"names":[],"mappings":"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"}