@patternfly/documentation-framework 2.0.0-alpha.5 → 2.0.0-alpha.50

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 (53) hide show
  1. package/CHANGELOG.md +423 -0
  2. package/app.js +12 -11
  3. package/components/autoLinkHeader/autoLinkHeader.css +2 -2
  4. package/components/autoLinkHeader/autoLinkHeader.js +18 -13
  5. package/components/cssVariables/cssSearch.js +3 -4
  6. package/components/cssVariables/cssVariables.css +4 -4
  7. package/components/cssVariables/cssVariables.js +83 -84
  8. package/components/example/example.css +29 -29
  9. package/components/example/example.js +34 -6
  10. package/components/footer/footer.css +15 -15
  11. package/components/footer/footer.js +13 -13
  12. package/components/functionsTable/functionsTable.js +57 -0
  13. package/components/gdprBanner/gdprBanner.css +2 -2
  14. package/components/gdprBanner/gdprBanner.js +3 -3
  15. package/components/inlineAlert/inlineAlert.js +1 -1
  16. package/components/propsTable/propsTable.js +85 -79
  17. package/components/sectionGallery/sectionDataListLayout.js +67 -0
  18. package/components/sectionGallery/sectionGallery.css +44 -0
  19. package/components/sectionGallery/sectionGallery.js +53 -0
  20. package/components/sectionGallery/sectionGalleryLayout.js +37 -0
  21. package/components/sectionGallery/sectionGalleryToolbar.js +30 -0
  22. package/components/sectionGallery/sectionGalleryWrapper.js +89 -0
  23. package/components/sideNav/sideNav.css +12 -12
  24. package/components/sideNav/sideNav.js +41 -13
  25. package/components/tableOfContents/tableOfContents.css +17 -17
  26. package/components/topNav/topNav.css +12 -12
  27. package/helpers/getTitle.js +2 -2
  28. package/layouts/sideNavLayout/sideNavLayout.css +7 -11
  29. package/layouts/sideNavLayout/sideNavLayout.js +57 -40
  30. package/package.json +28 -25
  31. package/pages/404/404.css +2 -2
  32. package/pages/404/index.js +1 -1
  33. package/pages/global-css-variables.md +16 -16
  34. package/routes.js +20 -8
  35. package/scripts/cli/build.js +6 -0
  36. package/scripts/cli/cli.js +2 -0
  37. package/scripts/cli/generate.js +2 -2
  38. package/scripts/cli/start.js +6 -8
  39. package/scripts/md/parseMD.js +46 -11
  40. package/scripts/md/styled-tags.js +8 -4
  41. package/scripts/tsDocgen.js +119 -91
  42. package/scripts/typeDocGen.js +209 -0
  43. package/scripts/webpack/webpack.base.config.js +34 -32
  44. package/scripts/webpack/webpack.client.config.js +11 -8
  45. package/scripts/webpack/webpack.server.config.js +8 -5
  46. package/scripts/writeScreenshots.js +3 -3
  47. package/templates/html.ejs +1 -3
  48. package/templates/mdx.css +155 -160
  49. package/templates/mdx.js +122 -51
  50. package/templates/patternfly-docs/content/extensions/extension/design-guidelines/design-guidelines.md +2 -0
  51. package/templates/patternfly-docs/content/extensions/extension/examples/basic.md +2 -0
  52. package/versions.json +29 -9
  53. package/pages/red-hat-font.md +0 -40
package/CHANGELOG.md CHANGED
@@ -3,6 +3,429 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 2.0.0-alpha.50 (2023-06-01)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **labels:** Update label logic to include html components ([#3567](https://github.com/patternfly/patternfly-org/issues/3567)) ([32bdc0f](https://github.com/patternfly/patternfly-org/commit/32bdc0fe2120e2c86f39c1e5da94e3f2d11d9705))
12
+
13
+
14
+
15
+
16
+
17
+ # 2.0.0-alpha.49 (2023-06-01)
18
+
19
+ **Note:** Version bump only for package @patternfly/documentation-framework
20
+
21
+
22
+
23
+
24
+
25
+ # 2.0.0-alpha.48 (2023-05-31)
26
+
27
+ **Note:** Version bump only for package @patternfly/documentation-framework
28
+
29
+
30
+
31
+
32
+
33
+ # 2.0.0-alpha.47 (2023-05-31)
34
+
35
+
36
+ ### Bug Fixes
37
+
38
+ * **CSSVariables:** check for values before looping over them ([f2d167f](https://github.com/patternfly/patternfly-org/commit/f2d167f57c0cd38b289ade62d98022d7902de38f))
39
+
40
+
41
+
42
+
43
+
44
+ # 2.0.0-alpha.46 (2023-05-31)
45
+
46
+
47
+ ### Bug Fixes
48
+
49
+ * **CSSVariables:** resolve a11y issues in tables ([41a7837](https://github.com/patternfly/patternfly-org/commit/41a78379de36c08d7b36fe48a9ff40a4140cdc63))
50
+
51
+
52
+
53
+
54
+
55
+ # 2.0.0-alpha.45 (2023-05-25)
56
+
57
+ **Note:** Version bump only for package @patternfly/documentation-framework
58
+
59
+
60
+
61
+
62
+
63
+ # 2.0.0-alpha.44 (2023-05-25)
64
+
65
+ **Note:** Version bump only for package @patternfly/documentation-framework
66
+
67
+
68
+
69
+
70
+
71
+ # 2.0.0-alpha.43 (2023-05-25)
72
+
73
+
74
+ ### Features
75
+
76
+ * **labels:** add deprecated/demo/beta labels to headers + nav items ([#3547](https://github.com/patternfly/patternfly-org/issues/3547)) ([010a0e0](https://github.com/patternfly/patternfly-org/commit/010a0e05baea661964660d2a733569a34abbf243))
77
+
78
+
79
+
80
+
81
+
82
+ # 2.0.0-alpha.42 (2023-05-18)
83
+
84
+ **Note:** Version bump only for package @patternfly/documentation-framework
85
+
86
+
87
+
88
+
89
+
90
+ # 2.0.0-alpha.41 (2023-05-15)
91
+
92
+
93
+ ### Bug Fixes
94
+
95
+ * broken link in search-input summary ([7cbf968](https://github.com/patternfly/patternfly-org/commit/7cbf968c1b00aef2257ef8b7434c7ff8b9a4255a))
96
+
97
+
98
+
99
+
100
+
101
+ # 2.0.0-alpha.40 (2023-05-15)
102
+
103
+
104
+ ### Bug Fixes
105
+
106
+ * **docs:** use correct theme class on full page dark theme switcher ([#3532](https://github.com/patternfly/patternfly-org/issues/3532)) ([0008236](https://github.com/patternfly/patternfly-org/commit/0008236da2b105fd1789db2263323c59780b5194))
107
+
108
+
109
+
110
+
111
+
112
+ # 2.0.0-alpha.39 (2023-05-11)
113
+
114
+ **Note:** Version bump only for package @patternfly/documentation-framework
115
+
116
+
117
+
118
+
119
+
120
+ # 2.0.0-alpha.38 (2023-05-11)
121
+
122
+ **Note:** Version bump only for package @patternfly/documentation-framework
123
+
124
+
125
+
126
+
127
+
128
+ # 2.0.0-alpha.37 (2023-05-10)
129
+
130
+ **Note:** Version bump only for package @patternfly/documentation-framework
131
+
132
+
133
+
134
+
135
+
136
+ # 2.0.0-alpha.36 (2023-05-10)
137
+
138
+ **Note:** Version bump only for package @patternfly/documentation-framework
139
+
140
+
141
+
142
+
143
+
144
+ # 2.0.0-alpha.35 (2023-05-09)
145
+
146
+
147
+ ### Bug Fixes
148
+
149
+ * **org:** Fix up org css issues after doc framework update ([#3518](https://github.com/patternfly/patternfly-org/issues/3518)) ([a6f20c5](https://github.com/patternfly/patternfly-org/commit/a6f20c569a8ba8df2da23722c48f73f750e229e3))
150
+
151
+
152
+
153
+
154
+
155
+ # 2.0.0-alpha.34 (2023-05-05)
156
+
157
+
158
+ ### Features
159
+
160
+ * **docs:** Update docs framework with latest react code ([#3517](https://github.com/patternfly/patternfly-org/issues/3517)) ([2df0147](https://github.com/patternfly/patternfly-org/commit/2df014737dbbe35033d0b28ee71b40d5fbe22ed2))
161
+
162
+
163
+
164
+
165
+
166
+ # 2.0.0-alpha.33 (2023-05-04)
167
+
168
+
169
+ ### Bug Fixes
170
+
171
+ * **css:** update css selectors for v5 versioning ([#3516](https://github.com/patternfly/patternfly-org/issues/3516)) ([f681945](https://github.com/patternfly/patternfly-org/commit/f681945e2de1200fbb7d2d6ab8262091b1e72a8e))
172
+
173
+
174
+
175
+
176
+
177
+ # 2.0.0-alpha.32 (2023-05-02)
178
+
179
+ **Note:** Version bump only for package @patternfly/documentation-framework
180
+
181
+
182
+
183
+
184
+
185
+ # 2.0.0-alpha.31 (2023-05-01)
186
+
187
+
188
+ ### Bug Fixes
189
+
190
+ * update Text component summary to fix build ([64b3590](https://github.com/patternfly/patternfly-org/commit/64b359029fa14be143ddec212fdf89a3033145d5))
191
+
192
+
193
+
194
+
195
+
196
+ # 2.0.0-alpha.30 (2023-04-27)
197
+
198
+
199
+ ### Bug Fixes
200
+
201
+ * white space change to test CI ([e9e7ed3](https://github.com/patternfly/patternfly-org/commit/e9e7ed3cf6007fcf022dd7693bfed12bdf9d7e9a))
202
+
203
+
204
+
205
+
206
+
207
+ # 2.0.0-alpha.29 (2023-04-26)
208
+
209
+
210
+ ### Bug Fixes
211
+
212
+ * sidebar open by default ([#3506](https://github.com/patternfly/patternfly-org/issues/3506)) ([fb5f086](https://github.com/patternfly/patternfly-org/commit/fb5f08611d3edde80a559635b39dab7138f06d1d))
213
+
214
+
215
+
216
+
217
+
218
+ # 2.0.0-alpha.28 (2023-04-26)
219
+
220
+ **Note:** Version bump only for package @patternfly/documentation-framework
221
+
222
+
223
+
224
+
225
+
226
+ # 2.0.0-alpha.27 (2023-04-25)
227
+
228
+
229
+ ### Bug Fixes
230
+
231
+ * **docs:** Update static dir and fix null loading ([#3505](https://github.com/patternfly/patternfly-org/issues/3505)) ([e65a1b2](https://github.com/patternfly/patternfly-org/commit/e65a1b21ae7671322adcbcef1ada69436fd07802))
232
+
233
+
234
+
235
+
236
+
237
+ # 2.0.0-alpha.26 (2023-04-21)
238
+
239
+ **Note:** Version bump only for package @patternfly/documentation-framework
240
+
241
+
242
+
243
+
244
+
245
+ # 2.0.0-alpha.25 (2023-04-19)
246
+
247
+ **Note:** Version bump only for package @patternfly/documentation-framework
248
+
249
+
250
+
251
+
252
+
253
+ # 2.0.0-alpha.24 (2023-04-17)
254
+
255
+ **Note:** Version bump only for package @patternfly/documentation-framework
256
+
257
+
258
+
259
+
260
+
261
+ # 2.0.0-alpha.23 (2023-04-17)
262
+
263
+
264
+ ### Features
265
+
266
+ * **docs-framework:** add support for exposing function documentation ([#3485](https://github.com/patternfly/patternfly-org/issues/3485)) ([2f19ded](https://github.com/patternfly/patternfly-org/commit/2f19deda84c75042df1870c0950bb173eb2c3d84))
267
+
268
+
269
+
270
+
271
+
272
+ # 2.0.0-alpha.22 (2023-04-17)
273
+
274
+ **Note:** Version bump only for package @patternfly/documentation-framework
275
+
276
+
277
+
278
+
279
+
280
+ # 2.0.0-alpha.21 (2023-04-15)
281
+
282
+
283
+ ### Bug Fixes
284
+
285
+ * clean up references to katacoda ([#3491](https://github.com/patternfly/patternfly-org/issues/3491)) ([5de986b](https://github.com/patternfly/patternfly-org/commit/5de986b917ee7edf9c476bb2df2f2ee4d454a7e1))
286
+
287
+
288
+
289
+
290
+
291
+ # 2.0.0-alpha.20 (2023-04-14)
292
+
293
+ **Note:** Version bump only for package @patternfly/documentation-framework
294
+
295
+
296
+
297
+
298
+
299
+ # 2.0.0-alpha.19 (2023-04-12)
300
+
301
+ **Note:** Version bump only for package @patternfly/documentation-framework
302
+
303
+
304
+
305
+
306
+
307
+ # 2.0.0-alpha.18 (2023-04-11)
308
+
309
+
310
+ ### Bug Fixes
311
+
312
+ * **cssVariables:** Update expandId ([b9b0a6e](https://github.com/patternfly/patternfly-org/commit/b9b0a6edcc103c442f24caae086b68558415be57))
313
+
314
+
315
+
316
+
317
+
318
+ # 2.0.0-alpha.17 (2023-04-11)
319
+
320
+
321
+ ### Bug Fixes
322
+
323
+ * **docs:** fixes display & search bugs on icons page ([#3483](https://github.com/patternfly/patternfly-org/issues/3483)) ([39b225c](https://github.com/patternfly/patternfly-org/commit/39b225cdcbdc4c01c5002750600708eab6427f60))
324
+
325
+
326
+
327
+
328
+
329
+ # 2.0.0-alpha.16 (2023-04-11)
330
+
331
+
332
+ ### Features
333
+
334
+ * **tables:** update tables, context selector ([#3474](https://github.com/patternfly/patternfly-org/issues/3474)) ([cd82c35](https://github.com/patternfly/patternfly-org/commit/cd82c356f568f3368bc22319d614fde8dd74fb38))
335
+
336
+
337
+
338
+
339
+
340
+ # 2.0.0-alpha.15 (2023-04-06)
341
+
342
+ **Note:** Version bump only for package @patternfly/documentation-framework
343
+
344
+
345
+
346
+
347
+
348
+ # 2.0.0-alpha.14 (2023-04-03)
349
+
350
+
351
+ ### Bug Fixes
352
+
353
+ * **Tables:** temporarily comment out tables so Table can be deprecated ([#3468](https://github.com/patternfly/patternfly-org/issues/3468)) ([f4aa5ed](https://github.com/patternfly/patternfly-org/commit/f4aa5ed791161851cdc92d02d0c752eef4028306))
354
+
355
+
356
+
357
+
358
+
359
+ # 2.0.0-alpha.13 (2023-03-31)
360
+
361
+ **Note:** Version bump only for package @patternfly/documentation-framework
362
+
363
+
364
+
365
+
366
+
367
+ # 2.0.0-alpha.12 (2023-03-30)
368
+
369
+ **Note:** Version bump only for package @patternfly/documentation-framework
370
+
371
+
372
+
373
+
374
+
375
+ # 2.0.0-alpha.11 (2023-03-29)
376
+
377
+ **Note:** Version bump only for package @patternfly/documentation-framework
378
+
379
+
380
+
381
+
382
+
383
+ # 2.0.0-alpha.10 (2023-03-15)
384
+
385
+ **Note:** Version bump only for package @patternfly/documentation-framework
386
+
387
+
388
+
389
+
390
+
391
+ # 2.0.0-alpha.9 (2023-03-09)
392
+
393
+
394
+ ### Bug Fixes
395
+
396
+ * **versions:** fix typo ([a9b8fe2](https://github.com/patternfly/patternfly-org/commit/a9b8fe296a9c28bdd9ada01a80b1653810802ddf))
397
+
398
+
399
+
400
+
401
+
402
+ # 2.0.0-alpha.8 (2023-03-03)
403
+
404
+
405
+ ### Features
406
+
407
+ * **docs-framework:** add legacy ssl cli option ([#3433](https://github.com/patternfly/patternfly-org/issues/3433)) ([ccb56fb](https://github.com/patternfly/patternfly-org/commit/ccb56fb27026ebe4be5f5166a86cf3c2f995a872))
408
+
409
+
410
+
411
+
412
+
413
+ # 2.0.0-alpha.7 (2023-03-01)
414
+
415
+ **Note:** Version bump only for package @patternfly/documentation-framework
416
+
417
+
418
+
419
+
420
+
421
+ # 2.0.0-alpha.6 (2023-03-01)
422
+
423
+ **Note:** Version bump only for package @patternfly/documentation-framework
424
+
425
+
426
+
427
+
428
+
6
429
  # 2.0.0-alpha.5 (2023-03-01)
7
430
 
8
431
 
package/app.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import ReactDOM from 'react-dom';
2
+ import { createRoot, hydrateRoot } from 'react-dom/client';
3
3
  import { Router, useLocation } from '@reach/router';
4
4
  import 'client-styles'; // Webpack replaces this import: patternfly-docs.css.js
5
5
  import { SideNavLayout } from '@patternfly/documentation-framework/layouts';
@@ -16,10 +16,10 @@ import './components/sideNav/sideNav.css';
16
16
  import './components/topNav/topNav.css';
17
17
  import './layouts/sideNavLayout/sideNavLayout.css';
18
18
 
19
- const AppRoute = ({ child, katacodaLayout, title, path }) => {
19
+ const AppRoute = ({ child, title, path }) => {
20
20
  const pathname = useLocation().pathname;
21
21
  if (typeof window !== 'undefined' && window.gtag) {
22
- gtag('config', 'UA-47523816-6', {
22
+ gtag('config', process.env.googleAnalyticsID, {
23
23
  'page_path': pathname,
24
24
  'page_title': (title || pathname)
25
25
  });
@@ -31,7 +31,7 @@ const AppRoute = ({ child, katacodaLayout, title, path }) => {
31
31
  return (
32
32
  <React.Fragment>
33
33
  {child}
34
- {!katacodaLayout && process.env.hasFooter && <Footer />}
34
+ {process.env.hasFooter && <Footer />}
35
35
  </React.Fragment>
36
36
  );
37
37
  }
@@ -39,18 +39,16 @@ const AppRoute = ({ child, katacodaLayout, title, path }) => {
39
39
  const SideNavRouter = () => {
40
40
  const pathname = useLocation().pathname.replace(process.env.pathPrefix, '');
41
41
  const componentsData = process?.env?.componentsData;
42
- const navOpen = !routes[pathname] || !routes[pathname].katacodaLayout;
43
42
  return (
44
- <SideNavLayout groupedRoutes={groupedRoutes} navOpen={navOpen} >
43
+ <SideNavLayout groupedRoutes={groupedRoutes} navOpen={true} >
45
44
  <Router id="ws-page-content-router">
46
45
  {Object.entries(routes)
47
- .map(([path, { Component, title, sources, katacodaLayout, id }]) => Component
46
+ .map(([path, { Component, title, sources, id }]) => Component
48
47
  ? <AppRoute
49
48
  key={path}
50
49
  path={path}
51
50
  default={path === '/404'}
52
51
  child={<Component />}
53
- katacodaLayout={katacodaLayout}
54
52
  title={title}
55
53
  />
56
54
  : <AppRoute
@@ -65,7 +63,6 @@ const SideNavRouter = () => {
65
63
  componentsData={componentsData}
66
64
  />
67
65
  }
68
- katacodaLayout={katacodaLayout}
69
66
  title={title}
70
67
  />
71
68
  )
@@ -107,8 +104,12 @@ const isPrerender = process.env.PRERENDER;
107
104
  // Don't use ReactDOM in SSR
108
105
  if (!isPrerender) {
109
106
  function render() {
110
- const renderFn = isProd ? ReactDOM.hydrate : ReactDOM.render;
111
- renderFn(<App />, document.getElementById('root'));
107
+ const container = document.getElementById('root');
108
+ if (isProd) {
109
+ hydrateRoot(container, <App />);
110
+ } else {
111
+ createRoot(container).render(<App />);
112
+ }
112
113
  }
113
114
  // On first load, await promise for the current page to avoid flashing a "Loading..." state
114
115
  const Component = getAsyncComponent(null);
@@ -3,8 +3,8 @@
3
3
  }
4
4
 
5
5
  .ws-heading-anchor {
6
- color: var(--pf-global--Color--100);
7
- transform: translate(calc(-100% - var(--pf-global--spacer--xs)), -50%);
6
+ color: var(--pf-v5-global--Color--100);
7
+ transform: translate(calc(-100% - var(--pf-v5-global--spacer--xs)), -50%);
8
8
  opacity: 0;
9
9
  position: absolute;
10
10
  left: 0;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Title } from '@patternfly/react-core';
2
+ import { Title, Flex, FlexItem } from '@patternfly/react-core';
3
3
  import LinkIcon from '@patternfly/react-icons/dist/esm/icons/link-icon';
4
4
  import { Link } from '../link/link';
5
5
  import { slugger } from '../../helpers/slugger';
@@ -25,17 +25,22 @@ export const AutoLinkHeader = ({
25
25
  const slug = id || slugger(children);
26
26
 
27
27
  return (
28
- <Title
29
- id={slug}
30
- size={sizes[size]}
31
- headingLevel={headingLevel || size}
32
- className={`ws-heading ${className}`}
33
- tabIndex={-1}
34
- >
35
- <Link href={`#${slug}`} className="ws-heading-anchor" tabIndex="-1" aria-hidden>
36
- <LinkIcon className="ws-heading-anchor-icon" style={{ verticalAlign: 'middle' }} />
37
- </Link>
38
- {children} {metaText}
39
- </Title>
28
+ <Flex alignItems={{ default: 'alignItemsCenter'}} spaceItems={{ default: 'spaceItemsNone' }}>
29
+ <FlexItem>
30
+ <Title
31
+ id={slug}
32
+ size={sizes[size]}
33
+ headingLevel={headingLevel || size}
34
+ className={`ws-heading ${className}`}
35
+ tabIndex={-1}
36
+ >
37
+ <Link href={`#${slug}`} className="ws-heading-anchor" tabIndex="-1" aria-hidden>
38
+ <LinkIcon className="ws-heading-anchor-icon" style={{ verticalAlign: 'middle' }} />
39
+ </Link>
40
+ {children}
41
+ </Title>
42
+ </FlexItem>
43
+ <FlexItem> {metaText}</FlexItem>
44
+ </Flex>
40
45
  )
41
46
  };
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { TextInput } from "@patternfly/react-core";
2
+ import { SearchInput } from "@patternfly/react-core";
3
3
 
4
4
  export class CSSSearch extends React.Component {
5
5
  constructor(props) {
@@ -9,7 +9,7 @@ export class CSSSearch extends React.Component {
9
9
  };
10
10
  }
11
11
 
12
- onFilterChange = (_change, event) => {
12
+ onFilterChange = (event) => {
13
13
  this.setState(
14
14
  {
15
15
  filterValue: event.target.value
@@ -20,8 +20,7 @@ export class CSSSearch extends React.Component {
20
20
 
21
21
  render() {
22
22
  return (
23
- <TextInput
24
- type="text"
23
+ <SearchInput
25
24
  aria-label="Filter CSS Variables"
26
25
  placeholder="Filter CSS Variables"
27
26
  value={this.state.filterValue}
@@ -2,14 +2,14 @@
2
2
  display: inline-block;
3
3
  height: 18px;
4
4
  width: 18px;
5
- border: var(--pf-global--BorderWidth--sm) solid var(--pf-global--BorderColor--200);
6
- border-radius: var(--pf-global--BorderRadius--lg);
5
+ border: var(--pf-v5-global--BorderWidth--sm) solid var(--pf-v5-global--BorderColor--200);
6
+ border-radius: var(--pf-v5-global--BorderRadius--lg);
7
7
  }
8
8
 
9
9
  .ws-td-text {
10
- font-size: var(--pf-global--FontSize--sm) !important;
10
+ font-size: var(--pf-v5-global--FontSize--sm) !important;
11
11
  }
12
12
 
13
13
  .ws-css-property {
14
- padding: var(--pf-global--spacer--xs) var(--pf-global--spacer--md);
14
+ padding: var(--pf-v5-global--spacer--xs) var(--pf-v5-global--spacer--md);
15
15
  }