@coolon/angular-ui-powerups 12.3.1 → 12.4.0-alpha.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 (113) hide show
  1. package/bundles/coolon-angular-ui-powerups-cypress.umd.js +297 -93
  2. package/bundles/coolon-angular-ui-powerups-cypress.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.js +408 -288
  4. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  5. package/coolon-angular-ui-powerups.metadata.json +1 -1
  6. package/cypress/components/aup-command-face.d.ts +2 -5
  7. package/cypress/components/aup-command.d.ts +18 -4
  8. package/cypress/components/aup-navigation.d.ts +0 -1
  9. package/cypress/components/aup-popup-menu.d.ts +2 -0
  10. package/cypress/components/aup-table.d.ts +19 -0
  11. package/cypress/components/button-mixin.d.ts +17 -0
  12. package/cypress/components/button.d.ts +17 -3
  13. package/cypress/coolon-angular-ui-powerups-cypress.d.ts +1 -0
  14. package/cypress/coolon-angular-ui-powerups-cypress.metadata.json +1 -1
  15. package/cypress/exports.d.ts +3 -0
  16. package/cypress/page-element.d.ts +11 -2
  17. package/cypress/page.d.ts +16 -13
  18. package/cypress/path.d.ts +26 -0
  19. package/cypress/section.d.ts +8 -1
  20. package/esm2015/cypress/components/aup-command-face.js +20 -11
  21. package/esm2015/cypress/components/aup-command-face.js.map +1 -1
  22. package/esm2015/cypress/components/aup-command-face.metadata.json +1 -1
  23. package/esm2015/cypress/components/aup-command.js +10 -7
  24. package/esm2015/cypress/components/aup-command.js.map +1 -1
  25. package/esm2015/cypress/components/aup-command.metadata.json +1 -1
  26. package/esm2015/cypress/components/aup-more-menu.js +1 -2
  27. package/esm2015/cypress/components/aup-more-menu.js.map +1 -1
  28. package/esm2015/cypress/components/aup-more-menu.metadata.json +1 -1
  29. package/esm2015/cypress/components/aup-navigation.js +1 -5
  30. package/esm2015/cypress/components/aup-navigation.js.map +1 -1
  31. package/esm2015/cypress/components/aup-popup-menu.js +12 -3
  32. package/esm2015/cypress/components/aup-popup-menu.js.map +1 -1
  33. package/esm2015/cypress/components/aup-popup-menu.metadata.json +1 -1
  34. package/esm2015/cypress/components/aup-table.js +36 -0
  35. package/esm2015/cypress/components/aup-table.js.map +1 -0
  36. package/esm2015/cypress/components/aup-table.metadata.json +1 -0
  37. package/esm2015/cypress/components/button-mixin.js +15 -0
  38. package/esm2015/cypress/components/button-mixin.js.map +1 -0
  39. package/esm2015/cypress/components/button-mixin.metadata.json +1 -0
  40. package/esm2015/cypress/components/button.js +11 -7
  41. package/esm2015/cypress/components/button.js.map +1 -1
  42. package/esm2015/cypress/components/button.metadata.json +1 -1
  43. package/esm2015/cypress/coolon-angular-ui-powerups-cypress.js.map +1 -1
  44. package/esm2015/cypress/coolon-angular-ui-powerups-cypress.metadata.json +1 -1
  45. package/esm2015/cypress/exports.js +3 -0
  46. package/esm2015/cypress/exports.js.map +1 -1
  47. package/esm2015/cypress/exports.metadata.json +1 -1
  48. package/esm2015/cypress/page-element.js +21 -5
  49. package/esm2015/cypress/page-element.js.map +1 -1
  50. package/esm2015/cypress/page-element.metadata.json +1 -1
  51. package/esm2015/cypress/page.js +32 -22
  52. package/esm2015/cypress/page.js.map +1 -1
  53. package/esm2015/cypress/page.metadata.json +1 -1
  54. package/esm2015/cypress/path.js +61 -0
  55. package/esm2015/cypress/path.js.map +1 -0
  56. package/esm2015/cypress/path.metadata.json +1 -0
  57. package/esm2015/cypress/section.js +20 -10
  58. package/esm2015/cypress/section.js.map +1 -1
  59. package/esm2015/lib/components/switch-case/switch-case.component.js +7 -0
  60. package/esm2015/lib/components/switch-case/switch-case.component.js.map +1 -1
  61. package/esm2015/lib/components/switch-case/switch-case.component.metadata.json +1 -1
  62. package/esm2015/lib/components/tables/table/table.component.js +1 -1
  63. package/esm2015/lib/components/tables/table/table.component.js.map +1 -1
  64. package/esm2015/lib/components/tables/table/table.component.metadata.json +1 -1
  65. package/esm2015/lib/components/tables/tree-table/tree-table-component.js +1 -1
  66. package/esm2015/lib/components/tables/tree-table/tree-table-component.js.map +1 -1
  67. package/esm2015/lib/components/tables/tree-table/tree-table-component.metadata.json +1 -1
  68. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  69. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  70. package/esm2015/lib/place/guards/consolidated-param-map.js +7 -2
  71. package/esm2015/lib/place/guards/consolidated-param-map.js.map +1 -1
  72. package/esm2015/lib/place/guards/consolidated-param-map.metadata.json +1 -1
  73. package/esm2015/lib/place/guards/place.guard.js +1 -22
  74. package/esm2015/lib/place/guards/place.guard.js.map +1 -1
  75. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +24 -14
  76. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js.map +1 -1
  77. package/esm2015/lib/place/navigation/place-component-deactivation-handler.metadata.json +1 -1
  78. package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js.map +1 -1
  79. package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.metadata.json +1 -1
  80. package/esm2015/lib/place/place-component.js +67 -5
  81. package/esm2015/lib/place/place-component.js.map +1 -1
  82. package/esm2015/lib/place/place-component.metadata.json +1 -1
  83. package/esm2015/lib/place/place-definition.js +3 -3
  84. package/esm2015/lib/place/place-definition.js.map +1 -1
  85. package/esm2015/lib/place/place-router.js +9 -4
  86. package/esm2015/lib/place/place-router.js.map +1 -1
  87. package/esm2015/lib/place/place-router.metadata.json +1 -1
  88. package/esm2015/lib/place/route/parameter-decorators.js +13 -14
  89. package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
  90. package/esm2015/lib/place/route/parameter-decorators.metadata.json +1 -1
  91. package/esm2015/lib/place/route/parameter-definition.js +21 -3
  92. package/esm2015/lib/place/route/parameter-definition.js.map +1 -1
  93. package/esm2015/lib/place/route/parameter-definition.metadata.json +1 -1
  94. package/esm2015/lib/place/route/visit-sanitiser.js +1 -1
  95. package/esm2015/lib/place/route/visit-sanitiser.js.map +1 -1
  96. package/esm2015/lib/place/url-snapshot.js +30 -7
  97. package/esm2015/lib/place/url-snapshot.js.map +1 -1
  98. package/esm2015/lib/place/url-snapshot.metadata.json +1 -1
  99. package/esm2015/lib/place/visit.js +7 -7
  100. package/esm2015/lib/place/visit.js.map +1 -1
  101. package/esm2015/lib/place/visit.metadata.json +1 -1
  102. package/fesm2015/coolon-angular-ui-powerups-cypress.js +235 -74
  103. package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
  104. package/fesm2015/coolon-angular-ui-powerups.js +367 -267
  105. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  106. package/lib/components/switch-case/switch-case.component.d.ts +7 -0
  107. package/lib/place/guards/consolidated-param-map.d.ts +2 -2
  108. package/lib/place/navigation/place-component-deactivation-handler.d.ts +3 -1
  109. package/lib/place/place-component.d.ts +26 -3
  110. package/lib/place/route/parameter-definition.d.ts +8 -0
  111. package/lib/place/url-snapshot.d.ts +1 -0
  112. package/lib/place/visit.d.ts +4 -4
  113. package/package.json +1 -1
@@ -1,11 +1,24 @@
1
- import { Mixin } from '@coolon/typescript-utilities';
1
+ import * as _ from 'lodash';
2
+ import { lang, Mixin } from '@coolon/typescript-utilities';
3
+ import { DefaultUrlSerializer } from '@angular/router';
2
4
 
3
5
  class PageElement {
4
- constructor(rootElementAccessor) {
5
- this.rootElementAccessor = rootElementAccessor;
6
+ constructor(parent, selector) {
7
+ this.parentElementAccessor = parent instanceof PageElement ? () => parent.element() : parent;
8
+ this.elementAccessStrategy = _.isString(selector) ? {
9
+ findIn: p => p.find(selector),
10
+ shouldNotExist: (p) => p.should('not.have', selector)
11
+ } : selector;
6
12
  }
7
13
  element() {
8
- return this.rootElementAccessor ? this.rootElementAccessor() : undefined;
14
+ const parent = this.getParentElement();
15
+ return parent ? this.elementAccessStrategy.findIn(parent) : undefined;
16
+ }
17
+ getParentElement() {
18
+ return this.parentElementAccessor ? this.parentElementAccessor() : undefined;
19
+ }
20
+ find(selector) {
21
+ return new PageElement(() => this.element(), selector);
9
22
  }
10
23
  click(text) {
11
24
  text ? this.element().contains(text).click() : this.element().click();
@@ -14,46 +27,125 @@ class PageElement {
14
27
  return this.element().should;
15
28
  }
16
29
  shouldBeVisible() {
17
- this.should("be.visible");
30
+ this.should('be.visible');
18
31
  }
19
32
  shouldNotBeVisible() {
20
- this.should("not.be.visible");
33
+ if (!this.elementAccessStrategy.shouldNotExist) {
34
+ lang.abstractMethod(this.constructor);
35
+ }
36
+ this.elementAccessStrategy.shouldNotExist(this.getParentElement());
21
37
  }
22
38
  }
23
39
 
24
- class AupCommandFace extends PageElement {
25
- static create(parent, face) {
26
- const parentFinder = () => parent.element();
27
- const rootElementAccessor = this.createFinder(parentFinder, face);
28
- return new AupCommandFace(rootElementAccessor);
40
+ let urlSerialiser = new DefaultUrlSerializer();
41
+ class Path {
42
+ constructor(segments) {
43
+ this.segments = segments;
44
+ }
45
+ static extractVisitParameters(url) {
46
+ let result = {};
47
+ const urlTree = urlSerialiser.parse(url);
48
+ urlTree.root.children.primary.segments.forEach(s => {
49
+ result = Object.assign(Object.assign({}, result), s.parameters);
50
+ });
51
+ return result;
29
52
  }
30
- static createFinder(parent, face) {
31
- // AOT barfs if we return a lambda
32
- const finder = () => face.text ?
33
- parent().contains(`aup-command-face`, face.text()) :
34
- face.icon ?
35
- parent().find(`aup-icon[ng-reflect-icon=${face.icon()}]`).closest('aup-command-face') :
36
- undefined;
37
- return finder;
53
+ toUrl(params) {
54
+ return this.segments.map(s => s.toUrlPart(params)).join('/');
38
55
  }
39
56
  }
57
+ (function (Path) {
58
+ function setUrlSerialiser(serialiser) {
59
+ urlSerialiser = serialiser;
60
+ }
61
+ Path.setUrlSerialiser = setUrlSerialiser;
62
+ class Segment {
63
+ constructor(path, params = {}) {
64
+ var _a;
65
+ this.path = path;
66
+ this.routeId = params === null || params === void 0 ? void 0 : params.routeId;
67
+ this.visitParams = (_a = params === null || params === void 0 ? void 0 : params.visitParams) !== null && _a !== void 0 ? _a : [];
68
+ }
69
+ toUrlPart(params) {
70
+ let path = this.path;
71
+ this.visitParams.forEach(p => {
72
+ const value = params[p];
73
+ if (value) {
74
+ path = `${path};${p}=${value}`;
75
+ }
76
+ });
77
+ if (this.routeId && params[this.routeId]) {
78
+ path = path + '/' + params[this.routeId];
79
+ }
80
+ return path;
81
+ }
82
+ }
83
+ Path.Segment = Segment;
84
+ class Builder {
85
+ constructor() {
86
+ this.segments = [];
87
+ }
88
+ segment(name, params) {
89
+ const builder = new Segment(name, params);
90
+ this.segments.push(builder);
91
+ return this;
92
+ }
93
+ getPath() {
94
+ return new Path(this.segments);
95
+ }
96
+ }
97
+ Path.Builder = Builder;
98
+ })(Path || (Path = {}));
40
99
 
41
- class Button extends PageElement {
42
- click() {
43
- return this.element().click();
100
+ class AupCommandFace extends PageElement {
101
+ constructor(parentElement, face) {
102
+ super(() => parentElement.element(), AupCommandFace.createAccessor(face));
44
103
  }
45
- shouldBeDisabled() {
46
- this.should("be.disabled");
47
- // this.should("have.css", "color", "rgba(0,0,0,0.26)")
104
+ static createAccessor(face) {
105
+ // AOT barfs if we return a lambda
106
+ const accessor = {
107
+ findIn(parent) {
108
+ return face.text ?
109
+ parent.contains(`aup-command-face`, face.text()) :
110
+ face.icon ?
111
+ parent.find(`aup-icon[ng-reflect-icon=${face.icon()}]`).closest('aup-command-face') :
112
+ undefined;
113
+ },
114
+ shouldNotExist(parent) {
115
+ return face.text ?
116
+ parent.should("not.contain", `aup-command-face`, face.text()) :
117
+ face.icon ?
118
+ parent.should("not.contain", `aup-icon[ng-reflect-icon=${face.icon()}]`) :
119
+ undefined;
120
+ }
121
+ };
122
+ return accessor;
48
123
  }
49
124
  }
50
125
 
51
- class AupCommand extends Button {
52
- static create(parent, face) {
53
- const parentFinder = () => parent.element().find('aup-command');
54
- const findFace = AupCommandFace.createFinder(parentFinder, face);
55
- const commandFinder = () => findFace().closest("aup-command");
56
- return new AupCommand(commandFinder);
126
+ function ButtonMixin(Base) {
127
+ return class extends Base {
128
+ constructor(...args) {
129
+ super(...args);
130
+ }
131
+ click() {
132
+ return this.element().click();
133
+ }
134
+ shouldBeDisabled() {
135
+ this.should("be.disabled");
136
+ // this.should("have.css", "color", "rgba(0,0,0,0.26)")
137
+ }
138
+ };
139
+ }
140
+
141
+ class AupCommand extends ButtonMixin(PageElement) {
142
+ constructor(parentElementAccessor, face) {
143
+ const faceAccessor = AupCommandFace.createAccessor(face);
144
+ super(parentElementAccessor, {
145
+ findIn(parent) {
146
+ return faceAccessor.findIn(parent).closest("aup-command");
147
+ }
148
+ });
57
149
  }
58
150
  get should() {
59
151
  return this.element().find('button').should;
@@ -129,15 +221,11 @@ class AupInput extends PageElement {
129
221
  })(AupInput || (AupInput = {}));
130
222
 
131
223
  class AupNavigation extends PageElement {
132
- static create(parent, selector) {
133
- const rootElementAccessor = () => parent.element().find(selector);
134
- return new AupNavigation(rootElementAccessor);
135
- }
136
224
  click(label) {
137
225
  return super.click(label);
138
226
  }
139
227
  face(label) {
140
- return AupCommandFace.create(this, { text: () => label });
228
+ return new AupCommandFace(this, { text: () => label });
141
229
  }
142
230
  shouldHaveLink(label) {
143
231
  this.face(label).shouldBeVisible();
@@ -147,40 +235,97 @@ class AupNavigation extends PageElement {
147
235
  }
148
236
  }
149
237
 
238
+ class AupTable extends PageElement {
239
+ constructor(parentElementAccessor, selector) {
240
+ super(parentElementAccessor, selector);
241
+ }
242
+ row(rowId) {
243
+ return new AupTable.Row(() => this.element(), `tr[aup-table-id=${rowId}]`);
244
+ }
245
+ column(columnId) {
246
+ return new AupTable.Column(this, columnId);
247
+ }
248
+ }
249
+ (function (AupTable) {
250
+ class Row extends PageElement {
251
+ }
252
+ AupTable.Row = Row;
253
+ class Column {
254
+ constructor(table, columnId) {
255
+ this.table = table;
256
+ this.columnId = columnId;
257
+ }
258
+ cell(content) {
259
+ const self = this;
260
+ return new Cell(this.table, {
261
+ findIn(parent) {
262
+ return parent.contains(`aup-table-cell-renderer[column-id=${self.columnId}]`, content);
263
+ }
264
+ });
265
+ }
266
+ }
267
+ AupTable.Column = Column;
268
+ class Cell extends PageElement {
269
+ }
270
+ AupTable.Cell = Cell;
271
+ })(AupTable || (AupTable = {}));
272
+
273
+ class Button extends ButtonMixin(PageElement) {
274
+ constructor(parentElementAccessor, buttonText) {
275
+ super(parentElementAccessor, {
276
+ findIn(parent) {
277
+ return parent.contains('button', buttonText);
278
+ },
279
+ shouldNotExist(parent) {
280
+ return parent.should('not.contain', buttonText);
281
+ }
282
+ });
283
+ }
284
+ }
285
+
150
286
  var Section;
151
287
  (function (Section) {
152
288
  function Mixin$1(Base) {
153
289
  return class extends Base {
154
290
  section(selector, section) {
155
- const impl = new Impl(() => this.element().find(selector));
291
+ const impl = new Impl(() => this.element(), selector);
156
292
  return Mixin.createProxy(section(impl), impl);
157
293
  }
294
+ find(selector) {
295
+ return new PageElement(() => this.element(), selector);
296
+ }
158
297
  contains(text) {
159
- return new PageElement(() => this.element().contains(text));
298
+ return new PageElement(() => this.element(), {
299
+ findIn: parent => parent.contains(text),
300
+ shouldNotExist: (parent) => parent.should("not.contain", text)
301
+ });
160
302
  }
161
303
  button(text) {
162
- return new Button(() => this.element().contains(`button`, text));
304
+ return new Button(() => this.element(), text);
163
305
  }
164
306
  aupStringInput(selector) {
165
- return new AupInput.HtmlInput(() => this.element().find(selector !== null && selector !== void 0 ? selector : 'aup-string-input'));
307
+ return new AupInput.HtmlInput(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-string-input');
166
308
  }
167
309
  aupTextInput(selector) {
168
- return new AupInput.TextAreaInput(() => this.element().find(selector !== null && selector !== void 0 ? selector : 'aup-text-input'));
310
+ return new AupInput.TextAreaInput(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-text-input');
169
311
  }
170
312
  aupPasswordInput(selector) {
171
- return new AupInput.HtmlInput(() => this.element().find(selector !== null && selector !== void 0 ? selector : 'aup-password-input'));
313
+ return new AupInput.HtmlInput(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-password-input');
172
314
  }
173
315
  aupNumberInput(selector) {
174
- return new AupInput.HtmlInput(() => this.element().find(selector !== null && selector !== void 0 ? selector : 'aup-number-input'));
316
+ return new AupInput.HtmlInput(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-number-input');
175
317
  }
176
318
  aupCommand(face) {
177
- return AupCommand.create(this, face);
319
+ return new AupCommand(() => this.element(), face);
178
320
  }
179
321
  aupTabbedNavigation() {
180
- return AupNavigation.create(this, 'aup-tabbed-place-navigation');
322
+ return new AupNavigation(() => this.element(), 'aup-tabbed-place-navigation');
181
323
  }
182
324
  aupSideNavigation() {
183
- return AupNavigation.create(this, 'aup-list-place-nav');
325
+ return new AupNavigation(() => this.element(), 'aup-list-place-nav');
326
+ }
327
+ aupTable(selector) {
328
+ return new AupTable(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-table');
184
329
  }
185
330
  };
186
331
  }
@@ -191,19 +336,19 @@ var Section;
191
336
 
192
337
  class Page extends PageElement {
193
338
  constructor(path) {
194
- super();
339
+ super(undefined, undefined);
195
340
  this.path = path;
196
341
  this.rootElementSelector = 'body';
197
342
  }
198
343
  element() {
199
344
  return cy.get(this.rootElementSelector);
200
345
  }
201
- visit() {
202
- this.tryAndVisit();
203
- this.shouldBeActive();
346
+ visit(params) {
347
+ this.tryAndVisit(params);
348
+ this.shouldBeActive(params);
204
349
  }
205
- tryAndVisit() {
206
- cy.visit(this.path);
350
+ tryAndVisit(params) {
351
+ cy.visit("/" + this.path.toUrl(params !== null && params !== void 0 ? params : {}));
207
352
  }
208
353
  shouldHaveActivityIds(...ids) {
209
354
  cy.location('search').should('contain', `?aup-interactions=${ids.join('--')}`);
@@ -211,36 +356,44 @@ class Page extends PageElement {
211
356
  shouldNotHaveActivityIds() {
212
357
  cy.location('search').should('not.contain', `?aup-interactions`);
213
358
  }
214
- shouldBeActive(options) {
359
+ shouldHaveTitle(title) {
360
+ cy.title().should('eq', title);
361
+ }
362
+ shouldBeActive(withParameters) {
215
363
  // Note: cy.window() doesn't return a promise... it's a chainable.
216
364
  cy.window().then(window => {
217
365
  cy['waitUntil'](() => {
218
366
  return window['aup.PlaceRouter'] && !window['aup.PlaceRouter'].isNavigating();
219
367
  });
220
368
  });
221
- const bits = [this.path];
222
- // TODO: add support for parameter names...
223
- if (options && options.withParameters) {
224
- bits.push(`;([^\?]+)`);
225
- }
226
- if (options && options.withActivities) {
227
- bits.push(`\?aup-interactions=${options.withActivities.join('--')})`);
228
- }
229
- cy.location('pathname').should('match', new RegExp(`^${bits.join('')}$`));
230
- if (options && options.withTitle) {
231
- cy.title().should('eq', options.withTitle);
369
+ if (withParameters) {
370
+ cy.location('pathname').then(path => {
371
+ const urlParams = Path.extractVisitParameters(path);
372
+ Object.keys(withParameters).forEach(param => {
373
+ const expected = withParameters[param];
374
+ // @ts-ignore
375
+ expect(urlParams[param]).to.equal(expected);
376
+ });
377
+ });
232
378
  }
233
379
  }
234
380
  }
235
381
  (function (Page) {
236
- function create(path, page) {
237
- const builder = new Builder(path);
382
+ function create(pathOrPathBuilder, page) {
383
+ const pathBuilder = new Path.Builder();
384
+ if (_.isString(pathOrPathBuilder)) {
385
+ pathOrPathBuilder.split("/").filter(p => !_.isEmpty(p)).forEach(p => pathBuilder.segment(p));
386
+ }
387
+ else {
388
+ pathOrPathBuilder(pathBuilder);
389
+ }
390
+ const builder = new PageBuilder(pathBuilder.getPath());
238
391
  return Mixin.createProxy(page(builder), builder);
239
392
  }
240
393
  Page.create = create;
241
- class Builder extends Section.Mixin(Page) {
394
+ class PageBuilder extends Section.Mixin(Page) {
242
395
  }
243
- Page.Builder = Builder;
396
+ Page.PageBuilder = PageBuilder;
244
397
  })(Page || (Page = {}));
245
398
 
246
399
  class AupCommandGroup extends PageElement {
@@ -248,16 +401,24 @@ class AupCommandGroup extends PageElement {
248
401
 
249
402
  class AupMoreMenu extends PageElement {
250
403
  static create(parent) {
251
- const finder = () => parent.element().contains('aup-more-menu');
252
- return new AupMoreMenu(finder);
404
+ return new AupMoreMenu(parent, 'aup-more-menu');
253
405
  }
254
406
  }
255
407
 
256
408
  class AupPopupMenu extends PageElement {
409
+ constructor(parentElementAccessor, face) {
410
+ const accessor = AupCommandFace.createAccessor(face);
411
+ super(parentElementAccessor, {
412
+ findIn(parent) {
413
+ return accessor.findIn(parent).closest('button');
414
+ },
415
+ shouldNotExist(parent) {
416
+ accessor.shouldNotExist(parent);
417
+ }
418
+ });
419
+ }
257
420
  static create(parent, face) {
258
- const faceFinder = AupCommandFace.createFinder(() => parent.element(), face);
259
- const buttonFinder = () => faceFinder().closest('button');
260
- return new AupPopupMenu(buttonFinder);
421
+ return new AupPopupMenu(parent, face);
261
422
  }
262
423
  }
263
424
 
@@ -276,5 +437,5 @@ class AupToolBar extends PageElement {
276
437
  * Generated bundle index. Do not edit.
277
438
  */
278
439
 
279
- export { AupCommand, AupCommandFace, AupCommandGroup, AupInput, AupMoreMenu, AupNavigation, AupPopupMenu, AupToolBar, Button, Page, PageElement, Section };
440
+ export { AupCommand, AupCommandFace, AupCommandGroup, AupInput, AupMoreMenu, AupNavigation, AupPopupMenu, AupTable, AupToolBar, Button, ButtonMixin, Page, PageElement, Path, Section };
280
441
  //# sourceMappingURL=coolon-angular-ui-powerups-cypress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coolon-angular-ui-powerups-cypress.js","sources":["../../../../libs/angular-ui-powerups/cypress/src/page-element.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command-face.ts","../../../../libs/angular-ui-powerups/cypress/src/components/button.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-input.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-navigation.ts","../../../../libs/angular-ui-powerups/cypress/src/section.ts","../../../../libs/angular-ui-powerups/cypress/src/page.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command-group.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-more-menu.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-popup-menu.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-tool-bar.ts","../../../../libs/angular-ui-powerups/cypress/src/exports.ts","../../../../libs/angular-ui-powerups/cypress/src/coolon-angular-ui-powerups-cypress.ts"],"sourcesContent":["import Chainable = Cypress.Chainable;\n\nexport class PageElement {\n constructor(readonly rootElementAccessor?: () => Cypress.Chainable<JQuery>) {\n }\n\n element(): Chainable<JQuery> {\n return this.rootElementAccessor ? this.rootElementAccessor() : undefined;\n }\n\n click(text?: string) {\n text ? this.element().contains(text).click() : this.element().click();\n }\n\n get should() {\n return this.element().should;\n }\n\n shouldBeVisible() {\n this.should(\"be.visible\");\n }\n\n shouldNotBeVisible() {\n this.should(\"not.be.visible\");\n }\n}\n","import { PageElement } from '../page-element';\nimport { Types } from './types';\n\ntype ElementFinder = () => Cypress.Chainable<JQuery<HTMLElement>>\n\nexport class AupCommandFace extends PageElement {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n const parentFinder: ElementFinder = () => parent.element();\n const rootElementAccessor = this.createFinder(parentFinder, face);\n return new AupCommandFace(rootElementAccessor);\n }\n\n static createFinder(parent: ElementFinder, face: Types.CommandFace) {\n // AOT barfs if we return a lambda\n const finder = () => face.text ?\n parent().contains(`aup-command-face`, face.text()) :\n face.icon ?\n parent().find(`aup-icon[ng-reflect-icon=${face.icon()}]`).closest('aup-command-face') :\n undefined;\n return finder;\n }\n}\n\n","import { PageElement } from '../page-element';\n\nexport class Button extends PageElement {\n\n click() {\n return this.element().click();\n }\n\n shouldBeDisabled() {\n this.should(\"be.disabled\");\n // this.should(\"have.css\", \"color\", \"rgba(0,0,0,0.26)\")\n }\n\n}\n","import { Types } from './types';\nimport { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\nimport { Button } from './button';\n\nexport class AupCommand extends Button {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n const parentFinder = () => parent.element().find('aup-command');\n const findFace = AupCommandFace.createFinder(parentFinder, face);\n const commandFinder = () => findFace().closest(\"aup-command\");\n return new AupCommand(commandFinder);\n }\n\n get should() {\n return this.element().find('button').should\n }\n\n}\n\n","import { PageElement } from '../page-element';\n\nexport abstract class AupInput<T> extends PageElement {\n\n label() {\n return this.element().find('label');\n }\n\n hint() {\n return this.element().find('mat-hint');\n }\n\n error() {\n return this.element().find('mat-error');\n }\n\n get labelShould() {\n return this.label().should\n }\n\n get hintShould() {\n return this.hint().should\n }\n\n get errorShould() {\n return this.error().should\n }\n\n labelShouldBe(text: string) {\n return this.labelShould(\"have.text\", text);\n }\n\n hintShouldBe(text: string) {\n return this.hintShould(\"have.text\", text);\n }\n\n errorShouldBe(text: string) {\n return this.errorShould(\"have.text\", text);\n }\n\n abstract clear();\n\n abstract setValue(value: T);\n\n}\n\nexport namespace AupInput {\n export class HtmlInput<T> extends AupInput<T> {\n input() {\n return this.element().find('input');\n }\n\n clear() {\n this.input().clear();\n }\n\n setValue(value: T) {\n const input = this.input();\n input.clear();\n input.type(`${value}`);\n this.input().should('have.value', `${value}`);\n }\n\n get should() {\n return this.input().should;\n }\n\n }\n\n export class TextAreaInput<T> extends AupInput<T> {\n\n get should() {\n return this.input().should;\n }\n\n input() {\n return this.element().find('textarea');\n }\n\n clear() {\n this.input().clear();\n }\n\n setValue(value: T) {\n const input = this.input();\n input.clear();\n input.type(`${value}`);\n this.input().should('have.value', value);\n }\n }\n\n}\n","import { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\n\nexport class AupNavigation extends PageElement {\n\n static create(parent: PageElement, selector: string) {\n const rootElementAccessor = () => parent.element().find(selector);\n return new AupNavigation(rootElementAccessor);\n }\n\n click(label: string) {\n return super.click(label);\n }\n\n face(label: string): AupCommandFace {\n return AupCommandFace.create(this, { text: () => label });\n }\n\n shouldHaveLink(label: string) {\n this.face(label).shouldBeVisible();\n }\n\n shouldNotHaveLink(label: string) {\n this.face(label).shouldNotBeVisible();\n }\n}\n","import { Constructable } from '@coolon/pectin';\nimport { Mixin as CreateMixin } from '@coolon/typescript-utilities';\nimport { AupCommand } from './components/aup-command';\nimport { AupInput } from './components/aup-input';\nimport { AupNavigation } from './components/aup-navigation';\nimport { Button } from './components/button';\nimport { Types } from './components/types';\nimport { PageElement } from './page-element';\n\nexport interface Section {\n section<T extends object>(selector: string, section: (section: Section) => T): T & PageElement;\n\n contains(text: string): PageElement\n\n button(text: string): Button;\n\n aupStringInput(selector?: string): AupInput<string>;\n\n aupTextInput(selector?: string): AupInput<string>;\n\n aupPasswordInput(selector?: string): AupInput<string>;\n\n aupNumberInput(selector?: string): AupInput<number>;\n\n aupCommand(face: Types.CommandFace): AupCommand;\n\n // aupToolbar<T extends object>(builder: () => T): AupToolBar & T\n //\n // aupToolbar<T extends object>(selector: string, builder: () => T): AupToolBar & T\n //\n // aupToolbar<T extends object>(selectorOrBuilder: string | (() => T), builder?: () => T): AupToolBar & T\n //\n // aupPopupMenu<T extends object>(face: CommandFace, builder: () => T): AupPopupMenu & T\n\n aupTabbedNavigation<T extends object>(): AupNavigation;\n aupSideNavigation<T extends object>(): AupNavigation;\n\n}\n\n\nexport namespace Section {\n\n export function Mixin<BC extends Constructable<PageElement>>(Base: BC) {\n\n return class extends Base implements Section {\n\n section<T extends object>(selector: string, section: (section: Section) => T): T & PageElement {\n const impl = new Impl(() => this.element().find(selector));\n return CreateMixin.createProxy(section(impl), impl);\n }\n\n contains(text: string): PageElement {\n return new PageElement(() => this.element().contains(text));\n }\n\n button(text: string): Button {\n return new Button(() => this.element().contains(`button`, text));\n }\n\n aupStringInput(selector?: string): AupInput<string> {\n return new AupInput.HtmlInput(() => this.element().find(selector ?? 'aup-string-input'));\n }\n\n aupTextInput(selector?: string): AupInput<string> {\n return new AupInput.TextAreaInput(() => this.element().find(selector ?? 'aup-text-input'));\n }\n\n aupPasswordInput(selector?: string): AupInput<string> {\n return new AupInput.HtmlInput(() => this.element().find(selector ?? 'aup-password-input'));\n }\n\n aupNumberInput(selector?: string): AupInput<number> {\n return new AupInput.HtmlInput(() => this.element().find(selector ?? 'aup-number-input'));\n }\n\n aupCommand(face: Types.CommandFace): AupCommand {\n return AupCommand.create(this, face);\n }\n\n aupTabbedNavigation<T extends object>(): AupNavigation {\n return AupNavigation.create(this, 'aup-tabbed-place-navigation');\n }\n\n aupSideNavigation<T extends object>(): AupNavigation {\n return AupNavigation.create(this, 'aup-list-place-nav');\n }\n\n\n // aupToolbar<T extends object>(builder: () => T): AupToolBar\n // aupToolbar<T extends object>(selector: string, builder: () => T): AupToolBar\n // aupToolbar<T extends object>(selectorOrBuilder: string | (() => T), builder?: () => T): AupToolBar {\n // return lang.notImplemented();\n // }\n //\n // aupPopupMenu<T extends object>(face: CommandFace, builder: () => T): AupPopupMenu & T {\n // return lang.notImplemented();\n // }\n //\n // aupMoreMenu<T extends object>(builder: () => T): AupPopupMenu & T {\n // return lang.notImplemented();\n // }\n\n };\n }\n\n class Impl extends Mixin(PageElement) {\n }\n\n\n}\n","import { Mixin } from '@coolon/typescript-utilities';\nimport { PageElement } from './page-element';\nimport { Section } from './section';\n\nexport class Page extends PageElement {\n\n protected rootElementSelector = 'body';\n\n constructor(readonly path: string) {\n super();\n }\n\n element(): Cypress.Chainable<JQuery<HTMLElement>> {\n return cy.get(this.rootElementSelector);\n }\n\n visit() {\n this.tryAndVisit();\n this.shouldBeActive();\n }\n\n tryAndVisit() {\n cy.visit(this.path);\n }\n\n shouldHaveActivityIds(...ids: string[]) {\n cy.location('search').should('contain', `?aup-interactions=${ids.join('--')}`);\n }\n\n shouldNotHaveActivityIds() {\n cy.location('search').should('not.contain', `?aup-interactions`);\n }\n\n shouldBeActive(options?: { withTitle?: string, withActivities?: string[], withParameters?: boolean }) {\n\n // Note: cy.window() doesn't return a promise... it's a chainable.\n cy.window().then(window => {\n cy['waitUntil'](() => {\n return window['aup.PlaceRouter'] && !window['aup.PlaceRouter'].isNavigating();\n });\n })\n\n const bits = [this.path];\n\n // TODO: add support for parameter names...\n if (options && options.withParameters) {\n bits.push(`;([^\\?]+)`);\n }\n if (options && options.withActivities) {\n bits.push(`\\?aup-interactions=${options.withActivities.join('--')})`);\n }\n\n cy.location('pathname').should('match', new RegExp(`^${bits.join('')}$`));\n\n if (options && options.withTitle) {\n cy.title().should('eq', options.withTitle);\n }\n }\n\n}\n\n\nexport namespace Page {\n\n export function create<T extends object>(path: string, page: (page: Builder) => T): T & Page {\n const builder = new Builder(path);\n return Mixin.createProxy(page(builder), builder) as T & Page;\n }\n\n export class Builder extends Section.Mixin(Page) {\n }\n\n}\n","import { PageElement } from '../page-element';\n\nexport class AupCommandGroup extends PageElement {\n\n}\n","import { PageElement } from '../page-element';\n\nexport class AupMoreMenu extends PageElement {\n\n static create(parent: PageElement) {\n const finder = () => parent.element().contains('aup-more-menu');\n return new AupMoreMenu(finder);\n }\n}\n","import { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\nimport { Types } from './types';\n\nexport class AupPopupMenu extends PageElement {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n const faceFinder = AupCommandFace.createFinder(() => parent.element(), face);\n const buttonFinder = () => faceFinder().closest('button');\n return new AupPopupMenu(buttonFinder);\n }\n}\n","\nimport { PageElement } from '../page-element';\nimport { Types } from './types';\n\nexport class AupToolBar extends PageElement {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n // const findFace = AupCommandFace.createFinder(() => parent.element(), face)\n // return new AupCommandGroup(() => findFace().closest('button'));\n }\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./page-element\";\nexport * from \"./page\";\nexport * from \"./section\";\nexport * from \"./components/aup-command-face\";\nexport * from \"./components/aup-command-group\";\nexport * from \"./components/aup-command\";\nexport * from \"./components/aup-input\";\nexport * from \"./components/aup-more-menu\";\nexport * from \"./components/aup-navigation\";\nexport * from \"./components/aup-popup-menu\";\nexport * from \"./components/aup-tool-bar\";\nexport * from \"./components/button\";\nexport * from \"./components/types\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './exports';\n"],"names":["Mixin","CreateMixin"],"mappings":"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"}
1
+ {"version":3,"file":"coolon-angular-ui-powerups-cypress.js","sources":["../../../../libs/angular-ui-powerups/cypress/src/page-element.ts","../../../../libs/angular-ui-powerups/cypress/src/path.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command-face.ts","../../../../libs/angular-ui-powerups/cypress/src/components/button-mixin.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-input.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-navigation.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-table.ts","../../../../libs/angular-ui-powerups/cypress/src/components/button.ts","../../../../libs/angular-ui-powerups/cypress/src/section.ts","../../../../libs/angular-ui-powerups/cypress/src/page.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command-group.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-more-menu.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-popup-menu.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-tool-bar.ts","../../../../libs/angular-ui-powerups/cypress/src/exports.ts","../../../../libs/angular-ui-powerups/cypress/src/coolon-angular-ui-powerups-cypress.ts"],"sourcesContent":["import Chainable = Cypress.Chainable;\nimport * as _ from 'lodash';\nimport { lang } from '@coolon/typescript-utilities';\n\nexport class PageElement {\n\n readonly elementAccessStrategy: PageElement.Accessor;\n readonly parentElementAccessor: () => Cypress.Chainable<JQuery>;\n\n constructor(parent: PageElement | (() => Cypress.Chainable<JQuery>), selector: string | PageElement.Accessor) {\n\n this.parentElementAccessor = parent instanceof PageElement ? () => parent.element() : parent;\n this.elementAccessStrategy = _.isString(selector) ? {\n findIn: p => p.find(selector),\n shouldNotExist: (p: Cypress.Chainable<JQuery>) => p.should('not.have', selector)\n } : selector\n }\n\n element(): Chainable<JQuery> {\n const parent = this.getParentElement();\n return parent ? this.elementAccessStrategy.findIn(parent) : undefined;\n }\n\n getParentElement(): Cypress.Chainable<JQuery> {\n return this.parentElementAccessor ? this.parentElementAccessor() : undefined;\n }\n\n find(selector: string): PageElement {\n return new PageElement(() => this.element(), selector);\n }\n\n click(text?: string) {\n text ? this.element().contains(text).click() : this.element().click();\n }\n\n get should() {\n return this.element().should;\n }\n\n shouldBeVisible() {\n this.should('be.visible');\n }\n\n shouldNotBeVisible() {\n if (!this.elementAccessStrategy.shouldNotExist) {\n lang.abstractMethod(this.constructor);\n }\n this.elementAccessStrategy.shouldNotExist(this.getParentElement())\n }\n}\n\nexport namespace PageElement {\n export interface Accessor {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery>;\n shouldNotExist?(parent: Cypress.Chainable<JQuery>);\n }\n}\n","import { DefaultUrlSerializer, UrlSerializer } from '@angular/router';\n\nlet urlSerialiser: UrlSerializer = new DefaultUrlSerializer();\n\nexport class Path {\n\n constructor(readonly segments: Path.Segment[]) {\n }\n\n static extractVisitParameters(url: string): object {\n let result = {};\n const urlTree = urlSerialiser.parse(url);\n urlTree.root.children.primary.segments.forEach(s => {\n result = { ...result, ...s.parameters }\n });\n return result;\n }\n\n toUrl(params: object): string {\n return this.segments.map(s => s.toUrlPart(params)).join('/');\n }\n\n}\n\nexport namespace Path {\n\n export function setUrlSerialiser(serialiser: UrlSerializer) {\n urlSerialiser = serialiser;\n }\n\n export class Segment {\n\n private routeId: string | undefined;\n private visitParams: string[];\n\n constructor(readonly path: string, params: SegmentParams = {}) {\n this.routeId = params?.routeId;\n this.visitParams = params?.visitParams ?? [];\n }\n\n toUrlPart(params: object) {\n let path: string = this.path;\n this.visitParams.forEach(p => {\n const value = params[p];\n if (value) {\n path = `${path};${p}=${value}`;\n }\n });\n if (this.routeId && params[this.routeId]) {\n path = path + '/' + params[this.routeId];\n }\n return path;\n }\n\n }\n\n export class Builder {\n\n private segments: Segment[] = [];\n\n segment(name: string, params?: SegmentParams): this {\n const builder = new Segment(name, params);\n this.segments.push(builder);\n return this;\n }\n\n getPath(): Path {\n return new Path(this.segments);\n }\n }\n\n export interface SegmentParams {\n routeId?: string;\n visitParams?: string[]\n }\n}\n","import { lang } from '@coolon/typescript-utilities';\nimport { PageElement } from '../page-element';\nimport { Types } from './types';\n\nexport class AupCommandFace extends PageElement {\n\n constructor(parentElement: PageElement, face: Types.CommandFace) {\n super(() => parentElement.element(), AupCommandFace.createAccessor(face));\n }\n\n static createAccessor(face: Types.CommandFace): PageElement.Accessor {\n // AOT barfs if we return a lambda\n const accessor = {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return face.text ?\n parent.contains(`aup-command-face`, face.text()) :\n face.icon ?\n parent.find(`aup-icon[ng-reflect-icon=${face.icon()}]`).closest('aup-command-face') :\n undefined;\n },\n shouldNotExist(parent: Cypress.Chainable<JQuery>) {\n return face.text ?\n parent.should(\"not.contain\", `aup-command-face`, face.text()) :\n face.icon ?\n parent.should(\"not.contain\", `aup-icon[ng-reflect-icon=${face.icon()}]`) :\n undefined;\n }\n };\n return accessor;\n }\n}\n\n","import { Constructable } from '@coolon/typescript-utilities';\nimport { PageElement } from '../page-element';\n\nexport function ButtonMixin<T, BC extends Constructable<PageElement>>(Base: BC) {\n return class extends Base {\n constructor(...args: any[]) {\n super(...args);\n }\n\n click() {\n return this.element().click();\n }\n\n shouldBeDisabled() {\n this.should(\"be.disabled\");\n // this.should(\"have.css\", \"color\", \"rgba(0,0,0,0.26)\")\n }\n\n };\n}\n","import { lang } from '@coolon/typescript-utilities';\nimport { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\nimport { ButtonMixin } from './button-mixin';\nimport { Types } from './types';\n\nexport class AupCommand extends ButtonMixin(PageElement) {\n\n constructor(parentElementAccessor: () => Cypress.Chainable<JQuery>, face: Types.CommandFace) {\n const faceAccessor = AupCommandFace.createAccessor(face);\n super(parentElementAccessor, {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return faceAccessor.findIn(parent).closest(\"aup-command\");\n }\n });\n }\n \n get should() {\n return this.element().find('button').should;\n }\n\n}\n\n","import { PageElement } from '../page-element';\n\nexport abstract class AupInput<T> extends PageElement {\n\n label() {\n return this.element().find('label');\n }\n\n hint() {\n return this.element().find('mat-hint');\n }\n\n error() {\n return this.element().find('mat-error');\n }\n\n get labelShould() {\n return this.label().should\n }\n\n get hintShould() {\n return this.hint().should\n }\n\n get errorShould() {\n return this.error().should\n }\n\n labelShouldBe(text: string) {\n return this.labelShould(\"have.text\", text);\n }\n\n hintShouldBe(text: string) {\n return this.hintShould(\"have.text\", text);\n }\n\n errorShouldBe(text: string) {\n return this.errorShould(\"have.text\", text);\n }\n\n abstract clear();\n\n abstract setValue(value: T);\n\n}\n\nexport namespace AupInput {\n export class HtmlInput<T> extends AupInput<T> {\n input() {\n return this.element().find('input');\n }\n\n clear() {\n this.input().clear();\n }\n\n setValue(value: T) {\n const input = this.input();\n input.clear();\n input.type(`${value}`);\n this.input().should('have.value', `${value}`);\n }\n\n get should() {\n return this.input().should;\n }\n\n }\n\n export class TextAreaInput<T> extends AupInput<T> {\n\n get should() {\n return this.input().should;\n }\n\n input() {\n return this.element().find('textarea');\n }\n\n clear() {\n this.input().clear();\n }\n\n setValue(value: T) {\n const input = this.input();\n input.clear();\n input.type(`${value}`);\n this.input().should('have.value', value);\n }\n }\n\n}\n","import { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\n\nexport class AupNavigation extends PageElement {\n\n click(label: string) {\n return super.click(label);\n }\n\n face(label: string): AupCommandFace {\n return new AupCommandFace(this, { text: () => label });\n }\n\n shouldHaveLink(label: string) {\n this.face(label).shouldBeVisible();\n }\n\n shouldNotHaveLink(label: string) {\n this.face(label).shouldNotBeVisible();\n }\n}\n","import { PageElement } from '../page-element';\nimport { Section } from '../section';\n\nexport class AupTable extends PageElement {\n\n constructor(parentElementAccessor: () => Cypress.Chainable<JQuery>, selector: string | PageElement.Accessor) {\n super(parentElementAccessor, selector);\n }\n\n row(rowId: any): AupTable.Row {\n return new AupTable.Row(() => this.element(), `tr[aup-table-id=${rowId}]`);\n }\n\n column(columnId: string): AupTable.Column {\n return new AupTable.Column(this, columnId);\n }\n\n}\n\nexport namespace AupTable {\n export class Row extends PageElement {\n\n }\n\n export class Column {\n constructor(readonly table: AupTable, readonly columnId: string) {\n }\n\n cell(content: string): Cell {\n const self = this;\n return new Cell(this.table, {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return parent.contains(`aup-table-cell-renderer[column-id=${self.columnId}]`, content);\n }\n });\n }\n }\n\n export class Cell extends PageElement {\n }\n}\n","import { PageElement } from '../page-element';\nimport { ButtonMixin } from './button-mixin';\n\nexport class Button extends ButtonMixin(PageElement) {\n\n constructor(parentElementAccessor: () => Cypress.Chainable<JQuery>, buttonText: string) {\n super(parentElementAccessor, {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return parent.contains('button', buttonText);\n },\n shouldNotExist(parent: Cypress.Chainable<JQuery>) {\n return parent.should('not.contain', buttonText);\n }\n });\n }\n\n}\n\n","import { Constructable } from '@coolon/pectin';\nimport { Mixin as CreateMixin } from '@coolon/typescript-utilities';\nimport { AupCommand } from './components/aup-command';\nimport { AupInput } from './components/aup-input';\nimport { AupNavigation } from './components/aup-navigation';\nimport { AupTable } from './components/aup-table';\nimport { Button } from './components/button';\nimport { Types } from './components/types';\nimport { PageElement } from './page-element';\n\nexport interface Section {\n section<T extends object>(selector: string, section: (section: Section) => T): T & PageElement;\n\n find(selector: string): PageElement;\n\n contains(text: string): PageElement;\n\n button(text: string): Button;\n\n aupStringInput(selector?: string): AupInput<string>;\n\n aupTextInput(selector?: string): AupInput<string>;\n\n aupPasswordInput(selector?: string): AupInput<string>;\n\n aupNumberInput(selector?: string): AupInput<number>;\n\n aupCommand(face: Types.CommandFace): AupCommand;\n\n // aupToolbar<T extends object>(builder: () => T): AupToolBar & T\n //\n // aupToolbar<T extends object>(selector: string, builder: () => T): AupToolBar & T\n //\n // aupToolbar<T extends object>(selectorOrBuilder: string | (() => T), builder?: () => T): AupToolBar & T\n //\n // aupPopupMenu<T extends object>(face: CommandFace, builder: () => T): AupPopupMenu & T\n\n aupTabbedNavigation<T extends object>(): AupNavigation;\n aupSideNavigation<T extends object>(): AupNavigation;\n aupTable(selector?: string):AupTable;\n\n}\n\n\nexport namespace Section {\n\n export function Mixin<BC extends Constructable<PageElement>>(Base: BC) {\n\n return class extends Base implements Section {\n\n section<T extends object>(selector: string, section: (section: Section) => T): T & PageElement {\n const impl = new Impl(() => this.element(), selector);\n return CreateMixin.createProxy(section(impl), impl);\n }\n\n find(selector: string): PageElement {\n return new PageElement(() => this.element(), selector);\n }\n\n contains(text: string): PageElement {\n return new PageElement(() => this.element(), {\n findIn: parent => parent.contains(text),\n shouldNotExist: (parent: Cypress.Chainable<JQuery>) => parent.should(\"not.contain\", text)\n });\n }\n\n button(text: string): Button {\n return new Button(() => this.element(), text);\n }\n\n aupStringInput(selector?: string): AupInput<string> {\n return new AupInput.HtmlInput(() => this.element(), selector ?? 'aup-string-input');\n }\n\n aupTextInput(selector?: string): AupInput<string> {\n return new AupInput.TextAreaInput(() => this.element(), selector ?? 'aup-text-input');\n }\n\n aupPasswordInput(selector?: string): AupInput<string> {\n return new AupInput.HtmlInput(() => this.element(), selector ?? 'aup-password-input');\n }\n\n aupNumberInput(selector?: string): AupInput<number> {\n return new AupInput.HtmlInput(() => this.element(), selector ?? 'aup-number-input');\n }\n\n aupCommand(face: Types.CommandFace): AupCommand {\n return new AupCommand(() => this.element(), face);\n }\n\n aupTabbedNavigation<T extends object>(): AupNavigation {\n return new AupNavigation(() => this.element(), 'aup-tabbed-place-navigation');\n }\n\n aupSideNavigation<T extends object>(): AupNavigation {\n return new AupNavigation(() => this.element(), 'aup-list-place-nav');\n }\n\n aupTable(selector?: string):AupTable {\n return new AupTable(() => this.element(), selector ?? 'aup-table');\n }\n\n // aupToolbar<T extends object>(builder: () => T): AupToolBar\n // aupToolbar<T extends object>(selector: string, builder: () => T): AupToolBar\n // aupToolbar<T extends object>(selectorOrBuilder: string | (() => T), builder?: () => T): AupToolBar {\n // return lang.notImplemented();\n // }\n //\n // aupPopupMenu<T extends object>(face: CommandFace, builder: () => T): AupPopupMenu & T {\n // return lang.notImplemented();\n // }\n //\n // aupMoreMenu<T extends object>(builder: () => T): AupPopupMenu & T {\n // return lang.notImplemented();\n // }\n\n };\n }\n\n class Impl extends Mixin(PageElement) {\n }\n\n\n}\n","import { Mixin } from '@coolon/typescript-utilities';\nimport * as _ from 'lodash';\nimport { PageElement } from './page-element';\nimport { Path } from './path';\nimport { Section } from './section';\n\nexport class Page extends PageElement {\n\n protected rootElementSelector = 'body';\n\n constructor(readonly path: Path) {\n super(undefined, undefined);\n }\n\n element(): Cypress.Chainable<JQuery<HTMLElement>> {\n return cy.get(this.rootElementSelector);\n }\n\n visit(params?: object) {\n this.tryAndVisit(params);\n this.shouldBeActive(params);\n }\n\n tryAndVisit(params?: object) {\n cy.visit(\"/\" + this.path.toUrl(params ?? {}));\n }\n shouldHaveActivityIds(...ids: string[]) {\n cy.location('search').should('contain', `?aup-interactions=${ids.join('--')}`);\n }\n\n shouldNotHaveActivityIds() {\n cy.location('search').should('not.contain', `?aup-interactions`);\n }\n\n shouldHaveTitle(title: string) {\n cy.title().should('eq', title);\n }\n\n shouldBeActive(withParameters?: object) {\n // Note: cy.window() doesn't return a promise... it's a chainable.\n cy.window().then(window => {\n cy['waitUntil'](() => {\n return window['aup.PlaceRouter'] && !window['aup.PlaceRouter'].isNavigating();\n });\n });\n\n\n if (withParameters) {\n cy.location('pathname').then(path => {\n const urlParams = Path.extractVisitParameters(path);\n Object.keys(withParameters).forEach(param => {\n const expected = withParameters[param];\n // @ts-ignore\n expect(urlParams[param]).to.equal(expected);\n })\n });\n }\n }\n\n}\n\n\nexport namespace Page {\n\n\n export function create<T extends object>(path: string, page: (page: PageBuilder) => T): T & Page\n // tslint:disable-next-line:unified-signatures\n export function create<T extends object>(pathBuilder: ((pathBuilder: Path.Builder) => void), page: (page: PageBuilder) => T): T & Page\n export function create<T extends object>(pathOrPathBuilder: string | ((pathBuilder: Path.Builder) => void), page: (page: PageBuilder) => T): T & Page {\n const pathBuilder = new Path.Builder();\n if (_.isString(pathOrPathBuilder)) {\n pathOrPathBuilder.split(\"/\").filter(p => !_.isEmpty(p)).forEach(p => pathBuilder.segment(p))\n } else {\n pathOrPathBuilder(pathBuilder)\n }\n const builder = new PageBuilder(pathBuilder.getPath());\n return Mixin.createProxy(page(builder), builder) as T & Page;\n }\n\n\n export class PageBuilder extends Section.Mixin(Page) {\n }\n\n}\n","import { PageElement } from '../page-element';\n\nexport class AupCommandGroup extends PageElement {\n\n}\n","import { PageElement } from '../page-element';\n\nexport class AupMoreMenu extends PageElement {\n\n static create(parent: PageElement) {\n return new AupMoreMenu(parent, 'aup-more-menu');\n }\n}\n","import { lang } from '@coolon/typescript-utilities';\nimport { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\nimport { Types } from './types';\n\nexport class AupPopupMenu extends PageElement {\n\n constructor(parentElementAccessor: PageElement | (() => Cypress.Chainable<JQuery>), face: Types.CommandFace) {\n const accessor = AupCommandFace.createAccessor(face)\n super(parentElementAccessor, {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return accessor.findIn(parent).closest('button');\n },\n shouldNotExist(parent: Cypress.Chainable<JQuery>) {\n accessor.shouldNotExist(parent);\n }\n });\n }\n\n static create(parent: PageElement, face: Types.CommandFace) {\n return new AupPopupMenu(parent, face);\n }\n}\n","\nimport { PageElement } from '../page-element';\nimport { Types } from './types';\n\nexport class AupToolBar extends PageElement {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n // const findFace = AupCommandFace.createFinder(() => parent.element(), face)\n // return new AupCommandGroup(() => findFace().closest('button'));\n }\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./page-element\";\nexport * from \"./page\";\nexport * from \"./path\";\nexport * from \"./section\";\nexport * from \"./components/aup-command-face\";\nexport * from \"./components/aup-command-group\";\nexport * from \"./components/aup-command\";\nexport * from \"./components/aup-input\";\nexport * from \"./components/aup-more-menu\";\nexport * from \"./components/aup-navigation\";\nexport * from \"./components/aup-popup-menu\";\nexport * from \"./components/aup-table\";\nexport * from \"./components/aup-tool-bar\";\nexport * from \"./components/button-mixin\";\nexport * from \"./components/button\";\nexport * from \"./components/types\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './exports';\n\nexport {Types as ɵa} from './components/types';"],"names":["Mixin","CreateMixin"],"mappings":";;;;MAIa,WAAW;IAKtB,YAAY,MAAuD,EAAE,QAAuC;QAE1G,IAAI,CAAC,qBAAqB,GAAG,MAAM,YAAY,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;QAC7F,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;YAClD,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC7B,cAAc,EAAE,CAAC,CAA4B,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;SACjF,GAAG,QAAQ,CAAA;KACb;IAED,OAAO;QACL,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,OAAO,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;KACvE;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;KAC9E;IAED,IAAI,CAAC,QAAgB;QACnB,OAAO,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;KACxD;IAED,KAAK,CAAC,IAAa;QACjB,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;KACvE;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;KAC9B;IAED,eAAe;QACb,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KAC3B;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE;YAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;KACnE;;;AC9CH,IAAI,aAAa,GAAkB,IAAI,oBAAoB,EAAE,CAAC;MAEjD,IAAI;IAEf,YAAqB,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;KAC5C;IAED,OAAO,sBAAsB,CAAC,GAAW;QACvC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,mCAAQ,MAAM,GAAK,CAAC,CAAC,UAAU,CAAE,CAAA;SACxC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;KACf;IAED,KAAK,CAAC,MAAc;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC9D;CAEF;AAED,WAAiB,IAAI;IAEnB,SAAgB,gBAAgB,CAAC,UAAyB;QACxD,aAAa,GAAG,UAAU,CAAC;KAC5B;IAFe,qBAAgB,mBAE/B,CAAA;IAED,MAAa,OAAO;QAKlB,YAAqB,IAAY,EAAE,SAAwB,EAAE;;YAAxC,SAAI,GAAJ,IAAI,CAAQ;YAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,mCAAI,EAAE,CAAC;SAC9C;QAED,SAAS,CAAC,MAAc;YACtB,IAAI,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,KAAK,EAAE;oBACT,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;iBAChC;aACF,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACxC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC1C;YACD,OAAO,IAAI,CAAC;SACb;KAEF;IAxBY,YAAO,UAwBnB,CAAA;IAED,MAAa,OAAO;QAApB;YAEU,aAAQ,GAAc,EAAE,CAAC;SAWlC;QATC,OAAO,CAAC,IAAY,EAAE,MAAsB;YAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;SACb;QAED,OAAO;YACL,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChC;KACF;IAbY,YAAO,UAanB,CAAA;AAMH,CAAC,EAnDgB,IAAI,KAAJ,IAAI;;MCpBR,cAAe,SAAQ,WAAW;IAE7C,YAAY,aAA0B,EAAE,IAAuB;QAC7D,KAAK,CAAC,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3E;IAED,OAAO,cAAc,CAAC,IAAuB;;QAE3C,MAAM,QAAQ,GAAG;YACf,MAAM,CAAC,MAAiC;gBACtC,OAAO,IAAI,CAAC,IAAI;oBACd,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBAChD,IAAI,CAAC,IAAI;wBACP,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;wBACnF,SAAS,CAAC;aACf;YACD,cAAc,CAAC,MAAiC;gBAC9C,OAAO,IAAI,CAAC,IAAI;oBACd,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC7D,IAAI,CAAC,IAAI;wBACP,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,4BAA4B,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;wBACxE,SAAS,CAAC;aACf;SACF,CAAC;QACF,OAAO,QAAQ,CAAC;KACjB;;;SC1Ba,WAAW,CAA2C,IAAQ;IAC5E,OAAO,cAAc,IAAI;QACvB,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;SAChB;QAED,KAAK;YACH,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;SAC/B;QAED,gBAAgB;YACd,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;;SAE5B;KAEF,CAAC;AACJ;;MCba,UAAW,SAAQ,WAAW,CAAC,WAAW,CAAC;IAEtD,YAAY,qBAAsD,EAAE,IAAuB;QACzF,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzD,KAAK,CAAC,qBAAqB,EAAE;YAC3B,MAAM,CAAC,MAAiC;gBACtC,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;aAC3D;SACF,CAAC,CAAC;KACJ;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;KAC7C;;;MCjBmB,QAAY,SAAQ,WAAW;IAEnD,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACxC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzC;IAED,IAAI,WAAW;QACb,OAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAA;KAC5B;IAED,IAAI,UAAU;QACZ,OAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAA;KAC3B;IAED,IAAI,WAAW;QACb,OAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAA;KAC5B;IAED,aAAa,CAAC,IAAY;QACxB,OAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KAC7C;IAED,YAAY,CAAC,IAAY;QACvB,OAAQ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KAC5C;IAED,aAAa,CAAC,IAAY;QACxB,OAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KAC7C;CAMF;AAED,WAAiB,QAAQ;IACvB,MAAa,SAAa,SAAQ,QAAW;QAC3C,KAAK;YACH,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;QAED,KAAK;YACH,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;SACtB;QAED,QAAQ,CAAC,KAAQ;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;SAC/C;QAED,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;SAC5B;KAEF;IApBY,kBAAS,YAoBrB,CAAA;IAED,MAAa,aAAiB,SAAQ,QAAW;QAE/C,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;SAC5B;QAED,KAAK;YACH,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACxC;QAED,KAAK;YACH,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;SACtB;QAED,QAAQ,CAAC,KAAQ;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;SAC1C;KACF;IApBY,sBAAa,gBAoBzB,CAAA;AAEH,CAAC,EA7CgB,QAAQ,KAAR,QAAQ;;MC3CZ,aAAc,SAAQ,WAAW;IAE5C,KAAK,CAAC,KAAa;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC3B;IAED,IAAI,CAAC,KAAa;QAChB,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC;KACxD;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;KACpC;IAED,iBAAiB,CAAC,KAAa;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC;KACvC;;;MChBU,QAAS,SAAQ,WAAW;IAEvC,YAAY,qBAAsD,EAAE,QAAuC;QACzG,KAAK,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KACxC;IAED,GAAG,CAAC,KAAU;QACZ,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,mBAAmB,KAAK,GAAG,CAAC,CAAC;KAC5E;IAED,MAAM,CAAC,QAAgB;QACrB,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC5C;CAEF;AAED,WAAiB,QAAQ;IACvB,MAAa,GAAI,SAAQ,WAAW;KAEnC;IAFY,YAAG,MAEf,CAAA;IAED,MAAa,MAAM;QACjB,YAAqB,KAAe,EAAW,QAAgB;YAA1C,UAAK,GAAL,KAAK,CAAU;YAAW,aAAQ,GAAR,QAAQ,CAAQ;SAC9D;QAED,IAAI,CAAC,OAAe;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAC1B,MAAM,CAAC,MAAiC;oBACtC,OAAO,MAAM,CAAC,QAAQ,CAAC,qCAAqC,IAAI,CAAC,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC;iBACxF;aACF,CAAC,CAAC;SACJ;KACF;IAZY,eAAM,SAYlB,CAAA;IAED,MAAa,IAAK,SAAQ,WAAW;KACpC;IADY,aAAI,OAChB,CAAA;AACH,CAAC,EArBgB,QAAQ,KAAR,QAAQ;;MChBZ,MAAO,SAAQ,WAAW,CAAC,WAAW,CAAC;IAElD,YAAY,qBAAsD,EAAE,UAAkB;QACpF,KAAK,CAAC,qBAAqB,EAAE;YAC3B,MAAM,CAAC,MAAiC;gBACtC,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;aAC9C;YACD,cAAc,CAAC,MAAiC;gBAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;aACjD;SACF,CAAC,CAAC;KACJ;;;IC8Bc,QA+EhB;AA/ED,WAAiB,OAAO;IAEtB,SAAgBA,OAAK,CAAwC,IAAQ;QAEnE,OAAO,cAAc,IAAI;YAEvB,OAAO,CAAmB,QAAgB,EAAE,OAAgC;gBAC1E,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACtD,OAAOC,KAAW,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;aACrD;YAED,IAAI,CAAC,QAAgB;gBACnB,OAAO,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;aACxD;YAED,QAAQ,CAAC,IAAY;gBACnB,OAAO,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE;oBAC3C,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACvC,cAAc,EAAE,CAAC,MAAiC,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC;iBAC1F,CAAC,CAAC;aACJ;YAED,MAAM,CAAC,IAAY;gBACjB,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;aAC/C;YAED,cAAc,CAAC,QAAiB;gBAC9B,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,kBAAkB,CAAC,CAAC;aACrF;YAED,YAAY,CAAC,QAAiB;gBAC5B,OAAO,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,gBAAgB,CAAC,CAAC;aACvF;YAED,gBAAgB,CAAC,QAAiB;gBAChC,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,oBAAoB,CAAC,CAAC;aACvF;YAED,cAAc,CAAC,QAAiB;gBAC9B,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,kBAAkB,CAAC,CAAC;aACrF;YAED,UAAU,CAAC,IAAuB;gBAChC,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;aACnD;YAED,mBAAmB;gBACjB,OAAO,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,6BAA6B,CAAC,CAAC;aAC/E;YAED,iBAAiB;gBACf,OAAO,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC,CAAC;aACtE;YAED,QAAQ,CAAC,QAAiB;gBACxB,OAAO,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,WAAW,CAAC,CAAC;aACpE;SAgBF,CAAC;KACH;IAvEe,aAAK,UAuEpB,CAAA;IAED,MAAM,IAAK,SAAQD,OAAK,CAAC,WAAW,CAAC;KACpC;AAGH,CAAC,EA/EgB,OAAO,KAAP,OAAO;;MCtCX,IAAK,SAAQ,WAAW;IAInC,YAAqB,IAAU;QAC7B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QADT,SAAI,GAAJ,IAAI,CAAM;QAFrB,wBAAmB,GAAG,MAAM,CAAC;KAItC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACzC;IAED,KAAK,CAAC,MAAe;QACnB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;KAC7B;IAED,WAAW,CAAC,MAAe;QACzB,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,CAAC,CAAC;KAC/C;IACD,qBAAqB,CAAC,GAAG,GAAa;QACpC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,qBAAqB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChF;IAED,wBAAwB;QACtB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;KAClE;IAED,eAAe,CAAC,KAAa;QAC3B,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAChC;IAED,cAAc,CAAC,cAAuB;;QAEpC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM;YACrB,EAAE,CAAC,WAAW,CAAC,CAAC;gBACd,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,YAAY,EAAE,CAAC;aAC/E,CAAC,CAAC;SACJ,CAAC,CAAC;QAGH,IAAI,cAAc,EAAE;YAClB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI;gBAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,KAAK;oBACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;;oBAEvC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;iBAC7C,CAAC,CAAA;aACH,CAAC,CAAC;SACJ;KACF;CAEF;AAGD,WAAiB,IAAI;IAMnB,SAAgB,MAAM,CAAmB,iBAAiE,EAAE,IAA8B;QACxI,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YACjC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;SAC7F;aAAM;YACL,iBAAiB,CAAC,WAAW,CAAC,CAAA;SAC/B;QACD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAa,CAAC;KAC9D;IATe,WAAM,SASrB,CAAA;IAGD,MAAa,WAAY,SAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;KACnD;IADY,gBAAW,cACvB,CAAA;AAEH,CAAC,EArBgB,IAAI,KAAJ,IAAI;;MC5DR,eAAgB,SAAQ,WAAW;;;MCAnC,WAAY,SAAQ,WAAW;IAE1C,OAAO,MAAM,CAAC,MAAmB;QAC/B,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;KACjD;;;MCDU,YAAa,SAAQ,WAAW;IAE3C,YAAY,qBAAsE,EAAE,IAAuB;QACzG,MAAM,QAAQ,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACpD,KAAK,CAAC,qBAAqB,EAAE;YAC3B,MAAM,CAAC,MAAiC;gBACtC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;aAClD;YACD,cAAc,CAAC,MAAiC;gBAC9C,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACjC;SACF,CAAC,CAAC;KACJ;IAED,OAAO,MAAM,CAAC,MAAmB,EAAE,IAAuB;QACxD,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACvC;;;MCjBU,UAAW,SAAQ,WAAW;IAEzC,OAAO,MAAM,CAAC,MAAmB,EAAE,IAAuB;;;KAGzD;;;ACTH;;;;ACAA;;;;;;"}