How to use the @edtr-io/store.serializeDocument function in @edtr-io/store

To help you get started, we’ve selected a few @edtr-io/store examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github edtr-io / edtr-io / packages / plugins / multimedia-explanation / src / editor.tsx View on Github external
props.state.illustrating.set(e.target.value === 'illustrating')
    }
    const textFocused = useScopedSelector(
      hasFocusedDescendant(props.state.explanation.id)
    )

    const multimediaFocused = useScopedSelector(
      isFocused(props.state.multimedia.id)
    )

    const hasFocus = props.focused || multimediaFocused || textFocused

    const multimedia: {
      plugin: string
      state?: unknown
    } | null = useScopedSelector(serializeDocument(props.state.multimedia.id))
    const [
      replacedMultimediaCache,
      setReplacedMultimediaCache
    ] = React.useState>({})
    function handleMultimediaChange(selected: string) {
      setReplacedMultimediaCache(current => {
        if (!multimedia) return current

        return {
          ...current,
          [multimedia.plugin]: multimedia.state
        }
      })
      props.state.multimedia.replace(
        selected,
        replacedMultimediaCache[selected]