pdf-to-markdown/src/javascript/models/AppState.jsx

85 lines
2.9 KiB
React
Raw Normal View History

2017-01-06 20:49:37 +01:00
import { Enum } from 'enumify';
2017-02-15 07:33:07 +01:00
import CalculateGlobalStats from './transformations/CalculateGlobalStats.jsx';
import CompactLines from './transformations/CompactLines.jsx';
import RemoveRepetitiveElements from './transformations/RemoveRepetitiveElements.jsx'
import VerticalToHorizontal from './transformations/VerticalToHorizontal.jsx';
import DetectTOC from './transformations/DetectTOC.jsx'
2017-03-11 13:42:09 +01:00
import DetectListItems from './transformations/DetectListItems.jsx'
import GatherBlocks from './transformations/GatherBlocks.jsx'
2017-03-14 10:30:21 +01:00
import DetectCodeQuoteBlocks from './transformations/DetectCodeQuoteBlocks.jsx'
2017-03-11 13:42:09 +01:00
import DetectListLevels from './transformations/DetectListLevels.jsx'
2017-03-07 18:42:14 +01:00
import DetectHeadlines from './transformations/DetectHeadlines.jsx'
2017-02-22 23:18:49 +01:00
// import DetectFormats from './transformations/DetectFormats.jsx'
// import RemoveWhitespaces from './transformations/RemoveWhitespaces.jsx'
// import DetectLinks from './transformations/DetectLinks.jsx'
// import HeadlineDetector from './transformations/HeadlineDetector.jsx'
// import HeadlineToUppercase from './transformations/HeadlineToUppercase.jsx'
import ToTextBlocks from './transformations/ToTextBlocks.jsx';
2017-02-06 19:13:43 +01:00
import ToMarkdown from './transformations/ToMarkdown.jsx'
2017-01-07 11:38:06 +01:00
2017-01-06 20:49:37 +01:00
// Holds the state of the Application
export default class AppState {
constructor(options) {
this.renderFunction = options.renderFunction;
this.mainView = View.UPLOAD;
2017-01-09 20:08:32 +01:00
this.fileBuffer;
2017-03-07 21:59:15 +01:00
this.pages = [];
this.transformations = [
2017-02-15 07:33:07 +01:00
new CalculateGlobalStats(),
new CompactLines(),
new RemoveRepetitiveElements(),
new VerticalToHorizontal(),
new DetectTOC(),
2017-03-11 13:42:09 +01:00
new DetectListItems(),
new GatherBlocks(),
2017-03-14 10:30:21 +01:00
new DetectCodeQuoteBlocks(),
2017-03-11 13:42:09 +01:00
new DetectListLevels(),
2017-03-07 18:42:14 +01:00
new DetectHeadlines(),
// new DetectFormats(),
// new RemoveWhitespaces(),
// new DetectLinks(),
// new HeadlineDetector(),
// new HeadlineToUppercase(),
new ToTextBlocks(),
2017-02-06 19:13:43 +01:00
new ToMarkdown()];
2017-01-06 20:49:37 +01:00
//bind functions
this.render = this.render.bind(this);
2017-01-09 20:08:32 +01:00
this.storeFileBuffer = this.storeFileBuffer.bind(this);
this.storePdfPages = this.storePdfPages.bind(this);
2017-02-06 19:13:43 +01:00
this.switchMainView = this.switchMainView.bind(this);
2017-01-06 20:49:37 +01:00
}
render() {
this.renderFunction(this)
}
2017-01-09 20:08:32 +01:00
// the uploaded pdf as file buffer
storeFileBuffer(fileBuffer:ArrayBuffer) {
this.fileBuffer = fileBuffer;
2017-01-06 20:49:37 +01:00
this.mainView = View.LOADING;
this.render()
}
2017-03-07 21:59:15 +01:00
storePdfPages(pages) {
this.pages = pages;
2017-01-09 20:08:32 +01:00
this.fileBuffer = null;
2017-02-06 19:13:43 +01:00
this.mainView = View.RESULT;
this.render();
}
switchMainView(view) {
this.mainView = view;
2017-01-09 20:08:32 +01:00
this.render();
2017-01-06 20:49:37 +01:00
}
}
export class View extends Enum {
}
2017-02-06 19:13:43 +01:00
View.initEnum(['UPLOAD', 'LOADING', 'RESULT', 'DEBUG'])