Skip to content

Commit d0b43d0

Browse files
committed
chore(formatters): unify exports
* formaters export as instantiatable constructors now
1 parent 4e6d566 commit d0b43d0

File tree

5 files changed

+68
-125
lines changed

5 files changed

+68
-125
lines changed

src/formatters/annotated.js

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import BaseFormatter from './base';
22

3-
class AnnotatedFormatter extends BaseFormatter {
3+
export default class AnnotatedFormatter extends BaseFormatter {
44
constructor() {
55
super();
66
this.includeMoveDestinations = false;
@@ -198,16 +198,3 @@ AnnotatedFormatter.prototype.format_deleted = formatAnyChange;
198198
AnnotatedFormatter.prototype.format_moved = formatAnyChange;
199199
AnnotatedFormatter.prototype.format_textdiff = formatAnyChange;
200200
/* eslint-enable camelcase */
201-
202-
/* jshint camelcase: true */
203-
204-
export default AnnotatedFormatter;
205-
206-
let defaultInstance;
207-
208-
export function format(delta, left) {
209-
if (!defaultInstance) {
210-
defaultInstance = new AnnotatedFormatter();
211-
}
212-
return defaultInstance.format(delta, left);
213-
}

src/formatters/console.js

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ let colors = {
2020
textDiffLine: chalkColor('gray'),
2121
};
2222

23-
class ConsoleFormatter extends BaseFormatter {
23+
export default class ConsoleFormatter extends BaseFormatter {
2424
constructor() {
2525
super();
2626
this.includeMoveDestinations = false;
@@ -177,22 +177,3 @@ class ConsoleFormatter extends BaseFormatter {
177177
this.formatTextDiffString(context, delta[0]);
178178
}
179179
}
180-
181-
/* eslint-enable camelcase */
182-
183-
/* jshint camelcase: true */
184-
185-
export default ConsoleFormatter;
186-
187-
let defaultInstance;
188-
189-
export const format = (delta, left) => {
190-
if (!defaultInstance) {
191-
defaultInstance = new ConsoleFormatter();
192-
}
193-
return defaultInstance.format(delta, left);
194-
};
195-
196-
export function log(delta, left) {
197-
console.log(format(delta, left));
198-
}

src/formatters/html.js

Lines changed: 59 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import BaseFormatter from './base';
22

3-
class HtmlFormatter extends BaseFormatter {
3+
export default class HtmlFormatter extends BaseFormatter {
44
typeFormattterErrorFormatter(context, err) {
55
context.out(`<pre class="jsondiffpatch-error">${err}</pre>`);
66
}
@@ -162,6 +162,64 @@ class HtmlFormatter extends BaseFormatter {
162162
this.formatTextDiffString(context, delta[0]);
163163
context.out('</div>');
164164
}
165+
166+
hideUnchanged(node, delay) {
167+
this.showUnchanged(false, node, delay);
168+
}
169+
170+
showUnchanged(show, node, delay) {
171+
let el = node || document.body;
172+
let prefix = 'jsondiffpatch-unchanged-';
173+
let classes = {
174+
showing: `${prefix}showing`,
175+
hiding: `${prefix}hiding`,
176+
visible: `${prefix}visible`,
177+
hidden: `${prefix}hidden`,
178+
};
179+
let list = el.classList;
180+
if (!list) {
181+
return;
182+
}
183+
if (!delay) {
184+
list.remove(classes.showing);
185+
list.remove(classes.hiding);
186+
list.remove(classes.visible);
187+
list.remove(classes.hidden);
188+
if (show === false) {
189+
list.add(classes.hidden);
190+
}
191+
return;
192+
}
193+
if (show === false) {
194+
list.remove(classes.showing);
195+
list.add(classes.visible);
196+
setTimeout(() => {
197+
list.add(classes.hiding);
198+
}, 10);
199+
} else {
200+
list.remove(classes.hiding);
201+
list.add(classes.showing);
202+
list.remove(classes.hidden);
203+
}
204+
let intervalId = setInterval(() => {
205+
adjustArrows(el);
206+
}, 100);
207+
setTimeout(() => {
208+
list.remove(classes.showing);
209+
list.remove(classes.hiding);
210+
if (show === false) {
211+
list.add(classes.hidden);
212+
list.remove(classes.visible);
213+
} else {
214+
list.add(classes.visible);
215+
list.remove(classes.hidden);
216+
}
217+
setTimeout(() => {
218+
list.remove(classes.visible);
219+
clearInterval(intervalId);
220+
}, delay + 400);
221+
}, delay);
222+
}
165223
}
166224

167225
function htmlEscape(text) {
@@ -231,70 +289,3 @@ let adjustArrows = function jsondiffpatchHtmlFormatterAdjustArrows(nodeArg) {
231289

232290
/* jshint camelcase: true */
233291
/* eslint-enable camelcase */
234-
235-
export const showUnchanged = (show, node, delay) => {
236-
let el = node || document.body;
237-
let prefix = 'jsondiffpatch-unchanged-';
238-
let classes = {
239-
showing: `${prefix}showing`,
240-
hiding: `${prefix}hiding`,
241-
visible: `${prefix}visible`,
242-
hidden: `${prefix}hidden`,
243-
};
244-
let list = el.classList;
245-
if (!list) {
246-
return;
247-
}
248-
if (!delay) {
249-
list.remove(classes.showing);
250-
list.remove(classes.hiding);
251-
list.remove(classes.visible);
252-
list.remove(classes.hidden);
253-
if (show === false) {
254-
list.add(classes.hidden);
255-
}
256-
return;
257-
}
258-
if (show === false) {
259-
list.remove(classes.showing);
260-
list.add(classes.visible);
261-
setTimeout(() => {
262-
list.add(classes.hiding);
263-
}, 10);
264-
} else {
265-
list.remove(classes.hiding);
266-
list.add(classes.showing);
267-
list.remove(classes.hidden);
268-
}
269-
let intervalId = setInterval(() => {
270-
adjustArrows(el);
271-
}, 100);
272-
setTimeout(() => {
273-
list.remove(classes.showing);
274-
list.remove(classes.hiding);
275-
if (show === false) {
276-
list.add(classes.hidden);
277-
list.remove(classes.visible);
278-
} else {
279-
list.add(classes.visible);
280-
list.remove(classes.hidden);
281-
}
282-
setTimeout(() => {
283-
list.remove(classes.visible);
284-
clearInterval(intervalId);
285-
}, delay + 400);
286-
}, delay);
287-
};
288-
289-
export const hideUnchanged = (node, delay) => showUnchanged(false, node, delay);
290-
291-
export default HtmlFormatter;
292-
293-
let defaultInstance;
294-
295-
export function format(delta, left) {
296-
if (!defaultInstance) {
297-
defaultInstance = new HtmlFormatter();
298-
}
299-
return defaultInstance.format(delta, left);
300-
}

src/formatters/index.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
2-
export * as base from './base';
3-
export * as html from './html';
4-
export * as annotated from './annotated';
5-
export * as jsonpatch from './jsonpatch';
6-
export * as console from './console';
1+
export { default as BaseFormatter } from './base';
2+
export { default as HtmlFormatter } from './html';
3+
export { default as AnnotatedFormatter } from './annotated';
4+
export { default as JsonPatchFormatter } from './jsonpatch';
5+
export { default as ConsoleFormatter } from './console';

src/formatters/jsonpatch.js

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const OPERATIONS = {
77
move: 'move',
88
};
99

10-
class JSONFormatter extends BaseFormatter {
10+
export default class JSONPatchFormatter extends BaseFormatter {
1111
constructor() {
1212
super();
1313
this.includeMoveDestinations = true;
@@ -91,15 +91,13 @@ class JSONFormatter extends BaseFormatter {
9191
let context = {};
9292
this.prepareContext(context);
9393
this.recurse(context, delta, left);
94-
return context.result;
94+
return reorderOps(context.result);
9595
}
9696
}
9797

9898
/* jshint camelcase: true */
9999
/* eslint-enable camelcase */
100100

101-
export default JSONFormatter;
102-
103101
const last = arr => arr[arr.length - 1];
104102

105103
const sortBy = (arr, pred) => {
@@ -153,16 +151,3 @@ const reorderOps = jsonFormattedDiff => {
153151
const removeOpsReverse = opsByDescendingOrder(removeOps);
154152
return removeOpsReverse.concat(otherOps);
155153
};
156-
157-
let defaultInstance;
158-
159-
export const format = (delta, left) => {
160-
if (!defaultInstance) {
161-
defaultInstance = new JSONFormatter();
162-
}
163-
return reorderOps(defaultInstance.format(delta, left));
164-
};
165-
166-
export const log = (delta, left) => {
167-
console.log(format(delta, left));
168-
};

0 commit comments

Comments
 (0)