@dintero/checkout-web-sdk 0.5.9 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +4 -2
  2. package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/checkout.ts.html +92 -5
  3. package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/createIframeAsync.ts.html +15 -15
  4. package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/index.html +88 -43
  5. package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/index.ts.html +1085 -95
  6. package/coverage/Chrome Headless 117.0.5938.92 (Linux x86_64)/html/popOut.ts.html +377 -0
  7. package/coverage/Chrome Headless 117.0.5938.92 (Linux x86_64)/html/popOutBackdrop.ts.html +1046 -0
  8. package/coverage/Chrome Headless 117.0.5938.92 (Linux x86_64)/html/popOutButton.ts.html +374 -0
  9. package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/subscribe.ts.html +218 -29
  10. package/coverage/Chrome Headless 117.0.5938.92 (Linux x86_64)/html/url.ts.html +284 -0
  11. package/dist/declarations/src/checkout.d.ts +45 -17
  12. package/dist/declarations/src/index.d.ts +17 -1
  13. package/dist/declarations/src/session.d.ts +19 -35
  14. package/dist/declarations/src/subscribe.d.ts +62 -0
  15. package/dist/dintero-checkout-web-sdk.cjs.dev.js +927 -63
  16. package/dist/dintero-checkout-web-sdk.cjs.prod.js +927 -63
  17. package/dist/dintero-checkout-web-sdk.esm.js +927 -63
  18. package/dist/dintero-checkout-web-sdk.umd.min.js +1 -1
  19. package/dist/dintero-checkout-web-sdk.umd.min.js.map +1 -1
  20. package/package.json +5 -5
  21. package/coverage/Chrome Headless 115.0.5790.98 (Linux x86_64)/html/url.ts.html +0 -185
  22. /package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/base.css +0 -0
  23. /package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/block-navigation.js +0 -0
  24. /package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/favicon.png +0 -0
  25. /package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/prettify.css +0 -0
  26. /package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/prettify.js +0 -0
  27. /package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/sort-arrow-sprite.png +0 -0
  28. /package/coverage/{Chrome Headless 115.0.5790.98 (Linux x86_64) → Chrome Headless 117.0.5938.92 (Linux x86_64)}/html/sorter.js +0 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">95.65% </span>
26
+ <span class="strong">81.96% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>88/92</span>
28
+ <span class='fraction'>159/194</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">82.5% </span>
33
+ <span class="strong">65.82% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>33/40</span>
35
+ <span class='fraction'>52/79</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">93.1% </span>
40
+ <span class="strong">82.35% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>27/29</span>
42
+ <span class='fraction'>42/51</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">95.06% </span>
47
+ <span class="strong">80.34% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>77/81</span>
49
+ <span class='fraction'>143/178</span>
50
50
  </div>
51
51
 
52
52
 
@@ -489,7 +489,337 @@
489
489
  <a name='L430'></a><a href='#L430'>430</a>
490
490
  <a name='L431'></a><a href='#L431'>431</a>
491
491
  <a name='L432'></a><a href='#L432'>432</a>
492
- <a name='L433'></a><a href='#L433'>433</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
492
+ <a name='L433'></a><a href='#L433'>433</a>
493
+ <a name='L434'></a><a href='#L434'>434</a>
494
+ <a name='L435'></a><a href='#L435'>435</a>
495
+ <a name='L436'></a><a href='#L436'>436</a>
496
+ <a name='L437'></a><a href='#L437'>437</a>
497
+ <a name='L438'></a><a href='#L438'>438</a>
498
+ <a name='L439'></a><a href='#L439'>439</a>
499
+ <a name='L440'></a><a href='#L440'>440</a>
500
+ <a name='L441'></a><a href='#L441'>441</a>
501
+ <a name='L442'></a><a href='#L442'>442</a>
502
+ <a name='L443'></a><a href='#L443'>443</a>
503
+ <a name='L444'></a><a href='#L444'>444</a>
504
+ <a name='L445'></a><a href='#L445'>445</a>
505
+ <a name='L446'></a><a href='#L446'>446</a>
506
+ <a name='L447'></a><a href='#L447'>447</a>
507
+ <a name='L448'></a><a href='#L448'>448</a>
508
+ <a name='L449'></a><a href='#L449'>449</a>
509
+ <a name='L450'></a><a href='#L450'>450</a>
510
+ <a name='L451'></a><a href='#L451'>451</a>
511
+ <a name='L452'></a><a href='#L452'>452</a>
512
+ <a name='L453'></a><a href='#L453'>453</a>
513
+ <a name='L454'></a><a href='#L454'>454</a>
514
+ <a name='L455'></a><a href='#L455'>455</a>
515
+ <a name='L456'></a><a href='#L456'>456</a>
516
+ <a name='L457'></a><a href='#L457'>457</a>
517
+ <a name='L458'></a><a href='#L458'>458</a>
518
+ <a name='L459'></a><a href='#L459'>459</a>
519
+ <a name='L460'></a><a href='#L460'>460</a>
520
+ <a name='L461'></a><a href='#L461'>461</a>
521
+ <a name='L462'></a><a href='#L462'>462</a>
522
+ <a name='L463'></a><a href='#L463'>463</a>
523
+ <a name='L464'></a><a href='#L464'>464</a>
524
+ <a name='L465'></a><a href='#L465'>465</a>
525
+ <a name='L466'></a><a href='#L466'>466</a>
526
+ <a name='L467'></a><a href='#L467'>467</a>
527
+ <a name='L468'></a><a href='#L468'>468</a>
528
+ <a name='L469'></a><a href='#L469'>469</a>
529
+ <a name='L470'></a><a href='#L470'>470</a>
530
+ <a name='L471'></a><a href='#L471'>471</a>
531
+ <a name='L472'></a><a href='#L472'>472</a>
532
+ <a name='L473'></a><a href='#L473'>473</a>
533
+ <a name='L474'></a><a href='#L474'>474</a>
534
+ <a name='L475'></a><a href='#L475'>475</a>
535
+ <a name='L476'></a><a href='#L476'>476</a>
536
+ <a name='L477'></a><a href='#L477'>477</a>
537
+ <a name='L478'></a><a href='#L478'>478</a>
538
+ <a name='L479'></a><a href='#L479'>479</a>
539
+ <a name='L480'></a><a href='#L480'>480</a>
540
+ <a name='L481'></a><a href='#L481'>481</a>
541
+ <a name='L482'></a><a href='#L482'>482</a>
542
+ <a name='L483'></a><a href='#L483'>483</a>
543
+ <a name='L484'></a><a href='#L484'>484</a>
544
+ <a name='L485'></a><a href='#L485'>485</a>
545
+ <a name='L486'></a><a href='#L486'>486</a>
546
+ <a name='L487'></a><a href='#L487'>487</a>
547
+ <a name='L488'></a><a href='#L488'>488</a>
548
+ <a name='L489'></a><a href='#L489'>489</a>
549
+ <a name='L490'></a><a href='#L490'>490</a>
550
+ <a name='L491'></a><a href='#L491'>491</a>
551
+ <a name='L492'></a><a href='#L492'>492</a>
552
+ <a name='L493'></a><a href='#L493'>493</a>
553
+ <a name='L494'></a><a href='#L494'>494</a>
554
+ <a name='L495'></a><a href='#L495'>495</a>
555
+ <a name='L496'></a><a href='#L496'>496</a>
556
+ <a name='L497'></a><a href='#L497'>497</a>
557
+ <a name='L498'></a><a href='#L498'>498</a>
558
+ <a name='L499'></a><a href='#L499'>499</a>
559
+ <a name='L500'></a><a href='#L500'>500</a>
560
+ <a name='L501'></a><a href='#L501'>501</a>
561
+ <a name='L502'></a><a href='#L502'>502</a>
562
+ <a name='L503'></a><a href='#L503'>503</a>
563
+ <a name='L504'></a><a href='#L504'>504</a>
564
+ <a name='L505'></a><a href='#L505'>505</a>
565
+ <a name='L506'></a><a href='#L506'>506</a>
566
+ <a name='L507'></a><a href='#L507'>507</a>
567
+ <a name='L508'></a><a href='#L508'>508</a>
568
+ <a name='L509'></a><a href='#L509'>509</a>
569
+ <a name='L510'></a><a href='#L510'>510</a>
570
+ <a name='L511'></a><a href='#L511'>511</a>
571
+ <a name='L512'></a><a href='#L512'>512</a>
572
+ <a name='L513'></a><a href='#L513'>513</a>
573
+ <a name='L514'></a><a href='#L514'>514</a>
574
+ <a name='L515'></a><a href='#L515'>515</a>
575
+ <a name='L516'></a><a href='#L516'>516</a>
576
+ <a name='L517'></a><a href='#L517'>517</a>
577
+ <a name='L518'></a><a href='#L518'>518</a>
578
+ <a name='L519'></a><a href='#L519'>519</a>
579
+ <a name='L520'></a><a href='#L520'>520</a>
580
+ <a name='L521'></a><a href='#L521'>521</a>
581
+ <a name='L522'></a><a href='#L522'>522</a>
582
+ <a name='L523'></a><a href='#L523'>523</a>
583
+ <a name='L524'></a><a href='#L524'>524</a>
584
+ <a name='L525'></a><a href='#L525'>525</a>
585
+ <a name='L526'></a><a href='#L526'>526</a>
586
+ <a name='L527'></a><a href='#L527'>527</a>
587
+ <a name='L528'></a><a href='#L528'>528</a>
588
+ <a name='L529'></a><a href='#L529'>529</a>
589
+ <a name='L530'></a><a href='#L530'>530</a>
590
+ <a name='L531'></a><a href='#L531'>531</a>
591
+ <a name='L532'></a><a href='#L532'>532</a>
592
+ <a name='L533'></a><a href='#L533'>533</a>
593
+ <a name='L534'></a><a href='#L534'>534</a>
594
+ <a name='L535'></a><a href='#L535'>535</a>
595
+ <a name='L536'></a><a href='#L536'>536</a>
596
+ <a name='L537'></a><a href='#L537'>537</a>
597
+ <a name='L538'></a><a href='#L538'>538</a>
598
+ <a name='L539'></a><a href='#L539'>539</a>
599
+ <a name='L540'></a><a href='#L540'>540</a>
600
+ <a name='L541'></a><a href='#L541'>541</a>
601
+ <a name='L542'></a><a href='#L542'>542</a>
602
+ <a name='L543'></a><a href='#L543'>543</a>
603
+ <a name='L544'></a><a href='#L544'>544</a>
604
+ <a name='L545'></a><a href='#L545'>545</a>
605
+ <a name='L546'></a><a href='#L546'>546</a>
606
+ <a name='L547'></a><a href='#L547'>547</a>
607
+ <a name='L548'></a><a href='#L548'>548</a>
608
+ <a name='L549'></a><a href='#L549'>549</a>
609
+ <a name='L550'></a><a href='#L550'>550</a>
610
+ <a name='L551'></a><a href='#L551'>551</a>
611
+ <a name='L552'></a><a href='#L552'>552</a>
612
+ <a name='L553'></a><a href='#L553'>553</a>
613
+ <a name='L554'></a><a href='#L554'>554</a>
614
+ <a name='L555'></a><a href='#L555'>555</a>
615
+ <a name='L556'></a><a href='#L556'>556</a>
616
+ <a name='L557'></a><a href='#L557'>557</a>
617
+ <a name='L558'></a><a href='#L558'>558</a>
618
+ <a name='L559'></a><a href='#L559'>559</a>
619
+ <a name='L560'></a><a href='#L560'>560</a>
620
+ <a name='L561'></a><a href='#L561'>561</a>
621
+ <a name='L562'></a><a href='#L562'>562</a>
622
+ <a name='L563'></a><a href='#L563'>563</a>
623
+ <a name='L564'></a><a href='#L564'>564</a>
624
+ <a name='L565'></a><a href='#L565'>565</a>
625
+ <a name='L566'></a><a href='#L566'>566</a>
626
+ <a name='L567'></a><a href='#L567'>567</a>
627
+ <a name='L568'></a><a href='#L568'>568</a>
628
+ <a name='L569'></a><a href='#L569'>569</a>
629
+ <a name='L570'></a><a href='#L570'>570</a>
630
+ <a name='L571'></a><a href='#L571'>571</a>
631
+ <a name='L572'></a><a href='#L572'>572</a>
632
+ <a name='L573'></a><a href='#L573'>573</a>
633
+ <a name='L574'></a><a href='#L574'>574</a>
634
+ <a name='L575'></a><a href='#L575'>575</a>
635
+ <a name='L576'></a><a href='#L576'>576</a>
636
+ <a name='L577'></a><a href='#L577'>577</a>
637
+ <a name='L578'></a><a href='#L578'>578</a>
638
+ <a name='L579'></a><a href='#L579'>579</a>
639
+ <a name='L580'></a><a href='#L580'>580</a>
640
+ <a name='L581'></a><a href='#L581'>581</a>
641
+ <a name='L582'></a><a href='#L582'>582</a>
642
+ <a name='L583'></a><a href='#L583'>583</a>
643
+ <a name='L584'></a><a href='#L584'>584</a>
644
+ <a name='L585'></a><a href='#L585'>585</a>
645
+ <a name='L586'></a><a href='#L586'>586</a>
646
+ <a name='L587'></a><a href='#L587'>587</a>
647
+ <a name='L588'></a><a href='#L588'>588</a>
648
+ <a name='L589'></a><a href='#L589'>589</a>
649
+ <a name='L590'></a><a href='#L590'>590</a>
650
+ <a name='L591'></a><a href='#L591'>591</a>
651
+ <a name='L592'></a><a href='#L592'>592</a>
652
+ <a name='L593'></a><a href='#L593'>593</a>
653
+ <a name='L594'></a><a href='#L594'>594</a>
654
+ <a name='L595'></a><a href='#L595'>595</a>
655
+ <a name='L596'></a><a href='#L596'>596</a>
656
+ <a name='L597'></a><a href='#L597'>597</a>
657
+ <a name='L598'></a><a href='#L598'>598</a>
658
+ <a name='L599'></a><a href='#L599'>599</a>
659
+ <a name='L600'></a><a href='#L600'>600</a>
660
+ <a name='L601'></a><a href='#L601'>601</a>
661
+ <a name='L602'></a><a href='#L602'>602</a>
662
+ <a name='L603'></a><a href='#L603'>603</a>
663
+ <a name='L604'></a><a href='#L604'>604</a>
664
+ <a name='L605'></a><a href='#L605'>605</a>
665
+ <a name='L606'></a><a href='#L606'>606</a>
666
+ <a name='L607'></a><a href='#L607'>607</a>
667
+ <a name='L608'></a><a href='#L608'>608</a>
668
+ <a name='L609'></a><a href='#L609'>609</a>
669
+ <a name='L610'></a><a href='#L610'>610</a>
670
+ <a name='L611'></a><a href='#L611'>611</a>
671
+ <a name='L612'></a><a href='#L612'>612</a>
672
+ <a name='L613'></a><a href='#L613'>613</a>
673
+ <a name='L614'></a><a href='#L614'>614</a>
674
+ <a name='L615'></a><a href='#L615'>615</a>
675
+ <a name='L616'></a><a href='#L616'>616</a>
676
+ <a name='L617'></a><a href='#L617'>617</a>
677
+ <a name='L618'></a><a href='#L618'>618</a>
678
+ <a name='L619'></a><a href='#L619'>619</a>
679
+ <a name='L620'></a><a href='#L620'>620</a>
680
+ <a name='L621'></a><a href='#L621'>621</a>
681
+ <a name='L622'></a><a href='#L622'>622</a>
682
+ <a name='L623'></a><a href='#L623'>623</a>
683
+ <a name='L624'></a><a href='#L624'>624</a>
684
+ <a name='L625'></a><a href='#L625'>625</a>
685
+ <a name='L626'></a><a href='#L626'>626</a>
686
+ <a name='L627'></a><a href='#L627'>627</a>
687
+ <a name='L628'></a><a href='#L628'>628</a>
688
+ <a name='L629'></a><a href='#L629'>629</a>
689
+ <a name='L630'></a><a href='#L630'>630</a>
690
+ <a name='L631'></a><a href='#L631'>631</a>
691
+ <a name='L632'></a><a href='#L632'>632</a>
692
+ <a name='L633'></a><a href='#L633'>633</a>
693
+ <a name='L634'></a><a href='#L634'>634</a>
694
+ <a name='L635'></a><a href='#L635'>635</a>
695
+ <a name='L636'></a><a href='#L636'>636</a>
696
+ <a name='L637'></a><a href='#L637'>637</a>
697
+ <a name='L638'></a><a href='#L638'>638</a>
698
+ <a name='L639'></a><a href='#L639'>639</a>
699
+ <a name='L640'></a><a href='#L640'>640</a>
700
+ <a name='L641'></a><a href='#L641'>641</a>
701
+ <a name='L642'></a><a href='#L642'>642</a>
702
+ <a name='L643'></a><a href='#L643'>643</a>
703
+ <a name='L644'></a><a href='#L644'>644</a>
704
+ <a name='L645'></a><a href='#L645'>645</a>
705
+ <a name='L646'></a><a href='#L646'>646</a>
706
+ <a name='L647'></a><a href='#L647'>647</a>
707
+ <a name='L648'></a><a href='#L648'>648</a>
708
+ <a name='L649'></a><a href='#L649'>649</a>
709
+ <a name='L650'></a><a href='#L650'>650</a>
710
+ <a name='L651'></a><a href='#L651'>651</a>
711
+ <a name='L652'></a><a href='#L652'>652</a>
712
+ <a name='L653'></a><a href='#L653'>653</a>
713
+ <a name='L654'></a><a href='#L654'>654</a>
714
+ <a name='L655'></a><a href='#L655'>655</a>
715
+ <a name='L656'></a><a href='#L656'>656</a>
716
+ <a name='L657'></a><a href='#L657'>657</a>
717
+ <a name='L658'></a><a href='#L658'>658</a>
718
+ <a name='L659'></a><a href='#L659'>659</a>
719
+ <a name='L660'></a><a href='#L660'>660</a>
720
+ <a name='L661'></a><a href='#L661'>661</a>
721
+ <a name='L662'></a><a href='#L662'>662</a>
722
+ <a name='L663'></a><a href='#L663'>663</a>
723
+ <a name='L664'></a><a href='#L664'>664</a>
724
+ <a name='L665'></a><a href='#L665'>665</a>
725
+ <a name='L666'></a><a href='#L666'>666</a>
726
+ <a name='L667'></a><a href='#L667'>667</a>
727
+ <a name='L668'></a><a href='#L668'>668</a>
728
+ <a name='L669'></a><a href='#L669'>669</a>
729
+ <a name='L670'></a><a href='#L670'>670</a>
730
+ <a name='L671'></a><a href='#L671'>671</a>
731
+ <a name='L672'></a><a href='#L672'>672</a>
732
+ <a name='L673'></a><a href='#L673'>673</a>
733
+ <a name='L674'></a><a href='#L674'>674</a>
734
+ <a name='L675'></a><a href='#L675'>675</a>
735
+ <a name='L676'></a><a href='#L676'>676</a>
736
+ <a name='L677'></a><a href='#L677'>677</a>
737
+ <a name='L678'></a><a href='#L678'>678</a>
738
+ <a name='L679'></a><a href='#L679'>679</a>
739
+ <a name='L680'></a><a href='#L680'>680</a>
740
+ <a name='L681'></a><a href='#L681'>681</a>
741
+ <a name='L682'></a><a href='#L682'>682</a>
742
+ <a name='L683'></a><a href='#L683'>683</a>
743
+ <a name='L684'></a><a href='#L684'>684</a>
744
+ <a name='L685'></a><a href='#L685'>685</a>
745
+ <a name='L686'></a><a href='#L686'>686</a>
746
+ <a name='L687'></a><a href='#L687'>687</a>
747
+ <a name='L688'></a><a href='#L688'>688</a>
748
+ <a name='L689'></a><a href='#L689'>689</a>
749
+ <a name='L690'></a><a href='#L690'>690</a>
750
+ <a name='L691'></a><a href='#L691'>691</a>
751
+ <a name='L692'></a><a href='#L692'>692</a>
752
+ <a name='L693'></a><a href='#L693'>693</a>
753
+ <a name='L694'></a><a href='#L694'>694</a>
754
+ <a name='L695'></a><a href='#L695'>695</a>
755
+ <a name='L696'></a><a href='#L696'>696</a>
756
+ <a name='L697'></a><a href='#L697'>697</a>
757
+ <a name='L698'></a><a href='#L698'>698</a>
758
+ <a name='L699'></a><a href='#L699'>699</a>
759
+ <a name='L700'></a><a href='#L700'>700</a>
760
+ <a name='L701'></a><a href='#L701'>701</a>
761
+ <a name='L702'></a><a href='#L702'>702</a>
762
+ <a name='L703'></a><a href='#L703'>703</a>
763
+ <a name='L704'></a><a href='#L704'>704</a>
764
+ <a name='L705'></a><a href='#L705'>705</a>
765
+ <a name='L706'></a><a href='#L706'>706</a>
766
+ <a name='L707'></a><a href='#L707'>707</a>
767
+ <a name='L708'></a><a href='#L708'>708</a>
768
+ <a name='L709'></a><a href='#L709'>709</a>
769
+ <a name='L710'></a><a href='#L710'>710</a>
770
+ <a name='L711'></a><a href='#L711'>711</a>
771
+ <a name='L712'></a><a href='#L712'>712</a>
772
+ <a name='L713'></a><a href='#L713'>713</a>
773
+ <a name='L714'></a><a href='#L714'>714</a>
774
+ <a name='L715'></a><a href='#L715'>715</a>
775
+ <a name='L716'></a><a href='#L716'>716</a>
776
+ <a name='L717'></a><a href='#L717'>717</a>
777
+ <a name='L718'></a><a href='#L718'>718</a>
778
+ <a name='L719'></a><a href='#L719'>719</a>
779
+ <a name='L720'></a><a href='#L720'>720</a>
780
+ <a name='L721'></a><a href='#L721'>721</a>
781
+ <a name='L722'></a><a href='#L722'>722</a>
782
+ <a name='L723'></a><a href='#L723'>723</a>
783
+ <a name='L724'></a><a href='#L724'>724</a>
784
+ <a name='L725'></a><a href='#L725'>725</a>
785
+ <a name='L726'></a><a href='#L726'>726</a>
786
+ <a name='L727'></a><a href='#L727'>727</a>
787
+ <a name='L728'></a><a href='#L728'>728</a>
788
+ <a name='L729'></a><a href='#L729'>729</a>
789
+ <a name='L730'></a><a href='#L730'>730</a>
790
+ <a name='L731'></a><a href='#L731'>731</a>
791
+ <a name='L732'></a><a href='#L732'>732</a>
792
+ <a name='L733'></a><a href='#L733'>733</a>
793
+ <a name='L734'></a><a href='#L734'>734</a>
794
+ <a name='L735'></a><a href='#L735'>735</a>
795
+ <a name='L736'></a><a href='#L736'>736</a>
796
+ <a name='L737'></a><a href='#L737'>737</a>
797
+ <a name='L738'></a><a href='#L738'>738</a>
798
+ <a name='L739'></a><a href='#L739'>739</a>
799
+ <a name='L740'></a><a href='#L740'>740</a>
800
+ <a name='L741'></a><a href='#L741'>741</a>
801
+ <a name='L742'></a><a href='#L742'>742</a>
802
+ <a name='L743'></a><a href='#L743'>743</a>
803
+ <a name='L744'></a><a href='#L744'>744</a>
804
+ <a name='L745'></a><a href='#L745'>745</a>
805
+ <a name='L746'></a><a href='#L746'>746</a>
806
+ <a name='L747'></a><a href='#L747'>747</a>
807
+ <a name='L748'></a><a href='#L748'>748</a>
808
+ <a name='L749'></a><a href='#L749'>749</a>
809
+ <a name='L750'></a><a href='#L750'>750</a>
810
+ <a name='L751'></a><a href='#L751'>751</a>
811
+ <a name='L752'></a><a href='#L752'>752</a>
812
+ <a name='L753'></a><a href='#L753'>753</a>
813
+ <a name='L754'></a><a href='#L754'>754</a>
814
+ <a name='L755'></a><a href='#L755'>755</a>
815
+ <a name='L756'></a><a href='#L756'>756</a>
816
+ <a name='L757'></a><a href='#L757'>757</a>
817
+ <a name='L758'></a><a href='#L758'>758</a>
818
+ <a name='L759'></a><a href='#L759'>759</a>
819
+ <a name='L760'></a><a href='#L760'>760</a>
820
+ <a name='L761'></a><a href='#L761'>761</a>
821
+ <a name='L762'></a><a href='#L762'>762</a>
822
+ <a name='L763'></a><a href='#L763'>763</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
493
823
  <span class="cline-any cline-neutral">&nbsp;</span>
494
824
  <span class="cline-any cline-yes">1x</span>
495
825
  <span class="cline-any cline-yes">1x</span>
@@ -509,6 +839,7 @@
509
839
  <span class="cline-any cline-neutral">&nbsp;</span>
510
840
  <span class="cline-any cline-neutral">&nbsp;</span>
511
841
  <span class="cline-any cline-neutral">&nbsp;</span>
842
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
843
  <span class="cline-any cline-yes">1x</span>
513
844
  <span class="cline-any cline-yes">1x</span>
514
845
  <span class="cline-any cline-yes">1x</span>
@@ -525,6 +856,30 @@
525
856
  <span class="cline-any cline-neutral">&nbsp;</span>
526
857
  <span class="cline-any cline-neutral">&nbsp;</span>
527
858
  <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-yes">1x</span>
860
+ <span class="cline-any cline-yes">1x</span>
861
+ <span class="cline-any cline-yes">1x</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-neutral">&nbsp;</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-neutral">&nbsp;</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-neutral">&nbsp;</span>
881
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
883
  <span class="cline-any cline-neutral">&nbsp;</span>
529
884
  <span class="cline-any cline-neutral">&nbsp;</span>
530
885
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -595,6 +950,7 @@
595
950
  <span class="cline-any cline-yes">1x</span>
596
951
  <span class="cline-any cline-yes">3x</span>
597
952
  <span class="cline-any cline-yes">3x</span>
953
+ <span class="cline-any cline-yes">3x</span>
598
954
  <span class="cline-any cline-neutral">&nbsp;</span>
599
955
  <span class="cline-any cline-neutral">&nbsp;</span>
600
956
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -635,48 +991,69 @@
635
991
  <span class="cline-any cline-neutral">&nbsp;</span>
636
992
  <span class="cline-any cline-neutral">&nbsp;</span>
637
993
  <span class="cline-any cline-neutral">&nbsp;</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-neutral">&nbsp;</span>
996
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
997
  <span class="cline-any cline-yes">1x</span>
998
+ <span class="cline-any cline-no">&nbsp;</span>
999
+ <span class="cline-any cline-no">&nbsp;</span>
639
1000
  <span class="cline-any cline-neutral">&nbsp;</span>
1001
+ <span class="cline-any cline-no">&nbsp;</span>
640
1002
  <span class="cline-any cline-neutral">&nbsp;</span>
641
1003
  <span class="cline-any cline-neutral">&nbsp;</span>
642
1004
  <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-yes">12x</span>
644
- <span class="cline-any cline-yes">7x</span>
645
1005
  <span class="cline-any cline-neutral">&nbsp;</span>
646
1006
  <span class="cline-any cline-neutral">&nbsp;</span>
647
1007
  <span class="cline-any cline-neutral">&nbsp;</span>
1008
+ <span class="cline-any cline-yes">1x</span>
648
1009
  <span class="cline-any cline-neutral">&nbsp;</span>
1010
+ <span class="cline-any cline-yes">3x</span>
649
1011
  <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-yes">28x</span>
651
- <span class="cline-any cline-yes">7x</span>
652
- <span class="cline-any cline-yes">2x</span>
653
1012
  <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-yes">7x</span>
655
- <span class="cline-any cline-yes">7x</span>
656
- <span class="cline-any cline-yes">7x</span>
657
- <span class="cline-any cline-yes">44x</span>
658
- <span class="cline-any cline-yes">28x</span>
659
1013
  <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-yes">7x</span>
1014
+ <span class="cline-any cline-neutral">&nbsp;</span>
1015
+ <span class="cline-any cline-no">&nbsp;</span>
661
1016
  <span class="cline-any cline-neutral">&nbsp;</span>
662
1017
  <span class="cline-any cline-neutral">&nbsp;</span>
663
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-yes">7x</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-yes">3x</span>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
665
1022
  <span class="cline-any cline-neutral">&nbsp;</span>
666
1023
  <span class="cline-any cline-neutral">&nbsp;</span>
667
1024
  <span class="cline-any cline-neutral">&nbsp;</span>
668
1025
  <span class="cline-any cline-neutral">&nbsp;</span>
1026
+ <span class="cline-any cline-yes">3x</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
669
1028
  <span class="cline-any cline-neutral">&nbsp;</span>
670
1029
  <span class="cline-any cline-neutral">&nbsp;</span>
1030
+ <span class="cline-any cline-no">&nbsp;</span>
1031
+ <span class="cline-any cline-neutral">&nbsp;</span>
1032
+ <span class="cline-any cline-no">&nbsp;</span>
1033
+ <span class="cline-any cline-neutral">&nbsp;</span>
1034
+ <span class="cline-any cline-neutral">&nbsp;</span>
1035
+ <span class="cline-any cline-no">&nbsp;</span>
1036
+ <span class="cline-any cline-no">&nbsp;</span>
1037
+ <span class="cline-any cline-neutral">&nbsp;</span>
1038
+ <span class="cline-any cline-no">&nbsp;</span>
1039
+ <span class="cline-any cline-neutral">&nbsp;</span>
1040
+ <span class="cline-any cline-neutral">&nbsp;</span>
1041
+ <span class="cline-any cline-neutral">&nbsp;</span>
1042
+ <span class="cline-any cline-no">&nbsp;</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-neutral">&nbsp;</span>
1045
+ <span class="cline-any cline-neutral">&nbsp;</span>
1046
+ <span class="cline-any cline-neutral">&nbsp;</span>
1047
+ <span class="cline-any cline-neutral">&nbsp;</span>
1048
+ <span class="cline-any cline-yes">3x</span>
671
1049
  <span class="cline-any cline-neutral">&nbsp;</span>
672
1050
  <span class="cline-any cline-yes">1x</span>
673
- <span class="cline-any cline-yes">31x</span>
674
1051
  <span class="cline-any cline-neutral">&nbsp;</span>
675
1052
  <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-yes">31x</span>
677
1053
  <span class="cline-any cline-neutral">&nbsp;</span>
678
1054
  <span class="cline-any cline-neutral">&nbsp;</span>
679
1055
  <span class="cline-any cline-neutral">&nbsp;</span>
1056
+ <span class="cline-any cline-no">&nbsp;</span>
680
1057
  <span class="cline-any cline-neutral">&nbsp;</span>
681
1058
  <span class="cline-any cline-neutral">&nbsp;</span>
682
1059
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -685,33 +1062,192 @@
685
1062
  <span class="cline-any cline-neutral">&nbsp;</span>
686
1063
  <span class="cline-any cline-neutral">&nbsp;</span>
687
1064
  <span class="cline-any cline-neutral">&nbsp;</span>
1065
+ <span class="cline-any cline-no">&nbsp;</span>
688
1066
  <span class="cline-any cline-neutral">&nbsp;</span>
1067
+ <span class="cline-any cline-no">&nbsp;</span>
1068
+ <span class="cline-any cline-no">&nbsp;</span>
689
1069
  <span class="cline-any cline-neutral">&nbsp;</span>
690
1070
  <span class="cline-any cline-neutral">&nbsp;</span>
691
1071
  <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-yes">31x</span>
693
1072
  <span class="cline-any cline-neutral">&nbsp;</span>
694
1073
  <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-yes">31x</span>
696
1074
  <span class="cline-any cline-neutral">&nbsp;</span>
1075
+ <span class="cline-any cline-yes">3x</span>
1076
+ <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-yes">3x</span>
1079
+ <span class="cline-any cline-yes">1x</span>
697
1080
  <span class="cline-any cline-neutral">&nbsp;</span>
698
1081
  <span class="cline-any cline-neutral">&nbsp;</span>
699
1082
  <span class="cline-any cline-neutral">&nbsp;</span>
700
1083
  <span class="cline-any cline-neutral">&nbsp;</span>
701
1084
  <span class="cline-any cline-neutral">&nbsp;</span>
702
1085
  <span class="cline-any cline-neutral">&nbsp;</span>
1086
+ <span class="cline-any cline-yes">4x</span>
1087
+ <span class="cline-any cline-yes">4x</span>
703
1088
  <span class="cline-any cline-neutral">&nbsp;</span>
704
1089
  <span class="cline-any cline-neutral">&nbsp;</span>
705
1090
  <span class="cline-any cline-neutral">&nbsp;</span>
706
1091
  <span class="cline-any cline-neutral">&nbsp;</span>
1092
+ <span class="cline-any cline-yes">3x</span>
707
1093
  <span class="cline-any cline-neutral">&nbsp;</span>
1094
+ <span class="cline-any cline-yes">1x</span>
1095
+ <span class="cline-any cline-yes">1x</span>
1096
+ <span class="cline-any cline-yes">1x</span>
1097
+ <span class="cline-any cline-yes">1x</span>
1098
+ <span class="cline-any cline-neutral">&nbsp;</span>
1099
+ <span class="cline-any cline-neutral">&nbsp;</span>
1100
+ <span class="cline-any cline-yes">4x</span>
1101
+ <span class="cline-any cline-yes">4x</span>
1102
+ <span class="cline-any cline-neutral">&nbsp;</span>
1103
+ <span class="cline-any cline-yes">4x</span>
1104
+ <span class="cline-any cline-yes">4x</span>
1105
+ <span class="cline-any cline-yes">4x</span>
1106
+ <span class="cline-any cline-neutral">&nbsp;</span>
1107
+ <span class="cline-any cline-no">&nbsp;</span>
1108
+ <span class="cline-any cline-no">&nbsp;</span>
1109
+ <span class="cline-any cline-neutral">&nbsp;</span>
1110
+ <span class="cline-any cline-neutral">&nbsp;</span>
1111
+ <span class="cline-any cline-neutral">&nbsp;</span>
1112
+ <span class="cline-any cline-neutral">&nbsp;</span>
1113
+ <span class="cline-any cline-neutral">&nbsp;</span>
1114
+ <span class="cline-any cline-neutral">&nbsp;</span>
1115
+ <span class="cline-any cline-neutral">&nbsp;</span>
1116
+ <span class="cline-any cline-neutral">&nbsp;</span>
1117
+ <span class="cline-any cline-yes">1x</span>
1118
+ <span class="cline-any cline-no">&nbsp;</span>
1119
+ <span class="cline-any cline-neutral">&nbsp;</span>
1120
+ <span class="cline-any cline-neutral">&nbsp;</span>
1121
+ <span class="cline-any cline-no">&nbsp;</span>
1122
+ <span class="cline-any cline-no">&nbsp;</span>
1123
+ <span class="cline-any cline-neutral">&nbsp;</span>
1124
+ <span class="cline-any cline-no">&nbsp;</span>
708
1125
  <span class="cline-any cline-neutral">&nbsp;</span>
709
1126
  <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-yes">31x</span>
1127
+ <span class="cline-any cline-neutral">&nbsp;</span>
1128
+ <span class="cline-any cline-neutral">&nbsp;</span>
1129
+ <span class="cline-any cline-neutral">&nbsp;</span>
1130
+ <span class="cline-any cline-neutral">&nbsp;</span>
1131
+ <span class="cline-any cline-neutral">&nbsp;</span>
1132
+ <span class="cline-any cline-neutral">&nbsp;</span>
1133
+ <span class="cline-any cline-no">&nbsp;</span>
1134
+ <span class="cline-any cline-no">&nbsp;</span>
1135
+ <span class="cline-any cline-neutral">&nbsp;</span>
1136
+ <span class="cline-any cline-neutral">&nbsp;</span>
1137
+ <span class="cline-any cline-no">&nbsp;</span>
1138
+ <span class="cline-any cline-neutral">&nbsp;</span>
1139
+ <span class="cline-any cline-neutral">&nbsp;</span>
1140
+ <span class="cline-any cline-neutral">&nbsp;</span>
1141
+ <span class="cline-any cline-neutral">&nbsp;</span>
1142
+ <span class="cline-any cline-neutral">&nbsp;</span>
1143
+ <span class="cline-any cline-neutral">&nbsp;</span>
1144
+ <span class="cline-any cline-neutral">&nbsp;</span>
1145
+ <span class="cline-any cline-yes">4x</span>
1146
+ <span class="cline-any cline-neutral">&nbsp;</span>
1147
+ <span class="cline-any cline-yes">4x</span>
1148
+ <span class="cline-any cline-neutral">&nbsp;</span>
1149
+ <span class="cline-any cline-yes">4x</span>
1150
+ <span class="cline-any cline-neutral">&nbsp;</span>
1151
+ <span class="cline-any cline-neutral">&nbsp;</span>
1152
+ <span class="cline-any cline-neutral">&nbsp;</span>
1153
+ <span class="cline-any cline-no">&nbsp;</span>
1154
+ <span class="cline-any cline-neutral">&nbsp;</span>
1155
+ <span class="cline-any cline-neutral">&nbsp;</span>
1156
+ <span class="cline-any cline-no">&nbsp;</span>
1157
+ <span class="cline-any cline-neutral">&nbsp;</span>
1158
+ <span class="cline-any cline-neutral">&nbsp;</span>
1159
+ <span class="cline-any cline-no">&nbsp;</span>
1160
+ <span class="cline-any cline-no">&nbsp;</span>
1161
+ <span class="cline-any cline-neutral">&nbsp;</span>
1162
+ <span class="cline-any cline-neutral">&nbsp;</span>
1163
+ <span class="cline-any cline-neutral">&nbsp;</span>
1164
+ <span class="cline-any cline-neutral">&nbsp;</span>
1165
+ <span class="cline-any cline-neutral">&nbsp;</span>
1166
+ <span class="cline-any cline-no">&nbsp;</span>
1167
+ <span class="cline-any cline-no">&nbsp;</span>
1168
+ <span class="cline-any cline-neutral">&nbsp;</span>
1169
+ <span class="cline-any cline-neutral">&nbsp;</span>
1170
+ <span class="cline-any cline-neutral">&nbsp;</span>
1171
+ <span class="cline-any cline-neutral">&nbsp;</span>
1172
+ <span class="cline-any cline-neutral">&nbsp;</span>
1173
+ <span class="cline-any cline-neutral">&nbsp;</span>
1174
+ <span class="cline-any cline-neutral">&nbsp;</span>
1175
+ <span class="cline-any cline-neutral">&nbsp;</span>
1176
+ <span class="cline-any cline-neutral">&nbsp;</span>
1177
+ <span class="cline-any cline-neutral">&nbsp;</span>
1178
+ <span class="cline-any cline-yes">1x</span>
1179
+ <span class="cline-any cline-yes">6x</span>
1180
+ <span class="cline-any cline-neutral">&nbsp;</span>
1181
+ <span class="cline-any cline-neutral">&nbsp;</span>
1182
+ <span class="cline-any cline-neutral">&nbsp;</span>
1183
+ <span class="cline-any cline-neutral">&nbsp;</span>
1184
+ <span class="cline-any cline-neutral">&nbsp;</span>
1185
+ <span class="cline-any cline-yes">1x</span>
1186
+ <span class="cline-any cline-yes">6x</span>
1187
+ <span class="cline-any cline-yes">6x</span>
1188
+ <span class="cline-any cline-neutral">&nbsp;</span>
1189
+ <span class="cline-any cline-neutral">&nbsp;</span>
1190
+ <span class="cline-any cline-neutral">&nbsp;</span>
1191
+ <span class="cline-any cline-neutral">&nbsp;</span>
1192
+ <span class="cline-any cline-neutral">&nbsp;</span>
1193
+ <span class="cline-any cline-neutral">&nbsp;</span>
1194
+ <span class="cline-any cline-neutral">&nbsp;</span>
1195
+ <span class="cline-any cline-yes">4x</span>
1196
+ <span class="cline-any cline-neutral">&nbsp;</span>
1197
+ <span class="cline-any cline-yes">6x</span>
1198
+ <span class="cline-any cline-neutral">&nbsp;</span>
1199
+ <span class="cline-any cline-neutral">&nbsp;</span>
1200
+ <span class="cline-any cline-neutral">&nbsp;</span>
1201
+ <span class="cline-any cline-neutral">&nbsp;</span>
1202
+ <span class="cline-any cline-neutral">&nbsp;</span>
1203
+ <span class="cline-any cline-neutral">&nbsp;</span>
1204
+ <span class="cline-any cline-yes">1x</span>
1205
+ <span class="cline-any cline-yes">1x</span>
1206
+ <span class="cline-any cline-yes">1x</span>
1207
+ <span class="cline-any cline-neutral">&nbsp;</span>
1208
+ <span class="cline-any cline-neutral">&nbsp;</span>
1209
+ <span class="cline-any cline-neutral">&nbsp;</span>
1210
+ <span class="cline-any cline-yes">1x</span>
1211
+ <span class="cline-any cline-neutral">&nbsp;</span>
1212
+ <span class="cline-any cline-yes">19x</span>
1213
+ <span class="cline-any cline-yes">19x</span>
1214
+ <span class="cline-any cline-yes">19x</span>
711
1215
  <span class="cline-any cline-yes">3x</span>
712
- <span class="cline-any cline-yes">27x</span>
713
1216
  <span class="cline-any cline-yes">3x</span>
714
- <span class="cline-any cline-yes">2x</span>
1217
+ <span class="cline-any cline-neutral">&nbsp;</span>
1218
+ <span class="cline-any cline-neutral">&nbsp;</span>
1219
+ <span class="cline-any cline-neutral">&nbsp;</span>
1220
+ <span class="cline-any cline-yes">3x</span>
1221
+ <span class="cline-any cline-neutral">&nbsp;</span>
1222
+ <span class="cline-any cline-neutral">&nbsp;</span>
1223
+ <span class="cline-any cline-neutral">&nbsp;</span>
1224
+ <span class="cline-any cline-neutral">&nbsp;</span>
1225
+ <span class="cline-any cline-neutral">&nbsp;</span>
1226
+ <span class="cline-any cline-neutral">&nbsp;</span>
1227
+ <span class="cline-any cline-neutral">&nbsp;</span>
1228
+ <span class="cline-any cline-neutral">&nbsp;</span>
1229
+ <span class="cline-any cline-yes">1x</span>
1230
+ <span class="cline-any cline-yes">37x</span>
1231
+ <span class="cline-any cline-neutral">&nbsp;</span>
1232
+ <span class="cline-any cline-neutral">&nbsp;</span>
1233
+ <span class="cline-any cline-yes">37x</span>
1234
+ <span class="cline-any cline-yes">37x</span>
1235
+ <span class="cline-any cline-yes">37x</span>
1236
+ <span class="cline-any cline-neutral">&nbsp;</span>
1237
+ <span class="cline-any cline-yes">37x</span>
1238
+ <span class="cline-any cline-neutral">&nbsp;</span>
1239
+ <span class="cline-any cline-neutral">&nbsp;</span>
1240
+ <span class="cline-any cline-neutral">&nbsp;</span>
1241
+ <span class="cline-any cline-neutral">&nbsp;</span>
1242
+ <span class="cline-any cline-neutral">&nbsp;</span>
1243
+ <span class="cline-any cline-yes">37x</span>
1244
+ <span class="cline-any cline-neutral">&nbsp;</span>
1245
+ <span class="cline-any cline-neutral">&nbsp;</span>
1246
+ <span class="cline-any cline-neutral">&nbsp;</span>
1247
+ <span class="cline-any cline-neutral">&nbsp;</span>
1248
+ <span class="cline-any cline-neutral">&nbsp;</span>
1249
+ <span class="cline-any cline-neutral">&nbsp;</span>
1250
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
1251
  <span class="cline-any cline-neutral">&nbsp;</span>
716
1252
  <span class="cline-any cline-neutral">&nbsp;</span>
717
1253
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -720,7 +1256,52 @@
720
1256
  <span class="cline-any cline-neutral">&nbsp;</span>
721
1257
  <span class="cline-any cline-neutral">&nbsp;</span>
722
1258
  <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-yes">31x</span>
1259
+ <span class="cline-any cline-neutral">&nbsp;</span>
1260
+ <span class="cline-any cline-neutral">&nbsp;</span>
1261
+ <span class="cline-any cline-yes">37x</span>
1262
+ <span class="cline-any cline-yes">37x</span>
1263
+ <span class="cline-any cline-neutral">&nbsp;</span>
1264
+ <span class="cline-any cline-neutral">&nbsp;</span>
1265
+ <span class="cline-any cline-yes">37x</span>
1266
+ <span class="cline-any cline-yes">37x</span>
1267
+ <span class="cline-any cline-neutral">&nbsp;</span>
1268
+ <span class="cline-any cline-neutral">&nbsp;</span>
1269
+ <span class="cline-any cline-neutral">&nbsp;</span>
1270
+ <span class="cline-any cline-neutral">&nbsp;</span>
1271
+ <span class="cline-any cline-neutral">&nbsp;</span>
1272
+ <span class="cline-any cline-neutral">&nbsp;</span>
1273
+ <span class="cline-any cline-neutral">&nbsp;</span>
1274
+ <span class="cline-any cline-neutral">&nbsp;</span>
1275
+ <span class="cline-any cline-neutral">&nbsp;</span>
1276
+ <span class="cline-any cline-neutral">&nbsp;</span>
1277
+ <span class="cline-any cline-neutral">&nbsp;</span>
1278
+ <span class="cline-any cline-neutral">&nbsp;</span>
1279
+ <span class="cline-any cline-neutral">&nbsp;</span>
1280
+ <span class="cline-any cline-neutral">&nbsp;</span>
1281
+ <span class="cline-any cline-neutral">&nbsp;</span>
1282
+ <span class="cline-any cline-neutral">&nbsp;</span>
1283
+ <span class="cline-any cline-yes">37x</span>
1284
+ <span class="cline-any cline-yes">9x</span>
1285
+ <span class="cline-any cline-yes">9x</span>
1286
+ <span class="cline-any cline-yes">9x</span>
1287
+ <span class="cline-any cline-neutral">&nbsp;</span>
1288
+ <span class="cline-any cline-yes">6x</span>
1289
+ <span class="cline-any cline-neutral">&nbsp;</span>
1290
+ <span class="cline-any cline-yes">108x</span>
1291
+ <span class="cline-any cline-yes">9x</span>
1292
+ <span class="cline-any cline-yes">8x</span>
1293
+ <span class="cline-any cline-neutral">&nbsp;</span>
1294
+ <span class="cline-any cline-neutral">&nbsp;</span>
1295
+ <span class="cline-any cline-yes">9x</span>
1296
+ <span class="cline-any cline-yes">8x</span>
1297
+ <span class="cline-any cline-neutral">&nbsp;</span>
1298
+ <span class="cline-any cline-neutral">&nbsp;</span>
1299
+ <span class="cline-any cline-neutral">&nbsp;</span>
1300
+ <span class="cline-any cline-neutral">&nbsp;</span>
1301
+ <span class="cline-any cline-neutral">&nbsp;</span>
1302
+ <span class="cline-any cline-neutral">&nbsp;</span>
1303
+ <span class="cline-any cline-neutral">&nbsp;</span>
1304
+ <span class="cline-any cline-yes">37x</span>
724
1305
  <span class="cline-any cline-yes">4x</span>
725
1306
  <span class="cline-any cline-no">&nbsp;</span>
726
1307
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -736,6 +1317,7 @@
736
1317
  <span class="cline-any cline-neutral">&nbsp;</span>
737
1318
  <span class="cline-any cline-neutral">&nbsp;</span>
738
1319
  <span class="cline-any cline-neutral">&nbsp;</span>
1320
+ <span class="cline-any cline-neutral">&nbsp;</span>
739
1321
  <span class="cline-any cline-yes">4x</span>
740
1322
  <span class="cline-any cline-neutral">&nbsp;</span>
741
1323
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -746,11 +1328,12 @@
746
1328
  <span class="cline-any cline-neutral">&nbsp;</span>
747
1329
  <span class="cline-any cline-neutral">&nbsp;</span>
748
1330
  <span class="cline-any cline-neutral">&nbsp;</span>
1331
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
1332
  <span class="cline-any cline-yes">4x</span>
750
1333
  <span class="cline-any cline-neutral">&nbsp;</span>
751
1334
  <span class="cline-any cline-neutral">&nbsp;</span>
752
1335
  <span class="cline-any cline-neutral">&nbsp;</span>
753
- <span class="cline-any cline-yes">31x</span>
1336
+ <span class="cline-any cline-yes">37x</span>
754
1337
  <span class="cline-any cline-yes">2x</span>
755
1338
  <span class="cline-any cline-yes">2x</span>
756
1339
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -758,7 +1341,7 @@
758
1341
  <span class="cline-any cline-neutral">&nbsp;</span>
759
1342
  <span class="cline-any cline-neutral">&nbsp;</span>
760
1343
  <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-yes">31x</span>
1344
+ <span class="cline-any cline-yes">37x</span>
762
1345
  <span class="cline-any cline-yes">2x</span>
763
1346
  <span class="cline-any cline-yes">2x</span>
764
1347
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -766,24 +1349,76 @@
766
1349
  <span class="cline-any cline-neutral">&nbsp;</span>
767
1350
  <span class="cline-any cline-neutral">&nbsp;</span>
768
1351
  <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-yes">31x</span>
1352
+ <span class="cline-any cline-yes">37x</span>
770
1353
  <span class="cline-any cline-no">&nbsp;</span>
771
1354
  <span class="cline-any cline-neutral">&nbsp;</span>
772
1355
  <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-yes">31x</span>
1356
+ <span class="cline-any cline-yes">37x</span>
774
1357
  <span class="cline-any cline-no">&nbsp;</span>
775
1358
  <span class="cline-any cline-neutral">&nbsp;</span>
776
1359
  <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-yes">31x</span>
778
1360
  <span class="cline-any cline-neutral">&nbsp;</span>
779
1361
  <span class="cline-any cline-neutral">&nbsp;</span>
780
1362
  <span class="cline-any cline-neutral">&nbsp;</span>
1363
+ <span class="cline-any cline-neutral">&nbsp;</span>
1364
+ <span class="cline-any cline-neutral">&nbsp;</span>
1365
+ <span class="cline-any cline-yes">37x</span>
1366
+ <span class="cline-any cline-neutral">&nbsp;</span>
1367
+ <span class="cline-any cline-neutral">&nbsp;</span>
1368
+ <span class="cline-any cline-neutral">&nbsp;</span>
1369
+ <span class="cline-any cline-neutral">&nbsp;</span>
1370
+ <span class="cline-any cline-yes">12x</span>
1371
+ <span class="cline-any cline-yes">7x</span>
1372
+ <span class="cline-any cline-yes">7x</span>
1373
+ <span class="cline-any cline-yes">7x</span>
1374
+ <span class="cline-any cline-neutral">&nbsp;</span>
1375
+ <span class="cline-any cline-yes">7x</span>
1376
+ <span class="cline-any cline-neutral">&nbsp;</span>
1377
+ <span class="cline-any cline-neutral">&nbsp;</span>
1378
+ <span class="cline-any cline-neutral">&nbsp;</span>
1379
+ <span class="cline-any cline-neutral">&nbsp;</span>
1380
+ <span class="cline-any cline-neutral">&nbsp;</span>
1381
+ <span class="cline-any cline-yes">28x</span>
1382
+ <span class="cline-any cline-yes">7x</span>
781
1383
  <span class="cline-any cline-yes">2x</span>
1384
+ <span class="cline-any cline-neutral">&nbsp;</span>
1385
+ <span class="cline-any cline-yes">7x</span>
1386
+ <span class="cline-any cline-yes">7x</span>
1387
+ <span class="cline-any cline-yes">7x</span>
1388
+ <span class="cline-any cline-yes">44x</span>
1389
+ <span class="cline-any cline-yes">28x</span>
1390
+ <span class="cline-any cline-neutral">&nbsp;</span>
1391
+ <span class="cline-any cline-yes">7x</span>
1392
+ <span class="cline-any cline-neutral">&nbsp;</span>
1393
+ <span class="cline-any cline-neutral">&nbsp;</span>
1394
+ <span class="cline-any cline-neutral">&nbsp;</span>
1395
+ <span class="cline-any cline-yes">7x</span>
1396
+ <span class="cline-any cline-neutral">&nbsp;</span>
1397
+ <span class="cline-any cline-neutral">&nbsp;</span>
1398
+ <span class="cline-any cline-neutral">&nbsp;</span>
1399
+ <span class="cline-any cline-neutral">&nbsp;</span>
1400
+ <span class="cline-any cline-neutral">&nbsp;</span>
1401
+ <span class="cline-any cline-yes">37x</span>
1402
+ <span class="cline-any cline-neutral">&nbsp;</span>
1403
+ <span class="cline-any cline-neutral">&nbsp;</span>
1404
+ <span class="cline-any cline-neutral">&nbsp;</span>
1405
+ <span class="cline-any cline-yes">2x</span>
1406
+ <span class="cline-any cline-yes">1x</span>
782
1407
  <span class="cline-any cline-yes">1x</span>
783
1408
  <span class="cline-any cline-neutral">&nbsp;</span>
784
1409
  <span class="cline-any cline-neutral">&nbsp;</span>
785
1410
  <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-yes">31x</span>
1411
+ <span class="cline-any cline-neutral">&nbsp;</span>
1412
+ <span class="cline-any cline-no">&nbsp;</span>
1413
+ <span class="cline-any cline-no">&nbsp;</span>
1414
+ <span class="cline-any cline-neutral">&nbsp;</span>
1415
+ <span class="cline-any cline-neutral">&nbsp;</span>
1416
+ <span class="cline-any cline-neutral">&nbsp;</span>
1417
+ <span class="cline-any cline-neutral">&nbsp;</span>
1418
+ <span class="cline-any cline-neutral">&nbsp;</span>
1419
+ <span class="cline-any cline-neutral">&nbsp;</span>
1420
+ <span class="cline-any cline-neutral">&nbsp;</span>
1421
+ <span class="cline-any cline-yes">37x</span>
787
1422
  <span class="cline-any cline-neutral">&nbsp;</span>
788
1423
  <span class="cline-any cline-neutral">&nbsp;</span>
789
1424
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -792,8 +1427,25 @@
792
1427
  <span class="cline-any cline-neutral">&nbsp;</span>
793
1428
  <span class="cline-any cline-neutral">&nbsp;</span>
794
1429
  <span class="cline-any cline-neutral">&nbsp;</span>
1430
+ <span class="cline-any cline-yes">37x</span>
1431
+ <span class="cline-any cline-neutral">&nbsp;</span>
1432
+ <span class="cline-any cline-neutral">&nbsp;</span>
1433
+ <span class="cline-any cline-neutral">&nbsp;</span>
1434
+ <span class="cline-any cline-neutral">&nbsp;</span>
1435
+ <span class="cline-any cline-yes">4x</span>
1436
+ <span class="cline-any cline-yes">4x</span>
1437
+ <span class="cline-any cline-yes">3x</span>
1438
+ <span class="cline-any cline-neutral">&nbsp;</span>
1439
+ <span class="cline-any cline-neutral">&nbsp;</span>
1440
+ <span class="cline-any cline-neutral">&nbsp;</span>
1441
+ <span class="cline-any cline-neutral">&nbsp;</span>
1442
+ <span class="cline-any cline-yes">37x</span>
1443
+ <span class="cline-any cline-neutral">&nbsp;</span>
1444
+ <span class="cline-any cline-neutral">&nbsp;</span>
1445
+ <span class="cline-any cline-neutral">&nbsp;</span>
1446
+ <span class="cline-any cline-neutral">&nbsp;</span>
1447
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
1448
  <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-yes">31x</span>
797
1449
  <span class="cline-any cline-neutral">&nbsp;</span>
798
1450
  <span class="cline-any cline-neutral">&nbsp;</span>
799
1451
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -804,7 +1456,6 @@
804
1456
  <span class="cline-any cline-neutral">&nbsp;</span>
805
1457
  <span class="cline-any cline-neutral">&nbsp;</span>
806
1458
  <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-yes">31x</span>
808
1459
  <span class="cline-any cline-neutral">&nbsp;</span>
809
1460
  <span class="cline-any cline-neutral">&nbsp;</span>
810
1461
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -867,15 +1518,13 @@
867
1518
  <span class="cline-any cline-neutral">&nbsp;</span>
868
1519
  <span class="cline-any cline-neutral">&nbsp;</span>
869
1520
  <span class="cline-any cline-neutral">&nbsp;</span>
1521
+ <span class="cline-any cline-yes">37x</span>
870
1522
  <span class="cline-any cline-neutral">&nbsp;</span>
871
1523
  <span class="cline-any cline-neutral">&nbsp;</span>
872
1524
  <span class="cline-any cline-neutral">&nbsp;</span>
873
1525
  <span class="cline-any cline-neutral">&nbsp;</span>
874
1526
  <span class="cline-any cline-neutral">&nbsp;</span>
875
1527
  <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-yes">403x</span>
877
- <span class="cline-any cline-yes">403x</span>
878
- <span class="cline-any cline-yes">289x</span>
879
1528
  <span class="cline-any cline-neutral">&nbsp;</span>
880
1529
  <span class="cline-any cline-neutral">&nbsp;</span>
881
1530
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -883,14 +1532,26 @@
883
1532
  <span class="cline-any cline-neutral">&nbsp;</span>
884
1533
  <span class="cline-any cline-neutral">&nbsp;</span>
885
1534
  <span class="cline-any cline-neutral">&nbsp;</span>
1535
+ <span class="cline-any cline-yes">555x</span>
1536
+ <span class="cline-any cline-yes">555x</span>
1537
+ <span class="cline-any cline-yes">448x</span>
886
1538
  <span class="cline-any cline-neutral">&nbsp;</span>
887
1539
  <span class="cline-any cline-neutral">&nbsp;</span>
888
1540
  <span class="cline-any cline-neutral">&nbsp;</span>
889
1541
  <span class="cline-any cline-neutral">&nbsp;</span>
890
1542
  <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-yes">62x</span>
892
1543
  <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-yes">31x</span>
1544
+ <span class="cline-any cline-neutral">&nbsp;</span>
1545
+ <span class="cline-any cline-neutral">&nbsp;</span>
1546
+ <span class="cline-any cline-neutral">&nbsp;</span>
1547
+ <span class="cline-any cline-neutral">&nbsp;</span>
1548
+ <span class="cline-any cline-neutral">&nbsp;</span>
1549
+ <span class="cline-any cline-neutral">&nbsp;</span>
1550
+ <span class="cline-any cline-neutral">&nbsp;</span>
1551
+ <span class="cline-any cline-yes">74x</span>
1552
+ <span class="cline-any cline-neutral">&nbsp;</span>
1553
+ <span class="cline-any cline-yes">37x</span>
1554
+ <span class="cline-any cline-neutral">&nbsp;</span>
894
1555
  <span class="cline-any cline-neutral">&nbsp;</span>
895
1556
  <span class="cline-any cline-neutral">&nbsp;</span>
896
1557
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -920,7 +1581,6 @@
920
1581
  <span class="cline-any cline-neutral">&nbsp;</span>
921
1582
  <span class="cline-any cline-neutral">&nbsp;</span>
922
1583
  <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
1584
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import "native-promise-only";
925
1585
  &nbsp;
926
1586
  import pkg from "../package.json";
@@ -939,9 +1599,10 @@ import {
939
1599
  ActivePaymentProductType,
940
1600
  ValidateSession,
941
1601
  SessionValidationCallback,
942
- SessionEvent
1602
+ SessionEvent,
1603
+ ShowPopOutButton
943
1604
  } from "./checkout";
944
- import { getSessionUrl, windowLocationAssign } from "./url";
1605
+ import { getPopOutUrl, getSessionUrl, windowLocationAssign } from "./url";
945
1606
  import { createIframeAsync } from "./createIframeAsync";
946
1607
  import {
947
1608
  subscribe,
@@ -951,7 +1612,16 @@ import {
951
1612
  postSessionRefresh,
952
1613
  postActivePaymentProductType,
953
1614
  postValidationResult,
1615
+ postSetLanguage,
1616
+ postOpenPopOutEvent,
1617
+ postClosePopOutEvent,
1618
+ postValidatePopOutEvent,
1619
+ postOpenPopOutFailedEvent,
954
1620
  } from "./subscribe";
1621
+ import { createBackdrop, removeBackdrop, setBackdropLabels } from "./popOutBackdrop";
1622
+ import { addPopOutButton, removePopOutButton, setPopOutButtonDisabled } from "./popOutButton";
1623
+ import { openPopOut } from "./popOut";
1624
+ import { Session } from "./session";
955
1625
  &nbsp;
956
1626
  export interface DinteroCheckoutInstance {
957
1627
  /**
@@ -964,6 +1634,16 @@ export interface DinteroCheckoutInstance {
964
1634
  refreshSession: () =&gt; Promise&lt;SessionEvent&gt;;
965
1635
  setActivePaymentProductType: (paymentProductType: string) =&gt; void;
966
1636
  submitValidationResult: (result: SessionValidationCallback) =&gt; void;
1637
+ options: InternalDinteroEmbedCheckoutOptions;
1638
+ handlers: ({
1639
+ handler: SubscriptionHandler;
1640
+ eventTypes: InternalCheckoutEvents[];
1641
+ } | {
1642
+ handler: SubscriptionHandler;
1643
+ eventTypes: CheckoutEvents[];
1644
+ })[];
1645
+ session: Session | undefined;
1646
+ popOutWindow: Window | undefined;
967
1647
  }
968
1648
  &nbsp;
969
1649
  export interface DinteroCheckoutOptions {
@@ -974,6 +1654,7 @@ export interface DinteroCheckoutOptions {
974
1654
  &nbsp;
975
1655
  export interface DinteroEmbedCheckoutOptions extends DinteroCheckoutOptions {
976
1656
  container: HTMLDivElement;
1657
+ popOut?: boolean;
977
1658
  onPayment?: (
978
1659
  event: SessionPaymentAuthorized | SessionPaymentOnHold,
979
1660
  checkout: DinteroCheckoutInstance
@@ -1021,10 +1702,15 @@ export interface DinteroEmbedCheckoutOptions extends DinteroCheckoutOptions {
1021
1702
  ) =&gt; void;
1022
1703
  }
1023
1704
  &nbsp;
1705
+ interface InternalDinteroEmbedCheckoutOptions extends DinteroEmbedCheckoutOptions {
1706
+ innerContainer: HTMLDivElement;
1707
+ }
1708
+ &nbsp;
1024
1709
  /**
1025
1710
  * An event handler that navigates to the href in the event.
1026
1711
  */
1027
- const followHref: SubscriptionHandler = (event: any): void =&gt; {
1712
+ const followHref: SubscriptionHandler = (event: any, checkout: DinteroCheckoutInstance): void =&gt; {
1713
+ cleanUpPopOut(checkout);
1028
1714
  <span class="missing-if-branch" title="else path not taken" >E</span>if (event.href) {
1029
1715
  windowLocationAssign(event.href);
1030
1716
  }
@@ -1053,7 +1739,7 @@ const setIframeHeight: SubscriptionHandler = (event: any, checkout: DinteroCheck
1053
1739
  behavior: 'smooth',
1054
1740
  });
1055
1741
  } catch (e){
1056
- // Ignore erorr silenty bug log it to the console.
1742
+ // Ignore error silently bug log it to the console.
1057
1743
  <span class="cstat-no" title="statement not covered" > console.error(e);</span>
1058
1744
  }
1059
1745
  };
@@ -1067,36 +1753,237 @@ const setLanguage: SubscriptionHandler = (event: any, checkout: DinteroCheckoutI
1067
1753
  }
1068
1754
  };
1069
1755
  &nbsp;
1070
- const handleWithResult = (
1071
- sid: string,
1072
- endpoint: string,
1073
- handler: SubscriptionHandler
1074
- ): SubscriptionHandler =&gt; {
1075
- return (event: any, checkout: DinteroCheckoutInstance) =&gt; {
1076
- const eventKeys = [
1077
- "sid",
1078
- "merchant_reference",
1079
- "transaction_id",
1080
- "error",
1081
- ];
1082
- const pairs = eventKeys.map((key) =&gt; [key, event[key]]);
1083
- if (event.type === CheckoutEvents.SessionCancel &amp;&amp; !event.error) {
1084
- pairs.push(["error", "cancelled"]);
1756
+ /**
1757
+ * Wrap function with try catch so an error in a single function won't short circuit other code in the current context.
1758
+ */
1759
+ const safelyInvoke = <span class="fstat-no" title="function not covered" >(f</span>n: () =&gt; void) =&gt; {
1760
+ <span class="cstat-no" title="statement not covered" > try {</span>
1761
+ <span class="cstat-no" title="statement not covered" > fn();</span>
1762
+ } catch (e) {
1763
+ <span class="cstat-no" title="statement not covered" > console.error(e);</span>
1764
+ }
1765
+ }
1766
+ &nbsp;
1767
+ /**
1768
+ * Handle messages sendt to the SDK from the pop out.
1769
+ */
1770
+ const createPopOutMessageHandler = (source: Window, checkout: DinteroCheckoutInstance) =&gt; {
1771
+ // Change language in embed if changed in pop out
1772
+ const popOutChangedLanguageHandler = {
1773
+ internalPopOutHandler: true,
1774
+ eventTypes: [InternalCheckoutEvents.LanguageChanged],
1775
+ handler: <span class="fstat-no" title="function not covered" >(e</span>ventData: any, checkout: DinteroCheckoutInstance) =&gt; {
1776
+ // Tell the embedded checkout to change language.
1777
+ <span class="cstat-no" title="statement not covered" > postSetLanguage(checkout.iframe, checkout.options.sid, eventData.language);</span>
1085
1778
  }
1086
- pairs.push(["language", checkout.language]);
1087
- pairs.push(["sdk", pkg.version]);
1088
- const urlQuery = pairs
1089
- .filter(([key, value]) =&gt; value)
1090
- .map(([key, value]) =&gt; `${key}=${value}`)
1091
- .join("&amp;");
1092
- checkout.iframe.setAttribute(
1093
- "src",
1094
- `${endpoint}/embedResult/?${urlQuery}`
1095
- );
1096
- handler(event, checkout);
1097
1779
  };
1780
+ &nbsp;
1781
+ // Close pop out, and remove SDK rendered button when payment is completed.
1782
+ const paymentCompletedEvents = [
1783
+ CheckoutEvents.SessionCancel,
1784
+ CheckoutEvents.SessionPaymentOnHold,
1785
+ CheckoutEvents.SessionPaymentAuthorized,
1786
+ CheckoutEvents.SessionPaymentError
1787
+ ];
1788
+ const popOutCompletedHandler = {
1789
+ internalPopOutHandler: true,
1790
+ eventTypes: paymentCompletedEvents,
1791
+ handler: <span class="fstat-no" title="function not covered" >(e</span>ventData: any, checkout: DinteroCheckoutInstance) =&gt; {
1792
+ <span class="cstat-no" title="statement not covered" > if (eventData.href) {</span>
1793
+ // Remove open pop out button rendered by SDK
1794
+ <span class="cstat-no" title="statement not covered" > removePopOutButton();</span>
1795
+ &nbsp;
1796
+ // Close checkout
1797
+ <span class="cstat-no" title="statement not covered" > try {</span>
1798
+ <span class="cstat-no" title="statement not covered" > source.close();</span>
1799
+ } catch (e) {
1800
+ <span class="cstat-no" title="statement not covered" > console.error(e);</span>
1801
+ }
1802
+ }
1803
+ else {
1804
+ <span class="cstat-no" title="statement not covered" > console.error('Payment Complete event missing href property');</span>
1805
+ }
1806
+ }
1807
+ };
1808
+ &nbsp;
1809
+ // Listens to messages from pop out window and routes the events to dedicated handlers
1810
+ const messageRouter = (event: MessageEvent) =&gt; {
1811
+ // Check that we should handle the message
1812
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
1813
+ event.source === source &amp;&amp;
1814
+ <span class="branch-1 cbranch-no" title="branch not covered" > event.data.context === 'popOut' </span>&amp;&amp;
1815
+ <span class="branch-2 cbranch-no" title="branch not covered" > event.data.sid === checkout.options.sid</span>
1816
+ ) {
1817
+ // Check if handler matches incoming event and trigger the handler if so.
1818
+ <span class="cstat-no" title="statement not covered" > [</span>
1819
+ // SDK events for managing the pop out flow.
1820
+ popOutChangedLanguageHandler,
1821
+ popOutCompletedHandler,
1822
+ &nbsp;
1823
+ // Events configured when the checkout was embedded.
1824
+ ...checkout.handlers
1825
+ ]
1826
+ .forEach(<span class="fstat-no" title="function not covered" >handlerObject </span>=&gt; {
1827
+ <span class="cstat-no" title="statement not covered" > if ((handlerObject.eventTypes as string[]).includes(event.data.type) &amp;&amp; handlerObject.handler) {</span>
1828
+ // Invoking the handler function if the event type matches the handler.
1829
+ <span class="cstat-no" title="statement not covered" > safelyInvoke(<span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1830
+ <span class="cstat-no" title="statement not covered" > handlerObject.handler(event.data, checkout)</span>
1831
+ })
1832
+ }
1833
+ });
1834
+ }
1835
+ };
1836
+ // Add messageRouter event listener to the Pop Out
1837
+ window.addEventListener('message', messageRouter);
1838
+ &nbsp;
1839
+ // Return unsubscribe function
1840
+ return () =&gt; {
1841
+ window.removeEventListener('message', messageRouter);
1842
+ };
1843
+ };
1844
+ &nbsp;
1845
+ /**
1846
+ * Configures and shows the pop out with the payment options.
1847
+ */
1848
+ const showPopOut = async (event: ShowPopOutButton, checkout: DinteroCheckoutInstance) =&gt; {
1849
+ const { close, focus, popOutWindow } = await openPopOut({
1850
+ sid: checkout.options.sid,
1851
+ endpoint: checkout.options.endpoint,
1852
+ shouldCallValidateSession: Boolean(checkout.options.onValidateSession),
1853
+ language: event.language,
1854
+ onOpen: (popOutWindow: Window) =&gt; createPopOutMessageHandler(popOutWindow, checkout),
1855
+ onClose: () =&gt; {
1856
+ removeBackdrop();
1857
+ postClosePopOutEvent(checkout.iframe, checkout.options.sid);
1858
+ setPopOutButtonDisabled(false);
1859
+ checkout.popOutWindow = undefined;
1860
+ },
1861
+ })
1862
+ <span class="missing-if-branch" title="else path not taken" >E</span>if(popOutWindow){
1863
+ postOpenPopOutEvent(checkout.iframe, checkout.options.sid);
1864
+ // Add pop out window to checkout instance
1865
+ checkout.popOutWindow = popOutWindow;
1866
+ createBackdrop({ focus, close, event });
1867
+ return true;
1868
+ } else {
1869
+ <span class="cstat-no" title="statement not covered" > postOpenPopOutFailedEvent(checkout.iframe, checkout.options.sid);</span>
1870
+ <span class="cstat-no" title="statement not covered" > return false;</span>
1871
+ }
1872
+ }
1873
+ &nbsp;
1874
+ /**
1875
+ * Create callback function for the client side validation flow. It allows the
1876
+ * host application to validate the content of the payment session before the
1877
+ * pop out is opened.
1878
+ */
1879
+ const createPopOutValidationCallback = <span class="fstat-no" title="function not covered" >(e</span>vent: ShowPopOutButton, checkout: DinteroCheckoutInstance) =&gt; {
1880
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >(r</span>esult: SessionValidationCallback) =&gt; {</span>
1881
+ // Tell the embedded iframe about the validation result so it can show an error message if
1882
+ // the validation failed.
1883
+ <span class="cstat-no" title="statement not covered" > postValidationResult(checkout.iframe, checkout.options.sid, result);</span>
1884
+ <span class="cstat-no" title="statement not covered" > if (result.success &amp;&amp; checkout.popOutWindow) {</span>
1885
+ // Redirect user to session in pop out window
1886
+ <span class="cstat-no" title="statement not covered" > checkout.popOutWindow.location.href = getPopOutUrl({</span>
1887
+ sid: checkout.options.sid,
1888
+ endpoint: checkout.options.endpoint,
1889
+ shouldCallValidateSession: false,
1890
+ language: event.language,
1891
+ });
1892
+ &nbsp;
1893
+ } else {
1894
+ // Close pop out
1895
+ <span class="cstat-no" title="statement not covered" > if (checkout.popOutWindow) {</span>
1896
+ <span class="cstat-no" title="statement not covered" > checkout.popOutWindow.close();</span>
1897
+ }
1898
+ // Log validation error to console log.
1899
+ <span class="cstat-no" title="statement not covered" > console.error(result.clientValidationError);</span>
1900
+ }
1901
+ }
1902
+ }
1903
+ &nbsp;
1904
+ /**
1905
+ * Handle click event on the SDK rendered pop out button
1906
+ */
1907
+ const handlePopOutButtonClick = async (event: ShowPopOutButton, checkout: DinteroCheckoutInstance) =&gt; {
1908
+ // Disable button while pop out is open
1909
+ const opened = await showPopOut(event, checkout);
1910
+ &nbsp;
1911
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (opened &amp;&amp; checkout.options.onValidateSession) {
1912
+ // Let the host application validate the payment session before opening checkout.
1913
+ &nbsp;
1914
+ // Tell the embedded iframe that we are validating the session
1915
+ <span class="cstat-no" title="statement not covered" > postValidatePopOutEvent(checkout.iframe, checkout.options.sid);</span>
1916
+ &nbsp;
1917
+ // Create callback function added to the SDK event and onValidateSession attributes
1918
+ const <span class="cstat-no" title="statement not covered" >callback = createPopOutValidationCallback(event, checkout)</span>
1919
+ &nbsp;
1920
+ // Invoke onValidateSession function defined in checkout options
1921
+ <span class="cstat-no" title="statement not covered" > try {</span>
1922
+ <span class="cstat-no" title="statement not covered" > checkout.options.onValidateSession({</span>
1923
+ type: CheckoutEvents.ValidateSession,
1924
+ session: checkout.session,
1925
+ callback
1926
+ }, checkout, callback);
1927
+ } catch (e) {
1928
+ <span class="cstat-no" title="statement not covered" > console.error(e);</span>
1929
+ <span class="cstat-no" title="statement not covered" > postValidationResult(checkout.iframe, checkout.options.sid, {</span>
1930
+ success: false,
1931
+ clientValidationError: 'Validation runtime error'
1932
+ });
1933
+ }
1934
+ }
1935
+ }
1936
+ &nbsp;
1937
+ /**
1938
+ * Type guard for ShowPopOutButton
1939
+ */
1940
+ const isShowPopOutButton = (event: any): event is ShowPopOutButton =&gt; {
1941
+ return event &amp;&amp; event.type === InternalCheckoutEvents.ShowPopOutButton;
1942
+ }
1943
+ &nbsp;
1944
+ /**
1945
+ * Display the SDK rendered pop out button on top of the embedded iframe
1946
+ */
1947
+ const handleShowButton: SubscriptionHandler = (event: any, checkout: DinteroCheckoutInstance): void =&gt; {
1948
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (isShowPopOutButton(event)) {
1949
+ addPopOutButton({
1950
+ container: checkout.options.innerContainer,
1951
+ label: event.openLabel,
1952
+ top: event.top,
1953
+ left: event.left,
1954
+ right: event.right,
1955
+ styles: event.styles,
1956
+ disabled: event.disabled,
1957
+ onClick: () =&gt; handlePopOutButtonClick(event, checkout)
1958
+ });
1959
+ setBackdropLabels(event);
1960
+ }
1961
+ };
1962
+ &nbsp;
1963
+ /**
1964
+ * Remove the pop out button above the embedded iframe
1965
+ */
1966
+ const handleRemoveButton: SubscriptionHandler = (event: any, checkout: DinteroCheckoutInstance): void =&gt; {
1967
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (event.type === InternalCheckoutEvents.HidePopOutButton) {
1968
+ removePopOutButton();
1969
+ }
1098
1970
  };
1099
1971
  &nbsp;
1972
+ const cleanUpPopOut = (checkout: DinteroCheckoutInstance) =&gt; {
1973
+ // Ensures that the pop out is no longer open when the payment is completed or the checkout is destroyed.
1974
+ removePopOutButton();
1975
+ removeBackdrop();
1976
+ if (checkout.popOutWindow) {
1977
+ try {
1978
+ checkout.popOutWindow.close();
1979
+ // Pop out message handlers will be removed when the pop out window is closed
1980
+ // via the interval created by openPopOut.
1981
+ } catch (e) {
1982
+ console.error(e);
1983
+ }
1984
+ }
1985
+ }
1986
+ &nbsp;
1100
1987
  &nbsp;
1101
1988
  /**
1102
1989
  * Show a dintero payment session in an embedded iframe.
@@ -1104,11 +1991,21 @@ const handleWithResult = (
1104
1991
  export const embed = async (
1105
1992
  options: DinteroEmbedCheckoutOptions
1106
1993
  ): Promise&lt;DinteroCheckoutInstance&gt; =&gt; {
1994
+ // Create inner container to offset any styling on the container.
1995
+ const innerContainer = document.createElement('div');
1996
+ innerContainer.style.position = 'relative';
1997
+ innerContainer.style['box-sizing'] = 'border-box';
1998
+ &nbsp;
1999
+ const internalOptions = {
2000
+ endpoint: "https://checkout.dintero.com",
2001
+ innerContainer: innerContainer,
2002
+ ...options
2003
+ };
1107
2004
  const {
1108
2005
  container,
1109
2006
  sid,
1110
2007
  language,
1111
- endpoint = "https://checkout.dintero.com",
2008
+ endpoint,
1112
2009
  onSession,
1113
2010
  onSessionCancel,
1114
2011
  onPayment,
@@ -1119,33 +2016,47 @@ export const embed = async (
1119
2016
  onSessionLockFailed,
1120
2017
  onActivePaymentType,
1121
2018
  onValidateSession,
1122
- } = options;
2019
+ popOut
2020
+ } = internalOptions;
2021
+ &nbsp;
1123
2022
  let checkout: DinteroCheckoutInstance | undefined;
1124
2023
  const subscriptions: Subscription[] = [];
2024
+ let has_delivered_final_event = false;
1125
2025
  &nbsp;
1126
2026
  // Create iframe
2027
+ container.appendChild(innerContainer);
1127
2028
  const { iframe, initiate } = createIframeAsync(
1128
- container,
2029
+ innerContainer,
1129
2030
  endpoint,
1130
2031
  getSessionUrl({
1131
2032
  sid,
1132
2033
  endpoint,
1133
2034
  language,
1134
2035
  ui: "inline",
1135
- shouldCallValidateSession: onValidateSession !== undefined
2036
+ shouldCallValidateSession: onValidateSession !== undefined,
2037
+ popOut,
1136
2038
  }),
1137
2039
  );
2040
+ &nbsp;
1138
2041
  &nbsp;
1139
2042
  /**
1140
- * Function that removes the iframe and all event listeners.
2043
+ * Function that removes the iframe, pop out and all event listeners.
1141
2044
  */
1142
2045
  const destroy = () =&gt; {
2046
+ cleanUpPopOut(checkout);
1143
2047
  <span class="missing-if-branch" title="else path not taken" >E</span>if (iframe) {
2048
+ if (internalOptions.popOut) {
2049
+ // Try to remove backdrop if it exists
2050
+ removeBackdrop();
2051
+ }
1144
2052
  subscriptions.forEach((sub) =&gt; sub.unsubscribe());
1145
2053
  if (iframe.parentElement) {
1146
- container.removeChild(iframe);
2054
+ innerContainer.removeChild(iframe);
1147
2055
  }
1148
2056
  }
2057
+ if(innerContainer.parentElement){
2058
+ container.removeChild(innerContainer);
2059
+ }
1149
2060
  };
1150
2061
  &nbsp;
1151
2062
  /**
@@ -1167,6 +2078,7 @@ export const embed = async (
1167
2078
  },
1168
2079
  eventTypes: [resolveEvent],
1169
2080
  checkout,
2081
+ source: checkout.iframe.contentWindow,
1170
2082
  }));
1171
2083
  eventSubscriptions.push(subscribe({
1172
2084
  sid,
@@ -1177,6 +2089,7 @@ export const embed = async (
1177
2089
  },
1178
2090
  eventTypes: [rejectEvent],
1179
2091
  checkout,
2092
+ source: checkout.iframe.contentWindow,
1180
2093
  }));
1181
2094
  action();
1182
2095
  });
@@ -1205,13 +2118,65 @@ export const embed = async (
1205
2118
  const submitValidationResult = <span class="fstat-no" title="function not covered" >(r</span>esult: SessionValidationCallback) =&gt; {
1206
2119
  <span class="cstat-no" title="statement not covered" > postValidationResult(iframe, sid, result);</span>
1207
2120
  }
2121
+ &nbsp;
2122
+ /**
2123
+ * Internal result event message handler wrapper, to replace the content of the iframe with a success/or
2124
+ * error message. Only used when the embed function in the SDK has a dedicated handler for onPayment, onError etc.
2125
+ * If no custom handler is set the followHref handler is used instead.
2126
+ */
2127
+ const handleWithResult = (
2128
+ sid: string,
2129
+ endpoint: string,
2130
+ handler: SubscriptionHandler
2131
+ ): SubscriptionHandler =&gt; {
2132
+ return (event: any, checkout: DinteroCheckoutInstance) =&gt; {
2133
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!has_delivered_final_event) {
2134
+ has_delivered_final_event = true;
2135
+ cleanUpPopOut(checkout);
2136
+ &nbsp;
2137
+ const eventKeys = [
2138
+ "sid",
2139
+ "merchant_reference",
2140
+ "transaction_id",
2141
+ "error",
2142
+ ];
2143
+ const pairs = eventKeys.map((key) =&gt; [key, event[key]]);
2144
+ if (event.type === CheckoutEvents.SessionCancel &amp;&amp; !event.error) {
2145
+ pairs.push(["error", "cancelled"]);
2146
+ }
2147
+ pairs.push(["language", checkout.language]);
2148
+ pairs.push(["sdk", pkg.version]);
2149
+ const urlQuery = pairs
2150
+ .filter(([key, value]) =&gt; value)
2151
+ .map(([key, value]) =&gt; `${key}=${value}`)
2152
+ .join("&amp;");
2153
+ checkout.iframe.setAttribute(
2154
+ "src",
2155
+ `${endpoint}/embedResult/?${urlQuery}`
2156
+ );
2157
+ handler(event, checkout);
2158
+ };
2159
+ }
2160
+ };
2161
+ &nbsp;
1208
2162
  &nbsp;
1209
2163
  const wrappedOnValidateSession = (
1210
2164
  event: ValidateSession,
1211
2165
  checkout: DinteroCheckoutInstance,
1212
2166
  ) =&gt; {
1213
2167
  if (onValidateSession) {
1214
- onValidateSession(event, checkout, submitValidationResult);
2168
+ try {
2169
+ onValidateSession({
2170
+ ...event,
2171
+ callback: submitValidationResult
2172
+ }, checkout, submitValidationResult);
2173
+ } catch (e) {
2174
+ <span class="cstat-no" title="statement not covered" > console.error(e);</span>
2175
+ <span class="cstat-no" title="statement not covered" > submitValidationResult({</span>
2176
+ success: false,
2177
+ clientValidationError: "Validation runtime error"
2178
+ })
2179
+ }
1215
2180
  }
1216
2181
  }
1217
2182
  &nbsp;
@@ -1224,19 +2189,19 @@ export const embed = async (
1224
2189
  }
1225
2190
  }
1226
2191
  &nbsp;
1227
- // Create checkout object that wraps the destroy function.
1228
- checkout = {
1229
- destroy,
1230
- iframe,
1231
- language,
1232
- lockSession,
1233
- refreshSession,
1234
- setActivePaymentProductType,
1235
- submitValidationResult,
1236
- };
2192
+ const wrappedOnLoadedOrUpdated = (
2193
+ event: SessionLoaded | SessionUpdated,
2194
+ checkout: DinteroCheckoutInstance,
2195
+ ) =&gt; {
2196
+ // Update the checkout instance to include the session object
2197
+ checkout.session = event.session;
2198
+ if (onSession) {
2199
+ onSession(event, checkout);
2200
+ }
2201
+ }
1237
2202
  &nbsp;
1238
2203
  // Add event handlers (or in some cases add a fallback href handler).
1239
- [
2204
+ const handlers = [
1240
2205
  {
1241
2206
  handler: setLanguage,
1242
2207
  eventTypes: [InternalCheckoutEvents.LanguageChanged],
@@ -1250,7 +2215,7 @@ export const embed = async (
1250
2215
  eventTypes: [InternalCheckoutEvents.ScrollToTop],
1251
2216
  },
1252
2217
  {
1253
- handler: onSession as SubscriptionHandler | undefined,
2218
+ handler: wrappedOnLoadedOrUpdated as SubscriptionHandler | undefined,
1254
2219
  eventTypes: [
1255
2220
  CheckoutEvents.SessionLoaded,
1256
2221
  CheckoutEvents.SessionUpdated,
@@ -1305,7 +2270,31 @@ export const embed = async (
1305
2270
  handler: wrappedOnValidateSession as SubscriptionHandler | undefined,
1306
2271
  eventTypes: [CheckoutEvents.ValidateSession],
1307
2272
  },
1308
- ].forEach(({ handler, eventTypes }) =&gt; {
2273
+ {
2274
+ handler: handleShowButton as SubscriptionHandler,
2275
+ eventTypes: [InternalCheckoutEvents.ShowPopOutButton],
2276
+ },
2277
+ {
2278
+ handler: handleRemoveButton as SubscriptionHandler,
2279
+ eventTypes: [InternalCheckoutEvents.HidePopOutButton],
2280
+ },
2281
+ ];
2282
+ // Create checkout object that wraps the destroy function.
2283
+ checkout = {
2284
+ destroy,
2285
+ iframe,
2286
+ language,
2287
+ lockSession,
2288
+ refreshSession,
2289
+ setActivePaymentProductType,
2290
+ submitValidationResult,
2291
+ options: internalOptions,
2292
+ handlers,
2293
+ session: undefined,
2294
+ popOutWindow: undefined,
2295
+ };
2296
+ &nbsp;
2297
+ handlers.forEach(({ handler, eventTypes }) =&gt; {
1309
2298
  if (handler) {
1310
2299
  subscriptions.push(
1311
2300
  subscribe({
@@ -1314,6 +2303,7 @@ export const embed = async (
1314
2303
  handler,
1315
2304
  eventTypes,
1316
2305
  checkout,
2306
+ source: checkout.iframe.contentWindow
1317
2307
  })
1318
2308
  );
1319
2309
  }
@@ -1325,6 +2315,7 @@ export const embed = async (
1325
2315
  return checkout;
1326
2316
  };
1327
2317
  &nbsp;
2318
+ &nbsp;
1328
2319
  /**
1329
2320
  * Redirect the customer to a payment session in the Dintero Checkout.
1330
2321
  */
@@ -1352,7 +2343,6 @@ export type {
1352
2343
  ValidateSession,
1353
2344
  SessionValidationCallback,
1354
2345
  } from "./checkout";
1355
- &nbsp;
1356
2346
  &nbsp;</pre></td></tr></table></pre>
1357
2347
 
1358
2348
  <div class='push'></div><!-- for sticky footer -->
@@ -1360,7 +2350,7 @@ export type {
1360
2350
  <div class='footer quiet pad2 space-top1 center small'>
1361
2351
  Code coverage generated by
1362
2352
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1363
- at Thu Aug 03 2023 12:32:21 GMT+0000 (Coordinated Universal Time)
2353
+ at Wed Oct 04 2023 07:34:20 GMT+0000 (Coordinated Universal Time)
1364
2354
  </div>
1365
2355
  </div>
1366
2356
  <script src="prettify.js"></script>