• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

naver / egjs-flicking / 10557177632

26 Aug 2024 09:22AM UTC coverage: 38.327% (-44.5%) from 82.855%
10557177632

Pull #886

github

daybrush
fix: recalculate camera offset
Pull Request #886: fix: recalculate camera offset

2039 of 7372 branches covered (27.66%)

Branch coverage included in aggregate %.

11 of 29 new or added lines in 2 files covered. (37.93%)

5575 existing lines in 46 files now uncovered.

5099 of 11252 relevant lines covered (45.32%)

10.91 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

85.95
/src/renderer/strategy/NormalRenderingStrategy.ts
1
/*
1✔
2
 * Copyright (c) 2015 NAVER Corp.
1✔
3
 * egjs projects are licensed under the MIT license
×
4
 */
5
import Flicking from "../../Flicking";
6
import Panel, { PanelOptions } from "../../core/panel/Panel";
5!
7
import ElementProvider from "../../core/panel/provider/ElementProvider";
8
import { DIRECTION } from "../../const/external";
5✔
9
import { parsePanelAlign } from "../../utils";
5✔
10

11
import RenderingStrategy from "./RenderingStrategy";
12

13
export interface NormalRenderingStrategyOptions {
1✔
14
  providerCtor: new (...args: any) => ElementProvider;
9!
15
}
3!
16

×
17

18
class NormalRenderingStrategy implements RenderingStrategy {
5✔
19
  private _providerCtor: NormalRenderingStrategyOptions["providerCtor"];
20

9✔
21
  public constructor({ providerCtor }: NormalRenderingStrategyOptions) {
14✔
22
    this._providerCtor = providerCtor;
15✔
23
  }
1!
24

25
  public renderPanels() {
6✔
26
    // DO_NOTHING
1✔
27
  }
1✔
28

1✔
29
  public getRenderingIndexesByOrder(flicking: Flicking) {
6✔
30
    const renderedPanels = flicking.renderer.panels.filter(panel => panel.rendered);
129✔
31
    const toggledPrev = renderedPanels.filter(panel => panel.toggled && panel.toggleDirection === DIRECTION.PREV);
126!
32
    const toggledNext = renderedPanels.filter(panel => panel.toggled && panel.toggleDirection === DIRECTION.NEXT);
126!
33
    const notToggled = renderedPanels.filter(panel => !panel.toggled);
125✔
34

1✔
35
    return [...toggledPrev, ...notToggled, ...toggledNext].map(panel => panel.index);
125✔
36
  }
37

1✔
38
  public getRenderingElementsByOrder(flicking: Flicking) {
20✔
39
    const panels = flicking.panels;
38!
40

3!
41
    return this.getRenderingIndexesByOrder(flicking).map(index => panels[index].element);
128✔
42
  }
3✔
43

44
  public updateRenderingPanels(flicking: Flicking) {
6✔
45
    if (flicking.renderOnlyVisible) {
38✔
46
      this._showOnlyVisiblePanels(flicking);
5✔
47
    } else {
48
      flicking.panels.forEach(panel => panel.markForShow());
124✔
49
    }
3!
50
  }
3✔
51

52
  public collectPanels(
14✔
53
    flicking: Flicking,
54
    elements: any[]
55
  ) {
56
    const align = parsePanelAlign(flicking.renderer.align);
15✔
57

1✔
58
    return elements.map((el, index) => new Panel({
55✔
59
      index,
5✔
60
      elementProvider: new this._providerCtor(el),
61
      align,
62
      flicking
63
    }));
64
  }
65

66
  public createPanel(
6✔
67
    element: any,
68
    options: Omit<PanelOptions, "elementProvider">
69
  ) {
1✔
UNCOV
70
    return new Panel({
×
71
      ...options,
72
      elementProvider: new this._providerCtor(element)
1✔
73
    });
3✔
74
  }
3✔
75

3✔
76
  public updatePanelSizes(flicking: Flicking, size: Partial<{
8✔
77
    width: number | string;
3✔
78
    height: number | string;
79
  }>) {
3✔
80
    flicking.panels.forEach(panel => panel.setSize(size));
15✔
81
  }
3✔
82

83
  private _showOnlyVisiblePanels(flicking: Flicking) {
17!
84
    const panels = flicking.renderer.panels;
2✔
85
    const camera = flicking.camera;
2✔
86

12✔
87
    const visibleIndexes = camera.visiblePanels.reduce((visibles, panel) => {
2✔
88
      visibles[panel.index] = true;
2✔
89
      return visibles;
5✔
90
    }, {});
91

1✔
92
    panels.forEach(panel => {
2✔
93
      if (panel.index in visibleIndexes || panel.loading) {
7✔
94
        panel.markForShow();
2✔
95
      } else if (!flicking.holding) {
4✔
96
        // During the input sequence,
97
        // Do not remove panel elements as it won't trigger touchend event.
98
        panel.markForHide();
4✔
99
      }
100
    });
101

102
    camera.updateOffset();
2✔
103
  }
104
}
5✔
105

106
export default NormalRenderingStrategy;
5✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc