0.3.12 • Published 2 years ago

@ridi/react-viewer v0.3.12

Weekly downloads
47
License
MIT
Repository
github
Last release
2 years ago

@ridi/react-viewer

Build Status npm version Greenkeeper badge

Demo

https://ridi.github.io/react-viewer/demo/

Installation

npm install @ridi/react-viewer

How to Use

Initialize

Add @ridi/react-viewer reducer into your reducers.

import { reducers as viewerScreen } from '@ridi/react-viewer';
import { combineReducers } from 'redux';

const appReducer = combineReducers({
    ...
    viewerScreen,
    ...
});

Connect ViewerHelper, PageCalculator, ReadPositionHelper with redux store.

import { createStore } from 'redux';
import { ViewerHelper, PageCalculator, ReadPositionHelper } from '@ridi/react-viewer';

const store = createStore( ... );
ViewerHelper.connect(store, { ...options });
PageCalculator.connect(store, { ...options });
ReadPositionHelper.connect(store);

ViewerHelper's options = defaults:

  • paddingVertical = DEFAULT_PADDING_VERTICAL(35),
  • pageMaxWidth = PAGE_MAX_WIDTH(700),
  • pageViewerSelector = PAGE_VIEWER_SELECTOR(#viewer_contents .pages),
  • extendedTouchWidth = EXTENDED_TOUCH_WIDTH(100),

PageCalculator's options = defaults:

  • containExtraPage = 1

ViewerScreen Component

ViewerScreen component provides all functionality of viewer and renders viewer body.

Put ViewerScreen component into your component.

import React from 'react';
import ViewerScreen from '@ridi/react-viewer';

export default ViewerPage extends React.Component {
    render() {
        return <ViewerScreen />;
    }
};

ViewerScreen's properties:

  • onMount(func): called after viewer is mounted
  • onUnmount(func): called after viewer is unmounted
  • onMoveWrongDirection(func): called when user try to tap wrong direction to the next page (on page viewerType)
  • footer(node): markup for the footer area
  • fontDomain(string): prefixed URL for searching font files
  • ignoreScroll(bool): temporarily disable scrolling (on scroll viewerType)
  • disablePageCalculation(bool): temporarily disable page calculation (on page viewerType)

You can extend or replace child components of ViewerScreen with the HoC-style function createStyledViewerScreen().

// Signature
createStyledViewerScreen = ({
  TouchableScrollScreen = ScrollScreen,
  StyledScrollContents = ScrollContents,
  TouchablePageScreen = PageScreen,
  StyledPageContents = PageContents,
  SizingWrapper = SizingWrapper,
} = {}) => ViewerScreen

This is an example.

import {
    createStyledViewerScreen,
    SizingWrapper,
    ScrollContents,
    PageContents,
    ScrollScreen,
    PageScreen,
} from '@ridi/react-viewer';

const TouchableScrollScreen = ScrollScreen.extend`...`;
const TouchablePageScreen = PageScreen.extend`...`;
...

createStyledViewerScreen({
    TouchablePageScreen,
    TouchableScrollScreen,
    ...,
})

Render Contents

  1. Update meta data with updateMetaData
  2. Render contents with renderSpine or renderImages

updateMetaData

Dispatch updateMetaData action to update content's metadata.

import {
  updateMetaData,
  ContentType,
  AvailableViewerType,
  BindingType,
} from '@ridi/react-viewer';

const contentType = ContentType.COMIC;
const viewerType = AvailableViewerType.BOTH;
const bindingType = BindingType.LEFT;

dispatch(updateMetaData(contentType, viewerType, bindingType));
  • viewerType: available viewer type (BOTH: 0, SCROLL: 1, PAGE: 2)
  • contentType: content type (WEB_NOVEL: 10, COMIC: 20, WEBTOON: 30)
  • bindingType: binding type (LEFT: 0, RIGHT: 1)

renderSpine

And then dispatch renderSpine action to render html into the viewer after loading contents data.

import { renderSpine } from '@ridi/react-viewer';

...
const index = 0;
const html = '<h1>hello, world</h1>';
dispatch(renderSpine(index, html));

renderImages

If you have image contents to render lazily, dispatch renderImages instead of renderSpine.

import { renderImages } from '@ridi/react-viewer';

...
const images = [{ src: '/image_1.jpg' }, { src: '/image_2.jpg' }, ...];
dispatch(renderImages(images));

How to Run Demo

$ npm install
$ npm run install:demo
$ npm run watch

Browse http://localhost:8000.

0.3.12

2 years ago

0.3.11

4 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0-alpha.36

5 years ago

1.0.0-alpha.35

5 years ago

1.0.0-alpha.34

5 years ago

1.0.0-alpha.33

5 years ago

1.0.0-alpha.32

5 years ago

1.0.0-alpha.31

5 years ago

1.0.0-alpha.30

5 years ago

1.0.0-alpha.29

5 years ago

1.0.0-alpha.28

5 years ago

1.0.0-alpha.27

5 years ago

1.0.0-alpha.26

5 years ago

1.0.0-alpha.25

5 years ago

1.0.0-alpha.24

5 years ago

1.0.0-alpha.23

5 years ago

1.0.0-alpha.22

5 years ago

1.0.0-alpha.21

5 years ago

1.0.0-alpha.20

5 years ago

1.0.0-alpha.19

5 years ago

1.0.0-alpha.18

5 years ago

1.0.0-alpha.17

5 years ago

1.0.0-alpha.16

5 years ago

1.0.0-alpha.15

5 years ago

1.0.0-alpha.14

5 years ago

1.0.0-alpha.13

5 years ago

0.3.10

5 years ago

1.0.0-alpha.12

5 years ago

1.0.0-alpha.11

6 years ago

1.0.0-alpha.10

6 years ago

1.0.0-alpha.9

6 years ago

1.0.0-alpha.8

6 years ago

1.0.0-alpha.7

6 years ago

0.3.9

6 years ago

1.0.0-alpha.6

6 years ago

1.0.0-alpha.5

6 years ago

1.0.0-alpha.4

6 years ago

1.0.0-alpha.3

6 years ago

1.0.0-alpha.2

6 years ago

1.0.0-alpha.1

6 years ago

1.0.0-alpha.0

6 years ago

1.0.0

6 years ago

0.3.9-alpha.1

6 years ago

0.3.9-alpha.0

6 years ago

0.3.8

6 years ago