Skip to content
This repository was archived by the owner on Oct 1, 2018. It is now read-only.

Commit 57a8909

Browse files
committed
feat(stackblitz): stackblitz implementation poc
1 parent 9bbff70 commit 57a8909

File tree

6 files changed

+1471
-389
lines changed

6 files changed

+1471
-389
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"@angular/platform-browser-dynamic": "5.2.2",
4141
"@angular/router": "5.2.2",
4242
"@angular/service-worker": "5.2.2",
43+
"@stackblitz/sdk": "0.3.4",
4344
"@types/hammerjs": "2.0.35",
4445
"core-js": "2.4.1",
4546
"hammerjs": "2.0.8",
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<h2> Examples </h2>
2-
<div class="code-example" *ngFor="let example of operatorExamples" appHighlightJs>
2+
3+
<div class="code-example" *ngFor="let i = index;let example of operatorExamples" appHighlightJs>
34
<div class="code-block mat-elevation-z2">
45
<div class="example-header">
56
<div class="header-title" [innerHTML]="example.name"></div>
@@ -8,7 +9,8 @@ <h2> Examples </h2>
89
</button>
910
</div>
1011
<div class="bin-wrapper">
11-
<iframe [src]="example.externalLink.url | safeUrl" [title]="example.name"></iframe>
12+
<div id="exampleDiv-{{i}}"></div>
13+
<!-- <iframe [src]="example.externalLink.url | safeUrl" [title]="example.name"></iframe> -->
1214
</div>
1315
</div>
1416
</div>
Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,48 @@
1-
import { Component, EventEmitter, Output, Input } from '@angular/core';
1+
import {
2+
Component,
3+
EventEmitter,
4+
Output,
5+
Input,
6+
OnChanges
7+
} from '@angular/core';
8+
import sdk from '@stackblitz/sdk';
9+
210
import { OperatorExample } from '../../../../operator-docs';
311

412
@Component({
513
selector: 'app-operator-examples',
614
templateUrl: './operator-examples.component.html',
715
styleUrls: ['./operator-examples.component.scss']
816
})
9-
export class OperatorExamplesComponent {
17+
export class OperatorExamplesComponent implements OnChanges {
1018
@Input() operatorExamples: OperatorExample[];
1119
@Output() copyToClipboard = new EventEmitter<string>();
20+
21+
ngOnChanges() {
22+
if (Boolean(this.operatorExamples)) {
23+
this.operatorExamples.forEach(this.initExamples);
24+
}
25+
}
26+
27+
initExamples(example: OperatorExample, index: number) {
28+
const code = example.code;
29+
const html = `<h1>${example.name}</h1><br/><br/><div id="output"></div>`;
30+
31+
const project = {
32+
files: {
33+
'index.ts': code,
34+
'index.html': html
35+
},
36+
title: 'Dynamically Generated Project',
37+
description: 'Created with <3 by the StackBlitz SDK!',
38+
template: 'typescript',
39+
tags: ['stackblitz', 'sdk'],
40+
dependencies: {
41+
rxjs: '5.5.6'
42+
}
43+
};
44+
const divName = `exampleDiv-${index}`;
45+
46+
setTimeout(sdk.embedProject, 0, divName, project, { height: 600 });
47+
}
1248
}

src/operator-docs/combination/combineAll.ts

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,22 +50,26 @@ export const combineAll: OperatorDoc = {
5050
{
5151
name:
5252
'Map two click events to a finite interval Observable, then apply <span class="markdown-code">combineAll</span>',
53-
code: `
54-
import { map, combineAll, take } from 'rxjs/operators';
55-
import { fromEvent } from 'rxjs/observable/fromEvent';
53+
code: `import { map, combineAll, take } from 'rxjs/operators';
54+
import { interval } from 'rxjs/observable/interval';
55+
import { fromEvent } from 'rxjs/observable/fromEvent';
5656
57-
const clicks = fromEvent(document, 'click');
58-
const higherOrder = clicks.pipe(
59-
map(ev =>
60-
interval(Math.random()*2000).pipe(take(3))
61-
),
62-
take(2)
63-
);
64-
const result = higherOrder.pipe(
65-
combineAll()
66-
);
67-
result.subscribe(x => console.log(x));
68-
`,
57+
const clicks = fromEvent(document, 'click');
58+
const higherOrder = clicks.pipe(
59+
map(ev =>
60+
interval(Math.random()*2000).pipe(take(3))
61+
),
62+
take(2)
63+
);
64+
65+
const result = higherOrder.pipe(
66+
combineAll()
67+
);
68+
69+
result.subscribe(x => {
70+
const output = \`<h3>$\{x.toString\(\)\}<h3>\`;
71+
document.getElementById('output').innerHTML = output;
72+
});`,
6973
externalLink: {
7074
platform: 'JSBin',
7175
url: 'http://jsbin.com/peparawuvo/1/embed?js,console,output'

src/operator-docs/combination/concat.ts

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,20 +77,21 @@ export const concat: OperatorDoc = {
7777
{
7878
name:
7979
'Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10',
80-
code: `
81-
import { take } from 'rxjs/operators';
82-
import { interval } from 'rxjs/observable/interval';
83-
import { range } from 'rxjs/observable/range';
84-
import { concat } from 'rxjs/observable/concat';
80+
code: `import { take } from 'rxjs/operators';
81+
import { interval } from 'rxjs/observable/interval';
82+
import { range } from 'rxjs/observable/range';
83+
import { concat } from 'rxjs/observable/concat';
8584
86-
const timer = interval(1000).pipe(take(4));
87-
const sequence = range(1, 10);
88-
const result = concat(timer, sequence);
89-
result.subscribe(x => console.log(x));
85+
const timer = interval(1000).pipe(take(4));
86+
const sequence = range(1, 10);
87+
const result = concat(timer, sequence);
88+
result.subscribe(x => {
89+
const output = \`<h3>$\{x.toString\(\)\}<h3>\`;
90+
document.getElementById('output').innerHTML = output;
91+
});
9092
91-
// results in:
92-
// 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10
93-
`,
93+
// results in:
94+
// 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10`,
9495
externalLink: {
9596
platform: 'JSBin',
9697
url: 'http://jsbin.com/doqoyimaxu/embed?js,console'
@@ -106,7 +107,10 @@ export const concat: OperatorDoc = {
106107
const timer2 = interval(2000).pipe(take(6));
107108
const timer3 = interval(500).pipe(take(10));
108109
const result = timer1.pipe(concat(timer2, timer3));
109-
result.subscribe(x => console.log(x));
110+
result.subscribe(x => {
111+
const output = \`<h3>$\{x.toString\(\)\}<h3>\`;
112+
document.getElementById('output').innerHTML = output;
113+
});
110114
111115
// results in the following:
112116
// (Prints to console sequentially)

0 commit comments

Comments
 (0)