From 33a3dba37ef524f52e8b9de97610df1903135164 Mon Sep 17 00:00:00 2001 From: Ward Bell Date: Mon, 2 Nov 2015 00:28:38 -0800 Subject: [PATCH] (docs) devguide pipes: add example code and display it --- public/docs/_examples/pipes/ts/.gitignore | 1 + public/docs/_examples/pipes/ts/package.json | 21 ++ .../docs/_examples/pipes/ts/src/app/app.html | 46 ++++ public/docs/_examples/pipes/ts/src/app/app.ts | 52 +++++ .../ts/src/app/exponential-strength-pipe.ts | 21 ++ .../pipes/ts/src/app/fetch-json-pipe.ts | 26 +++ .../pipes/ts/src/app/hero-birthday.2.ts | 16 ++ .../pipes/ts/src/app/hero-list-component.ts | 25 ++ .../ts/src/app/power-boost-calculator.ts | 21 ++ .../pipes/ts/src/app/power-booster.ts | 15 ++ .../pipes/ts/src/app/window.extension.d.ts | 3 + .../docs/_examples/pipes/ts/src/heroes.json | 6 + public/docs/_examples/pipes/ts/src/index.html | 23 ++ .../docs/_examples/pipes/ts/src/tsconfig.json | 11 + public/docs/ts/latest/guide/pipes.jade | 214 ++++-------------- .../pipes/date-format-toggle-anim.gif | Bin 0 -> 12118 bytes .../images/devguide/pipes/hero-list.png | Bin 0 -> 34026 bytes .../devguide/pipes/power-boost-calculator.png | Bin 0 -> 20075 bytes .../images/devguide/pipes/power-booster.png | Bin 0 -> 12176 bytes 19 files changed, 331 insertions(+), 170 deletions(-) create mode 100644 public/docs/_examples/pipes/ts/.gitignore create mode 100644 public/docs/_examples/pipes/ts/package.json create mode 100644 public/docs/_examples/pipes/ts/src/app/app.html create mode 100644 public/docs/_examples/pipes/ts/src/app/app.ts create mode 100644 public/docs/_examples/pipes/ts/src/app/exponential-strength-pipe.ts create mode 100644 public/docs/_examples/pipes/ts/src/app/fetch-json-pipe.ts create mode 100644 public/docs/_examples/pipes/ts/src/app/hero-birthday.2.ts create mode 100644 public/docs/_examples/pipes/ts/src/app/hero-list-component.ts create mode 100644 public/docs/_examples/pipes/ts/src/app/power-boost-calculator.ts create mode 100644 public/docs/_examples/pipes/ts/src/app/power-booster.ts create mode 100644 public/docs/_examples/pipes/ts/src/app/window.extension.d.ts create mode 100644 public/docs/_examples/pipes/ts/src/heroes.json create mode 100644 public/docs/_examples/pipes/ts/src/index.html create mode 100644 public/docs/_examples/pipes/ts/src/tsconfig.json create mode 100644 public/resources/images/devguide/pipes/date-format-toggle-anim.gif create mode 100644 public/resources/images/devguide/pipes/hero-list.png create mode 100644 public/resources/images/devguide/pipes/power-boost-calculator.png create mode 100644 public/resources/images/devguide/pipes/power-booster.png diff --git a/public/docs/_examples/pipes/ts/.gitignore b/public/docs/_examples/pipes/ts/.gitignore new file mode 100644 index 0000000000..6724ce3596 --- /dev/null +++ b/public/docs/_examples/pipes/ts/.gitignore @@ -0,0 +1 @@ +src/**/*.js \ No newline at end of file diff --git a/public/docs/_examples/pipes/ts/package.json b/public/docs/_examples/pipes/ts/package.json new file mode 100644 index 0000000000..7ba2b6bc56 --- /dev/null +++ b/public/docs/_examples/pipes/ts/package.json @@ -0,0 +1,21 @@ +{ + "name": "angular2-pipes", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "tsc": "tsc -p src -w", + "start": "live-server --open=src" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "angular2": "2.0.0-alpha.44", + "systemjs": "0.19.2" + }, + "devDependencies": { + "live-server": "^0.8.1", + "typescript": "^1.6.2" + } +} diff --git a/public/docs/_examples/pipes/ts/src/app/app.html b/public/docs/_examples/pipes/ts/src/app/app.html new file mode 100644 index 0000000000..bcaf614709 --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/app/app.html @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + +

The hero's birthday is {{ birthday | date }}

+ + + +

The hero's birthday is {{ birthday | date:"MM/dd/yy" }} /p> + + +


+ +

Hero Birthday 2

+loading... +
+ + + +

+ The chained hero's birthday is + {{ birthday | date | uppercase}} +

+ + + +

+ The chained hero's birthday is + {{ ( birthday | date:'fullDate' ) | uppercase}} +

+ + +
+ +loading... + +
+ +loading .. + diff --git a/public/docs/_examples/pipes/ts/src/app/app.ts b/public/docs/_examples/pipes/ts/src/app/app.ts new file mode 100644 index 0000000000..29bf1b84ed --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/app/app.ts @@ -0,0 +1,52 @@ +import {HeroBirthday as HeroBirthday2} from './hero-birthday.2'; +import {PowerBooster} from './power-booster'; +import {PowerBoostCalculator} from './power-boost-calculator'; +import {HeroListComponent} from './hero-list-component'; + +// #docregion hero-birthday +import {bootstrap, Component} from 'angular2/angular2' + +@Component({ + selector: 'hero-birthday', + // #docregion hero-birthday-template + template: `

The hero's birthday is {{ birthday | date }}

` + // #enddocregion hero-birthday-template +}) +export class HeroBirthday { + birthday = new Date(1988,3,15); // April 15, 1988 +} + +bootstrap(HeroBirthday); +// #enddocregion hero-birthday + +// #docregion async-message +@Component({ + selector: 'my-hero', + template: 'Message: {{delayedMessage | async}}', +}) +class MyHeroAsyncMessageComponent { + delayedMessage:Promise = new Promise((resolve, reject) => { + setTimeout(() => resolve('You are my Hero!'), 500); + }); +} + +// Initial view: "Message: " +// After 500ms: Message: You are my Hero!" +// #enddocregion async-message + +//// Drives the rest of the pipes chapter examples /// + +@Component({ + selector: 'my-app', + templateUrl: 'app/app.html', + directives:[ + HeroBirthday2, + PowerBooster, PowerBoostCalculator, + MyHeroAsyncMessageComponent, + HeroListComponent] +}) +class AppComponent { + birthday = new Date(1988,3,15); // April 15, 1988 +} +bootstrap(AppComponent); + \ No newline at end of file diff --git a/public/docs/_examples/pipes/ts/src/app/exponential-strength-pipe.ts b/public/docs/_examples/pipes/ts/src/app/exponential-strength-pipe.ts new file mode 100644 index 0000000000..bed8e2dd2e --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/app/exponential-strength-pipe.ts @@ -0,0 +1,21 @@ +// #docregion +import {Pipe} from 'angular2/angular2'; +/* + * Raise the value exponentially + * Takes an exponent argument that defaults to 1. + * Usage: + * value | exponentialStrength:exponent + * Example: + * {{ 2 | exponentialStrength:10}} + * formats to: 1024 +*/ +@Pipe({ + name: 'exponentialStrength' +}) +export class ExponentialStrengthPipe { + + transform(value:number, args:string[]) : any { + return Math.pow(value, parseInt(args[0] || '1', 10)); + } +} +// #enddocregion \ No newline at end of file diff --git a/public/docs/_examples/pipes/ts/src/app/fetch-json-pipe.ts b/public/docs/_examples/pipes/ts/src/app/fetch-json-pipe.ts new file mode 100644 index 0000000000..a1c61e538b --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/app/fetch-json-pipe.ts @@ -0,0 +1,26 @@ +/// + +// #docregion +import {Pipe} from 'angular2/angular2'; + +// #docregion pipe-metadata +@Pipe({ + name: 'fetch', + pure: false +}) +// #enddocregion pipe-metadata +export class FetchJsonPipe { + private fetchedValue:any; + private fetchPromise:Promise; + transform(value:string, args:string[]):any { + if (!this.fetchPromise) { + this.fetchPromise = window.fetch(value) + .then(result => result.json()) + .then(json => { + this.fetchedValue = json; + }); + } + + return this.fetchedValue; + } +} \ No newline at end of file diff --git a/public/docs/_examples/pipes/ts/src/app/hero-birthday.2.ts b/public/docs/_examples/pipes/ts/src/app/hero-birthday.2.ts new file mode 100644 index 0000000000..62a3da08bc --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/app/hero-birthday.2.ts @@ -0,0 +1,16 @@ +import {bootstrap, Component} from 'angular2/angular2' +// #docregion hero-birthday2 +@Component({ + selector: 'hero-birthday', + template: ` +

The hero's birthday is {{ birthday | date:format }}

+ + ` +}) +export class HeroBirthday { + birthday = new Date(1988,3,15); // April 15, 1988 + get format() { return this.toggle ? 'shortDate' : 'fullDate'} + toggle = true; + toggleFormat() { this.toggle = !this.toggle; } +} +// #enddocregion hero-birthday2 diff --git a/public/docs/_examples/pipes/ts/src/app/hero-list-component.ts b/public/docs/_examples/pipes/ts/src/app/hero-list-component.ts new file mode 100644 index 0000000000..7d4e0974e7 --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/app/hero-list-component.ts @@ -0,0 +1,25 @@ +// #docregion +import {bootstrap, Component, + CORE_DIRECTIVES, FORM_DIRECTIVES} from 'angular2/angular2' + +import {FetchJsonPipe} from './fetch-json-pipe' + +@Component({ + selector: 'hero-list', + template: ` +

Heroes from JSON File

+ +
+ {{hero.name}} +
+ +

Heroes as JSON: + {{'heroes.json' | fetch | json}} +

+ `, + directives:[CORE_DIRECTIVES], + pipes: [FetchJsonPipe] +}) +export class HeroListComponent { + /* I've got nothing to do ;-) */ +} diff --git a/public/docs/_examples/pipes/ts/src/app/power-boost-calculator.ts b/public/docs/_examples/pipes/ts/src/app/power-boost-calculator.ts new file mode 100644 index 0000000000..7ffad97c7e --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/app/power-boost-calculator.ts @@ -0,0 +1,21 @@ +// #docregion +import {Component, FORM_DIRECTIVES} from 'angular2/angular2' +import {ExponentialStrengthPipe} from './exponential-strength-pipe' + +@Component({ + selector: 'power-boost-calculator', + template: ` +

Power Boost Calculator

+
Normal power:
+
Boost factor:
+

+ Super Hero Power: {{power | exponentialStrength: factor}} +

+ `, + pipes: [ExponentialStrengthPipe], + directives: [FORM_DIRECTIVES] +}) +export class PowerBoostCalculator { + power = 5; + factor = 1; +} diff --git a/public/docs/_examples/pipes/ts/src/app/power-booster.ts b/public/docs/_examples/pipes/ts/src/app/power-booster.ts new file mode 100644 index 0000000000..071dbb0a75 --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/app/power-booster.ts @@ -0,0 +1,15 @@ +// #docregion +import {Component} from 'angular2/angular2' +import {ExponentialStrengthPipe} from './exponential-strength-pipe' + +@Component({ + selector: 'power-booster', + template: ` +

Power Booster

+

+ Super power boost: {{2 | exponentialStrength: 10}} +

+ `, + pipes: [ExponentialStrengthPipe] +}) +export class PowerBooster { } diff --git a/public/docs/_examples/pipes/ts/src/app/window.extension.d.ts b/public/docs/_examples/pipes/ts/src/app/window.extension.d.ts new file mode 100644 index 0000000000..c9ffbfb25a --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/app/window.extension.d.ts @@ -0,0 +1,3 @@ +interface Window { + fetch:(url: string, options?: {}) => Promise +} \ No newline at end of file diff --git a/public/docs/_examples/pipes/ts/src/heroes.json b/public/docs/_examples/pipes/ts/src/heroes.json new file mode 100644 index 0000000000..436b220d53 --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/heroes.json @@ -0,0 +1,6 @@ +[ + {"name": "Windstorm"}, + {"name": "Bombasto"}, + {"name": "Magneto"}, + {"name": "Tornado"} +] diff --git a/public/docs/_examples/pipes/ts/src/index.html b/public/docs/_examples/pipes/ts/src/index.html new file mode 100644 index 0000000000..30242dceae --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/index.html @@ -0,0 +1,23 @@ + + + + + Pipes + + + + + + +

Hero Birthday 1

+ loading... +
+ loading ... + + + diff --git a/public/docs/_examples/pipes/ts/src/tsconfig.json b/public/docs/_examples/pipes/ts/src/tsconfig.json new file mode 100644 index 0000000000..6a58b35a58 --- /dev/null +++ b/public/docs/_examples/pipes/ts/src/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "ES5", + "module": "commonjs", + "sourceMap": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "removeComments": false, + "noImplicitAny": false + } +} \ No newline at end of file diff --git a/public/docs/ts/latest/guide/pipes.jade b/public/docs/ts/latest/guide/pipes.jade index 446ef17493..4419859e74 100644 --- a/public/docs/ts/latest/guide/pipes.jade +++ b/public/docs/ts/latest/guide/pipes.jade @@ -4,7 +4,7 @@ include ../../../../_includes/_util-fns Getting data could be as simple as creating a local variable or as complex as streaming data over a Websocket. - Once data arrive, we could plaster them directly to screen. + Once data arrive, we could push their raw `toString` values directly to screen. That rarely makes for a good user experience. Almost everyone prefers a simple birthday date (April 15, 1988) to the original raw string format @@ -30,23 +30,13 @@ include ../../../../_includes/_util-fns All date samples are in my plunker http://plnkr.co/edit/RDlOma?p=preview --> -code-example(format="linenums" escape="html"). - import {bootstrap, Component} from 'angular2/angular2' - @Component({ - selector: 'hero-birthday', - template: `

The hero's birthday is {{ birthday | date }}

` - }) - class HeroBirthday { - birthday = new Date(1988,3,15); // April 15, 1988 - } - - bootstrap(HeroBirthday); ++makeExample('pipes/ts/src/app/app.ts', 'hero-birthday') + :markdown Focus on the component's template to see how we applied the built-in `DatePipe` while binding the `birthday` property. -code-example(format="linenums" escape="html"). -

The hero's birthday is {{ birthday | date }}

++makeExample('pipes/ts/src/app/app.html', 'hero-birthday-template')(format=".") :markdown Angular [template syntax](./template-syntax.html#pipe) includes a pipe operator ( | ) which we're @@ -75,8 +65,7 @@ code-example(format="linenums" escape="html"). We'll modify our birthday example to give the date pipe a format parameter. The formatted date should display as **04/15/88**. -code-example(format="linenums" escape="html"). -

The hero's birthday is {{ birthday | date:"MM/dd/yy" }}

++makeExample('pipes/ts/src/app/app.html', 'format-birthday')(format=".") :markdown The parameter value can be any valid @@ -85,25 +74,7 @@ code-example(format="linenums" escape="html"). Let's revise our example to bind the pipe's format parameter to the component's `format` property. -code-example(format="linenums" ). - @Component({ - selector: 'hero-birthday', - template: ` - <p>The hero's birthday is {{ birthday | date:format }}</p> - <button (click)="toggleFormat()">Toggle Format</button> - ` - }) - class HeroBirthday { - birthday = new Date(1988,3,15); // April 15, 1988 - format = 'shortDate'; - nextFormat = 'fullDate'; - - toggleFormat() { - let next = this.format; - this.format = this.nextFormat; - this.nextFormat = next; - } - } ++makeExample('pipes/ts/src/app/hero-birthday.2.ts', 'hero-birthday2') :markdown We also added a button to the template and bound its click event to the component's `toggleFormat` method. @@ -111,8 +82,12 @@ code-example(format="linenums" ). ('shortDate') and a longer form ('fullDate'). As we click the button, the displayed date alternates between - "**04/15/88**" and + "**04/15/1988**" and "**Friday, April 15, 1988**". + +figure.image-display + img(src='/resources/images/devguide/pipes/date-format-toggle-anim.gif' alt="Date Format Toggle") +:markdown .l-sub-section :markdown Learn more about the `DatePipes` format options in the [API Docs](../api/core/DatePipe-class.html). @@ -122,23 +97,16 @@ code-example(format="linenums" ). In the following example, we chain the birthday to the `DatePipe` and on to the `UpperCasePipe` so we can display the birthday in uppercase. The following birthday displays as **APR 15, 1988** - -code-example(format="linenums" escape="html"). -

- The chained hero's birthday is - {{ birthday | date | uppercase}} -

+ ++makeExample('pipes/ts/src/app/app.html', 'chained-birthday') + :markdown If we pass a parameter to a filter, we have to add parentheses to help the template compiler with the evaluation order. The following example displays **FRIDAY, APRIL 15, 1988** - -code-example(format="linenums" escape="html"). -

- The chained hero's birthday is - {{ ( birthday | date:'fullDate' ) | uppercase}} -

+ ++makeExample('pipes/ts/src/app/app.html', 'chained-parameter-birthday') .l-sub-section p Future improvements in the template compiler may eliminate the need for parentheses. @@ -147,35 +115,17 @@ code-example(format="linenums" escape="html"). :markdown ## Custom Pipes - We can easily create our own pipes. + We can write our own custom pipes. - Let's create a custom pipe named `ExponentialStrengthPipe` + Let's make a custom pipe named `ExponentialStrengthPipe` that can boost a hero's powers. + + Create a new file, `exponential-strength-pipe.ts`, and enter the following: -code-example(format="linenums" escape="html"). - import {bootstrap, Component, Pipe} from 'angular2/angular2' - - /* - * Raise the value exponentially - * Takes an exponent argument that defaults to 1. - * Usage: - * value | exponentialStrength:exponent - * Example: - * {{ 2 | exponentialStrength:10}} - * formats to: 1024 - */ - @Pipe({ - name: 'exponentialStrength' - }) - class ExponentialStrengthPipe { - - transform(value:number, args:string[]) : any { - return Math.pow(value, parseInt(args[0] || 1, 10)); - } - } + --> ++makeExample('pipes/ts/src/app/exponential-strength-pipe.ts') :markdown This pipe definition reveals several few key points @@ -191,21 +141,10 @@ code-example(format="linenums" escape="html"). * There will be one item in the array for each parameter passed to the pipe * `transform` returns a modified value that Angular converts to a string. - Now let's create a component to demonstrate our pipe and bootstrap it. - -code-example(format="linenums" escape="html"). - @Component({ - selector: 'power-booster', - template: ` -

- Super power boost: {{2 | exponentialStrength: 10}} -

- `, - pipes: [ExponentialStrengthPipe] - }) - class PowerBooster { } - - bootstrap(PowerBooster); + Now let's create a component to demonstrate our pipe. ++makeExample('pipes/ts/src/app/power-booster.ts') +figure.image-display + img(src='/resources/images/devguide/pipes/power-booster.png' alt="Power Booster") :markdown Two things to note: @@ -230,28 +169,11 @@ code-example(format="linenums" escape="html"). We could upgrade the example to a "Power Boost Calculator" that combines our pipe and two-way data binding with `ng-model`. -code-example(format="linenums" ). - import {bootstrap, Component, FORM_DIRECTIVES, Pipe} from 'angular2/angular2' - - @Component({ - selector: 'power-boost-calculator', - template: ` - <h2>Power Boost Calculator</h2> - <div>Normal power: <input [(ng-model)]="power"></div> - <div>Boost factor: <input [(ng-model)]="factor"></div> - <p> - Super Hero Power: {{power | exponentialStrength: factor}} - </p> - `, - pipes: [ExponentialStrengthPipe], - directives: [FORM_DIRECTIVES] - }) - class PowerBoosterCalculator { - power = 5; - factor = 1; - } ++makeExample('pipes/ts/src/app/power-boost-calculator.ts') - bootstrap(PowerBoosterCalculator); +figure.image-display + img(src='/resources/images/devguide/pipes/power-boost-calculator.png' alt="Power Boost Calculator") +:markdown .l-main-section :markdown @@ -276,20 +198,7 @@ code-example(format="linenums" ). It is stateful because the pipe maintains a subscription to the input and its returned values depend on that subscription. In the next example, we bind a simple promise to a view with the async pipe. - -code-example(format="linenums"). - @Component({ - selector: 'my-hero', - template: Message: '{{delayedMessage | async}}', - }) - class MyComponent { - delayedMessage:Promise = new Promise((resolve, reject) => { - setTimeout(() => resolve('You are my Hero!'), 500); - }); - } - - // Initial view: "Message: " - // After 500ms: Message: You are my Hero!" ++makeExample('pipes/ts/src/app/app.ts', 'async-message') :markdown The Async pipe saves boilerplate in the component code. @@ -302,62 +211,27 @@ code-example(format="linenums"). ### Implementing a Stateful Pipe Pipes are stateless by default. We must declare a pipe to be stateful - by setting the “pure” property of the @Pipe decorator to `false`. + by setting the `pure` property of the `@Pipe` decorator to `false`. This setting tells Angular’s change detection system to check the output of this pipe each cycle, whether its input has changed or not. - Here's how we'll decorate our new stateful "FetchJsonPipe" that + Here's how we'll decorate our new stateful `FetchJsonPipe` that makes an HTTP `fetch` request and (eventually) displays the data in the server's response: - - ``` - @Pipe({ - name: 'fetch', - pure: false - }) - ``` - - ++makeExample('pipes/ts/src/app/fetch-json-pipe.ts', 'pipe-metadata') +:markdown Immediately below we have the finished pipe. Its input value is an url to an endpoint that returns a JSON file. The pipe makes a one-time async request to the server and eventually receives the JSON response. ++makeExample('pipes/ts/src/app/fetch-json-pipe.ts') +:markdown + Next we use this pipe in two template bindings where we + 1. display hero names in an `ng-for` repeater + 1. chain the fetched results to the built-in `JsonPipe` that renders + the data in JSON format - ``` - @Pipe({ - name: 'fetch', - pure: false - }) - class FetchJsonPipe { - private fetchedValue:any; - private fetchPromise:Promise; - transform(value:string, args:string[]):any { - if (!this.fetchPromise) { - this.fetchPromise = fetch(value) - .then(result => result.json()) - .then(json => { - this.fetchedValue = json; - }); - } ++makeExample('pipes/ts/src/app/hero-list-component.ts') - return this.fetchedValue; - } - } - ``` - Next we use this pipe in a template binding where we chain the - fetched results to the built-in `JsonPipe` that renders - the data in JSON format: - -code-example(format="linenums" escape="html"). - @Component({ - selector: 'heroes-list' - }) - @View({ - template: ` - Heroes: {{'heroes.json' | fetch | json}} - `, - pipes: [FetchJsonPipe] - }) - class HeroesList { /* I've got nothing to do ;-) */ } - - bootstrap(HeroesList); +figure.image-display + img(src='/resources/images/devguide/pipes/hero-list.png' alt="Hero List") .l-main-section :markdown diff --git a/public/resources/images/devguide/pipes/date-format-toggle-anim.gif b/public/resources/images/devguide/pipes/date-format-toggle-anim.gif new file mode 100644 index 0000000000000000000000000000000000000000..379c48df95f199596f1e7fbda14da4f7aff34703 GIT binary patch literal 12118 zcmeHtc{J4T-~RhOyO}X&EMsO2Gh|OfDkL+u$d;lkNwzGJkdUMq#!?a4QrXK^DxxfH zV_zaFiBd)>Yaz)J)1&%4-|zSN<9E*U$MgHIxzCw7XU=)QuGjr~-}kw%`+8j_J9lVl zyQ+YCz)RrQ2Zci6@pux6BrPqiq@<*-uCA@EZD3$vW@ff$&mKodM|XF3Utiy2$Bvym zd6L87BqSuHrKM$MWfc|{-n@D9?%lf&A3khpX?gneXH*LRfB?SP|`~1$3MHxST2Q;6 zPHs<0u-Q$=+x=xBPdKdeNz`sJiYHlQ2N`RDGtaOk5%!7NWSn8un221kZcd)&B$P?u_)5K zVyBcSuvY}LO9W~RHz32>jU<5QBqOwe7}#P+x+f%Ph#}I%h791zxc3G2Vg{0clz}i! z^tSaK2UxEeB6rt4gIFbkR#7w*G}4`tSnxBwx=uV+v3v`MenUty96mMUYEU8sd*ymU z{AfJ<n&v(pj3_I~XczX#FBxHVm&9 zPb$B_zHfW;LE|Yl(+IIU*QZ24L!X&11;}`dS~kS&)D9JCKT$sy2R*nQ2>8q!;2aau z^k$k7*F6xD%2|c96B;WK7gvQ{XL>fmCn;N2vaVa1cCUlsd+SvU%C;D($Z0dJS<8a? z*}k=j!8tp>yU=ZrFs(dkV3iN=%>#Q?xU5(tcJ3)2mo`r%0Ap@%&A$M2Q4IqZ{7dAA zuHZo={F_2D13z*tdz&Phzz(D@xo6933C=PJKP9DsWMh(+5d^fJVF5zqULa0>00sCH ztX#!nHg}}4y?2!Kb|ayzk9jsmr||W*l9@#qf*K-C-(=!#4al)tB{QSxJ2~}v!sIv) z0>N9}a$AI%yArTmK`tZ^(~dc?ODj+rOp%18)E#merEfR}F7x$DTCp5&X5|APu8BIX zqTm9B5Qx6@syVwH?E4XI2Xa+@pHGgqSD z&<_zMBbsEBOlLYXXPsvJAdqAq*_5=D=q7~rhL+S_u-76JNNm{yAEcmqUM}oVjKs7E zL2+M~4dmgvu4)xXS|VP^^n)W@`8W(f40GmXAJCd0`tT$f-fIUHL{I&;i7~7K08NNF z1Ay3>^YSE1W6nPCIAR`e89Ad=Ck@iMz@hC9oJ|6P%yE2kgbQeau6n_&-KvliTYYxx zmoV}(J=LX=eb_o~PMX)PB@qPm!P016oa*w}wTu4C<0ZwnmM6-pzbsFdx2pc&PgTA0 z|M9tI^wy6r4;H@snC2okuFN!v?^;Gkj9k?H`ef7XmAN*<>46=EddZrlpfU`Q!x~^x zYB8(Fq|xpuL!?0uM_N=`ss?T-od#noX%6>!lj_O-8{!$?Tz_)xn<&Dw@#Y>f$e`%I9Z|t} z+anRRn+3HDp|KwBqzkbC&hI7=9mIl3Su3N$=w2ZMGz28g+&o4-C8eoR?0{0e4#g;a z{|z`&xbiMk(FH0}(yS0P@xrc2X&*u81P%Ey))^KRT3vV!}zuKT6s{?O!9 zC^CSFEYWF3Iqe1GHk2gbFSBlc6}z*PrXtZ{cI*A~qtGpz{h#5P8IK{XT7lIG5XJ=x zG+0g`odsIEI^oKS?w7#1!ABd0*bv+Ft2H0F(C6#TaTc+)cskc^{|P4^`XVmvW|_n3 z$vvHYfuJytX{K$>{-!LJoBnZHl+gJKst|S+r?-CY%Qj?3-$KLN<^WAio|yyB145l) z>1?ua6TG0N zm3`6MPA9yVzp>bEbzUPaH|qgUegLcLnUhi7`BC-c(i0b4WoGMxL*V|U4i9^;g^cP? zTPl~j{LgR78dVw9c|m@fW?U)J);X&8W2yUeUu7P$D~A62u!lnd2B5MJ*babe13*BT zO#Ckr@ZbM$1(0h4Kv0?8M@?Za@rGQJXl#T|>xkE7vQBZ9GO+Xk2LAhjy?`cwUK;>H zoohU5q9P0mu_|g7Wn-UwQfN36dFzbwTzHK4=`PwuP*CJ{Lf5WYrJ&NpEzho&ibws9 zg8r2b2q*xafcRRJ1#b7Q=yuVh7TKUuKaE_gl3t%I$3(_(($~pd`N=QGWhlYjfVE1R6YBY_HL|m`oKWTgPHU$=W(p-2k(zBw(fL(EQEcxUFMZ> z12ZZC>p9Du9TLaf)b!|YtGL>lL^nK3-FZjWB=Q~3+rISKx+Z^`vQvMG>f22E?^+;! z)xri)2e5$PS}iQORv%1MDBH>B0>@`CdgFBuX^} zF8z?zwfHbfNQa%(c|Z?gk+^%4vommz82=e4k-=0UUuWw&GOrKZdL|USd6F}k`EqMm6uW_4;A_~ zJd`|nqvcjp@U@Pzl9RnS*H;XI_TIs_&jy7Ahu%@K{S5S*-lmq3sm~{&UuwiBPD)Bi z;jmHEp#`XwmT1<$<|-$yc_Yl!(-P@a;o41Bt2IzF42po6Ew!)lswN1{h?Xglnz@;Op6Z4o&9v?nWjrj^n`qR^lBH3C%|))a1>HJd>tE zmZ;yNfb>U}6M(yxW;$$gfhIDg?lLnR9VgU)^_DBmk7k1s8b&B<{b&{_zT!59&*usW z!leRwc3MgrW9>2M)Vk3qBWH#T@RdHrBmp+-=%hFLtfz%rlP+Pnjxu>i7}k9H8BFE9 zY;VEd&o0vXnE<9DmOOvz-Hu*e$1pF_Hx=u0-ux5MT&b@4xF0b8+>qM>yjZ|59o!m)C58{v*3$VHAk3WZ~znb zz`7(k`p0|<9l1))%kqEV67L)PL~0U;PEpg&zG2g#(2+^j&6I0EeVwmruSgW ztWu<~onPpb;JN!vDmntSsO^Y#;TyV?yY}7ROzSiGeZh++0aQsz3b5ydn1C@=5aM|( zd~Zmmn5bKXIYyX45rmtNph#mfP$sdHCWTBef=f~XZz_T&3H27m6~H)6%`L6gQh?N6 zl2^751#&1e*w@zcgtvMio9{fJ>uIrk4 z=f)Emf|p$E7n20j^wd^^Tsp3+is0QuD)Z1RWdC!q_(nEQ3RYO3^T^&~vev0v0UqMWp&8dcp|S`~7uJhl6Ihr* zd?@U&GvCN1#c^D;f~$q`=JxC2L%^Z!OLzNaR4%#BtuX>VotGdPygN_BMmOLB91_ee zP&i>xP7vG2=InqEo+!2ob0yTfQiRJmFkdyYLOudkArGEajXg1RRO+Q7PY60y0GEpm zu4f*jYb&AUPejzh zDiShlqY$vexO#UpLq9bv(#1;obJcF!az(<(e8`yj%iWWos~5p7P4HJ+)SK_|H~91r zYo_kq7lQc|8NZ;NpEy)_fAP~cQ=|hSN*{pc6;5+u(dI~LqX%2~bbTM7#2-+zb4EJf9kdaNtmehLcj@;>R%2=g zl8duLM^fKdhK(FIzjfl{mC*CrAFr%`zQ}cwYxpk87nNEbD2nzEA4|KEsKcK~G4#Jb znsXYr{Ql~suf7a7R87R89@(uk*=+b!>g&Dg91;NoB(2Q0+YRZ=z|?Y4$WsgFr>C3E zSL>m-(@#B|e~uK=hmPBIGndM}llUv`)pCsKclR-o^EfqYU1vTt2mk9jB-;RC*mDus z9`?MP0Tf1JAyQgdV{#k!#E&sSr(r-q*9F30F>6_IY*$k{0l%!jYLUih9dJ9jQ8WiG zqMv*`-x`zv@gAQ<^j-tCPD_!Lesqfagr%Q z7th|q>|veyz#>#vgDrQh9Z?+V8LghjpKFI>hRbO(e3H?+{iZyCImH6{T@85yts4&< zKDXg@1D8fGPh#}62}P;1Ar|FOBFjS3)l_6t&h9;8q-*koVb+**)b@?o7zARb0mWn{ z$FChBTFIq-52EFx{mwyL+Sph;FNSQL4{FTp+@;4&mDCh~;MD->V6Iq2#4y4>Z0FHK zdlGs$o(f1Zh%ikBp=1xJRjI*#Cm;z|)zIq=>B6bGWIXHS0(mFc^v}<(D(}A!3Yy()d8leKFu*i0pMcoE^nQ?CpFTE z`WVNjQU1FUk~kT#n(Bw>fX$aG1{L>j>hF6*AzW4#v_9yIwu`&A_vRkUDNFH5Te}k9 zbrZr|m==$%tnvNM*)A2&t@qhn^zgOI2RxZVCux_rgaj6ESa;a&9NWjQx%6Wg_wZix zH@&Yz?p5EsX}RBlWAnVPh{9a&gQPeaOEtd1rM?bwvpJzI)!5LR_YW{zfaQNx2L}Z^)EsFOHltW398HghM=Y?-!)yu zuY0Gqpe%=}cK-M>!ar$XM~L0ww>iVlesv%wOGTg_@O@+$)K~&I_osD$@nMkg3?V@u z43Qyr*#J&q;D~9aj$t8(ZUo*u9&*6fwK(!#bxo~>jU*1T&p?XgBNlIj3KHLoPBH`x zp%j`V(nyjaLh$O|6;S0Ae7LwW^rJ^u-T1`hTN;A;*ig7!yv0BQNp*9^?ZIHUicRZ` zc}S!`4X|J{P2*X6-Qpv*xqaH3;y`lEA85O^rUC@Y*PGAj>t77#LsY&3zI(DyAE(2T zTNAmB$c`d_In&7H-?hKfwwtQp+g^K>q9g`yukz6ml+g1F3u_S-ORGTXevtc&?KA-F zQ{I0!oJ8150WeetQSrKCc?d!7()GSQ#bI*>vkfjCrt5{;T(afpPmriPF8g-kSq)H7 z_w={JK;8>c3<(X?c%Jvj4l*2~6iTGMbgBurxuF`w8z?aLvfM*)YKbZmYEx9&0%1jq z#n9wUGaNsgOlss_Pzc>Dde>-_-0t9HdEj;|wtqdUjhAnTsE_|-QLmO@X#4h#+?Mz( z=~XtGMzq$dyf=5Or}Kce9Ul>_%zp_l5f`%&kgiu&e5u|cim(8aC9yTK@O>!)GBBvu z&K@rLJAb8^sv{NyweUXLbBGoRDe4y$n?YTWkV|_DvH&RStG-JJH7EuNwY6@70S;=p zV(7(w?g{b|GJB7?Wn7EovBX8Pj`BXALML8Ts(89x$oNN-kk7?5XQxP?PnRMG<%+!5 z7mR3My;C@W-Qyf`mbd7|W6#$jb+ic2#4dfBas!#BzwDf^aHJ$0PCS$V5N`BpXV zm~!qK*PAMDBKl5Mw8`I?y3@I3zaPSDHGCA_7}Aqn-sgPd$h|?g$(#3vJbxUyJDhR< z<{kdq9E?Bms;O@={Ar7CSEUT21axcCKh^!i_i-^P=Sc^&O632`QdHd4A1(= zf(fCJZ2OeG3HtiNwkwUBJVOibT~a&N6O7DR&v$5^z}`BYP|JKM98w!mXy`7!kZx87_y*GA3Ux==60 z{sQ=pP>@*GR-8Q(I9BzZdK=XJMeUqDq>&A%x;1K-Alws+mtwIlzYRFw_r!)ezXzPl z41yN#%+1#yGubo$10uHVr_%SZUF4r3;X?}Wv$xGeON zlhzJ0AVQ{`64*h5I1*^WJN~2pZVUW(Lw^@He%M5XD9JkitUu5NVeSTgJ>ygWpl0hV zjN)_8+-VCWDM{R^U93phn&i!yTW`W33aDh)YV5{Qws!$AEfvi-j%xR*Qh zVa;TbB*6XDW+AHy77;Ei+Fmmrovs`<6*yDy(sv}d;eF?ww&A>Hl7`nDaeszHUD~!# z2?opTpN%`d|U$D6BV zUSM4JRFaF-Asu@4LqNRs-P0|XHTT?nZ24xjeWiy6+g;z^HYr3Su2m5bp-}KNv_Hg| zKqLHvfd56@_OBtJe^*hH+jZ1b76NJZC|GlNTrq-*EW2Ceb9^i7^ZD1DW6Cp6WP*)C zI?v=HWiNkeB9Ubx1>OGGiv<4!QeU%*{PMPFaWTBLl?AfS2QD28$lTE;V&-H~dSSh7 z{voqcqn6kurPCzJdlMy|pVmdU_g`nPC1DHRS8qgs|F*I0Uo*;}{{&+`UCSy2k}b35 zR7IsXc8V;Q1{8H*?v2&@pe6YyGN^k z3Pk_AKi~*#UJE9$7EGQ?TYDo!ZA16KXj@_JDs9GJ}o>Uoyi?i_|tm${VM)ArG9y1>bTuUE1%&LP2BF(7|C4e zEJ^jrGRuE8A$Hx8&tY^P{kKcIO9H3$;l!Ftd*#iG;p9!>YcB1h)F5{^&e?O(5s~h! zgp|~nBv;9_OP3Exo;sa*B|r641}U$ggmcZMsPtCUjrii*RYxl>-mUeQ4D=vn)YW^% z#xcaX4ejoMWo;exR3nep?w6hJ;xGG}#U)<1o4LFlYA_yrH&REXG>eUm*S5NteVhNj Ru-3%?v9h}Ct`7j){tJA8D;NL( literal 0 HcmV?d00001 diff --git a/public/resources/images/devguide/pipes/hero-list.png b/public/resources/images/devguide/pipes/hero-list.png new file mode 100644 index 0000000000000000000000000000000000000000..80e2d15dc71feb15068019202e686b701d8c549d GIT binary patch literal 34026 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 MP3B5drrG)b7j!u~@c;k- literal 0 HcmV?d00001 diff --git a/public/resources/images/devguide/pipes/power-boost-calculator.png b/public/resources/images/devguide/pipes/power-boost-calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..4155228c332c23444f98b8e210ca8472d615cbbd GIT binary patch literal 20075 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 literal 0 HcmV?d00001