MCPcopy Create free account
hub / github.com/editablejs/editable / createViewer

Function createViewer

packages/plugins/image/src/create-viewer.tsx:37–86  ·  view source on GitHub ↗
(editor: Editable)

Source from the content-addressed store, hash-verified

35export const VIEWER_CACHE_WEAKMAP = new WeakMap<Editor, ReturnType<typeof createViewer>>()
36
37const createViewer = (editor: Editable) => {
38 const viewer = {
39 images: (force = false) => findImages(editor, force),
40
41 count: () => {
42 return viewer.images().length
43 },
44
45 open: (image: Image) => {
46 const store = getViewerStore(editor)
47 const images = viewer.images(true)
48 const key = Editable.findKey(editor, image).id
49 return store.setState({
50 visible: true,
51 index: images.findIndex(image => image.key === key),
52 })
53 },
54
55 close: () => {
56 const store = getViewerStore(editor)
57 store.setState({
58 visible: false,
59 index: -1,
60 })
61 },
62
63 prev: () => {
64 const store = getViewerStore(editor)
65 const count = viewer.count()
66 const index = store.getState().index
67 let val = index - 1
68 if (val < 0) val = count - 1
69 store.setState({
70 index: val,
71 })
72 },
73
74 next: () => {
75 const store = getViewerStore(editor)
76 const count = viewer.count()
77 const index = store.getState().index
78 let val = index + 1
79 if (val === count) val = 0
80 store.setState({
81 index: val,
82 })
83 },
84 }
85 return viewer
86}
87
88export const getViewer = (editor: Editable) => {
89 let viewer = VIEWER_CACHE_WEAKMAP.get(editor)

Callers 1

getViewerFunction · 0.85

Calls 2

getViewerStoreFunction · 0.90
findImagesFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…