@patternfly/quickstarts 0.0.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.
- package/README.md +546 -0
- package/dist/ConsoleInternal/components/markdown-view.d.ts +19 -0
- package/dist/ConsoleInternal/components/utils/camel-case-wrap.d.ts +6 -0
- package/dist/ConsoleInternal/components/utils/index.d.ts +3 -0
- package/dist/ConsoleInternal/components/utils/router.d.ts +9 -0
- package/dist/ConsoleInternal/components/utils/status-box.d.ts +20 -0
- package/dist/ConsoleInternal/module/k8s/types.d.ts +42 -0
- package/dist/ConsoleShared/index.d.ts +1 -0
- package/dist/ConsoleShared/src/components/index.d.ts +7 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/MarkdownCopyClipboard.d.ts +13 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/accordion-extension.d.ts +7 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/accordion-render-extension.d.ts +6 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/admonition-extension.d.ts +7 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/code-extension.d.ts +7 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/const.d.ts +5 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/index.d.ts +7 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/inline-clipboard-extension.d.ts +7 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/multiline-clipboard-extension.d.ts +7 -0
- package/dist/ConsoleShared/src/components/markdown-extensions/utils.d.ts +1 -0
- package/dist/ConsoleShared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.d.ts +7 -0
- package/dist/ConsoleShared/src/components/markdown-highlight-extension/highlight-consts.d.ts +4 -0
- package/dist/ConsoleShared/src/components/markdown-highlight-extension/index.d.ts +1 -0
- package/dist/ConsoleShared/src/components/modal/Modal.d.ts +9 -0
- package/dist/ConsoleShared/src/components/modal/index.d.ts +1 -0
- package/dist/ConsoleShared/src/components/popper/Portal.d.ts +8 -0
- package/dist/ConsoleShared/src/components/popper/SimplePopper.d.ts +6 -0
- package/dist/ConsoleShared/src/components/popper/index.d.ts +2 -0
- package/dist/ConsoleShared/src/components/spotlight/InteractiveSpotlight.d.ts +7 -0
- package/dist/ConsoleShared/src/components/spotlight/Spotlight.d.ts +7 -0
- package/dist/ConsoleShared/src/components/spotlight/StaticSpotlight.d.ts +7 -0
- package/dist/ConsoleShared/src/components/spotlight/index.d.ts +1 -0
- package/dist/ConsoleShared/src/components/status/GenericStatus.d.ts +12 -0
- package/dist/ConsoleShared/src/components/status/NotStartedIcon.d.ts +3 -0
- package/dist/ConsoleShared/src/components/status/PopoverStatus.d.ts +13 -0
- package/dist/ConsoleShared/src/components/status/Status.d.ts +11 -0
- package/dist/ConsoleShared/src/components/status/StatusIconAndText.d.ts +8 -0
- package/dist/ConsoleShared/src/components/status/icons.d.ts +9 -0
- package/dist/ConsoleShared/src/components/status/index.d.ts +1 -0
- package/dist/ConsoleShared/src/components/status/statuses.d.ts +5 -0
- package/dist/ConsoleShared/src/components/status/types.d.ts +9 -0
- package/dist/ConsoleShared/src/components/utils/FallbackImg.d.ts +9 -0
- package/dist/ConsoleShared/src/components/utils/index.d.ts +1 -0
- package/dist/ConsoleShared/src/constants/index.d.ts +1 -0
- package/dist/ConsoleShared/src/constants/ui.d.ts +1 -0
- package/dist/ConsoleShared/src/hooks/index.d.ts +6 -0
- package/dist/ConsoleShared/src/hooks/scroll.d.ts +8 -0
- package/dist/ConsoleShared/src/hooks/useBoundingClientRect.d.ts +3 -0
- package/dist/ConsoleShared/src/hooks/useEventListener.d.ts +1 -0
- package/dist/ConsoleShared/src/hooks/useForceRender.d.ts +4 -0
- package/dist/ConsoleShared/src/hooks/useResizeObserver.d.ts +1 -0
- package/dist/ConsoleShared/src/hooks/useScrollShadows.d.ts +7 -0
- package/dist/ConsoleShared/src/index.d.ts +4 -0
- package/dist/ConsoleShared/src/utils/index.d.ts +1 -0
- package/dist/ConsoleShared/src/utils/useCombineRefs.d.ts +2 -0
- package/dist/HelpTopicDrawer.d.ts +33 -0
- package/dist/HelpTopicPanelContent.d.ts +11 -0
- package/dist/QuickStartCatalogPage.d.ts +14 -0
- package/dist/QuickStartCloseModal.d.ts +8 -0
- package/dist/QuickStartController.d.ts +10 -0
- package/dist/QuickStartDrawer.d.ts +62 -0
- package/dist/QuickStartMarkdownView.d.ts +9 -0
- package/dist/QuickStartPanelContent.d.ts +15 -0
- package/dist/catalog/Catalog/QuickStartCatalogHeader.d.ts +6 -0
- package/dist/catalog/Catalog/QuickStartCatalogSection.d.ts +5 -0
- package/dist/catalog/Catalog/QuickStartCatalogToolbar.d.ts +5 -0
- package/dist/catalog/Catalog/index.d.ts +3 -0
- package/dist/catalog/QuickStartCatalog.d.ts +8 -0
- package/dist/catalog/QuickStartTile.d.ts +14 -0
- package/dist/catalog/QuickStartTileDescription.d.ts +8 -0
- package/dist/catalog/QuickStartTileFooter.d.ts +8 -0
- package/dist/catalog/QuickStartTileFooterExternal.d.ts +8 -0
- package/dist/catalog/QuickStartTileHeader.d.ts +24 -0
- package/dist/catalog/Toolbar/QuickStartCatalogFilter.d.ts +10 -0
- package/dist/catalog/Toolbar/QuickStartCatalogFilterItems.d.ts +31 -0
- package/dist/catalog/index.d.ts +9 -0
- package/dist/controller/QuickStartConclusion.d.ts +12 -0
- package/dist/controller/QuickStartContent.d.ts +14 -0
- package/dist/controller/QuickStartFooter.d.ts +14 -0
- package/dist/controller/QuickStartIntroduction.d.ts +12 -0
- package/dist/controller/QuickStartTaskHeader.d.ts +15 -0
- package/dist/controller/QuickStartTaskHeaderList.d.ts +10 -0
- package/dist/controller/QuickStartTaskReview.d.ts +10 -0
- package/dist/controller/QuickStartTasks.d.ts +12 -0
- package/dist/data/mocks/json/explore-pipeline-quickstart.d.ts +2 -0
- package/dist/data/mocks/json/explore-serverless-quickstart.d.ts +2 -0
- package/dist/data/mocks/json/monitor-sampleapp-quickstart.d.ts +2 -0
- package/dist/data/mocks/json/tour-icons.d.ts +2 -0
- package/dist/data/quick-start-test-data.d.ts +2 -0
- package/dist/data/test-utils.d.ts +8 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.es.js +2593 -0
- package/dist/index.es.js.map +1 -0
- package/dist/index.js +2695 -0
- package/dist/index.js.map +1 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/design-guidelines.md +105 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/card-elements copy.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/card-elements.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/catalog-elements.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/check-your-work.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/introduction-screen.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/mixed-catalog.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/prerequisites.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/qs-context.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/side-panel-elements.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/side-panel-resized.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/side-panel.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/task-no.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/task-yes.png +0 -0
- package/dist/patternfly-docs/quick-starts/design-guidelines/img/task.png +0 -0
- package/dist/patternfly-docs/quick-starts/examples/Basic.jsx +73 -0
- package/dist/patternfly-docs/quick-starts/examples/HelpTopic.jsx +51 -0
- package/dist/patternfly-docs/quick-starts/examples/about.md +84 -0
- package/dist/patternfly-docs/quick-starts/examples/basic.md +29 -0
- package/dist/patternfly-docs/quick-starts/examples/example-data/example-help-topics.js +173 -0
- package/dist/patternfly-docs/quick-starts/examples/example-data/example-quickstarts.js +215 -0
- package/dist/patternfly-docs/quick-starts/examples/example-data/index.js +15 -0
- package/dist/patternfly-docs/quick-starts/examples/help-topics.md +28 -0
- package/dist/patternfly-docs/quick-starts/examples/img/catalog.png +0 -0
- package/dist/patternfly-docs/quick-starts/examples/img/help-topic.png +0 -0
- package/dist/patternfly-docs/quick-starts/examples/img/side-panel.png +0 -0
- package/dist/patternfly-global.css +1302 -0
- package/dist/patternfly-nested.css +11812 -0
- package/dist/quickstarts-base.css +1219 -0
- package/dist/quickstarts-full.es.js +31861 -0
- package/dist/quickstarts-full.es.js.map +1 -0
- package/dist/quickstarts-standalone.css +868 -0
- package/dist/quickstarts-standalone.min.css +4 -0
- package/dist/quickstarts-vendor.css +165 -0
- package/dist/quickstarts.css +1383 -0
- package/dist/quickstarts.min.css +1 -0
- package/dist/styles/patternfly-global-entry.d.ts +1 -0
- package/dist/styles/patternfly-nested-entry.d.ts +1 -0
- package/dist/styles/quickstarts-standalone-entry.d.ts +1 -0
- package/dist/styles/vendor-entry.d.ts +1 -0
- package/dist/utils/PluralResolver.d.ts +16 -0
- package/dist/utils/asciidoc-procedure-parser.d.ts +12 -0
- package/dist/utils/const.d.ts +6 -0
- package/dist/utils/help-topic-context.d.ts +23 -0
- package/dist/utils/help-topic-types.d.ts +13 -0
- package/dist/utils/quick-start-context.d.ts +81 -0
- package/dist/utils/quick-start-types.d.ts +60 -0
- package/dist/utils/quick-start-utils.d.ts +10 -0
- package/dist/utils/useLocalStorage.d.ts +1 -0
- package/dist/vendor.js +2 -0
- package/dist/vendor.js.map +1 -0
- package/package.json +105 -0
- package/src/ConsoleInternal/components/_icon-and-text.scss +14 -0
- package/src/ConsoleInternal/components/_markdown-view.scss +19 -0
- package/src/ConsoleInternal/components/catalog/_catalog.scss +392 -0
- package/src/ConsoleInternal/components/markdown-view.tsx +276 -0
- package/src/ConsoleInternal/components/utils/_status-box.scss +58 -0
- package/src/ConsoleInternal/components/utils/camel-case-wrap.tsx +33 -0
- package/src/ConsoleInternal/components/utils/index.tsx +3 -0
- package/src/ConsoleInternal/components/utils/router.ts +45 -0
- package/src/ConsoleInternal/components/utils/status-box.tsx +56 -0
- package/src/ConsoleInternal/module/k8s/types.ts +53 -0
- package/src/ConsoleShared/index.ts +1 -0
- package/src/ConsoleShared/src/components/index.ts +7 -0
- package/src/ConsoleShared/src/components/layout/PageLayout.scss +29 -0
- package/src/ConsoleShared/src/components/markdown-extensions/MarkdownCopyClipboard.tsx +95 -0
- package/src/ConsoleShared/src/components/markdown-extensions/__tests__/MarkdownCopyClipboard.spec.tsx +25 -0
- package/src/ConsoleShared/src/components/markdown-extensions/__tests__/test-data.ts +5 -0
- package/src/ConsoleShared/src/components/markdown-extensions/accordion-extension.tsx +51 -0
- package/src/ConsoleShared/src/components/markdown-extensions/accordion-render-extension.tsx +60 -0
- package/src/ConsoleShared/src/components/markdown-extensions/admonition-extension.tsx +67 -0
- package/src/ConsoleShared/src/components/markdown-extensions/code-extension.tsx +23 -0
- package/src/ConsoleShared/src/components/markdown-extensions/const.ts +5 -0
- package/src/ConsoleShared/src/components/markdown-extensions/index.ts +7 -0
- package/src/ConsoleShared/src/components/markdown-extensions/inline-clipboard-extension.tsx +39 -0
- package/src/ConsoleShared/src/components/markdown-extensions/multiline-clipboard-extension.tsx +44 -0
- package/src/ConsoleShared/src/components/markdown-extensions/showdown-extension.scss +52 -0
- package/src/ConsoleShared/src/components/markdown-extensions/utils.ts +1 -0
- package/src/ConsoleShared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.tsx +65 -0
- package/src/ConsoleShared/src/components/markdown-highlight-extension/highlight-consts.ts +9 -0
- package/src/ConsoleShared/src/components/markdown-highlight-extension/index.ts +1 -0
- package/src/ConsoleShared/src/components/modal/Modal.scss +3 -0
- package/src/ConsoleShared/src/components/modal/Modal.tsx +19 -0
- package/src/ConsoleShared/src/components/modal/index.ts +1 -0
- package/src/ConsoleShared/src/components/popper/Portal.tsx +25 -0
- package/src/ConsoleShared/src/components/popper/SimplePopper.tsx +92 -0
- package/src/ConsoleShared/src/components/popper/index.ts +2 -0
- package/src/ConsoleShared/src/components/spotlight/InteractiveSpotlight.tsx +58 -0
- package/src/ConsoleShared/src/components/spotlight/Spotlight.tsx +35 -0
- package/src/ConsoleShared/src/components/spotlight/StaticSpotlight.tsx +32 -0
- package/src/ConsoleShared/src/components/spotlight/index.ts +1 -0
- package/src/ConsoleShared/src/components/spotlight/spotlight.scss +63 -0
- package/src/ConsoleShared/src/components/status/GenericStatus.tsx +34 -0
- package/src/ConsoleShared/src/components/status/NotStartedIcon.tsx +27 -0
- package/src/ConsoleShared/src/components/status/PopoverStatus.tsx +39 -0
- package/src/ConsoleShared/src/components/status/Status.tsx +38 -0
- package/src/ConsoleShared/src/components/status/StatusIconAndText.tsx +42 -0
- package/src/ConsoleShared/src/components/status/icons.tsx +39 -0
- package/src/ConsoleShared/src/components/status/index.tsx +1 -0
- package/src/ConsoleShared/src/components/status/statuses.tsx +20 -0
- package/src/ConsoleShared/src/components/status/types.ts +8 -0
- package/src/ConsoleShared/src/components/utils/FallbackImg.tsx +20 -0
- package/src/ConsoleShared/src/components/utils/index.ts +1 -0
- package/src/ConsoleShared/src/constants/index.ts +1 -0
- package/src/ConsoleShared/src/constants/ui.ts +1 -0
- package/src/ConsoleShared/src/hooks/index.ts +6 -0
- package/src/ConsoleShared/src/hooks/scroll.ts +52 -0
- package/src/ConsoleShared/src/hooks/useBoundingClientRect.ts +18 -0
- package/src/ConsoleShared/src/hooks/useEventListener.ts +14 -0
- package/src/ConsoleShared/src/hooks/useForceRender.ts +6 -0
- package/src/ConsoleShared/src/hooks/useResizeObserver.ts +19 -0
- package/src/ConsoleShared/src/hooks/useScrollShadows.ts +45 -0
- package/src/ConsoleShared/src/index.ts +4 -0
- package/src/ConsoleShared/src/utils/index.ts +1 -0
- package/src/ConsoleShared/src/utils/useCombineRefs.ts +16 -0
- package/src/HelpTopicDrawer.tsx +116 -0
- package/src/HelpTopicPanelContent.tsx +160 -0
- package/src/QuickStartCatalogPage.tsx +195 -0
- package/src/QuickStartCloseModal.tsx +47 -0
- package/src/QuickStartController.tsx +111 -0
- package/src/QuickStartDrawer.scss +11 -0
- package/src/QuickStartDrawer.tsx +265 -0
- package/src/QuickStartMarkdownView.tsx +80 -0
- package/src/QuickStartPanelContent.scss +46 -0
- package/src/QuickStartPanelContent.tsx +165 -0
- package/src/__tests__/quick-start-utils.spec.tsx +16 -0
- package/src/catalog/Catalog/QuickStartCatalogHeader.tsx +18 -0
- package/src/catalog/Catalog/QuickStartCatalogSection.tsx +9 -0
- package/src/catalog/Catalog/QuickStartCatalogToolbar.tsx +12 -0
- package/src/catalog/Catalog/index.ts +3 -0
- package/src/catalog/QuickStartCatalog.scss +8 -0
- package/src/catalog/QuickStartCatalog.tsx +42 -0
- package/src/catalog/QuickStartTile.scss +11 -0
- package/src/catalog/QuickStartTile.tsx +129 -0
- package/src/catalog/QuickStartTileDescription.scss +29 -0
- package/src/catalog/QuickStartTileDescription.tsx +79 -0
- package/src/catalog/QuickStartTileFooter.tsx +101 -0
- package/src/catalog/QuickStartTileFooterExternal.tsx +40 -0
- package/src/catalog/QuickStartTileHeader.scss +16 -0
- package/src/catalog/QuickStartTileHeader.tsx +105 -0
- package/src/catalog/Toolbar/QuickStartCatalogFilter.scss +25 -0
- package/src/catalog/Toolbar/QuickStartCatalogFilter.tsx +32 -0
- package/src/catalog/Toolbar/QuickStartCatalogFilterItems.tsx +218 -0
- package/src/catalog/__tests__/QuickStartCatalog.spec.tsx +35 -0
- package/src/catalog/__tests__/QuickStartTile.spec.tsx +38 -0
- package/src/catalog/__tests__/QuickStartTileDescription.spec.tsx +44 -0
- package/src/catalog/index.ts +9 -0
- package/src/controller/QuickStartConclusion.tsx +63 -0
- package/src/controller/QuickStartContent.scss +12 -0
- package/src/controller/QuickStartContent.tsx +72 -0
- package/src/controller/QuickStartFooter.scss +13 -0
- package/src/controller/QuickStartFooter.tsx +124 -0
- package/src/controller/QuickStartIntroduction.scss +35 -0
- package/src/controller/QuickStartIntroduction.tsx +64 -0
- package/src/controller/QuickStartTaskHeader.scss +58 -0
- package/src/controller/QuickStartTaskHeader.tsx +125 -0
- package/src/controller/QuickStartTaskHeaderList.scss +17 -0
- package/src/controller/QuickStartTaskHeaderList.tsx +33 -0
- package/src/controller/QuickStartTaskReview.scss +30 -0
- package/src/controller/QuickStartTaskReview.tsx +81 -0
- package/src/controller/QuickStartTasks.scss +89 -0
- package/src/controller/QuickStartTasks.tsx +75 -0
- package/src/controller/__tests__/QuickStartConclusion.spec.tsx +95 -0
- package/src/controller/__tests__/QuickStartContent.spec.tsx +52 -0
- package/src/controller/__tests__/QuickStartFooter.spec.tsx +148 -0
- package/src/controller/__tests__/QuickStartTaskHeader.spec.tsx +43 -0
- package/src/controller/__tests__/QuickStartTaskReview.spec.tsx +45 -0
- package/src/controller/__tests__/QuickStartTasks.spec.tsx +81 -0
- package/src/data/mocks/json/explore-pipeline-quickstart.ts +66 -0
- package/src/data/mocks/json/explore-serverless-quickstart.ts +90 -0
- package/src/data/mocks/json/monitor-sampleapp-quickstart.ts +77 -0
- package/src/data/mocks/json/tour-icons.ts +3 -0
- package/src/data/mocks/yamls/add-healthchecks-quickstart.yaml +67 -0
- package/src/data/mocks/yamls/explore-pipeline-quickstart.yaml +57 -0
- package/src/data/mocks/yamls/explore-serverless-quickstart.yaml +83 -0
- package/src/data/mocks/yamls/install-associate-pipeline-quickstart.yaml +74 -0
- package/src/data/mocks/yamls/monitor-sampleapp-quickstart.yaml +66 -0
- package/src/data/mocks/yamls/sample-application-quickstart.yaml +97 -0
- package/src/data/mocks/yamls/serverless-application-quickstart.yaml +141 -0
- package/src/data/quick-start-test-data.ts +10 -0
- package/src/data/test-utils.ts +11 -0
- package/src/declaration.d.ts +2 -0
- package/src/index.ts +17 -0
- package/src/locales/en/quickstart.json +46 -0
- package/src/styles/_base.scss +54 -0
- package/src/styles/_dark-custom-override.scss +62 -0
- package/src/styles/legacy-bootstrap/README.md +21 -0
- package/src/styles/legacy-bootstrap/_code.scss +46 -0
- package/src/styles/legacy-bootstrap/_tables.scss +38 -0
- package/src/styles/legacy-bootstrap/_type.scss +92 -0
- package/src/styles/legacy-bootstrap/_variables.scss +48 -0
- package/src/styles/legacy-bootstrap.scss +5 -0
- package/src/styles/patternfly-global-entry.ts +1 -0
- package/src/styles/patternfly-global.scss +28 -0
- package/src/styles/patternfly-nested-entry.ts +1 -0
- package/src/styles/patternfly-nested.scss +18 -0
- package/src/styles/quickstarts-standalone-entry.ts +1 -0
- package/src/styles/quickstarts-standalone.scss +7 -0
- package/src/styles/style.scss +12 -0
- package/src/styles/vendor-entry.ts +1 -0
- package/src/styles/vendor.scss +7 -0
- package/src/utils/PluralResolver.ts +362 -0
- package/src/utils/asciidoc-procedure-parser.ts +130 -0
- package/src/utils/const.ts +10 -0
- package/src/utils/help-topic-context.tsx +72 -0
- package/src/utils/help-topic-types.ts +16 -0
- package/src/utils/quick-start-context.tsx +473 -0
- package/src/utils/quick-start-types.ts +73 -0
- package/src/utils/quick-start-utils.ts +88 -0
- package/src/utils/useLocalStorage.ts +38 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/history/index.js","../src/utils/quick-start-types.ts","../src/utils/const.ts","../src/ConsoleInternal/components/utils/router.ts","../src/utils/PluralResolver.ts","../src/utils/quick-start-utils.ts","../src/utils/quick-start-context.tsx","../src/ConsoleInternal/components/utils/status-box.tsx","../src/ConsoleInternal/components/utils/camel-case-wrap.tsx","../../../node_modules/@patternfly/react-catalog-view-extension/dist/esm/components/CatalogTile/CatalogTile.js","../src/ConsoleShared/src/components/modal/Modal.tsx","../src/ConsoleShared/src/components/popper/Portal.tsx","../src/ConsoleShared/src/components/popper/SimplePopper.tsx","../src/ConsoleShared/src/components/spotlight/InteractiveSpotlight.tsx","../src/ConsoleShared/src/hooks/scroll.ts","../src/ConsoleShared/src/hooks/useResizeObserver.ts","../src/ConsoleShared/src/hooks/useScrollShadows.ts","../src/ConsoleShared/src/hooks/useBoundingClientRect.ts","../src/ConsoleShared/src/hooks/useForceRender.ts","../src/ConsoleShared/src/hooks/useEventListener.ts","../src/ConsoleShared/src/components/spotlight/StaticSpotlight.tsx","../src/ConsoleShared/src/components/spotlight/Spotlight.tsx","../src/ConsoleShared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.tsx","../src/ConsoleShared/src/components/markdown-extensions/const.ts","../src/ConsoleShared/src/components/markdown-extensions/MarkdownCopyClipboard.tsx","../src/ConsoleShared/src/components/markdown-extensions/utils.ts","../src/ConsoleShared/src/components/markdown-extensions/inline-clipboard-extension.tsx","../src/ConsoleShared/src/components/markdown-extensions/multiline-clipboard-extension.tsx","../src/ConsoleInternal/components/markdown-view.tsx","../src/ConsoleShared/src/components/markdown-highlight-extension/highlight-consts.ts","../src/QuickStartMarkdownView.tsx","../src/ConsoleShared/src/components/markdown-extensions/admonition-extension.tsx","../src/ConsoleShared/src/components/markdown-extensions/code-extension.tsx","../src/ConsoleShared/src/components/markdown-extensions/accordion-extension.tsx","../src/ConsoleShared/src/components/markdown-extensions/accordion-render-extension.tsx","../src/ConsoleShared/src/components/utils/FallbackImg.tsx","../src/ConsoleShared/src/constants/ui.ts","../src/ConsoleShared/src/components/status/PopoverStatus.tsx","../src/ConsoleShared/src/components/status/StatusIconAndText.tsx","../src/ConsoleShared/src/components/status/GenericStatus.tsx","../src/ConsoleShared/src/components/status/icons.tsx","../src/ConsoleShared/src/components/status/statuses.tsx","../src/ConsoleShared/src/components/status/Status.tsx","../src/catalog/QuickStartTileDescription.tsx","../src/catalog/QuickStartTileFooter.tsx","../src/catalog/QuickStartTileFooterExternal.tsx","../src/catalog/QuickStartTileHeader.tsx","../src/catalog/QuickStartTile.tsx","../src/catalog/QuickStartCatalog.tsx","../src/catalog/Toolbar/QuickStartCatalogFilterItems.tsx","../src/catalog/Toolbar/QuickStartCatalogFilter.tsx","../src/QuickStartCatalogPage.tsx","../src/catalog/Catalog/QuickStartCatalogHeader.tsx","../src/catalog/Catalog/QuickStartCatalogSection.tsx","../src/catalog/Catalog/QuickStartCatalogToolbar.tsx","../src/QuickStartCloseModal.tsx","../src/controller/QuickStartTaskHeader.tsx","../src/controller/QuickStartTaskHeaderList.tsx","../src/controller/QuickStartConclusion.tsx","../src/controller/QuickStartIntroduction.tsx","../src/controller/QuickStartTaskReview.tsx","../src/controller/QuickStartTasks.tsx","../src/controller/QuickStartContent.tsx","../src/controller/QuickStartFooter.tsx","../src/QuickStartController.tsx","../src/QuickStartPanelContent.tsx","../src/QuickStartDrawer.tsx","../src/utils/help-topic-context.tsx","../src/HelpTopicPanelContent.tsx","../src/HelpTopicDrawer.tsx","../src/utils/useLocalStorage.ts","../src/utils/asciidoc-procedure-parser.ts"],"sourcesContent":["export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import _extends from'@babel/runtime/helpers/esm/extends';var m,x=m||(m={});x.Pop=\"POP\";x.Push=\"PUSH\";x.Replace=\"REPLACE\";var y=\"production\"!==process.env.NODE_ENV?function(a){return Object.freeze(a)}:function(a){return a};function z(a,b){if(!a){\"undefined\"!==typeof console&&console.warn(b);try{throw Error(b);}catch(g){}}}function A(a){a.preventDefault();a.returnValue=\"\"}\nfunction B(){var a=[];return{get length(){return a.length},push:function(b){a.push(b);return function(){a=a.filter(function(a){return a!==b})}},call:function(b){a.forEach(function(a){return a&&a(b)})}}}function D(){return Math.random().toString(36).substr(2,8)}function E(a){var b=a.pathname,g=a.search;a=a.hash;return(void 0===b?\"/\":b)+(void 0===g?\"\":g)+(void 0===a?\"\":a)}\nfunction F(a){var b={};if(a){var g=a.indexOf(\"#\");0<=g&&(b.hash=a.substr(g),a=a.substr(0,g));g=a.indexOf(\"?\");0<=g&&(b.search=a.substr(g),a=a.substr(0,g));a&&(b.pathname=a)}return b}\nfunction createBrowserHistory(a){function b(){var a=h.location,d=f.state||{};return[d.idx,y({pathname:a.pathname,search:a.search,hash:a.hash,state:d.usr||null,key:d.key||\"default\"})]}function g(a){return\"string\"===typeof a?a:E(a)}function t(a,d){void 0===d&&(d=null);return y(_extends({},l,{},\"string\"===typeof a?F(a):a,{state:d,key:D()}))}function v(a){n=a;a=b();q=a[0];l=a[1];c.call({action:n,location:l})}function w(a,d){function c(){w(a,d)}var k=m.Push,C=t(a,d);if(!e.length||(e.call({action:k,\nlocation:C,retry:c}),!1)){var b=[{usr:C.state,key:C.key,idx:q+1},g(C)];C=b[0];b=b[1];try{f.pushState(C,\"\",b)}catch(G){h.location.assign(b)}v(k)}}function u(a,d){function c(){u(a,d)}var b=m.Replace,k=t(a,d);e.length&&(e.call({action:b,location:k,retry:c}),1)||(k=[{usr:k.state,key:k.key,idx:q},g(k)],f.replaceState(k[0],\"\",k[1]),v(b))}function r(a){f.go(a)}void 0===a&&(a={});a=a.window;var h=void 0===a?document.defaultView:a,f=h.history,p=null;h.addEventListener(\"popstate\",function(){if(p)e.call(p),\np=null;else{var a=m.Pop,d=b(),c=d[0];d=d[1];if(e.length)if(null!=c){var f=q-c;f&&(p={action:a,location:d,retry:function(){r(-1*f)}},r(f))}else\"production\"!==process.env.NODE_ENV?z(!1,\"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.\"):void 0;else v(a)}});var n=\nm.Pop;a=b();var q=a[0],l=a[1],c=B(),e=B();null==q&&(q=0,f.replaceState(_extends({},f.state,{idx:q}),\"\"));return{get action(){return n},get location(){return l},createHref:g,push:w,replace:u,go:r,back:function(){r(-1)},forward:function(){r(1)},listen:function(a){return c.push(a)},block:function(a){var d=e.push(a);1===e.length&&h.addEventListener(\"beforeunload\",A);return function(){d();e.length||h.removeEventListener(\"beforeunload\",A)}}}};\nfunction createHashHistory(a){function b(){var a=F(f.location.hash.substr(1)),c=a.pathname,b=a.search;a=a.hash;var e=p.state||{};return[e.idx,y({pathname:void 0===c?\"/\":c,search:void 0===b?\"\":b,hash:void 0===a?\"\":a,state:e.usr||null,key:e.key||\"default\"})]}function g(){if(n)k.call(n),n=null;else{var a=m.Pop,c=b(),e=c[0];c=c[1];if(k.length)if(null!=e){var f=l-e;f&&(n={action:a,location:c,retry:function(){h(-1*f)}},h(f))}else\"production\"!==process.env.NODE_ENV?z(!1,\"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.\"):\nvoid 0;else w(a)}}function t(a){var d=document.querySelector(\"base\"),c=\"\";d&&d.getAttribute(\"href\")&&(d=f.location.href,c=d.indexOf(\"#\"),c=-1===c?d:d.slice(0,c));return c+\"#\"+(\"string\"===typeof a?a:E(a))}function v(a,b){void 0===b&&(b=null);return y(_extends({},c,{},\"string\"===typeof a?F(a):a,{state:b,key:D()}))}function w(a){q=a;a=b();l=a[0];c=a[1];e.call({action:q,location:c})}function u(a,c){function d(){u(a,c)}var b=m.Push,e=v(a,c);\"production\"!==process.env.NODE_ENV?z(\"/\"===e.pathname.charAt(0),\n\"Relative pathnames are not supported in hash history.push(\"+JSON.stringify(a)+\")\"):void 0;if(!k.length||(k.call({action:b,location:e,retry:d}),!1)){var g=[{usr:e.state,key:e.key,idx:l+1},t(e)];e=g[0];g=g[1];try{p.pushState(e,\"\",g)}catch(H){f.location.assign(g)}w(b)}}function r(a,c){function d(){r(a,c)}var e=m.Replace,b=v(a,c);\"production\"!==process.env.NODE_ENV?z(\"/\"===b.pathname.charAt(0),\"Relative pathnames are not supported in hash history.replace(\"+JSON.stringify(a)+\")\"):void 0;k.length&&(k.call({action:e,\nlocation:b,retry:d}),1)||(b=[{usr:b.state,key:b.key,idx:l},t(b)],p.replaceState(b[0],\"\",b[1]),w(e))}function h(a){p.go(a)}void 0===a&&(a={});a=a.window;var f=void 0===a?document.defaultView:a,p=f.history,n=null;f.addEventListener(\"popstate\",g);f.addEventListener(\"hashchange\",function(){var a=b()[1];E(a)!==E(c)&&g()});var q=m.Pop;a=b();var l=a[0],c=a[1],e=B(),k=B();null==l&&(l=0,p.replaceState(_extends({},p.state,{idx:l}),\"\"));return{get action(){return q},get location(){return c},createHref:t,push:u,\nreplace:r,go:h,back:function(){h(-1)},forward:function(){h(1)},listen:function(a){return e.push(a)},block:function(a){var c=k.push(a);1===k.length&&f.addEventListener(\"beforeunload\",A);return function(){c();k.length||f.removeEventListener(\"beforeunload\",A)}}}};\nfunction createMemoryHistory(a){function b(a,b){void 0===b&&(b=null);return y(_extends({},n,{},\"string\"===typeof a?F(a):a,{state:b,key:D()}))}function g(a,b,f){return!l.length||(l.call({action:a,location:b,retry:f}),!1)}function t(a,b){p=a;n=b;q.call({action:p,location:n})}function v(a,e){var c=m.Push,d=b(a,e);\"production\"!==process.env.NODE_ENV?z(\"/\"===n.pathname.charAt(0),\"Relative pathnames are not supported in memory history.push(\"+JSON.stringify(a)+\")\"):void 0;g(c,d,function(){v(a,e)})&&\n(f+=1,h.splice(f,h.length,d),t(c,d))}function w(a,e){var c=m.Replace,d=b(a,e);\"production\"!==process.env.NODE_ENV?z(\"/\"===n.pathname.charAt(0),\"Relative pathnames are not supported in memory history.replace(\"+JSON.stringify(a)+\")\"):void 0;g(c,d,function(){w(a,e)})&&(h[f]=d,t(c,d))}function u(a){var b=Math.min(Math.max(f+a,0),h.length-1),c=m.Pop,d=h[b];g(c,d,function(){u(a)})&&(f=b,t(c,d))}void 0===a&&(a={});var r=a;a=r.initialEntries;r=r.initialIndex;var h=(void 0===a?[\"/\"]:a).map(function(a){var b=\ny(_extends({pathname:\"/\",search:\"\",hash:\"\",state:null,key:D()},\"string\"===typeof a?F(a):a));\"production\"!==process.env.NODE_ENV?z(\"/\"===b.pathname.charAt(0),\"Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: \"+JSON.stringify(a)+\")\"):void 0;return b}),f=Math.min(Math.max(null==r?h.length-1:r,0),h.length-1),p=m.Pop,n=h[f],q=B(),l=B();return{get index(){return f},get action(){return p},get location(){return n},createHref:function(a){return\"string\"===typeof a?\na:E(a)},push:v,replace:w,go:u,back:function(){u(-1)},forward:function(){u(1)},listen:function(a){return q.push(a)},block:function(a){return l.push(a)}}};export{m as Action,createBrowserHistory,createHashHistory,createMemoryHistory,E as createPath,F as parsePath}\n//# sourceMappingURL=index.js.map\n","import {\n AccessReviewResourceAttributes,\n ObjectMetadata,\n} from '../ConsoleInternal/module/k8s/types';\n\nexport interface QuickStart {\n apiVersion?: string;\n kind?: string;\n metadata: ObjectMetadata;\n spec: QuickStartSpec;\n}\n\nexport interface QuickStartSpec {\n version?: number;\n displayName: string;\n durationMinutes?: number;\n icon: React.ReactNode;\n description: string;\n prerequisites?: string[];\n introduction?: string;\n tasks?: QuickStartTask[];\n conclusion?: string;\n nextQuickStart?: string[];\n accessReviewResources?: AccessReviewResourceAttributes[];\n link?: QuickStartExternal;\n type?: QuickStartType;\n}\n\nexport interface QuickStartTask {\n title?: string;\n description?: string;\n review?: QuickStartTaskReview;\n summary?: QuickStartTaskSummary;\n proc?: string;\n}\n\nexport interface QuickStartTaskReview {\n instructions?: string;\n failedTaskHelp?: string;\n}\n\nexport interface QuickStartTaskSummary {\n success?: string;\n failed?: string;\n}\n\nexport type AllQuickStartStates = Record<string, QuickStartState>;\n\nexport type QuickStartState = Record<string, string | number | QuickStartStatus>;\n\nexport enum QuickStartStatus {\n COMPLETE = 'Complete',\n IN_PROGRESS = 'In Progress',\n NOT_STARTED = 'Not started',\n}\n\nexport enum QuickStartTaskStatus {\n INIT = 'Initial',\n VISITED = 'Visited',\n REVIEW = 'Review',\n SUCCESS = 'Success',\n FAILED = 'Failed',\n}\n\nexport interface QuickStartExternal {\n href: string;\n text?: string;\n}\n\nexport interface QuickStartType {\n text: string;\n color?: 'blue' | 'cyan' | 'green' | 'orange' | 'purple' | 'red' | 'grey';\n}\n","import { QuickStartTaskStatus } from './quick-start-types';\n\nexport const QUICKSTART_SEARCH_FILTER_KEY = 'keyword';\nexport const QUICKSTART_STATUS_FILTER_KEY = 'status';\nexport const QUICKSTART_ID_FILTER_KEY = 'quickstart';\nexport const QUICKSTART_TASKS_INITIAL_STATES = [\n QuickStartTaskStatus.INIT,\n QuickStartTaskStatus.VISITED,\n];\nexport const HELP_TOPIC_NAME_KEY = 'topic';\n","import { History, createBrowserHistory, createMemoryHistory } from 'history';\nimport { QUICKSTART_SEARCH_FILTER_KEY, QUICKSTART_STATUS_FILTER_KEY } from '../../../utils/const';\n\ntype AppHistory = History & { pushPath: History['push'] };\n\nlet createHistory;\n\ntry {\n if (process.env.NODE_ENV === 'test') {\n // Running in node. Can't use browser history\n createHistory = createMemoryHistory;\n } else {\n createHistory = createBrowserHistory;\n }\n} catch (unused) {\n createHistory = createBrowserHistory;\n}\n\nexport const history: AppHistory = createHistory();\n\nexport const removeQueryArgument = (k: string) => {\n const params = new URLSearchParams(window.location.search);\n if (params.has(k)) {\n params.delete(k);\n const url = new URL(window.location.href);\n history.replace(`${url.pathname}?${params.toString()}${url.hash}`);\n }\n};\n\nexport const setQueryArgument = (k: string, v: string) => {\n if (!v) {\n return removeQueryArgument(k);\n }\n const params = new URLSearchParams(window.location.search);\n if (params.get(k) !== v) {\n params.set(k, v);\n const url = new URL(window.location.href);\n history.replace(`${url.pathname}?${params.toString()}${url.hash}`);\n }\n};\n\nexport const clearFilterParams = () => {\n removeQueryArgument(QUICKSTART_SEARCH_FILTER_KEY);\n removeQueryArgument(QUICKSTART_STATUS_FILTER_KEY);\n};\n","/* eslint-disable */\n// https://github.com/i18next/i18next/blob/master/src/PluralResolver.js\n\nconst sets = [\n {\n lngs: [\n 'ach',\n 'ak',\n 'am',\n 'arn',\n 'br',\n 'fil',\n 'gun',\n 'ln',\n 'mfe',\n 'mg',\n 'mi',\n 'oc',\n 'pt',\n 'pt-BR',\n 'tg',\n 'tl',\n 'ti',\n 'tr',\n 'uz',\n 'wa',\n ],\n nr: [1, 2],\n fc: 1,\n },\n\n {\n lngs: [\n 'af',\n 'an',\n 'ast',\n 'az',\n 'bg',\n 'bn',\n 'ca',\n 'da',\n 'de',\n 'dev',\n 'el',\n 'en',\n 'eo',\n 'es',\n 'et',\n 'eu',\n 'fi',\n 'fo',\n 'fur',\n 'fy',\n 'gl',\n 'gu',\n 'ha',\n 'hi',\n 'hu',\n 'hy',\n 'ia',\n 'it',\n 'kk',\n 'kn',\n 'ku',\n 'lb',\n 'mai',\n 'ml',\n 'mn',\n 'mr',\n 'nah',\n 'nap',\n 'nb',\n 'ne',\n 'nl',\n 'nn',\n 'no',\n 'nso',\n 'pa',\n 'pap',\n 'pms',\n 'ps',\n 'pt-PT',\n 'rm',\n 'sco',\n 'se',\n 'si',\n 'so',\n 'son',\n 'sq',\n 'sv',\n 'sw',\n 'ta',\n 'te',\n 'tk',\n 'ur',\n 'yo',\n ],\n nr: [1, 2],\n fc: 2,\n },\n\n {\n lngs: [\n 'ay',\n 'bo',\n 'cgg',\n 'fa',\n 'ht',\n 'id',\n 'ja',\n 'jbo',\n 'ka',\n 'km',\n 'ko',\n 'ky',\n 'lo',\n 'ms',\n 'sah',\n 'su',\n 'th',\n 'tt',\n 'ug',\n 'vi',\n 'wo',\n 'zh',\n ],\n nr: [1],\n fc: 3,\n },\n\n { lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'], nr: [1, 2, 5], fc: 4 },\n\n { lngs: ['ar'], nr: [0, 1, 2, 3, 11, 100], fc: 5 },\n { lngs: ['cs', 'sk'], nr: [1, 2, 5], fc: 6 },\n { lngs: ['csb', 'pl'], nr: [1, 2, 5], fc: 7 },\n { lngs: ['cy'], nr: [1, 2, 3, 8], fc: 8 },\n { lngs: ['fr'], nr: [1, 2], fc: 9 },\n { lngs: ['ga'], nr: [1, 2, 3, 7, 11], fc: 10 },\n { lngs: ['gd'], nr: [1, 2, 3, 20], fc: 11 },\n { lngs: ['is'], nr: [1, 2], fc: 12 },\n { lngs: ['jv'], nr: [0, 1], fc: 13 },\n { lngs: ['kw'], nr: [1, 2, 3, 4], fc: 14 },\n { lngs: ['lt'], nr: [1, 2, 10], fc: 15 },\n { lngs: ['lv'], nr: [1, 2, 0], fc: 16 },\n { lngs: ['mk'], nr: [1, 2], fc: 17 },\n { lngs: ['mnk'], nr: [0, 1, 2], fc: 18 },\n { lngs: ['mt'], nr: [1, 2, 11, 20], fc: 19 },\n { lngs: ['or'], nr: [2, 1], fc: 2 },\n { lngs: ['ro'], nr: [1, 2, 20], fc: 20 },\n { lngs: ['sl'], nr: [5, 1, 2, 3], fc: 21 },\n { lngs: ['he', 'iw'], nr: [1, 2, 20, 21], fc: 22 },\n];\n\nconst _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(\n n % 10 == 1 && n % 100 != 11\n ? 0\n : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)\n ? 1\n : 2,\n );\n },\n 5: function (n) {\n return Number(\n n == 0\n ? 0\n : n == 1\n ? 1\n : n == 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5,\n );\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(\n n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2,\n );\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(\n n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2,\n );\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || (n % 10 == 1 && n % 100 != 11) ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(\n n == 1\n ? 0\n : n == 0 || (n % 100 > 1 && n % 100 < 11)\n ? 1\n : n % 100 > 10 && n % 100 < 20\n ? 2\n : 3,\n );\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || (n % 100 > 0 && n % 100 < 20) ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n },\n};\n\nfunction createRules() {\n const rules = {};\n sets.forEach((set) => {\n set.lngs.forEach((l) => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc],\n };\n });\n });\n return rules;\n}\n\nclass PluralResolver {\n options: {\n simplifyPluralSuffix?: string;\n compatibilityJSON?: string;\n prepend?: boolean;\n };\n rules: {};\n\n constructor(options = {}) {\n this.options = options;\n\n this.rules = createRules();\n }\n\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n\n getRule(code) {\n return this.rules[code];\n }\n\n needsPlural(code) {\n const rule = this.getRule(code);\n\n return rule && rule.numbers.length > 1;\n }\n\n getPluralFormsOfKey(code, key) {\n return this.getSuffixes(code).map((suffix) => key + suffix);\n }\n\n getSuffixes(code) {\n const rule = this.getRule(code);\n\n if (!rule) {\n return [];\n }\n\n return rule.numbers.map((number) => this.getSuffix(code, number));\n }\n\n getSuffix(code, count) {\n const rule = this.getRule(code);\n\n if (rule) {\n // if (rule.numbers.length === 1) return ''; // only singular\n\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n\n // special treatment for lngs only having singular and plural\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n const returnSuffix = () =>\n this.options.prepend && suffix.toString()\n ? this.options.prepend + suffix.toString()\n : suffix.toString();\n\n // COMPATIBILITY JSON\n // v1\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) {\n return '';\n }\n if (typeof suffix === 'number') {\n return `_plural_${suffix.toString()}`;\n }\n return returnSuffix();\n }\n if (/* v2 */ this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n }\n if (\n /* v3 - gettext index */ this.options.simplifyPluralSuffix &&\n rule.numbers.length === 2 &&\n rule.numbers[0] === 1\n ) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString()\n ? this.options.prepend + idx.toString()\n : idx.toString();\n }\n\n // this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n}\n\nexport default PluralResolver;\n","import { AllQuickStartStates, QuickStart, QuickStartStatus } from './quick-start-types';\n\nexport const QUICK_START_NAME = 'console.openshift.io/name';\n\nexport const getQuickStartByName = (name: string, quickStarts: QuickStart[]): QuickStart =>\n quickStarts.find((quickStart) => quickStart.metadata.name === name);\n\nexport const getQuickStartStatus = (\n allQuickStartStates: AllQuickStartStates,\n quickStartID: string,\n): QuickStartStatus =>\n (allQuickStartStates?.[quickStartID]?.status as QuickStartStatus) ?? QuickStartStatus.NOT_STARTED;\n\nexport const getTaskStatusKey = (taskNumber: number): string => `taskStatus${taskNumber}`;\n\nexport const getQuickStartStatusCount = (\n allQuickStartStates: AllQuickStartStates,\n quickStarts: QuickStart[],\n): Record<QuickStartStatus, number> => quickStarts.reduce(\n (totals, item) => {\n totals[getQuickStartStatus(allQuickStartStates, item.metadata.name)]++;\n return totals;\n },\n {\n [QuickStartStatus.IN_PROGRESS]: 0,\n [QuickStartStatus.COMPLETE]: 0,\n [QuickStartStatus.NOT_STARTED]: 0,\n },\n );\n\ndeclare const window: Window & {\n SERVER_FLAGS: {\n quickStarts: any;\n };\n};\n\nexport const getDisabledQuickStarts = (): string[] => {\n let disabledQuickStarts = [];\n const quickStartServerData = window.SERVER_FLAGS?.quickStarts;\n try {\n if (quickStartServerData) {\n disabledQuickStarts = JSON.parse(quickStartServerData).disabled ?? [];\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('error while parsing SERVER_FLAG.quickStarts', e);\n }\n return disabledQuickStarts;\n};\n\nexport const isDisabledQuickStart = (\n quickstart: QuickStart,\n disabledQuickStarts: string[],\n): boolean => {\n const quickStartName =\n quickstart.metadata.annotations?.[QUICK_START_NAME] ?? quickstart.metadata.name;\n return disabledQuickStarts.includes(quickStartName);\n};\n\nexport const filterQuickStarts = (\n quickStarts: QuickStart[],\n filterText: string,\n statusFilters: string[],\n allQuickStartStates: AllQuickStartStates,\n): QuickStart[] => {\n const searchText = filterText.toLowerCase();\n return quickStarts.filter(\n ({ metadata: { name }, spec: { displayName, prerequisites = [], description } }) => {\n const matchesFilter =\n statusFilters.length > 0\n ? statusFilters.includes(getQuickStartStatus(allQuickStartStates, name))\n : true;\n const matchesText =\n displayName.toLowerCase().includes(searchText) ||\n description.toLowerCase().includes(searchText) ||\n prerequisites.some((text) => text.toLowerCase().includes(searchText));\n\n return matchesFilter && matchesText;\n },\n );\n};\n\nexport const camelize = (str: string) => str.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, function(match, index) {\n if (+match === 0) {\n return '';\n } // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase();\n });\n","import React, { createContext, useCallback } from 'react';\nimport { removeQueryArgument, setQueryArgument } from '../ConsoleInternal/components/utils/router';\nimport en from '../locales/en/quickstart.json';\nimport {\n QUICKSTART_ID_FILTER_KEY,\n QUICKSTART_SEARCH_FILTER_KEY,\n QUICKSTART_STATUS_FILTER_KEY,\n QUICKSTART_TASKS_INITIAL_STATES,\n} from './const';\nimport PluralResolver from './PluralResolver';\nimport {\n AllQuickStartStates,\n QuickStart,\n QuickStartState,\n QuickStartStatus,\n QuickStartTaskStatus,\n} from './quick-start-types';\nimport { getQuickStartStatusCount, getTaskStatusKey } from './quick-start-utils';\n\nconst pluralResolver = new PluralResolver({ simplifyPluralSuffix: true });\n\nexport interface FooterProps {\n show?: boolean;\n}\n\nexport const getDefaultQuickStartState = (\n totalTasks?: number,\n initialStatus?: QuickStartStatus,\n) => {\n const defaultQuickStartState = {\n status: initialStatus || QuickStartStatus.NOT_STARTED,\n taskNumber: -1,\n };\n if (totalTasks) {\n for (let i = 0; i < totalTasks; i++) {\n defaultQuickStartState[getTaskStatusKey(i)] = QuickStartTaskStatus.INIT;\n }\n }\n return defaultQuickStartState;\n};\n\nexport interface QuickStartContextValues {\n allQuickStarts?: QuickStart[];\n setAllQuickStarts?: React.Dispatch<React.SetStateAction<QuickStart[]>>;\n activeQuickStartID?: string;\n setActiveQuickStartID?: React.Dispatch<React.SetStateAction<string>>;\n allQuickStartStates?: AllQuickStartStates;\n setAllQuickStartStates?: React.Dispatch<React.SetStateAction<AllQuickStartStates>>;\n activeQuickStartState?: QuickStartState;\n setActiveQuickStart?: (quickStartId: string, totalTasks?: number) => void;\n startQuickStart?: (quickStartId: string, totalTasks?: number) => void;\n restartQuickStart?: (quickStartId: string, totalTasks: number) => void;\n nextStep?: (totalTasks: number) => void;\n previousStep?: () => void;\n setQuickStartTaskNumber?: (quickStartId: string, taskNumber: number) => void;\n setQuickStartTaskStatus?: (taskStatus: QuickStartTaskStatus) => void;\n getQuickStartForId?: (id: string) => QuickStartState;\n footer?: FooterProps;\n useLegacyHeaderColors?: boolean;\n useQueryParams?: boolean;\n markdown?: {\n extensions?: any[];\n renderExtension?: (docContext: Document, rootSelector: string) => React.ReactNode;\n };\n resourceBundle?: any;\n getResource?: any;\n setResourceBundle?: any;\n language?: string;\n setLanguage?: any;\n filter?: {\n keyword?: string;\n status?: {\n statusTypes?: any;\n statusFilters?: any;\n };\n };\n setFilter?: any;\n loading?: boolean;\n setLoading?: any;\n alwaysShowTaskReview?: boolean;\n setAlwaysShowTaskReview?: any;\n}\n\nexport const QuickStartContextDefaults = {\n allQuickStarts: [],\n activeQuickStartID: '',\n allQuickStartStates: {},\n activeQuickStartState: {},\n setAllQuickStarts: () => {},\n resourceBundle: en,\n getResource: (resource: string) => resource,\n language: 'en',\n useQueryParams: true,\n filter: {\n keyword: '',\n status: {\n statusTypes: {},\n statusFilters: [],\n },\n },\n setFilter: () => {},\n footer: null,\n useLegacyHeaderColors: false,\n markdown: null,\n loading: false,\n alwaysShowTaskReview: true,\n};\nexport const QuickStartContext = createContext<QuickStartContextValues>(QuickStartContextDefaults);\n\nexport const getResource = (resource: string, options: any, resourceBundle: any, lng: string) => {\n if (options && !isNaN(options.count)) {\n const suffix = pluralResolver.getSuffix(lng, options.count);\n if (suffix && resourceBundle[`${resource}_${suffix}`]) {\n // needs plural\n return resourceBundle[`${resource}_${suffix}`];\n }\n }\n return (resourceBundle && resourceBundle[resource]) || resource;\n};\n\nexport const useValuesForQuickStartContext = (\n value: QuickStartContextValues = {},\n): QuickStartContextValues => {\n const combinedValue = {\n ...QuickStartContextDefaults,\n ...value,\n };\n const {\n activeQuickStartID,\n setActiveQuickStartID,\n setAllQuickStartStates,\n useQueryParams,\n allQuickStartStates,\n allQuickStarts = [],\n footer,\n useLegacyHeaderColors,\n markdown,\n } = combinedValue;\n const [quickStarts, setQuickStarts] = React.useState(combinedValue.allQuickStarts || []);\n const [resourceBundle, setResourceBundle] = React.useState({\n ...en,\n ...combinedValue.resourceBundle,\n });\n const [language, setLanguage] = React.useState(combinedValue.language);\n const changeResourceBundle = (bundle: any, lng?: string) => {\n lng && setLanguage(lng);\n setResourceBundle({\n ...en,\n ...bundle,\n });\n };\n const findResource = useCallback(\n (resource: string, count?: number) => getResource(\n resource,\n count !== undefined ? { count } : null,\n resourceBundle,\n language,\n ),\n [resourceBundle, language],\n );\n const [loading, setLoading] = React.useState(combinedValue.loading);\n const [alwaysShowTaskReview, setAlwaysShowTaskReview] = React.useState(\n combinedValue.alwaysShowTaskReview,\n );\n\n const initialSearchParams = new URLSearchParams(window.location.search);\n const initialSearchQuery = initialSearchParams.get(QUICKSTART_SEARCH_FILTER_KEY) || '';\n const initialStatusFilters =\n initialSearchParams.get(QUICKSTART_STATUS_FILTER_KEY)?.split(',') || [];\n\n const quickStartStatusCount = getQuickStartStatusCount(allQuickStartStates, allQuickStarts);\n const [statusTypes, setStatusTypes] = React.useState({\n [QuickStartStatus.COMPLETE]: findResource('Complete ({{statusCount, number}})').replace(\n '{{statusCount, number}}',\n quickStartStatusCount[QuickStartStatus.COMPLETE],\n ),\n [QuickStartStatus.IN_PROGRESS]: findResource('In progress ({{statusCount, number}})').replace(\n '{{statusCount, number}}',\n quickStartStatusCount[QuickStartStatus.IN_PROGRESS],\n ),\n [QuickStartStatus.NOT_STARTED]: findResource('Not started ({{statusCount, number}})').replace(\n '{{statusCount, number}}',\n quickStartStatusCount[QuickStartStatus.NOT_STARTED],\n ),\n });\n const [statusFilters, setStatusFilters] = React.useState<string[]>(initialStatusFilters);\n\n const [filterKeyword, setFilterKeyword] = React.useState(initialSearchQuery);\n\n const setFilter = (type: 'keyword' | 'status', val: any) => {\n if (type === 'keyword') {\n setFilterKeyword(val);\n } else if (type === 'status') {\n setStatusFilters(val);\n }\n };\n\n React.useEffect(() => {\n const updatedQuickStartStatusCount = getQuickStartStatusCount(allQuickStartStates, quickStarts);\n setStatusTypes({\n [QuickStartStatus.COMPLETE]: findResource('Complete ({{statusCount, number}})').replace(\n '{{statusCount, number}}',\n updatedQuickStartStatusCount[QuickStartStatus.COMPLETE],\n ),\n [QuickStartStatus.IN_PROGRESS]: findResource('In progress ({{statusCount, number}})').replace(\n '{{statusCount, number}}',\n updatedQuickStartStatusCount[QuickStartStatus.IN_PROGRESS],\n ),\n [QuickStartStatus.NOT_STARTED]: findResource('Not started ({{statusCount, number}})').replace(\n '{{statusCount, number}}',\n updatedQuickStartStatusCount[QuickStartStatus.NOT_STARTED],\n ),\n });\n }, [allQuickStartStates, findResource, quickStarts]);\n\n const updateAllQuickStarts = (qs: QuickStart[]) => {\n setQuickStarts(qs);\n };\n\n const setActiveQuickStart = useCallback(\n (quickStartId: string, totalTasks?: number) => {\n setActiveQuickStartID((id) => {\n if (!quickStartId || id === quickStartId) {\n useQueryParams && removeQueryArgument(QUICKSTART_ID_FILTER_KEY);\n return '';\n }\n useQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, quickStartId);\n return quickStartId;\n });\n setAllQuickStartStates((qs) =>\n !quickStartId || qs[quickStartId]\n ? qs\n : { ...qs, [quickStartId]: getDefaultQuickStartState(totalTasks) },\n );\n },\n [setActiveQuickStartID, setAllQuickStartStates, useQueryParams],\n );\n\n const startQuickStart = useCallback(\n (quickStartId: string, totalTasks?: number) => {\n setActiveQuickStartID((id) => {\n if (!id || id !== quickStartId) {\n useQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, quickStartId);\n return quickStartId;\n }\n useQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, id);\n return id;\n });\n setAllQuickStartStates((qs) => {\n if (qs.hasOwnProperty(quickStartId)) {\n return {\n ...qs,\n [quickStartId]: {\n ...qs[quickStartId],\n status: QuickStartStatus.IN_PROGRESS,\n },\n };\n }\n return {\n ...qs,\n [quickStartId]: getDefaultQuickStartState(totalTasks, QuickStartStatus.IN_PROGRESS),\n };\n });\n },\n [setActiveQuickStartID, setAllQuickStartStates, useQueryParams],\n );\n\n const restartQuickStart = useCallback(\n (quickStartId: string, totalTasks: number) => {\n setActiveQuickStartID((id) => {\n if (!id || id !== quickStartId) {\n useQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, quickStartId);\n return quickStartId;\n }\n useQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, id);\n return id;\n });\n setAllQuickStartStates((qs) => ({\n ...qs,\n [quickStartId]: getDefaultQuickStartState(totalTasks, QuickStartStatus.NOT_STARTED),\n }));\n },\n [setActiveQuickStartID, setAllQuickStartStates, useQueryParams],\n );\n\n // When alwaysShowTaskReview preference is enabled, skip visited step and go directly to review\n const stepAfterInitial = alwaysShowTaskReview\n ? QuickStartTaskStatus.REVIEW\n : QuickStartTaskStatus.VISITED;\n\n const nextStep = useCallback(\n (totalTasks: number) => {\n if (!activeQuickStartID) {\n return;\n }\n\n setAllQuickStartStates((qs) => {\n const quickStart = qs[activeQuickStartID];\n const status = quickStart?.status;\n const taskNumber = quickStart?.taskNumber as number;\n const taskStatus = quickStart[getTaskStatusKey(taskNumber)];\n\n let updatedStatus;\n let updatedTaskNumber;\n let updatedTaskStatus;\n\n if (status === QuickStartStatus.NOT_STARTED) {\n updatedStatus = QuickStartStatus.IN_PROGRESS;\n } else if (\n status === QuickStartStatus.IN_PROGRESS &&\n !QUICKSTART_TASKS_INITIAL_STATES.includes(taskStatus as any) &&\n taskNumber === totalTasks - 1\n ) {\n updatedStatus = QuickStartStatus.COMPLETE;\n }\n\n if (taskStatus === QuickStartTaskStatus.VISITED) {\n updatedTaskStatus = QuickStartTaskStatus.REVIEW;\n }\n\n if (taskNumber < totalTasks && !updatedTaskStatus) {\n updatedTaskNumber = taskNumber + 1;\n }\n\n const markInitialStepVisitedOrReview =\n updatedTaskNumber > -1 &&\n quickStart[getTaskStatusKey(updatedTaskNumber)] === QuickStartTaskStatus.INIT\n ? stepAfterInitial\n : quickStart[getTaskStatusKey(updatedTaskNumber)];\n const newState = {\n ...qs,\n [activeQuickStartID]: {\n ...quickStart,\n ...(updatedStatus ? { status: updatedStatus } : {}),\n ...(updatedTaskNumber > -1\n ? {\n taskNumber: updatedTaskNumber,\n [getTaskStatusKey(updatedTaskNumber)]: markInitialStepVisitedOrReview,\n }\n : {}),\n ...(updatedTaskStatus ? { [getTaskStatusKey(taskNumber)]: updatedTaskStatus } : {}),\n },\n };\n return newState;\n });\n },\n [activeQuickStartID, setAllQuickStartStates, stepAfterInitial],\n );\n\n const previousStep = useCallback(() => {\n setAllQuickStartStates((qs) => {\n const quickStart = qs[activeQuickStartID];\n const taskNumber = quickStart?.taskNumber as number;\n\n if (taskNumber < 0) {\n return qs;\n }\n\n return {\n ...qs,\n [activeQuickStartID]: {\n ...quickStart,\n taskNumber: taskNumber - 1,\n },\n };\n });\n }, [activeQuickStartID, setAllQuickStartStates]);\n\n const setQuickStartTaskNumber = useCallback(\n (quickStartId: string, taskNumber: number) => {\n setAllQuickStartStates((qs) => {\n const quickStart = qs[quickStartId];\n const status = quickStart?.status;\n let updatedStatus;\n if (taskNumber > -1 && status === QuickStartStatus.NOT_STARTED) {\n updatedStatus = QuickStartStatus.IN_PROGRESS;\n }\n\n let updatedTaskStatus = {};\n for (let taskIndex = 0; taskIndex <= taskNumber; taskIndex++) {\n const taskStatus = quickStart[getTaskStatusKey(taskIndex)];\n const newTaskStatus =\n taskStatus === QuickStartTaskStatus.INIT ? stepAfterInitial : undefined;\n if (newTaskStatus) {\n updatedTaskStatus = {\n ...updatedTaskStatus,\n [getTaskStatusKey(taskIndex)]: newTaskStatus,\n };\n }\n }\n const updatedQuickStart = {\n ...quickStart,\n ...(updatedStatus ? { status: updatedStatus } : {}),\n taskNumber,\n ...updatedTaskStatus,\n };\n return { ...qs, [quickStartId]: updatedQuickStart };\n });\n },\n [setAllQuickStartStates, stepAfterInitial],\n );\n\n const setQuickStartTaskStatus = useCallback(\n (taskStatus: QuickStartTaskStatus) => {\n const quickStart = allQuickStartStates[activeQuickStartID];\n const { taskNumber } = quickStart;\n const updatedQuickStart = {\n ...quickStart,\n [getTaskStatusKey(taskNumber as any)]: taskStatus,\n };\n setAllQuickStartStates((qs) => ({\n ...qs,\n [activeQuickStartID]: updatedQuickStart,\n }));\n },\n [allQuickStartStates, activeQuickStartID, setAllQuickStartStates],\n );\n\n const activeQuickStartState = allQuickStartStates?.[activeQuickStartID] ?? {};\n\n const getQuickStartForId = useCallback((id: string) => allQuickStartStates[id], [\n allQuickStartStates,\n ]);\n\n return {\n allQuickStarts: quickStarts,\n setAllQuickStarts: updateAllQuickStarts, // revisit if this should be in public context API\n activeQuickStartID,\n setActiveQuickStartID,\n allQuickStartStates,\n setAllQuickStartStates,\n activeQuickStartState,\n setActiveQuickStart: value.setActiveQuickStart || setActiveQuickStart,\n startQuickStart: value.startQuickStart || startQuickStart,\n restartQuickStart: value.restartQuickStart || restartQuickStart,\n nextStep: value.nextStep || nextStep,\n previousStep: value.previousStep || previousStep,\n setQuickStartTaskNumber, // revisit if this should be in public context API\n setQuickStartTaskStatus, // revisit if this should be in public context API\n getQuickStartForId,\n footer,\n useLegacyHeaderColors,\n useQueryParams,\n markdown,\n resourceBundle,\n getResource: findResource, // revisit if this should be in public context API\n setResourceBundle: changeResourceBundle,\n language,\n setLanguage,\n // revisit if this should be in public context API\n filter: {\n keyword: filterKeyword,\n status: {\n statusTypes,\n statusFilters,\n },\n },\n setFilter, // revisit if this should be in public context API\n loading,\n setLoading,\n alwaysShowTaskReview,\n setAlwaysShowTaskReview,\n };\n};\n\nexport const QuickStartContextProvider: React.FC<{\n children: React.ReactNode;\n value: QuickStartContextValues;\n}> = ({ children, value }) => (\n <QuickStartContext.Provider value={useValuesForQuickStartContext(value)}>\n {children}\n </QuickStartContext.Provider>\n );\n","import * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport { QuickStartContext, QuickStartContextValues } from '../../../utils/quick-start-context';\n\nexport const Box: React.FC<BoxProps> = ({ children, className }) => (\n <div className={css('pfext-status-box', className)}>{children}</div>\n);\n\nexport const Loading: React.FC<LoadingProps> = ({ className }) => (\n <div className={css('pfext-m-loader', className)}>\n <div className=\"pfext-m-loader-dot__one\" />\n <div className=\"pfext-m-loader-dot__two\" />\n <div className=\"pfext-m-loader-dot__three\" />\n </div>\n);\nLoading.displayName = 'Loading';\n\nexport const LoadingBox: React.FC<LoadingBoxProps> = ({ className, message }) => (\n <Box className={css('pfext-status-box--loading', className)}>\n <Loading />\n {message && <div className=\"pfext-status-box__loading-message\">{message}</div>}\n </Box>\n);\nLoadingBox.displayName = 'LoadingBox';\n\nexport const EmptyBox: React.FC<EmptyBoxProps> = ({ label }) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <Box>\n <div data-test=\"empty-message\" className=\"text-center\">\n {label\n ? getResource('No {{label}} found').replace('{{label}}', label)\n : getResource('Not found')}\n </div>\n </Box>\n );\n};\nEmptyBox.displayName = 'EmptyBox';\n\ninterface BoxProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface LoadingProps {\n className?: string;\n}\n\ninterface LoadingBoxProps {\n className?: string;\n message?: string;\n}\n\ninterface EmptyBoxProps {\n label?: string;\n}\n","import * as React from 'react';\n\nconst MEMO = {};\n\nexport const CamelCaseWrap: React.FC<CamelCaseWrapProps> = ({ value, dataTest }) => {\n if (!value) {\n return '-';\n }\n\n if (MEMO[value]) {\n return MEMO[value];\n }\n\n // Add word break points before capital letters (but keep consecutive capital letters together).\n const words = value.match(/[A-Z]+[^A-Z]*|[^A-Z]+/g);\n const rendered = (\n <span data-test={dataTest}>\n {words.map((word, i) => (\n <React.Fragment key={i}>\n {word}\n {i !== words.length - 1 && <wbr />}\n </React.Fragment>\n ))}\n </span>\n );\n MEMO[value] = rendered;\n return rendered;\n};\n\nexport interface CamelCaseWrapProps {\n value: string;\n dataTest?: string;\n}\n","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { Card, CardHeader, CardTitle, CardBody, CardFooter } from '@patternfly/react-core';\nimport { css } from '@patternfly/react-styles';\nimport { getUniqueId } from '@patternfly/react-core';\nexport class CatalogTile extends React.Component {\n constructor(props) {\n super(props);\n this.handleClick = (e) => {\n const { onClick, href } = this.props;\n if (!href) {\n e.preventDefault();\n }\n if (onClick) {\n onClick(e);\n }\n };\n this.renderBadges = (badges) => {\n if (!badges || !badges.length) {\n return null;\n }\n return (React.createElement(\"div\", { className: \"catalog-tile-pf-badge-container\" }, badges.map((badge, index) => (React.createElement(\"span\", { key: `badge-${index}` }, badge)))));\n };\n this.generatedId = getUniqueId('pf-catalog-tile');\n }\n render() {\n const _a = this.props, { id, className, featured, onClick, href, icon, iconImg, iconAlt, iconClass, badges, title, vendor, description, footer, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ref, children } = _a, props = __rest(_a, [\"id\", \"className\", \"featured\", \"onClick\", \"href\", \"icon\", \"iconImg\", \"iconAlt\", \"iconClass\", \"badges\", \"title\", \"vendor\", \"description\", \"footer\", \"ref\", \"children\"]);\n return (React.createElement(Card, Object.assign({ component: href ? 'a' : 'div', id: id || this.generatedId, href: href || '#', className: css('catalog-tile-pf', { featured }, className), isClickable: !!onClick }, props),\n (badges.length > 0 || iconImg || iconClass || icon || onClick) && (React.createElement(CardHeader, { actions: { actions: badges.length > 0 && this.renderBadges(badges) }, selectableActions: onClick && {\n selectableActionId: id + '-input',\n onClickAction: (e) => this.handleClick(e),\n selectableActionAriaLabelledby: id\n } },\n iconImg && React.createElement(\"img\", { className: \"catalog-tile-pf-icon\", src: iconImg, alt: iconAlt }),\n !iconImg && (iconClass || icon) && React.createElement(\"span\", { className: `catalog-tile-pf-icon ${iconClass}` }, icon))),\n React.createElement(CardTitle, { className: \"catalog-tile-pf-header\" },\n React.createElement(\"div\", { className: \"catalog-tile-pf-title\" }, title),\n vendor && React.createElement(\"div\", { className: \"catalog-tile-pf-subtitle\" }, vendor)),\n (description || children) && (React.createElement(CardBody, { className: \"catalog-tile-pf-body\" },\n description && (React.createElement(\"div\", { className: \"catalog-tile-pf-description\" },\n React.createElement(\"span\", { className: css({ 'has-footer': footer }) }, description))),\n children)),\n footer && React.createElement(CardFooter, { className: \"catalog-tile-pf-footer\" }, footer)));\n }\n}\nCatalogTile.displayName = 'CatalogTile';\nCatalogTile.defaultProps = {\n id: null,\n className: '',\n featured: false,\n onClick: null,\n href: null,\n iconImg: null,\n iconAlt: '',\n iconClass: '',\n icon: null,\n badges: [],\n vendor: null,\n description: null,\n footer: null,\n children: null\n};\n//# sourceMappingURL=CatalogTile.js.map","import './Modal.scss';\nimport * as React from 'react';\nimport { Modal as PfModal, ModalProps as PfModalProps } from '@patternfly/react-core';\nimport { css } from '@patternfly/react-styles';\n\ntype ModalProps = {\n isFullScreen?: boolean;\n ref?: React.LegacyRef<PfModal>;\n} & PfModalProps;\n\nconst Modal: React.FC<ModalProps> = ({ isFullScreen = false, className, ...props }) => (\n <PfModal\n {...props}\n className={css('pfext-modal', className)}\n appendTo={() => (isFullScreen ? document.body : document.querySelector('#modal-container'))}\n />\n);\n\nexport default Modal;\n","import { useIsomorphicLayoutEffect } from '@patternfly/react-core';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n\ntype GetContainer = Element | null | undefined | (() => Element);\n\ninterface PortalProps {\n children: React.ReactNode;\n container?: GetContainer;\n}\n\nconst getContainer = (container: GetContainer): Element | null | undefined =>\n typeof container === 'function' ? container() : container;\n\nconst Portal = ({ children, container }: PortalProps) => {\n const [containerNode, setContainerNode] = React.useState<Element>();\n\n useIsomorphicLayoutEffect(() => {\n setContainerNode(getContainer(container) || document.body);\n }, [container]);\n\n return containerNode ? ReactDOM.createPortal(children, containerNode) : null;\n};\n\nexport default Portal;\n","import * as React from 'react';\nimport Portal from './Portal';\n\ninterface SimplePopperProps {\n children: React.ReactNode;\n}\n\nconst SimplePopper = ({ children }: SimplePopperProps) => {\n const openProp = true;\n const nodeRef = React.useRef<Element>();\n const popperRef = React.useRef(null);\n const [isOpen, setOpenState] = React.useState(openProp);\n\n const setOpen = React.useCallback((newOpen: boolean) => {\n setOpenState(newOpen);\n }, []);\n\n React.useEffect(() => {\n setOpen(openProp);\n }, [openProp, setOpen]);\n\n const onKeyDown = React.useCallback(\n (e: KeyboardEvent) => {\n if (e.keyCode === 27) {\n setOpen(false);\n }\n },\n [setOpen],\n );\n\n const onClickOutside = React.useCallback(\n (e: MouseEvent) => {\n if (!nodeRef.current || (e.target instanceof Node && !nodeRef.current.contains(e.target))) {\n setOpen(false);\n }\n },\n [setOpen],\n );\n\n const destroy = React.useCallback(() => {\n if (popperRef.current) {\n popperRef.current.destroy();\n document.removeEventListener('keydown', onKeyDown, true);\n document.removeEventListener('mousedown', onClickOutside, true);\n document.removeEventListener('touchstart', onClickOutside, true);\n }\n }, [onClickOutside, onKeyDown]);\n\n const initialize = React.useCallback(() => {\n if (!nodeRef.current || !isOpen) {\n return;\n }\n\n destroy();\n }, [isOpen, destroy]);\n\n const nodeRefCallback = React.useCallback(\n (node) => {\n nodeRef.current = node;\n initialize();\n },\n [initialize],\n );\n\n React.useEffect(() => {\n initialize();\n }, [initialize]);\n\n React.useEffect(() => () => {\n destroy();\n }, [destroy]);\n\n React.useEffect(() => {\n if (!isOpen) {\n destroy();\n }\n }, [destroy, isOpen]);\n\n return isOpen ? (\n <Portal>\n <div\n ref={nodeRefCallback}\n style={{ zIndex: 9999, position: 'absolute', top: 0, left: 0 }}\n className=\"pfext-quick-start__base\"\n >\n {children}\n </div>\n </Portal>\n ) : null;\n};\n\nexport default SimplePopper;\n","import './spotlight.scss';\nimport * as React from 'react';\nimport { Portal, SimplePopper } from '../popper';\n\ninterface InteractiveSpotlightProps {\n element: Element;\n}\n\nconst isInViewport = (elementToCheck: Element) => {\n const rect = elementToCheck.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n};\n\nconst InteractiveSpotlight: React.FC<InteractiveSpotlightProps> = ({ element }) => {\n const { top, bottom, left, right, height, width } = element.getBoundingClientRect();\n const style: React.CSSProperties = {\n height,\n width,\n top,\n left,\n bottom,\n right,\n };\n const [clicked, setClicked] = React.useState(false);\n\n React.useEffect(() => {\n if (!clicked) {\n if (!isInViewport(element)) {\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\n }\n const handleClick = () => setClicked(true);\n document.addEventListener('click', handleClick);\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }\n return () => {};\n }, [element, clicked]);\n\n if (clicked) {\n return null;\n }\n\n return (\n <Portal>\n <SimplePopper>\n <div className=\"pfext-spotlight pfext-spotlight__element-highlight-animate\" style={style} />\n </SimplePopper>\n </Portal>\n );\n};\n\nexport default InteractiveSpotlight;\n","import * as React from 'react';\n\nexport enum ScrollDirection {\n scrollingUp = 'scrolling-up',\n scrollingDown = 'scrolling-down',\n scrolledToBottom = 'scrolled-to-bottom',\n scrolledToTop = 'scrolled-to-top',\n}\n\nexport const getScrollDirection = (\n prevScrollTop: number,\n currentScrollTop: number,\n scrollHeight: number,\n clientHeight: number,\n) => {\n let direction;\n if (scrollHeight - currentScrollTop === clientHeight) {\n direction = ScrollDirection.scrolledToBottom;\n } else if (currentScrollTop === 0) {\n direction = ScrollDirection.scrolledToTop;\n } else if (prevScrollTop > currentScrollTop) {\n direction = ScrollDirection.scrollingUp;\n } else if (prevScrollTop < currentScrollTop) {\n direction = ScrollDirection.scrollingDown;\n }\n return direction;\n};\n\nexport const useScrollDirection = (): [ScrollDirection, (event) => void] => {\n const scrollPosition = React.useRef<number>(null);\n const [scrollDirection, setScrollDirection] = React.useState<ScrollDirection>(null);\n const handleScroll = React.useCallback(\n (event) => {\n const { scrollHeight, scrollTop, clientHeight } = event.target;\n if (scrollPosition.current !== null) {\n const direction = getScrollDirection(\n scrollPosition.current,\n scrollTop,\n scrollHeight,\n clientHeight,\n );\n if (direction && direction !== scrollDirection) {\n setScrollDirection(direction);\n }\n }\n scrollPosition.current = scrollTop;\n },\n [scrollDirection],\n );\n\n return [scrollDirection, handleScroll];\n};\n","import * as React from 'react';\n\nexport const useResizeObserver = (\n callback: ResizeObserverCallback,\n targetElement?: HTMLElement | null,\n observerOptions: ResizeObserverOptions = undefined,\n): void => {\n const element = React.useMemo(\n () => targetElement ?? document.querySelector('body'),\n [targetElement],\n );\n React.useEffect(() => {\n const observer = new ResizeObserver(callback);\n observer.observe(element, observerOptions);\n return () => {\n observer.disconnect();\n };\n }, [callback, observerOptions, element]);\n};\n","import * as React from 'react';\nimport { useResizeObserver } from './useResizeObserver';\n\nexport enum Shadows {\n none = 'none',\n both = 'both',\n top = 'top',\n bottom = 'bottom',\n}\n\nexport const useScrollShadows = (node: HTMLElement): Shadows => {\n const [shadows, setShadows] = React.useState(Shadows.none);\n const computeShadows = React.useCallback(() => {\n if (node) {\n const { scrollTop, clientHeight, scrollHeight } = node;\n const top = scrollTop !== 0;\n const bottom = scrollTop + clientHeight < scrollHeight;\n if (top && bottom) {\n setShadows(Shadows.both);\n } else if (top) {\n setShadows(Shadows.top);\n } else if (bottom) {\n setShadows(Shadows.bottom);\n } else {\n setShadows(Shadows.none);\n }\n }\n }, [node]);\n // recompute when the scroll container changes in size\n useResizeObserver(computeShadows, node);\n React.useEffect(() => {\n if (node) {\n // compute initial shadows\n computeShadows();\n // listen for scroll events\n node.addEventListener('scroll', computeShadows);\n }\n return () => {\n if (node) {\n node.removeEventListener('scroll', computeShadows);\n }\n };\n }, [node, computeShadows]);\n return shadows;\n};\n","import * as React from 'react';\nimport { useResizeObserver } from './useResizeObserver';\n\ntype BoundingClientRect = ClientRect | null;\n\nexport const useBoundingClientRect = (targetElement: HTMLElement | null): BoundingClientRect => {\n const [clientRect, setClientRect] = React.useState<BoundingClientRect>(() =>\n targetElement ? targetElement.getBoundingClientRect() : null,\n );\n\n const observerCallback = React.useCallback(() => {\n setClientRect(targetElement ? targetElement.getBoundingClientRect() : null);\n }, [targetElement]);\n\n useResizeObserver(observerCallback);\n\n return clientRect;\n};\n","import * as React from 'react';\n\n/**\n * React hook that forces component render.\n */\nexport const useForceRender = () => React.useReducer((s: boolean) => !s, false)[1] as VoidFunction;\n","import { useEffect } from 'react';\n\nexport const useEventListener = (\n target: EventTarget,\n event: keyof WindowEventMap,\n callback: EventListener,\n) => {\n useEffect(() => {\n target.addEventListener(event, callback);\n return () => {\n target.removeEventListener(event, callback);\n };\n }, [target, event, callback]);\n};\n","import './spotlight.scss';\nimport * as React from 'react';\nimport { useBoundingClientRect } from '../../hooks';\nimport Portal from '../popper/Portal';\n\ninterface StaticSpotlightProps {\n element: Element;\n}\n\nconst StaticSpotlight: React.FC<StaticSpotlightProps> = ({ element }) => {\n const clientRect = useBoundingClientRect(element as HTMLElement);\n const style: React.CSSProperties = clientRect\n ? {\n top: clientRect.top,\n left: clientRect.left,\n height: clientRect.height,\n width: clientRect.width,\n }\n : {};\n return clientRect ? (\n <Portal>\n <div className=\"pf-v5-c-backdrop pfext-spotlight__with-backdrop\">\n <div\n className=\"pfext-spotlight pfext-spotlight__element-highlight-noanimate\"\n style={style}\n />\n </div>\n </Portal>\n ) : null;\n};\n\nexport default StaticSpotlight;\n","import * as React from 'react';\nimport InteractiveSpotlight from './InteractiveSpotlight';\nimport StaticSpotlight from './StaticSpotlight';\n\ninterface SpotlightProps {\n selector: string;\n interactive?: boolean;\n}\n\nconst Spotlight: React.FC<SpotlightProps> = ({ selector, interactive }) => {\n // if target element is a hidden one return null\n const element = React.useMemo(() => {\n const highlightElement = document.querySelector(selector);\n let hiddenElement = highlightElement;\n while (hiddenElement) {\n const ariaHidden = hiddenElement.getAttribute('aria-hidden');\n if (ariaHidden === 'true') {\n return null;\n }\n hiddenElement = hiddenElement.parentElement;\n }\n return highlightElement;\n }, [selector]);\n\n if (!element) {\n return null;\n }\n return interactive ? (\n <InteractiveSpotlight element={element} />\n ) : (\n <StaticSpotlight element={element} />\n );\n};\n\nexport default Spotlight;\n","import * as React from 'react';\nimport { Spotlight } from '../spotlight';\n\ninterface MarkdownHighlightExtensionProps {\n docContext: Document;\n rootSelector: string;\n}\nconst MarkdownHighlightExtension: React.FC<MarkdownHighlightExtensionProps> = ({\n docContext,\n rootSelector,\n}) => {\n const [selector, setSelector] = React.useState<string>(null);\n React.useEffect(() => {\n const elements = docContext.querySelectorAll(`${rootSelector} [data-highlight]`);\n let timeoutId: NodeJS.Timeout;\n function startHighlight(e) {\n const highlightId = e.target.getAttribute('data-highlight');\n if (!highlightId) {\n return;\n }\n setSelector(null);\n timeoutId = setTimeout(() => {\n setSelector(`[data-quickstart-id=\"${highlightId}\"]`);\n }, 0);\n }\n elements && elements.forEach((elm) => elm.addEventListener('click', startHighlight));\n return () => {\n clearTimeout(timeoutId);\n elements && elements.forEach((elm) => elm.removeEventListener('click', startHighlight));\n };\n }, [docContext, rootSelector]);\n React.useEffect(() => {\n const elements = docContext.querySelectorAll(`${rootSelector} [class^=data-highlight__]`);\n let timeoutId: NodeJS.Timeout;\n function startHighlight(e) {\n e.preventDefault();\n const classes = e.target.getAttribute('class').split(' ');\n let highlightId;\n\n for (const className of classes) {\n if (className.startsWith('data-highlight__')) {\n highlightId = className.split('__')[1];\n break;\n }\n }\n if (!highlightId) {\n return;\n }\n setSelector(null);\n timeoutId = setTimeout(() => {\n setSelector(`[data-quickstart-id=\"${highlightId}\"]`);\n }, 0);\n }\n elements && elements.forEach((elm) => elm.addEventListener('click', startHighlight));\n return () => {\n clearTimeout(timeoutId);\n elements && elements.forEach((elm) => elm.removeEventListener('click', startHighlight));\n };\n }, [docContext, rootSelector]);\n if (!selector) {\n return null;\n }\n return <Spotlight selector={selector} interactive />;\n};\nexport default MarkdownHighlightExtension;\n","export const MARKDOWN_COPY_BUTTON_ID = 'data-copy-for';\nexport const MARKDOWN_EXECUTE_BUTTON_ID = 'data-execute-for';\nexport const MARKDOWN_SNIPPET_ID = 'data-snippet-id';\nexport const ACCORDION_MARKDOWN_BUTTON_ID = `accordion-markdown-button-id`;\nexport const ACCORDION_MARKDOWN_CONTENT_ID = `accordion-markdown-content-id`;\n","import * as React from 'react';\nimport { Tooltip } from '@patternfly/react-core';\nimport { QuickStartContext, QuickStartContextValues } from '@quickstarts/utils/quick-start-context';\nimport { useEventListener } from '../../hooks';\nimport { MARKDOWN_COPY_BUTTON_ID, MARKDOWN_SNIPPET_ID } from './const';\n\ninterface CopyClipboardProps {\n element: HTMLElement;\n rootSelector: string;\n docContext: Document;\n}\n\nexport const CopyClipboard: React.FC<CopyClipboardProps> = ({\n element,\n rootSelector,\n docContext,\n}) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n const [showSuccessContent, setShowSuccessContent] = React.useState<boolean>(false);\n const textToCopy = React.useMemo(() => {\n const copyTextId = element.getAttribute(MARKDOWN_COPY_BUTTON_ID);\n return (\n docContext.querySelector(\n `${rootSelector} [${MARKDOWN_SNIPPET_ID}=\"${copyTextId}\"]`,\n ) as HTMLElement\n )?.innerText;\n }, [element, docContext, rootSelector]);\n\n useEventListener(\n element,\n 'click',\n React.useCallback(() => {\n navigator.clipboard\n .writeText(textToCopy.trim())\n .then(() => {\n setShowSuccessContent(true);\n })\n .catch(() => {});\n }, [textToCopy]),\n );\n\n useEventListener(\n element,\n 'mouseleave',\n React.useCallback(() => {\n setShowSuccessContent(false);\n }, []),\n );\n\n return showSuccessContent ? (\n <Tooltip\n key=\"after-copy\"\n isVisible\n triggerRef={() => element as HTMLElement}\n content={getResource('Successfully copied to clipboard!')}\n className=\"pfext-quick-start__base\"\n />\n ) : (\n <Tooltip\n key=\"before-copy\"\n triggerRef={() => element as HTMLElement}\n content={getResource('Copy to clipboard')}\n className=\"pfext-quick-start__base\"\n />\n );\n};\n\ninterface MarkdownCopyClipboardProps {\n docContext: Document;\n rootSelector: string;\n}\n\nconst MarkdownCopyClipboard: React.FC<MarkdownCopyClipboardProps> = ({\n docContext,\n rootSelector,\n}) => {\n const elements = docContext.querySelectorAll(`${rootSelector} [${MARKDOWN_COPY_BUTTON_ID}]`);\n return elements.length > 0 ? (\n <>\n {Array.from(elements).map((elm) => {\n const attributeValue = elm.getAttribute(MARKDOWN_COPY_BUTTON_ID);\n return (\n <CopyClipboard\n key={attributeValue}\n element={elm as HTMLElement}\n rootSelector={rootSelector}\n docContext={docContext}\n />\n );\n })}\n </>\n ) : null;\n};\n\nexport default MarkdownCopyClipboard;\n","export const removeTemplateWhitespace = (template: string): string => template.replace(/>(?:\\s|\\n)+</g, '><');\n","import * as React from 'react';\nimport { QuickStartContext, QuickStartContextValues } from '@quickstarts/utils/quick-start-context';\nimport { MARKDOWN_COPY_BUTTON_ID, MARKDOWN_SNIPPET_ID } from './const';\nimport { removeTemplateWhitespace } from './utils';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport CopyIcon from '@patternfly/react-icons/dist/js/icons/copy-icon';\nimport './showdown-extension.scss';\n\nconst useInlineCopyClipboardShowdownExtension = () => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n return React.useMemo(\n () => ({\n type: 'lang',\n regex: /`([^`](.*?)[^`])`{{copy}}/g,\n replace: (text: string, group: string, _: string, groupId: number): string => {\n if (!group || isNaN(groupId)) {\n return text;\n }\n return removeTemplateWhitespace(\n `<span class=\"pf-v5-c-clipboard-copy pf-m-inline\">\n <span class=\"pf-v5-c-clipboard-copy__text\" ${MARKDOWN_SNIPPET_ID}=\"${groupId}\">${group}</span>\n <span class=\"pf-v5-c-clipboard-copy__actions\">\n <span class=\"pf-v5-c-clipboard-copy__actions-item\">\n <button class=\"pf-v5-c-button pf-m-plain\" aria-label=\"${getResource(\n 'Copy to clipboard',\n )}\" ${MARKDOWN_COPY_BUTTON_ID}=\"${groupId}\">\n ${renderToStaticMarkup(<CopyIcon />)}\n </button>\n </span>\n </span>\n </span>`,\n );\n },\n }),\n [getResource],\n );\n};\n\nexport default useInlineCopyClipboardShowdownExtension;\n","import * as React from 'react';\nimport { QuickStartContext, QuickStartContextValues } from '@quickstarts/utils/quick-start-context';\nimport { MARKDOWN_COPY_BUTTON_ID, MARKDOWN_SNIPPET_ID } from './const';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport CopyIcon from '@patternfly/react-icons/dist/js/icons/copy-icon';\n\nimport './showdown-extension.scss';\n\nconst useMultilineCopyClipboardShowdownExtension = () => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n return React.useMemo(\n () => ({\n type: 'lang',\n regex: /```[\\n]\\s*((((?!```).)*?\\n)+)\\s*```{{copy}}/g,\n replace: (text: string, group: string, _1: string, _2: string, groupId: number): string => {\n if (!group || isNaN(groupId)) {\n return text;\n }\n return `<div class=\"pf-v5-c-code-block\">\n <div class=\"pf-v5-c-code-block__header\">\n <div class=\"pf-v5-c-code-block__actions\">\n <div class=\"pf-v5-c-code-block__actions-item\">\n <button class=\"pf-v5-c-button pf-m-plain\" type=\"button\" aria-label=\"${getResource(\n 'Copy to clipboard',\n )}\" ${MARKDOWN_COPY_BUTTON_ID}=\"${groupId}\">\n ${renderToStaticMarkup(<CopyIcon />)}\n </button>\n </div>\n </div>\n </div>\n <div class=\"pf-v5-c-code-block__content\">\n <pre class=\"pf-v5-c-code-block__pre pfext-code-block__pre\">\n <code class=\"pf-v5-c-code-block__code\" \n ${MARKDOWN_SNIPPET_ID}=\"${groupId}\">${group.trim()}</code>\n </pre>\n </div>\n </div>`;\n },\n }),\n [getResource],\n );\n};\n\nexport default useMultilineCopyClipboardShowdownExtension;\n","import * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport { Converter } from 'showdown';\nimport { useForceRender } from '@console/shared';\nimport { QuickStartContext, QuickStartContextValues } from '../../utils/quick-start-context';\nimport './_markdown-view.scss';\n\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst DOMPurify = require('dompurify');\n\n// const tableTags = ['table', 'thead', 'tbody', 'tr', 'th', 'td'];\n\ninterface ShowdownExtension {\n type: string;\n regex?: RegExp;\n replace?: (...args: any[]) => string;\n}\n\nexport const markdownConvert = (markdown, extensions?: ShowdownExtension[]) => {\n const converter = new Converter({\n tables: true,\n openLinksInNewWindow: true,\n strikethrough: true,\n emoji: false,\n });\n\n if (extensions) {\n converter.addExtension(extensions);\n }\n\n DOMPurify.addHook('beforeSanitizeElements', function (node) {\n // nodeType 1 = element type\n\n // transform anchor tags\n if (node.nodeType === 1 && node.nodeName.toLowerCase() === 'a') {\n node.setAttribute('rel', 'noopener noreferrer');\n return node;\n }\n\n // add PF class to ul and ol lists\n if (\n node.nodeType === 1 &&\n (node.nodeName.toLowerCase() === 'ul' || node.nodeName.toLowerCase() === 'ol')\n ) {\n node.setAttribute('class', 'pf-v5-c-list');\n return node;\n }\n });\n\n // Add a hook to make all links open a new window\n DOMPurify.addHook('afterSanitizeAttributes', function (node) {\n // set all elements owning target to target=_blank\n if ('target' in node) {\n node.setAttribute('target', '_blank');\n }\n // set non-HTML/MathML links to xlink:show=new\n if (\n !node.hasAttribute('target') &&\n (node.hasAttribute('xlink:href') || node.hasAttribute('href'))\n ) {\n node.setAttribute('xlink:show', 'new');\n }\n });\n\n return DOMPurify.sanitize(converter.makeHtml(markdown), {\n USE_PROFILES: {\n html: true,\n svg: true,\n },\n });\n};\n\ninterface SyncMarkdownProps {\n content?: string;\n emptyMsg?: string;\n exactHeight?: boolean;\n extensions?: ShowdownExtension[];\n renderExtension?: (contentDocument: Document, rootSelector: string) => React.ReactNode;\n inline?: boolean;\n className?: string;\n}\n\ntype InnerSyncMarkdownProps = Pick<SyncMarkdownProps, 'renderExtension' | 'exactHeight'> & {\n markup: string;\n isEmpty: boolean;\n className?: string;\n};\n\nexport const SyncMarkdownView: React.FC<SyncMarkdownProps> = ({\n content,\n emptyMsg,\n extensions,\n renderExtension,\n exactHeight,\n inline,\n className,\n}) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n const markup = React.useMemo(\n () => markdownConvert(content || emptyMsg || getResource('Not available'), extensions),\n [content, emptyMsg, extensions, getResource],\n );\n const innerProps: InnerSyncMarkdownProps = {\n renderExtension: extensions?.length > 0 ? renderExtension : undefined,\n exactHeight,\n markup,\n isEmpty: !content,\n className,\n };\n return inline ? <InlineMarkdownView {...innerProps} /> : <IFrameMarkdownView {...innerProps} />;\n};\n\nconst uniqueId = (function () {\n let num = 0;\n return function (prefix) {\n const prefixStr = String(prefix) || '';\n num += 1;\n return prefixStr + num;\n };\n})();\n\ninterface RenderExtensionProps {\n renderExtension: (contentDocument: Document, rootSelector: string) => React.ReactNode;\n selector: string;\n markup: string;\n docContext?: Document;\n}\n\nconst RenderExtension: React.FC<RenderExtensionProps> = ({\n renderExtension,\n selector,\n markup,\n docContext,\n}) => {\n const forceRender = useForceRender();\n const markupRef = React.useRef<string>(null);\n const shouldRenderExtension = React.useCallback(() => {\n if (markupRef.current === markup) {\n return true;\n }\n markupRef.current = markup;\n return false;\n }, [markup]);\n /**\n * During a render cycle in which markup changes, renderExtension receives an old copy of document\n * because react is still updating the dom using `dangerouslySetInnerHTML` with latest markdown markup\n * which causes the component rendered by renderExtension to receive old copy of document\n * use forceRender to delay the rendering of extension by one render cycle\n */\n React.useEffect(() => {\n if (renderExtension) {\n forceRender();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [markup]);\n return (\n <>{shouldRenderExtension() ? renderExtension?.(docContext ?? document, selector) : null}</>\n );\n};\n\nconst InlineMarkdownView: React.FC<InnerSyncMarkdownProps> = ({\n markup,\n isEmpty,\n renderExtension,\n className,\n}) => {\n const id = React.useMemo(() => uniqueId('markdown'), []);\n return (\n <div className={css('pfext-markdown-view', { 'is-empty': isEmpty }, className)} id={id}>\n <div dangerouslySetInnerHTML={{ __html: markup }} />\n {renderExtension && (\n <RenderExtension renderExtension={renderExtension} selector={`#${id}`} markup={markup} />\n )}\n </div>\n );\n};\n\nconst IFrameMarkdownView: React.FC<InnerSyncMarkdownProps> = ({\n exactHeight,\n markup,\n isEmpty,\n renderExtension,\n className,\n}) => {\n const [frame, setFrame] = React.useState<HTMLIFrameElement>();\n const [loaded, setLoaded] = React.useState(false);\n const updateTimeoutHandle = React.useRef<NodeJS.Timeout>();\n\n const updateDimensions = React.useCallback(() => {\n if (!frame?.contentWindow?.document.body.firstChild) {\n return;\n }\n frame.style.height = `${frame.contentWindow.document.body.firstElementChild.scrollHeight}px`;\n\n // Let the new height take effect, then reset again once we recompute\n updateTimeoutHandle.current = setTimeout(() => {\n if (exactHeight) {\n frame.style.height = `${frame.contentWindow.document.body.firstElementChild.scrollHeight}px`;\n } else {\n // Increase by 15px for the case where a horizontal scrollbar might appear\n frame.style.height = `${\n frame.contentWindow.document.body.firstElementChild.scrollHeight + 15\n }px`;\n }\n });\n }, [frame, exactHeight]);\n\n React.useEffect(\n () => () => {\n clearTimeout(updateTimeoutHandle.current);\n },\n [],\n );\n\n const onLoad = React.useCallback(() => {\n updateDimensions();\n setLoaded(true);\n }, [updateDimensions]);\n\n // Find the app's stylesheets and inject them into the frame to ensure consistent styling.\n const filteredLinks = Array.from(document.getElementsByTagName('link')).filter((l) =>\n l.href.includes('app-bundle'),\n );\n\n const linkRefs = filteredLinks.reduce(\n (refs, link) => `${refs}\n <link rel=\"stylesheet\" href=\"${link.href}\">`,\n '',\n );\n\n const contents = `\n ${linkRefs}\n <style type=\"text/css\">\n body {\n background-color: transparent !important;\n color: ${isEmpty ? '#999' : '#333'};\n font-family: var(--pf-v5-global--FontFamily--sans-serif);\n min-width: auto !important;\n }\n table {\n display: block;\n margin-bottom: 11.5px;\n overflow-x: auto;\n }\n td,\n th {\n border-bottom: 1px solid #ededed;\n padding: 10px;\n vertical-align: top;\n }\n th {\n padding-top: 0;\n }\n </style>\n <body class=\"pf-m-redhat-font\"><div style=\"overflow-y: auto;\">${markup}</div></body>`;\n return (\n <>\n <iframe\n sandbox=\"allow-popups allow-popups-to-escape-sandbox allow-same-origin\"\n srcDoc={contents}\n style={{ border: '0px', display: 'block', width: '100%', height: '0' }}\n ref={(r) => setFrame(r)}\n onLoad={() => onLoad()}\n className={className}\n />\n {loaded && frame && renderExtension && (\n <RenderExtension\n markup={markup}\n selector={''}\n renderExtension={renderExtension}\n docContext={frame.contentDocument}\n />\n )}\n </>\n );\n};\n","export const LINK_LABEL = '[\\\\d\\\\w\\\\s-()$!]+';\nexport const HIGHLIGHT_ACTIONS = ['highlight'];\nexport const SELECTOR_ID = `[\\\\w-]+`;\n\n// [linkLabel]{{action id}}\nexport const HIGHLIGHT_REGEXP = new RegExp(\n `\\\\[(${LINK_LABEL})]{{(${HIGHLIGHT_ACTIONS.join('|')}) (${SELECTOR_ID})}}`,\n 'g',\n);\n","import * as React from 'react';\nimport { SyncMarkdownView } from '@console/internal/components/markdown-view';\nimport {\n AccordionRenderExtension,\n MarkdownCopyClipboard,\n MarkdownHighlightExtension,\n useInlineCopyClipboardShowdownExtension,\n useMultilineCopyClipboardShowdownExtension,\n useAdmonitionShowdownExtension,\n useCodeShowdownExtension,\n useAccordionShowdownExtension,\n} from '@console/shared';\nimport { HIGHLIGHT_REGEXP } from '@console/shared/src/components/markdown-highlight-extension/highlight-consts';\nimport { QuickStartContext, QuickStartContextValues } from './utils/quick-start-context';\n\nexport const removeParagraphWrap = (markdown: string) => markdown.replace(/^<p>|<\\/p>$/g, '');\n\ninterface QuickStartMarkdownViewProps {\n content: string;\n exactHeight?: boolean;\n className?: string;\n}\n\nconst QuickStartMarkdownView: React.FC<QuickStartMarkdownViewProps> = ({\n content,\n exactHeight,\n className,\n}) => {\n const { markdown } = React.useContext<QuickStartContextValues>(QuickStartContext);\n const inlineCopyClipboardShowdownExtension = useInlineCopyClipboardShowdownExtension();\n const multilineCopyClipboardShowdownExtension = useMultilineCopyClipboardShowdownExtension();\n const admonitionShowdownExtension = useAdmonitionShowdownExtension();\n const codeShowdownExtension = useCodeShowdownExtension();\n const accordionShowdownExtension = useAccordionShowdownExtension();\n return (\n <SyncMarkdownView\n inline\n content={content}\n exactHeight={exactHeight}\n extensions={[\n {\n type: 'lang',\n regex: HIGHLIGHT_REGEXP,\n replace: (text: string, linkLabel: string, linkType: string, linkId: string): string => {\n if (!linkLabel || !linkType || !linkId) {\n return text;\n }\n return `<button class=\"pf-v5-c-button pf-m-inline pf-m-link\" data-highlight=\"${linkId}\">${linkLabel}</button>`;\n },\n },\n {\n type: 'output',\n filter(text) {\n // check HTML for patterns like: <em>Status: unknown</em>{#extension-requirement-status}\n // and replace with <em id=\"extension-requirement-status\">Status: unknown</em>\n return text.replace(/<em>(.*)<\\/em>{#(.*)}/g, '<em id=\"$2\">$1</em>');\n },\n },\n inlineCopyClipboardShowdownExtension,\n multilineCopyClipboardShowdownExtension,\n admonitionShowdownExtension,\n codeShowdownExtension,\n accordionShowdownExtension,\n ...(markdown ? markdown.extensions : []),\n ]}\n renderExtension={(docContext, rootSelector) => (\n <>\n <AccordionRenderExtension docContext={docContext} />\n <MarkdownHighlightExtension docContext={docContext} rootSelector={rootSelector} />\n <MarkdownCopyClipboard docContext={docContext} rootSelector={rootSelector} />\n {markdown &&\n markdown.renderExtension &&\n markdown.renderExtension(docContext, rootSelector)}\n </>\n )}\n className={className}\n />\n );\n};\nexport default QuickStartMarkdownView;\n","import * as React from 'react';\nimport { removeTemplateWhitespace } from './utils';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { Alert } from '@patternfly/react-core';\nimport LightbulbIcon from '@patternfly/react-icons/dist/js/icons/lightbulb-icon';\nimport FireIcon from '@patternfly/react-icons/dist/js/icons/fire-icon';\nimport './showdown-extension.scss';\nimport QuickStartMarkdownView from '../../../../QuickStartMarkdownView';\n\nenum AdmonitionType {\n TIP = 'TIP',\n NOTE = 'NOTE',\n IMPORTANT = 'IMPORTANT',\n WARNING = 'WARNING',\n CAUTION = 'CAUTION',\n}\n\nconst admonitionToAlertVariantMap = {\n [AdmonitionType.NOTE]: { variant: 'info' },\n [AdmonitionType.TIP]: { variant: 'default', customIcon: <LightbulbIcon /> },\n [AdmonitionType.IMPORTANT]: { variant: 'danger' },\n [AdmonitionType.CAUTION]: { variant: 'warning', customIcon: <FireIcon /> },\n [AdmonitionType.WARNING]: { variant: 'warning' },\n};\n\nconst useAdmonitionShowdownExtension = () => \n // const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n React.useMemo(\n () => ({\n type: 'lang',\n regex: /\\[(.+)]{{(admonition) ([\\w-]+)}}/g,\n replace: (\n text: string,\n content: string,\n admonitionLabel: string,\n admonitionType: string,\n groupId: string,\n ): string => {\n if (!content || !admonitionLabel || !admonitionType || !groupId) {\n return text;\n }\n admonitionType = admonitionType.toUpperCase();\n\n const { variant, customIcon } = admonitionToAlertVariantMap[admonitionType];\n const style =\n admonitionType === AdmonitionType.CAUTION ? { backgroundColor: '#ec7a0915' } : {};\n const mdContent = <QuickStartMarkdownView content={content} />;\n const pfAlert = (\n <Alert\n variant={variant}\n customIcon={customIcon && customIcon}\n isInline\n title={admonitionType}\n className=\"pfext-markdown-admonition\"\n style={style}\n >\n {mdContent}\n </Alert>\n );\n return removeTemplateWhitespace(renderToStaticMarkup(pfAlert));\n },\n }),\n [],\n )\n;\n\nexport default useAdmonitionShowdownExtension;\n","import * as React from 'react';\nimport { removeTemplateWhitespace } from './utils';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { CodeBlock } from '@patternfly/react-core';\nimport './showdown-extension.scss';\n\nconst useCodeShowdownExtension = () => React.useMemo(\n () => ({\n type: 'output',\n regex: /<pre><code>(.*?)\\n?<\\/code><\\/pre>/g,\n replace: (text: string, content: string): string => {\n if (!content) {\n return text;\n }\n const pfCodeBlock = <CodeBlock>{content}</CodeBlock>;\n\n return removeTemplateWhitespace(renderToStaticMarkup(pfCodeBlock));\n },\n }),\n [],\n );\n\nexport default useCodeShowdownExtension;\n","import * as React from 'react';\nimport {\n Accordion,\n AccordionItem,\n AccordionToggle,\n AccordionContent,\n} from '@patternfly/react-core';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { removeTemplateWhitespace } from './utils';\nimport { ACCORDION_MARKDOWN_BUTTON_ID, ACCORDION_MARKDOWN_CONTENT_ID } from './const';\nimport './showdown-extension.scss';\n\nconst useAccordionShowdownExtension = () =>\n React.useMemo(\n () => ({\n type: 'lang',\n regex: /\\[(.+)]{{(accordion) (\"(.*?)\")}}/g,\n replace: (\n _text: string,\n accordionContent: string,\n _command: string,\n accordionHeading: string,\n ): string => {\n const accordionId = String(accordionHeading).replace(/\\s/g, '-');\n\n return removeTemplateWhitespace(\n renderToStaticMarkup(\n <Accordion asDefinitionList>\n <AccordionItem>\n <AccordionToggle\n isExpanded={false}\n id={`${ACCORDION_MARKDOWN_BUTTON_ID}-${accordionId}`}\n >\n {accordionHeading}\n </AccordionToggle>\n <AccordionContent\n id={`${ACCORDION_MARKDOWN_CONTENT_ID}-${accordionId}`}\n isHidden={!false}\n >\n {accordionContent}\n </AccordionContent>\n </AccordionItem>\n </Accordion>,\n ),\n );\n },\n }),\n [],\n );\n\nexport default useAccordionShowdownExtension;\n","import * as React from 'react';\nimport { useEventListener } from '../../hooks';\nimport { ACCORDION_MARKDOWN_BUTTON_ID, ACCORDION_MARKDOWN_CONTENT_ID } from './const';\n\ninterface AccordionShowdownComponentProps {\n buttonElement: HTMLElement;\n contentElement: HTMLElement;\n}\n\nconst AccordionShowdownHandler: React.FC<AccordionShowdownComponentProps> = ({\n buttonElement,\n contentElement,\n}) => {\n const [expanded, setExpanded] = React.useState<boolean>(false);\n\n const handleClick = () => {\n const expandedModifier = 'pf-m-expanded';\n\n buttonElement.className = `pf-v5-c-accordion__toggle ${!expanded ? expandedModifier : ''}`;\n contentElement.hidden = expanded;\n contentElement.className = `pf-v5-c-accordion__expanded-content ${\n !expanded ? expandedModifier : ''\n }`;\n setExpanded(!expanded);\n };\n\n useEventListener(buttonElement, 'click', handleClick);\n\n return <></>;\n};\n\ninterface accordionRenderExtensionProps {\n docContext: Document;\n}\n\nconst AccordionRenderExtension: React.FC<accordionRenderExtensionProps> = ({ docContext }) => {\n const buttonElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_BUTTON_ID}]`);\n const contentElements = docContext.querySelectorAll(`[id ^= ${ACCORDION_MARKDOWN_CONTENT_ID}]`);\n\n return buttonElements.length > 0 ? (\n <>\n {Array.from(buttonElements).map((elm) => {\n const content = Array.from(contentElements).find((elm2) => {\n const elmId = elm.id.split(ACCORDION_MARKDOWN_BUTTON_ID)[1];\n const elm2Id = elm2.id.split(ACCORDION_MARKDOWN_CONTENT_ID)[1];\n return elmId === elm2Id;\n });\n return (\n <AccordionShowdownHandler\n key={elm.id.split(ACCORDION_MARKDOWN_BUTTON_ID)[1]}\n buttonElement={elm as HTMLElement}\n contentElement={content as HTMLElement}\n />\n );\n })}\n </>\n ) : null;\n};\n\nexport default AccordionRenderExtension;\n","import * as React from 'react';\n\ninterface FallbackImgProps {\n src: string;\n alt?: string;\n className?: string;\n fallback?: React.ReactNode;\n}\n\nconst FallbackImg: React.FC<FallbackImgProps> = ({ src, alt, className, fallback }) => {\n const [isSrcValid, setIsSrcValid] = React.useState<boolean>(true);\n\n if (src && isSrcValid) {\n return <img className={className} src={src} alt={alt} onError={() => setIsSrcValid(false)} />;\n }\n\n return <>{fallback}</>;\n};\n\nexport default FallbackImg;\n","export const DASH = '-';\n","import * as React from 'react';\nimport { Button, Popover, PopoverPosition } from '@patternfly/react-core';\n\nconst PopoverStatus: React.FC<PopoverStatusProps> = ({\n hideHeader,\n children,\n isVisible = null,\n statusBody,\n title,\n onHide,\n onShow,\n}) => (\n <Popover\n position={PopoverPosition.right}\n headerContent={hideHeader ? null : title}\n bodyContent={children}\n aria-label={title}\n onHide={onHide}\n onShow={onShow}\n isVisible={isVisible}\n >\n <Button variant=\"link\" isInline>\n {statusBody}\n </Button>\n </Popover>\n);\n\ninterface PopoverStatusProps {\n children: React.ReactNode;\n statusBody: React.ReactNode;\n onHide?: (event: MouseEvent | KeyboardEvent) => void;\n onShow?: (event: MouseEvent | KeyboardEvent) => void;\n title?: string;\n hideHeader?: boolean;\n isVisible?: boolean;\n shouldClose?: (hideFunction: any) => void;\n}\n\nexport default PopoverStatus;\n","import * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport { CamelCaseWrap } from '@console/internal/components/utils';\nimport { DASH } from '../../constants';\nimport { StatusComponentProps } from './types';\n\ntype StatusIconAndTextProps = StatusComponentProps & {\n icon?: React.ReactElement;\n spin?: boolean;\n};\n\nconst StatusIconAndText: React.FC<StatusIconAndTextProps> = ({\n icon,\n title,\n spin,\n iconOnly,\n noTooltip,\n className,\n}) => {\n if (!title) {\n return <>{DASH}</>;\n }\n\n return (\n <span\n className={css('pfext-icon-and-text', className)}\n title={iconOnly && !noTooltip ? title : undefined}\n >\n {icon &&\n React.cloneElement(icon, {\n className: css(\n spin && 'fa-spin',\n icon.props.className,\n !iconOnly && 'pfext-icon-and-text__icon pfext-icon-flex-child',\n ),\n })}\n {!iconOnly && <CamelCaseWrap value={title} dataTest=\"status-text\" />}\n </span>\n );\n};\n\nexport default StatusIconAndText;\n","import * as React from 'react';\nimport PopoverStatus from './PopoverStatus';\nimport StatusIconAndText from './StatusIconAndText';\nimport { StatusComponentProps } from './types';\n\nconst GenericStatus: React.FC<GenericStatusProps> = (props) => {\n const { Icon, children, popoverTitle, title, noTooltip, iconOnly, ...restProps } = props;\n const renderIcon = iconOnly && !noTooltip ? <Icon title={title} /> : <Icon />;\n const statusBody = (\n <StatusIconAndText\n {...restProps}\n noTooltip={noTooltip}\n title={title}\n iconOnly={iconOnly}\n icon={renderIcon}\n />\n );\n return React.Children.toArray(children).length ? (\n <PopoverStatus title={popoverTitle || title} {...restProps} statusBody={statusBody}>\n {children}\n </PopoverStatus>\n ) : (\n statusBody\n );\n};\n\ntype GenericStatusProps = StatusComponentProps & {\n Icon: React.ComponentType<{ title?: string }>;\n children?: React.ReactNode;\n popoverTitle?: string;\n noTooltip?: boolean;\n};\n\nexport default GenericStatus;\n","import * as React from 'react';\nimport CheckCircleIcon from '@patternfly/react-icons/dist/js/icons/check-circle-icon';\nimport ExclamationCircleIcon from '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';\nimport InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';\nimport dangerColor from '@patternfly/react-tokens/dist/esm/global_danger_color_100';\nimport blueInfoColor from '@patternfly/react-tokens/dist/esm/global_palette_blue_300';\nimport okColor from '@patternfly/react-tokens/dist/esm/global_palette_green_500';\nimport { Icon } from '@patternfly/react-core';\n\nexport const GreenCheckCircleIcon: React.FC<ColoredIconProps> = ({ className, title, size }) => (\n <Icon size={size}>\n <CheckCircleIcon\n data-test=\"success-icon\"\n color={okColor.value}\n className={className}\n title={title}\n />\n </Icon>\n);\n\nexport const RedExclamationCircleIcon: React.FC<ColoredIconProps> = ({\n className,\n title,\n size,\n}) => (\n <Icon size={size}>\n <ExclamationCircleIcon color={dangerColor.value} className={className} title={title} />\n </Icon>\n);\n\nexport const BlueInfoCircleIcon: React.FC<ColoredIconProps> = ({ className, title }) => (\n <InfoCircleIcon color={blueInfoColor.value} className={className} title={title} />\n);\n\nexport interface ColoredIconProps {\n className?: string;\n title?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n","import * as React from 'react';\n\nimport GenericStatus from './GenericStatus';\nimport { BlueInfoCircleIcon, GreenCheckCircleIcon, RedExclamationCircleIcon } from './icons';\nimport { StatusComponentProps } from './types';\n\nexport const ErrorStatus: React.FC<StatusComponentProps> = (props) => (\n <GenericStatus {...props} Icon={RedExclamationCircleIcon} title={props.title || 'Error'} />\n);\nErrorStatus.displayName = 'ErrorStatus';\n\nexport const InfoStatus: React.FC<StatusComponentProps> = (props) => (\n <GenericStatus {...props} Icon={BlueInfoCircleIcon} title={props.title || 'Information'} />\n);\nInfoStatus.displayName = 'InfoStatus';\n\nexport const SuccessStatus: React.FC<StatusComponentProps> = (props) => (\n <GenericStatus {...props} Icon={GreenCheckCircleIcon} title={props.title || 'Healthy'} />\n);\nSuccessStatus.displayName = 'SuccessStatus';\n","import * as React from 'react';\nimport SyncAltIcon from '@patternfly/react-icons/dist/js/icons/sync-alt-icon';\nimport { DASH } from '../../constants';\nimport { SuccessStatus } from './statuses';\nimport StatusIconAndText from './StatusIconAndText';\nimport { StatusComponentProps } from './types';\n\nexport const Status: React.FC<StatusProps> = ({\n status,\n title,\n iconOnly,\n noTooltip,\n className,\n}) => {\n const statusProps = { title: title || status, iconOnly, noTooltip, className };\n switch (status) {\n case 'In Progress':\n return <StatusIconAndText {...statusProps} icon={<SyncAltIcon />} />;\n\n case 'Complete':\n return <SuccessStatus {...statusProps} />;\n\n default:\n return <>{status || DASH}</>;\n }\n};\n\nexport const StatusIcon: React.FC<StatusIconProps> = ({ status }) => (\n <Status status={status} iconOnly />\n);\n\ninterface StatusIconProps {\n status: string;\n}\n\ntype StatusProps = StatusComponentProps & {\n status: string;\n};\n","import * as React from 'react';\nimport {\n Button,\n Popover,\n Text,\n TextList,\n TextListItem,\n TextVariants,\n} from '@patternfly/react-core';\nimport InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';\nimport QuickStartMarkdownView from '../QuickStartMarkdownView';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\n\nimport './QuickStartTileDescription.scss';\n\ninterface QuickStartTileDescriptionProps {\n description: string;\n prerequisites?: string[];\n}\nconst QuickStartTileDescription: React.FC<QuickStartTileDescriptionProps> = ({\n description,\n prerequisites,\n}) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n const prereqs = prerequisites?.filter((p) => p);\n return (\n <>\n <QuickStartMarkdownView\n content={description}\n className=\"pfext-quick-start-tile-description\"\n />\n {prereqs?.length > 0 && (\n <div className=\"pfext-quick-start-tile-prerequisites\">\n <Text component={TextVariants.h5} className=\"pfext-quick-start-tile-prerequisites__text\">\n {getResource('Prerequisites ({{totalPrereqs}})').replace(\n '{{totalPrereqs}}',\n prereqs.length,\n )}{' '}\n </Text>\n <Popover\n aria-label={getResource('Prerequisites')}\n headerContent={getResource('Prerequisites')}\n className=\"pfext-quick-start__base\"\n bodyContent={\n <div className=\"pfext-popover__base\">\n <TextList\n aria-label={getResource('Prerequisites')}\n className=\"pfext-quick-start-tile-prerequisites-list\"\n >\n {prereqs.map((prerequisite, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <TextListItem key={index}>\n <QuickStartMarkdownView content={prerequisite} />\n </TextListItem>\n ))}\n </TextList>\n </div>\n }\n >\n <Button\n variant=\"link\"\n isInline\n className=\"pfext-quick-start-tile-prerequisites__icon\"\n data-testid=\"qs-card-prereqs\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n aria-label={getResource('Show prerequisites')}\n >\n <InfoCircleIcon />\n </Button>\n </Popover>\n </div>\n )}\n </>\n );\n};\nexport default QuickStartTileDescription;\n","import * as React from 'react';\nimport { Button, Flex, FlexItem } from '@patternfly/react-core';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStartStatus } from '../utils/quick-start-types';\n\ninterface QuickStartTileFooterProps {\n quickStartId: string;\n status: string;\n totalTasks?: number;\n}\n\nconst QuickStartTileFooter: React.FC<QuickStartTileFooterProps> = ({\n quickStartId,\n status,\n totalTasks,\n}) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n const { activeQuickStartID, startQuickStart, restartQuickStart } = React.useContext<\n QuickStartContextValues\n >(QuickStartContext);\n\n const start = React.useCallback(\n (e: React.SyntheticEvent) => {\n e.preventDefault();\n e.stopPropagation();\n startQuickStart(quickStartId, totalTasks);\n },\n [quickStartId, startQuickStart, totalTasks],\n );\n\n const restart = React.useCallback(\n (e: React.SyntheticEvent) => {\n e.preventDefault();\n e.stopPropagation();\n restartQuickStart(quickStartId, totalTasks);\n },\n [quickStartId, restartQuickStart, totalTasks],\n );\n\n return (\n <Flex justifyContent={{ default: 'justifyContentSpaceBetween' }}>\n {status === QuickStartStatus.NOT_STARTED && (\n <FlexItem>\n <Button\n onClick={start}\n variant=\"link\"\n isInline\n data-testid=\"qs-card-notStarted-start\"\n id={`${quickStartId}-start`}\n aria-labelledby={`${quickStartId}-start ${quickStartId}`}\n >\n {getResource('Start')}\n </Button>\n </FlexItem>\n )}\n {status === QuickStartStatus.IN_PROGRESS && activeQuickStartID !== quickStartId && (\n <FlexItem>\n <Button\n variant=\"link\"\n isInline\n data-testid=\"qs-card-inProgress-resume\"\n id={`${quickStartId}-continue`}\n aria-labelledby={`${quickStartId}-continue ${quickStartId}`}\n >\n {getResource('Continue')}\n </Button>\n </FlexItem>\n )}\n {status === QuickStartStatus.COMPLETE && (\n <FlexItem>\n <Button\n onClick={restart}\n variant=\"link\"\n isInline\n data-testid=\"qs-card-complete-restart\"\n id={`${quickStartId}-restart`}\n aria-labelledby={`${quickStartId}-restart ${quickStartId}`}\n >\n {getResource('Restart')}\n </Button>\n </FlexItem>\n )}\n {status === QuickStartStatus.IN_PROGRESS && (\n <FlexItem>\n <Button\n onClick={restart}\n variant=\"link\"\n isInline\n data-testid=\"qs-card-inProgress-restart\"\n id={`${quickStartId}-restart`}\n aria-labelledby={`${quickStartId}-restart ${quickStartId}`}\n >\n {getResource('Restart')}\n </Button>\n </FlexItem>\n )}\n </Flex>\n );\n};\n\nexport default QuickStartTileFooter;\n","import * as React from 'react';\nimport { Button, Flex, FlexItem } from '@patternfly/react-core';\nimport ExternalLinkAltIcon from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';\nimport { QuickStartExternal } from '../utils/quick-start-types';\n\ninterface QuickStartTileFooterProps {\n link: QuickStartExternal;\n quickStartId?: string;\n}\n\nconst QuickStartTileFooterExternal: React.FC<QuickStartTileFooterProps> = ({\n link,\n quickStartId,\n}) => {\n const { href, text } = link;\n\n return (\n <Flex justifyContent={{ default: 'justifyContentSpaceBetween' }}>\n <FlexItem>\n <Button\n component=\"a\"\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"link\"\n aria-label={`Open documentation in new window`}\n isInline\n icon={<ExternalLinkAltIcon />}\n iconPosition=\"right\"\n id={quickStartId}\n aria-labelledby={`${quickStartId}-external ${quickStartId}`}\n >\n {text || href}\n </Button>\n </FlexItem>\n </Flex>\n );\n};\n\nexport default QuickStartTileFooterExternal;\n","import './QuickStartTileHeader.scss';\nimport * as React from 'react';\nimport { Button, ButtonProps, Flex, Label, Title } from '@patternfly/react-core';\nimport OutlinedClockIcon from '@patternfly/react-icons/dist/js/icons/outlined-clock-icon';\nimport OutlinedBookmarkIcon from '@patternfly/react-icons/dist/js/icons/outlined-bookmark-icon';\nimport { StatusIcon } from '@console/shared';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStartStatus, QuickStartType } from '../utils/quick-start-types';\nimport QuickStartMarkdownView from '../QuickStartMarkdownView';\n\nexport interface QuickstartAction {\n /** Screen reader aria label. */\n 'aria-label': string;\n /** Icon to be rendered as a plain button, by default Bookmark outlined will be used. */\n icon?: React.ComponentType<unknown>;\n /** Callback with synthetic event parameter. */\n onClick?: (e: React.SyntheticEvent) => void;\n /** Additional button props to be rendered as extra props. */\n buttonProps?: ButtonProps;\n}\n\ninterface QuickStartTileHeaderProps {\n status: string;\n duration: number;\n name: string;\n type?: QuickStartType;\n quickStartId?: string;\n action?: QuickstartAction;\n}\n\nconst statusColorMap = {\n [QuickStartStatus.COMPLETE]: 'green',\n [QuickStartStatus.IN_PROGRESS]: 'purple',\n [QuickStartStatus.NOT_STARTED]: 'grey',\n};\n\nconst QuickStartTileHeader: React.FC<QuickStartTileHeaderProps> = ({\n status,\n duration,\n name,\n type,\n quickStartId,\n action,\n}) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n\n const statusLocaleMap = {\n [QuickStartStatus.COMPLETE]: getResource('Complete'),\n [QuickStartStatus.IN_PROGRESS]: getResource('In progress'),\n [QuickStartStatus.NOT_STARTED]: getResource('Not started'),\n };\n\n const ActionIcon = action?.icon || OutlinedBookmarkIcon;\n\n return (\n <div className=\"pfext-quick-start-tile-header\">\n <Flex flexWrap={{ default: 'nowrap' }}>\n <Title headingLevel=\"h3\" data-test=\"title\" id={quickStartId}>\n <QuickStartMarkdownView content={name} />\n </Title>\n {action && (\n <Button\n aria-label={action['aria-label']}\n icon={<ActionIcon />}\n variant=\"plain\"\n onClick={action.onClick}\n {...action.buttonProps}\n />\n )}\n </Flex>\n <div className=\"pfext-quick-start-tile-header__status\">\n {type && (\n <Label className=\"pfext-quick-start-tile-header--margin\" color={type.color}>\n {type.text}\n </Label>\n )}\n {duration && (\n <Label\n variant=\"outline\"\n data-test=\"duration\"\n icon={<OutlinedClockIcon />}\n className=\"pfext-quick-start-tile-header--margin\"\n >\n {getResource('{{duration, number}} minutes', duration).replace(\n '{{duration, number}}',\n duration,\n )}\n </Label>\n )}\n {status !== QuickStartStatus.NOT_STARTED && (\n <Label\n variant=\"outline\"\n color={statusColorMap[status]}\n icon={<StatusIcon status={status} />}\n data-test=\"status\"\n >\n {statusLocaleMap[status]}\n </Label>\n )}\n </div>\n </div>\n );\n};\n\nexport default QuickStartTileHeader;\n","import * as React from 'react';\nimport { CatalogTile } from '@patternfly/react-catalog-view-extension';\nimport RocketIcon from '@patternfly/react-icons/dist/js/icons/rocket-icon';\nimport { FallbackImg } from '@console/shared';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStart, QuickStartStatus } from '../utils/quick-start-types';\nimport { camelize } from '../utils/quick-start-utils';\nimport QuickStartTileDescription from './QuickStartTileDescription';\nimport QuickStartTileFooter from './QuickStartTileFooter';\nimport QuickStartTileFooterExternal from './QuickStartTileFooterExternal';\nimport QuickStartTileHeader, { QuickstartAction } from './QuickStartTileHeader';\n\nimport './QuickStartTile.scss';\n\ninterface QuickStartTileProps {\n quickStart: QuickStart;\n status: QuickStartStatus;\n isActive: boolean;\n onClick?: () => void;\n /** Action config for button rendered next to title */\n action?: QuickstartAction;\n}\n\nconst QuickStartTile: React.FC<QuickStartTileProps> = ({\n quickStart,\n status,\n isActive,\n onClick = () => {},\n action,\n}) => {\n const {\n metadata: { name: id },\n spec: { icon, tasks, displayName, description, durationMinutes, prerequisites, link, type },\n } = quickStart;\n\n const { setActiveQuickStart, footer } =\n React.useContext<QuickStartContextValues>(QuickStartContext);\n\n const ref = React.useRef<HTMLDivElement>(null);\n\n let quickStartIcon: React.ReactNode;\n if (typeof icon === 'object') {\n quickStartIcon = icon;\n } else {\n quickStartIcon = (\n <FallbackImg\n className=\"pfext-catalog-item-icon__img--large\"\n src={icon as string}\n alt=\"\"\n fallback={<RocketIcon />}\n />\n );\n }\n\n const footerComponent = React.useMemo(() => {\n if (footer && footer.show === false) {\n return null;\n }\n\n if (link) {\n return <QuickStartTileFooterExternal link={link} quickStartId={id} />;\n }\n\n return <QuickStartTileFooter quickStartId={id} status={status} totalTasks={tasks?.length} />;\n }, [footer, id, link, status, tasks?.length]);\n\n const handleClick = (\n e: React.FormEvent<HTMLInputElement> | React.MouseEvent<Element, MouseEvent>,\n ) => {\n if (ref.current?.contains(e.target as Node)) {\n if (!link) {\n setActiveQuickStart(id, tasks?.length);\n }\n onClick();\n }\n };\n\n const linkProps = link\n ? {\n href: link.href,\n target: '_blank',\n rel: 'noreferrer',\n }\n : {};\n\n return (\n <div ref={ref} onClick={handleClick}>\n <CatalogTile\n id={id + '-catalog-tile'}\n style={{\n cursor: 'pointer',\n }}\n icon={quickStartIcon}\n className=\"pfext-quick-start-tile\"\n data-testid={`qs-card-${camelize(displayName)}`}\n featured={isActive}\n title={\n <QuickStartTileHeader\n name={displayName}\n status={status}\n duration={durationMinutes}\n type={type}\n quickStartId={id}\n action={action}\n />\n }\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n setActiveQuickStart(id, tasks?.length);\n onClick();\n }\n }}\n // https://github.com/patternfly/patternfly-react/issues/7039\n {...linkProps}\n data-test={`tile ${id}`}\n description={\n <QuickStartTileDescription description={description} prerequisites={prerequisites} />\n }\n footer={footerComponent}\n tabIndex={0}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore-next-line\n isSelectableRaised\n />\n </div>\n );\n};\n\nexport default QuickStartTile;\n","import * as React from 'react';\nimport { Gallery, GalleryItem } from '@patternfly/react-core';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStart } from '../utils/quick-start-types';\nimport { getQuickStartStatus } from '../utils/quick-start-utils';\nimport QuickStartTile from './QuickStartTile';\n\nimport './QuickStartCatalog.scss';\n\ninterface QuickStartCatalogProps {\n quickStarts: QuickStart[];\n}\n\nconst QuickStartCatalog: React.FC<QuickStartCatalogProps> = ({ quickStarts }) => {\n const { activeQuickStartID, allQuickStartStates } = React.useContext<QuickStartContextValues>(\n QuickStartContext,\n );\n\n return (\n <div className=\"pfext-page-layout__content\">\n <Gallery className=\"pfext-quick-start-catalog__gallery\" hasGutter>\n {quickStarts.map((quickStart) => {\n const {\n metadata: { name: id },\n } = quickStart;\n\n return (\n <GalleryItem key={id} className=\"pfext-quick-start-catalog__gallery-item\">\n <QuickStartTile\n quickStart={quickStart}\n isActive={id === activeQuickStartID}\n status={getQuickStartStatus(allQuickStartStates, id)}\n />\n </GalleryItem>\n );\n })}\n </Gallery>\n </div>\n );\n};\n\nexport default QuickStartCatalog;\n","import * as React from 'react';\nimport {\n Badge,\n MenuToggle,\n MenuToggleElement,\n SearchInput,\n Select,\n SelectList,\n SelectOption,\n ToolbarItem,\n} from '@patternfly/react-core';\nimport { removeQueryArgument, setQueryArgument } from '@console/internal/components/utils';\nimport { history } from '../../ConsoleInternal/components/utils/router';\nimport { QUICKSTART_SEARCH_FILTER_KEY, QUICKSTART_STATUS_FILTER_KEY } from '../../utils/const';\nimport { QuickStartContext, QuickStartContextValues } from '../../utils/quick-start-context';\n\nexport const QuickStartCatalogFilterSearch = ({ searchInputText, handleTextChange, ...props }) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <ToolbarItem className=\"pfext-quick-start-catalog-filter__input\">\n <SearchInput\n placeholder={getResource('Filter by keyword...')}\n value={searchInputText}\n onChange={(_ev, value) => handleTextChange(value)}\n onClear={() => handleTextChange('')}\n {...props}\n />\n </ToolbarItem>\n );\n};\n\nexport const QuickStartCatalogFilterSelect = ({\n isDropdownOpen,\n setIsDropdownOpen,\n onRowfilterSelect,\n selectedFilters,\n dropdownItems,\n ...props\n}) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n\n const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n isFullWidth\n ref={toggleRef}\n onClick={() => setIsDropdownOpen(!isDropdownOpen)}\n isExpanded={isDropdownOpen}\n >\n {getResource('Status')}\n {selectedFilters.length > 0 && <Badge isRead>{selectedFilters.length}</Badge>}\n </MenuToggle>\n );\n\n return (\n <ToolbarItem>\n <Select\n aria-label={getResource('Select filter')}\n isOpen={isDropdownOpen}\n selected={selectedFilters}\n onSelect={onRowfilterSelect}\n onOpenChange={(isOpen) => setIsDropdownOpen(isOpen)}\n toggle={toggle}\n {...props}\n >\n <SelectList>{dropdownItems}</SelectList>\n </Select>\n </ToolbarItem>\n );\n};\n\nexport const QuickStartCatalogFilterCount = ({ quickStartsCount }) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <ToolbarItem\n className=\"pfext-quick-start-catalog-filter__count\"\n align={{ default: 'alignRight' }}\n >\n {getResource('{{count, number}} item', quickStartsCount).replace(\n '{{count, number}}',\n quickStartsCount,\n )}\n </ToolbarItem>\n );\n};\n\ninterface QuickStartCatalogFilterSearchWrapperProps {\n onSearchInputChange: any;\n}\nexport const QuickStartCatalogFilterSearchWrapper: React.FC<\n QuickStartCatalogFilterSearchWrapperProps\n> = ({ onSearchInputChange = () => {} }) => {\n const { useQueryParams, filter, setFilter } =\n React.useContext<QuickStartContextValues>(QuickStartContext);\n React.useEffect(() => {\n // use this effect to clear the search when a `clear all` action is performed higher up\n const unlisten = history.listen(({ location }) => {\n const searchParams = new URLSearchParams(location.search);\n const searchQuery = searchParams.get(QUICKSTART_SEARCH_FILTER_KEY) || '';\n if (searchQuery === '') {\n setFilter('keyword', '');\n onSearchInputChange('');\n }\n });\n return () => {\n unlisten();\n };\n }, [onSearchInputChange, setFilter]);\n const handleTextChange = (val: string) => {\n if (val.length > 0) {\n useQueryParams && setQueryArgument(QUICKSTART_SEARCH_FILTER_KEY, val);\n } else {\n useQueryParams && removeQueryArgument(QUICKSTART_SEARCH_FILTER_KEY);\n }\n if (filter?.keyword !== val) {\n setFilter('keyword', val);\n }\n onSearchInputChange(val);\n };\n\n return (\n <QuickStartCatalogFilterSearch\n searchInputText={filter?.keyword}\n handleTextChange={handleTextChange}\n />\n );\n};\n\n// compare string/number arrays\nexport const equalsIgnoreOrder = (a: any[], b: any[]) => {\n if (a.length !== b.length) {\n return false;\n }\n const uniqueValues = new Set([...a, ...b]);\n for (const v of uniqueValues) {\n const aCount = a.filter((e) => e === v).length;\n const bCount = b.filter((e) => e === v).length;\n if (aCount !== bCount) {\n return false;\n }\n }\n return true;\n};\n\ninterface QuickStartCatalogFilterStatusWrapperProps {\n onStatusChange: any;\n}\nexport const QuickStartCatalogFilterStatusWrapper: React.FC<\n QuickStartCatalogFilterStatusWrapperProps\n> = ({ onStatusChange = () => {} }) => {\n const { useQueryParams, filter, setFilter } =\n React.useContext<QuickStartContextValues>(QuickStartContext);\n React.useEffect(() => {\n // use this effect to clear the status when a `clear all` action is performed higher up\n const unlisten = history.listen(({ location }) => {\n const searchParams = new URLSearchParams(location.search);\n const updatedStatusFilters = searchParams.get(QUICKSTART_STATUS_FILTER_KEY)?.split(',') || [];\n if (updatedStatusFilters.length === 0) {\n setFilter('status', []);\n onStatusChange([]);\n }\n });\n return () => {\n unlisten();\n };\n });\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n\n const onRowfilterSelect = React.useCallback(\n (_e, selectedValue) => {\n setIsDropdownOpen(false);\n const selection = Object.entries(filter.status.statusTypes).find(\n ([_key, value]) => value === selectedValue,\n )[0];\n const selectedFiltersList = filter.status.statusFilters.includes(selection)\n ? filter.status.statusFilters.filter((status) => status !== selection)\n : [...filter.status.statusFilters, selection];\n if (!equalsIgnoreOrder(filter.status.statusFilters, selectedFiltersList)) {\n setFilter('status', selectedFiltersList);\n }\n if (selectedFiltersList.length > 0) {\n useQueryParams && setQueryArgument('status', selectedFiltersList.join(','));\n } else {\n useQueryParams && removeQueryArgument(QUICKSTART_STATUS_FILTER_KEY);\n }\n onStatusChange(selectedFiltersList);\n },\n [filter.status.statusFilters, onStatusChange, setFilter, useQueryParams],\n );\n\n const dropdownItems = Object.entries(filter.status.statusTypes).map(([key, value]) => (\n <SelectOption\n key={key}\n data-key={key}\n value={value}\n hasCheckbox\n isSelected={filter.status.statusFilters.includes(key)}\n >\n <>{value}</>\n </SelectOption>\n ));\n\n return (\n <QuickStartCatalogFilterSelect\n isDropdownOpen={isDropdownOpen}\n setIsDropdownOpen={setIsDropdownOpen}\n onRowfilterSelect={onRowfilterSelect}\n selectedFilters={filter.status.statusFilters}\n dropdownItems={dropdownItems}\n />\n );\n};\n\ninterface QuickStartCatalogFilterCountWrapperProps {\n quickStartsCount: number;\n}\nexport const QuickStartCatalogFilterCountWrapper: React.FC<\n QuickStartCatalogFilterCountWrapperProps\n> = ({ quickStartsCount }) => <QuickStartCatalogFilterCount quickStartsCount={quickStartsCount} />;\n","import * as React from 'react';\nimport { Toolbar, ToolbarContent, ToolbarProps } from '@patternfly/react-core';\nimport {\n QuickStartCatalogFilterCountWrapper,\n QuickStartCatalogFilterSearchWrapper,\n QuickStartCatalogFilterStatusWrapper,\n} from './QuickStartCatalogFilterItems';\n\nimport './QuickStartCatalogFilter.scss';\n\ninterface QuickStartCatalogFilterProps extends Omit<ToolbarProps, 'ref'> {\n quickStartsCount: number;\n onSearchInputChange: any;\n onStatusChange: any;\n}\n\nconst QuickStartCatalogFilter: React.FC<QuickStartCatalogFilterProps> = ({\n quickStartsCount,\n onSearchInputChange = () => {},\n onStatusChange = () => {},\n ...props\n}) => (\n <Toolbar usePageInsets className=\"pfext-quick-start-catalog-filter__flex\" {...props}>\n <ToolbarContent>\n <QuickStartCatalogFilterSearchWrapper onSearchInputChange={onSearchInputChange} />\n <QuickStartCatalogFilterStatusWrapper onStatusChange={onStatusChange} />\n <QuickStartCatalogFilterCountWrapper quickStartsCount={quickStartsCount} />\n </ToolbarContent>\n </Toolbar>\n );\n\nexport default QuickStartCatalogFilter;\n","import * as React from 'react';\nimport {\n Button,\n Divider,\n EmptyState,\n EmptyStateBody,\n EmptyStateIcon,\n Text,\n EmptyStateFooter,\n EmptyStateActions,\n EmptyStateHeader,\n} from '@patternfly/react-core';\nimport SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';\nimport { EmptyBox, LoadingBox, clearFilterParams } from '@console/internal/components/utils';\nimport QuickStartCatalog from './catalog/QuickStartCatalog';\nimport QuickStartCatalogFilter from './catalog/Toolbar/QuickStartCatalogFilter';\nimport { QuickStartContext, QuickStartContextValues } from './utils/quick-start-context';\nimport { QuickStart } from './utils/quick-start-types';\nimport { filterQuickStarts } from './utils/quick-start-utils';\n\nexport interface QuickStartCatalogPageProps {\n quickStarts?: QuickStart[];\n showFilter?: boolean;\n sortFnc?: (q1: QuickStart, q2: QuickStart) => number;\n title?: string;\n hint?: string;\n showTitle?: boolean;\n}\n\nexport const QuickStartCatalogEmptyState = ({ clearFilters }) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <EmptyState>\n <EmptyStateHeader\n titleText={<>{getResource('No results found')}</>}\n icon={<EmptyStateIcon icon={SearchIcon} />}\n headingLevel=\"h4\"\n />\n <EmptyStateBody>\n {getResource(\n 'No results match the filter criteria. Remove filters or clear all filters to show results.',\n )}\n </EmptyStateBody>\n\n <EmptyStateFooter>\n <EmptyStateActions>\n <Button variant=\"link\" onClick={clearFilters} data-test=\"clear-filter button\">\n {getResource('Clear all filters')}\n </Button>\n </EmptyStateActions>\n </EmptyStateFooter>\n </EmptyState>\n );\n};\n\nexport const QuickStartCatalogPage: React.FC<QuickStartCatalogPageProps> = ({\n quickStarts,\n showFilter,\n sortFnc = (q1, q2) => q1.spec.displayName.localeCompare(q2.spec.displayName),\n title,\n hint,\n showTitle = true,\n}) => {\n const sortFncCallback = React.useCallback(sortFnc, [sortFnc]);\n const {\n allQuickStarts = [],\n setAllQuickStarts,\n allQuickStartStates,\n getResource,\n filter,\n setFilter,\n loading,\n } = React.useContext<QuickStartContextValues>(QuickStartContext);\n\n React.useEffect(() => {\n // passed through prop, not context\n if (quickStarts && JSON.stringify(quickStarts) !== JSON.stringify(allQuickStarts)) {\n setAllQuickStarts(quickStarts);\n }\n }, [quickStarts, allQuickStarts, setAllQuickStarts]);\n\n const initialFilteredQuickStarts = showFilter\n ? filterQuickStarts(\n allQuickStarts,\n filter.keyword,\n filter.status.statusFilters,\n allQuickStartStates,\n ).sort(sortFncCallback)\n : allQuickStarts;\n\n const [filteredQuickStarts, setFilteredQuickStarts] = React.useState(initialFilteredQuickStarts);\n React.useEffect(() => {\n const filteredQs = showFilter\n ? filterQuickStarts(\n allQuickStarts,\n filter.keyword,\n filter.status.statusFilters,\n allQuickStartStates,\n ).sort(sortFncCallback)\n : allQuickStarts;\n // also needs a check whether the content of the QS changed\n if (\n filteredQs.length !== filteredQuickStarts.length ||\n JSON.stringify(filteredQs) !== JSON.stringify(filteredQuickStarts)\n ) {\n setFilteredQuickStarts(filteredQs);\n }\n }, [\n allQuickStarts,\n allQuickStartStates,\n showFilter,\n filter.keyword,\n filter.status.statusFilters,\n sortFncCallback,\n filteredQuickStarts,\n ]);\n\n const clearFilters = () => {\n setFilter('keyword', '');\n setFilter('status', []);\n clearFilterParams();\n setFilteredQuickStarts(\n allQuickStarts.sort((q1, q2) => q1.spec.displayName.localeCompare(q2.spec.displayName)),\n );\n };\n\n const onSearchInputChange = (searchValue) => {\n const result = filterQuickStarts(\n allQuickStarts,\n searchValue,\n filter.status.statusFilters,\n allQuickStartStates,\n ).sort((q1, q2) => q1.spec.displayName.localeCompare(q2.spec.displayName));\n if (searchValue !== filter.keyword) {\n setFilter('keyword', searchValue);\n }\n if (result.length !== filteredQuickStarts.length) {\n setFilteredQuickStarts(result);\n }\n };\n\n const onStatusChange = (statusList) => {\n const result = filterQuickStarts(\n allQuickStarts,\n filter.keyword,\n statusList,\n allQuickStartStates,\n ).sort((q1, q2) => q1.spec.displayName.localeCompare(q2.spec.displayName));\n if (JSON.stringify(statusList) !== JSON.stringify(filter.status)) {\n setFilter('status', statusList);\n }\n if (result.length !== filteredQuickStarts.length) {\n setFilteredQuickStarts(result);\n }\n };\n\n if (loading) {\n return <LoadingBox />;\n }\n\n if (!allQuickStarts || allQuickStarts.length === 0) {\n return <EmptyBox label={getResource('Quick Starts')} />;\n }\n\n return (\n <div className=\"pfext-quick-start__base\">\n {showTitle && (\n <div className=\"pfext-page-layout__header\">\n <Text component=\"h1\" className=\"pfext-page-layout__title\" data-test=\"page-title\">\n {title || getResource('Quick Starts')}\n </Text>\n {hint && <div className=\"pfext-page-layout__hint\">{hint}</div>}\n </div>\n )}\n {showTitle && <Divider component=\"div\" />}\n {showFilter && (\n <>\n <QuickStartCatalogFilter\n quickStartsCount={filteredQuickStarts.length}\n onSearchInputChange={onSearchInputChange}\n onStatusChange={onStatusChange}\n />\n <Divider component=\"div\" />\n </>\n )}\n <>\n {filteredQuickStarts.length === 0 ? (\n <QuickStartCatalogEmptyState clearFilters={clearFilters} />\n ) : (\n <QuickStartCatalog quickStarts={filteredQuickStarts} />\n )}\n </>\n </div>\n );\n};\n","import * as React from 'react';\n\nexport interface QuickStartCatalogHeaderProps {\n title: string;\n hint?: string;\n}\n\nexport const QuickStartCatalogHeader: React.FC<QuickStartCatalogHeaderProps> = ({\n title,\n hint,\n}) => (\n <div className=\"pfext-page-layout__header\">\n <h1 data-pf-content=\"true\" className=\"pfext-page-layout__title\">\n {title}\n </h1>\n {hint && <div className=\"pfext-page-layout__hint\">{hint}</div>}\n </div>\n);\n","import * as React from 'react';\n\nexport interface QuickStartCatalogSectionProps {\n children: React.ReactNode;\n}\n\nexport const QuickStartCatalogSection: React.FC<QuickStartCatalogSectionProps> = ({ children }) => (\n <div className=\"pfext-page-layout__content\">{children}</div>\n);\n","import * as React from 'react';\nimport { Toolbar } from '@patternfly/react-core';\n\nexport interface QuickStartCatalogToolbarProps {\n children: React.ReactNode;\n}\n\nexport const QuickStartCatalogToolbar: React.FC<QuickStartCatalogToolbarProps> = ({ children }) => (\n <Toolbar usePageInsets className=\"pfext-quick-start-catalog-filter__flex\">\n {children}\n </Toolbar>\n);\n","import * as React from 'react';\nimport { Button, Flex, FlexItem, ModalVariant } from '@patternfly/react-core';\nimport { Modal } from '@console/shared';\nimport { QuickStartContext, QuickStartContextValues } from './utils/quick-start-context';\n\ninterface QuickStartCloseModalProps {\n isOpen: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n}\n\nconst QuickStartCloseModal: React.FC<QuickStartCloseModalProps> = ({\n isOpen,\n onConfirm,\n onCancel,\n}) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <Modal\n className=\"pfext-quick-start-drawer__modal pfext-quick-start__base\"\n isOpen={isOpen}\n variant={ModalVariant.small}\n showClose={false}\n data-test=\"leave-quickstart\"\n title={getResource('Leave quick start?')}\n footer={\n <Flex>\n <FlexItem align={{ default: 'alignRight' }}>\n <Button variant=\"secondary\" data-test=\"cancel button\" onClick={onCancel}>\n {getResource('Cancel')}\n </Button>\n </FlexItem>\n <FlexItem>\n <Button variant=\"primary\" data-test=\"leave button\" onClick={onConfirm}>\n {getResource('Leave')}\n </Button>\n </FlexItem>\n </Flex>\n }\n isFullScreen\n >\n {getResource('Your progress will be saved.')}\n </Modal>\n );\n};\n\nexport default QuickStartCloseModal;\n","import * as React from 'react';\nimport { Icon, Title, WizardNavItem } from '@patternfly/react-core';\nimport CheckCircleIcon from '@patternfly/react-icons/dist/js/icons/check-circle-icon';\nimport ExclamationCircleIcon from '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';\nimport { css } from '@patternfly/react-styles';\nimport { markdownConvert } from '../ConsoleInternal/components/markdown-view';\nimport { removeParagraphWrap } from '../QuickStartMarkdownView';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStartTaskStatus } from '../utils/quick-start-types';\n\nimport './QuickStartTaskHeader.scss';\n\ninterface QuickStartTaskHeaderProps {\n title: string;\n taskIndex: number;\n subtitle?: string;\n taskStatus?: QuickStartTaskStatus;\n size?: 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n isActiveTask?: boolean;\n onTaskSelect: (index: number) => void;\n children?: React.ReactNode;\n}\n\nconst TaskIcon: React.FC<{\n taskIndex: number;\n taskStatus: QuickStartTaskStatus;\n}> = ({ taskIndex, taskStatus }) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n const success = taskStatus === QuickStartTaskStatus.SUCCESS;\n const failed = taskStatus === QuickStartTaskStatus.FAILED;\n\n const classNames = css('pfext-icon-and-text__icon', {\n 'pfext-quick-start-task-header__task-icon-init': !failed && !success,\n });\n let content: React.ReactNode;\n\n if (success) {\n content = (\n <Icon size=\"md\">\n <CheckCircleIcon className=\"pfext-quick-start-task-header__task-icon-success\" />{' '}\n </Icon>\n );\n } else if (failed) {\n content = (\n <Icon size=\"md\">\n <ExclamationCircleIcon className=\"pfext-quick-start-task-header__task-icon-failed\" />\n </Icon>\n );\n } else {\n content = getResource('{{taskIndex, number}}', taskIndex).replace(\n '{{taskIndex, number}}',\n taskIndex,\n );\n }\n return <span className={classNames}>{content}</span>;\n};\n\nconst QuickStartTaskHeader: React.FC<QuickStartTaskHeaderProps> = ({\n title,\n taskIndex,\n subtitle,\n taskStatus,\n size,\n isActiveTask,\n onTaskSelect,\n children,\n}) => {\n const titleRef = React.useRef(null);\n React.useEffect(() => {\n if (isActiveTask) {\n // Focus the WizardNavItem button element that contains the title\n titleRef.current.parentNode.focus();\n }\n }, [isActiveTask]);\n const classNames = css('pfext-quick-start-task-header__title', {\n 'pfext-quick-start-task-header__title-success': taskStatus === QuickStartTaskStatus.SUCCESS,\n 'pfext-quick-start-task-header__title-failed':\n taskStatus === (QuickStartTaskStatus.FAILED || QuickStartTaskStatus.VISITED),\n });\n // const notCompleted = taskStatus === QuickStartTaskStatus.VISITED;\n // const skippedReview = taskStatus === QuickStartTaskStatus.REVIEW;\n const failedReview = taskStatus === QuickStartTaskStatus.FAILED;\n\n // TODO: toned down when this is shown, investigate further when we should display it\n // related: https://github.com/patternfly/patternfly-quickstarts/issues/104\n const tryAgain = failedReview && (\n <>\n <div />\n <div className=\"pfext-quick-start-task-header__tryagain\">Try the steps again.</div>\n </>\n );\n\n const content = (\n <div className=\"pfext-quick-start-task-header\" ref={titleRef}>\n <TaskIcon taskIndex={taskIndex} taskStatus={taskStatus} />\n <Title headingLevel=\"h3\" size={size} className={classNames}>\n <span dangerouslySetInnerHTML={{ __html: removeParagraphWrap(markdownConvert(title)) }} />\n {isActiveTask && subtitle && (\n <span\n className=\"pfext-quick-start-task-header__subtitle\"\n data-test-id=\"quick-start-task-subtitle\"\n >\n {' '}\n {subtitle}\n </span>\n )}\n </Title>\n {tryAgain}\n </div>\n );\n\n return (\n <WizardNavItem\n content={content}\n stepIndex={taskIndex}\n onClick={() => onTaskSelect(taskIndex - 1)}\n component=\"button\"\n isCurrent={isActiveTask}\n >\n {children}\n </WizardNavItem>\n );\n};\n\nexport default QuickStartTaskHeader;\n","import * as React from 'react';\nimport { List } from '@patternfly/react-core';\nimport { QuickStartTask, QuickStartTaskStatus } from '../utils/quick-start-types';\nimport TaskHeader from './QuickStartTaskHeader';\n\nimport './QuickStartTaskHeaderList.scss';\n\ninterface QuickStartTaskHeaderListProps {\n tasks: QuickStartTask[];\n allTaskStatuses: QuickStartTaskStatus[];\n onTaskSelect: (selectedTaskNumber: number) => void;\n}\n\nconst QuickStartTaskHeaderList: React.FC<QuickStartTaskHeaderListProps> = ({\n tasks,\n allTaskStatuses,\n onTaskSelect,\n}) => tasks.length > 0 ? (\n <List className=\"pfext-quick-start-task-header__list\">\n {tasks.map((task, index) => (\n <TaskHeader\n key={task.title}\n title={task.title}\n taskIndex={index + 1}\n size=\"md\"\n taskStatus={allTaskStatuses[index]}\n onTaskSelect={onTaskSelect}\n />\n ))}\n </List>\n ) : null;\n\nexport default QuickStartTaskHeaderList;\n","import * as React from 'react';\nimport { Button } from '@patternfly/react-core';\nimport ArrowRightIcon from '@patternfly/react-icons/dist/js/icons/arrow-right-icon';\nimport QuickStartMarkdownView from '../QuickStartMarkdownView';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStart, QuickStartTask, QuickStartTaskStatus } from '../utils/quick-start-types';\nimport TaskHeaderList from './QuickStartTaskHeaderList';\n\ninterface QuickStartConclusionProps {\n tasks: QuickStartTask[];\n conclusion: string;\n allTaskStatuses: QuickStartTaskStatus[];\n nextQuickStarts?: QuickStart[];\n onQuickStartChange: (quickStartid: string) => void;\n onTaskSelect: (selectedTaskNumber: number) => void;\n}\n\nconst QuickStartConclusion: React.FC<QuickStartConclusionProps> = ({\n tasks,\n conclusion,\n allTaskStatuses,\n nextQuickStarts,\n onQuickStartChange,\n onTaskSelect,\n}) => {\n const hasFailedTask = allTaskStatuses.includes(QuickStartTaskStatus.FAILED);\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <>\n <TaskHeaderList tasks={tasks} allTaskStatuses={allTaskStatuses} onTaskSelect={onTaskSelect} />\n <QuickStartMarkdownView\n content={\n hasFailedTask\n ? getResource(\n 'One or more verifications did not pass during this quick start. Revisit the tasks or the help links, and then try again.',\n )\n : conclusion\n }\n />\n {!hasFailedTask &&\n nextQuickStarts &&\n nextQuickStarts.length > 0 &&\n nextQuickStarts.map((nextQuickStart, index) => (\n <Button\n variant=\"link\"\n onClick={() => onQuickStartChange(nextQuickStart.metadata.name)}\n isInline\n isBlock\n key={index}\n >\n {getResource('Start {{nextQSDisplayName}} quick start').replace(\n '{{nextQSDisplayName}}',\n nextQuickStart?.spec?.displayName,\n )}{' '}\n <ArrowRightIcon\n style={{ marginLeft: 'var(--pf-v5-global--spacer--xs)', verticalAlign: 'middle' }}\n />\n </Button>\n ))}\n </>\n );\n};\nexport default QuickStartConclusion;\n","import * as React from 'react';\nimport { ExpandableSection, List, ListItem } from '@patternfly/react-core';\nimport QuickStartMarkdownView from '../QuickStartMarkdownView';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStartTask, QuickStartTaskStatus } from '../utils/quick-start-types';\nimport TaskHeaderList from './QuickStartTaskHeaderList';\n\nimport './QuickStartIntroduction.scss';\n\ninterface QuickStartIntroductionProps {\n introduction: string;\n tasks: QuickStartTask[];\n allTaskStatuses: QuickStartTaskStatus[];\n prerequisites?: string[];\n onTaskSelect: (selectedTaskNumber: number) => void;\n}\n\nconst QuickStartIntroduction: React.FC<QuickStartIntroductionProps> = ({\n tasks,\n introduction,\n allTaskStatuses,\n prerequisites,\n onTaskSelect,\n}) => {\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n const prereqs = prerequisites?.filter((p) => p);\n const [isPrereqsExpanded, setIsPrereqsExpanded] = React.useState(false);\n const prereqList = prereqs?.length > 0 && (\n <ExpandableSection\n toggleText={getResource('View Prerequisites ({{totalPrereqs}})').replace(\n '{{totalPrereqs}}',\n prereqs.length,\n )}\n onToggle={() => setIsPrereqsExpanded(!isPrereqsExpanded)}\n className=\"pfext-quick-start-intro__prereq\"\n >\n <List className=\"pfext-quick-start-intro__prereq-list\">\n {prereqs.map((pr) => (\n <ListItem key={pr} className=\"pfext-quick-start-intro__prereq-list__item\">\n <span className=\"pfext-quick-start-intro__prereq-list__item-content\">\n <QuickStartMarkdownView content={pr} />\n </span>\n </ListItem>\n ))}\n </List>\n </ExpandableSection>\n );\n return (\n <>\n <QuickStartMarkdownView content={introduction} />\n {prereqList}\n <p style={{ marginBottom: 'var(--pf-v5-global--spacer--md)' }}>\n {getResource(\n 'In this quick start, you will complete {{count, number}} task',\n tasks.length,\n ).replace('{{count, number}}', tasks.length)}\n :\n </p>\n <TaskHeaderList tasks={tasks} allTaskStatuses={allTaskStatuses} onTaskSelect={onTaskSelect} />\n </>\n );\n};\n\nexport default QuickStartIntroduction;\n","import * as React from 'react';\nimport { Alert, Radio } from '@patternfly/react-core';\nimport { css } from '@patternfly/react-styles';\nimport QuickStartMarkdownView from '../QuickStartMarkdownView';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport {\n QuickStartTaskReview as QuickStartTaskReviewType,\n QuickStartTaskStatus,\n} from '../utils/quick-start-types';\n\nimport './QuickStartTaskReview.scss';\n\ninterface QuickStartTaskReviewProps {\n review: QuickStartTaskReviewType;\n taskStatus: QuickStartTaskStatus;\n onTaskReview: (status: QuickStartTaskStatus) => void;\n}\n\nconst getAlertVariant = (status) => {\n switch (status) {\n case QuickStartTaskStatus.SUCCESS:\n return 'success';\n case QuickStartTaskStatus.FAILED:\n return 'danger';\n default:\n return 'info';\n }\n};\n\nconst QuickStartTaskReview: React.FC<QuickStartTaskReviewProps> = ({\n review,\n taskStatus,\n onTaskReview,\n}) => {\n const { instructions, failedTaskHelp: taskHelp } = review;\n const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);\n\n const alertClassNames = css('pfext-quick-start-task-review', {\n 'pfext-quick-start-task-review--success': taskStatus === QuickStartTaskStatus.SUCCESS,\n 'pfext-quick-start-task-review--failed': taskStatus === QuickStartTaskStatus.FAILED,\n });\n\n const title = <span className={alertClassNames}>{getResource('Check your work')}</span>;\n\n return (\n <Alert\n className=\"pfext-quick-start-task-review-alert\"\n variant={getAlertVariant(taskStatus)}\n title={title}\n isInline\n role=\"alert\"\n >\n <QuickStartMarkdownView content={instructions} />\n <span className=\"pfext-quick-start-task-review__actions\">\n <Radio\n id=\"review-success\"\n name=\"review-success\"\n data-testid=\"qs-drawer-check-yes\"\n label={getResource('Yes')}\n className=\"pfext-quick-start-task-review__radio\"\n isChecked={taskStatus === QuickStartTaskStatus.SUCCESS}\n onChange={() => onTaskReview(QuickStartTaskStatus.SUCCESS)}\n />\n <Radio\n id=\"review-failed\"\n name=\"review-failed\"\n data-testid=\"qs-drawer-check-no\"\n label={getResource('No')}\n className=\"pfext-quick-start-task-review__radio\"\n isChecked={taskStatus === QuickStartTaskStatus.FAILED}\n onChange={() => onTaskReview(QuickStartTaskStatus.FAILED)}\n />\n </span>\n {taskStatus === QuickStartTaskStatus.FAILED && taskHelp && (\n <QuickStartMarkdownView content={taskHelp} exactHeight />\n )}\n </Alert>\n );\n};\n\nexport default QuickStartTaskReview;\n","import * as React from 'react';\nimport QuickStartMarkdownView from '../QuickStartMarkdownView';\nimport { QUICKSTART_TASKS_INITIAL_STATES } from '../utils/const';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStartTask, QuickStartTaskStatus } from '../utils/quick-start-types';\nimport TaskHeader from './QuickStartTaskHeader';\nimport QuickStartTaskReview from './QuickStartTaskReview';\n\nimport './QuickStartTasks.scss';\n\ninterface QuickStartTaskProps {\n tasks: QuickStartTask[];\n taskNumber: number;\n allTaskStatuses: QuickStartTaskStatus[];\n onTaskReview: (reviewState: QuickStartTaskStatus) => void;\n onTaskSelect: (activeQuickStartId) => void;\n}\n\nconst QuickStartTasks: React.FC<QuickStartTaskProps> = ({\n tasks,\n taskNumber,\n allTaskStatuses,\n onTaskReview,\n onTaskSelect,\n}) => {\n const { getResource, alwaysShowTaskReview } = React.useContext<QuickStartContextValues>(\n QuickStartContext,\n );\n return (\n <div className=\"pfext-quick-start-tasks__list\">\n <ul>\n {tasks\n .filter((_, index) => allTaskStatuses[index] !== QuickStartTaskStatus.INIT)\n .map((task, index) => {\n const { title, description, review } = task;\n const isActiveTask = index === taskNumber;\n const taskStatus = allTaskStatuses[index];\n const shouldShowTaskReview =\n (!QUICKSTART_TASKS_INITIAL_STATES.includes(taskStatus) || alwaysShowTaskReview) &&\n review;\n return (\n <React.Fragment key={title}>\n <TaskHeader\n taskIndex={index + 1}\n title={title}\n size=\"md\"\n subtitle={getResource('{{index, number}} of {{tasks, number}}')\n .replace('{{index, number}}', index + 1)\n .replace('{{tasks, number}}', tasks.length)}\n taskStatus={taskStatus}\n isActiveTask={isActiveTask}\n onTaskSelect={onTaskSelect}\n >\n {isActiveTask && (\n <div className=\"pfext-quick-start-task__content\">\n <QuickStartMarkdownView content={description} />\n {shouldShowTaskReview && (\n <QuickStartTaskReview\n review={review}\n taskStatus={taskStatus}\n onTaskReview={onTaskReview}\n />\n )}\n </div>\n )}\n </TaskHeader>\n </React.Fragment>\n );\n })}\n </ul>\n </div>\n );\n};\n\nexport default QuickStartTasks;\n","import * as React from 'react';\nimport { QuickStart, QuickStartTaskStatus } from '../utils/quick-start-types';\nimport QuickStartConclusion from './QuickStartConclusion';\nimport QuickStartIntroduction from './QuickStartIntroduction';\nimport QuickStartTasks from './QuickStartTasks';\n\nimport './QuickStartContent.scss';\n\ninterface QuickStartContentProps {\n quickStart: QuickStart;\n nextQuickStarts?: QuickStart[];\n taskNumber: number;\n allTaskStatuses: QuickStartTaskStatus[];\n onTaskSelect: (selectedTaskNumber: number) => void;\n onTaskReview: (taskStatus: QuickStartTaskStatus) => void;\n onQuickStartChange?: (quickStartId: string) => void;\n}\n\nconst QuickStartContent = React.forwardRef<HTMLDivElement, QuickStartContentProps>(\n (\n {\n quickStart,\n nextQuickStarts = [],\n taskNumber,\n allTaskStatuses,\n onTaskSelect,\n onTaskReview,\n onQuickStartChange,\n },\n ref,\n ) => {\n const {\n spec: { introduction, tasks, conclusion, prerequisites },\n } = quickStart;\n const totalTasks = tasks.length;\n\n return (\n <div className=\"pfext-quick-start-content\" ref={ref}>\n {taskNumber === -1 && (\n <QuickStartIntroduction\n tasks={tasks}\n allTaskStatuses={allTaskStatuses}\n introduction={introduction}\n prerequisites={prerequisites}\n onTaskSelect={onTaskSelect}\n />\n )}\n {taskNumber > -1 && taskNumber < totalTasks && (\n <QuickStartTasks\n tasks={tasks}\n taskNumber={taskNumber}\n allTaskStatuses={allTaskStatuses}\n onTaskReview={onTaskReview}\n onTaskSelect={onTaskSelect}\n />\n )}\n {taskNumber === totalTasks && (\n <QuickStartConclusion\n tasks={tasks}\n conclusion={conclusion}\n allTaskStatuses={allTaskStatuses}\n nextQuickStarts={nextQuickStarts}\n onQuickStartChange={onQuickStartChange}\n onTaskSelect={onTaskSelect}\n />\n )}\n </div>\n );\n },\n);\n\nexport default QuickStartContent;\n","import * as React from 'react';\nimport { Button } from '@patternfly/react-core';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStartStatus } from '../utils/quick-start-types';\nimport { camelize } from '../utils/quick-start-utils';\n\nimport './QuickStartFooter.scss';\n\nexport interface QuickStartFooterProps {\n status: QuickStartStatus;\n footerClass: string;\n taskNumber: number;\n totalTasks: number;\n onNext: () => void;\n onBack: () => void;\n quickStartId: string;\n}\n\nconst QuickStartFooter: React.FC<QuickStartFooterProps> = ({\n status,\n taskNumber,\n totalTasks,\n onNext,\n onBack,\n footerClass,\n quickStartId,\n}) => {\n const { restartQuickStart, getResource } = React.useContext<QuickStartContextValues>(\n QuickStartContext,\n );\n\n const PrimaryButtonText = React.useMemo(() => ({\n START: getResource('Start'),\n CONTINUE: getResource('Continue'),\n NEXT: getResource('Next'),\n CLOSE: getResource('Close'),\n }), [getResource]);\n\n const SecondaryButtonText = React.useMemo(() => ({\n BACK: getResource('Back'),\n RESTART: getResource('Restart'),\n }), [getResource]);\n\n const onRestart = React.useCallback(\n (e: React.SyntheticEvent) => {\n e.preventDefault();\n e.stopPropagation();\n restartQuickStart(quickStartId, totalTasks);\n },\n [quickStartId, restartQuickStart, totalTasks],\n );\n\n const getPrimaryButtonText = React.useMemo(() => {\n if (status === QuickStartStatus.NOT_STARTED) {\n return PrimaryButtonText.START;\n }\n\n if (taskNumber === totalTasks) {\n return PrimaryButtonText.CLOSE;\n }\n\n if (taskNumber > -1 && taskNumber < totalTasks) {\n return PrimaryButtonText.NEXT;\n }\n\n return PrimaryButtonText.CONTINUE;\n }, [taskNumber, totalTasks, PrimaryButtonText, status]);\n\n const getPrimaryButton = React.useMemo(\n () => (\n <Button\n variant=\"primary\"\n className=\"pfext-quick-start-footer__actionbtn\"\n onClick={onNext}\n data-testid={`qs-drawer-${camelize(getPrimaryButtonText)}`}\n data-test={`${getPrimaryButtonText} button`}\n >\n {getPrimaryButtonText}\n </Button>\n ),\n [getPrimaryButtonText, onNext],\n );\n\n const getSecondaryButton = React.useMemo(\n () =>\n taskNumber === -1 && status !== QuickStartStatus.NOT_STARTED ? (\n <Button variant=\"secondary\" onClick={onRestart} data-testid=\"qs-drawer-restart\">\n {SecondaryButtonText.RESTART}\n </Button>\n ) : (\n taskNumber > -1 && (\n <Button variant=\"secondary\" onClick={onBack} data-testid=\"qs-drawer-back\">\n {SecondaryButtonText.BACK}\n </Button>\n )\n ),\n [onRestart, onBack, SecondaryButtonText, status, taskNumber],\n );\n\n const getSideNoteAction = React.useMemo(\n () =>\n taskNumber !== -1 && (\n <Button\n variant=\"link\"\n className=\"pfext-quick-start-footer__restartbtn\"\n onClick={onRestart}\n data-testid=\"qs-drawer-side-note-action\"\n >\n {SecondaryButtonText.RESTART}\n </Button>\n ),\n [taskNumber, onRestart, SecondaryButtonText.RESTART],\n );\n\n return (\n <div className={`pfext-quick-start-footer ${footerClass}`}>\n {getPrimaryButton}\n {getSecondaryButton}\n {getSideNoteAction}\n </div>\n );\n};\n\nexport default QuickStartFooter;\n","import * as React from 'react';\nimport QuickStartContent from './controller/QuickStartContent';\nimport QuickStartFooter from './controller/QuickStartFooter';\nimport { QuickStartContext, QuickStartContextValues } from './utils/quick-start-context';\nimport { QuickStart, QuickStartStatus, QuickStartTaskStatus } from './utils/quick-start-types';\n\ninterface QuickStartControllerProps {\n quickStart: QuickStart;\n nextQuickStarts?: QuickStart[];\n footerClass: string;\n contentRef: React.Ref<HTMLDivElement>;\n}\n\nconst QuickStartController: React.FC<QuickStartControllerProps> = ({\n quickStart,\n nextQuickStarts,\n contentRef,\n footerClass,\n}) => {\n const {\n metadata: { name },\n spec: { tasks = [] },\n } = quickStart;\n const totalTasks = tasks?.length;\n const {\n activeQuickStartState,\n setActiveQuickStart,\n setQuickStartTaskNumber,\n setQuickStartTaskStatus,\n nextStep,\n previousStep,\n } = React.useContext<QuickStartContextValues>(QuickStartContext);\n const status = activeQuickStartState?.status as QuickStartStatus;\n const taskNumber = activeQuickStartState?.taskNumber as number;\n const allTaskStatuses = tasks.map(\n (task, index) => activeQuickStartState[`taskStatus${index}`],\n ) as QuickStartTaskStatus[];\n\n const handleQuickStartChange = React.useCallback(\n (quickStartId: string) => setActiveQuickStart(quickStartId),\n [setActiveQuickStart],\n );\n\n const handleTaskStatusChange = React.useCallback(\n (newTaskStatus: QuickStartTaskStatus) => setQuickStartTaskStatus(newTaskStatus),\n [setQuickStartTaskStatus],\n );\n\n const getQuickStartActiveTask = React.useCallback(() => {\n let activeTaskNumber = 0;\n while (\n activeTaskNumber !== totalTasks &&\n activeQuickStartState[`taskStatus${activeTaskNumber}`] === QuickStartTaskStatus.SUCCESS\n ) {\n activeTaskNumber++;\n }\n return activeTaskNumber;\n }, [totalTasks, activeQuickStartState]);\n\n const handleQuickStartContinue = React.useCallback(() => {\n const activeTaskNumber = getQuickStartActiveTask();\n setQuickStartTaskNumber(name, activeTaskNumber);\n }, [getQuickStartActiveTask, setQuickStartTaskNumber, name]);\n\n const handleNext = React.useCallback(() => {\n if (status === QuickStartStatus.COMPLETE && taskNumber === totalTasks) {\n return handleQuickStartChange('');\n }\n\n if (status !== QuickStartStatus.NOT_STARTED && taskNumber === -1) {\n return handleQuickStartContinue();\n }\n\n return nextStep(totalTasks);\n }, [handleQuickStartChange, nextStep, status, taskNumber, totalTasks, handleQuickStartContinue]);\n\n const handleBack = React.useCallback(() => previousStep(), [previousStep]);\n\n const handleTaskSelect = React.useCallback(\n (selectedTaskNumber: number) => {\n setQuickStartTaskNumber(name, selectedTaskNumber);\n },\n [name, setQuickStartTaskNumber],\n );\n\n return (\n <>\n <QuickStartContent\n quickStart={quickStart}\n nextQuickStarts={nextQuickStarts}\n taskNumber={taskNumber}\n allTaskStatuses={allTaskStatuses}\n onTaskSelect={handleTaskSelect}\n onTaskReview={handleTaskStatusChange}\n onQuickStartChange={handleQuickStartChange}\n ref={contentRef}\n />\n <QuickStartFooter\n status={status}\n taskNumber={taskNumber}\n totalTasks={totalTasks}\n onNext={handleNext}\n onBack={handleBack}\n footerClass={footerClass}\n quickStartId={quickStart.metadata.name}\n />\n </>\n );\n};\n\nexport default QuickStartController;\n","import './QuickStartPanelContent.scss';\nimport * as React from 'react';\nimport {\n DrawerActions,\n DrawerCloseButton,\n DrawerHead,\n DrawerPanelBody,\n DrawerPanelContent,\n Title,\n} from '@patternfly/react-core';\nimport { css } from '@patternfly/react-styles';\nimport * as ReactDOM from 'react-dom';\nimport { Shadows, useScrollShadows } from '@console/shared';\nimport QuickStartController from './QuickStartController';\nimport { QuickStartContext, QuickStartContextValues } from './utils/quick-start-context';\nimport { QuickStart } from './utils/quick-start-types';\nimport { camelize } from './utils/quick-start-utils';\nimport { removeParagraphWrap } from './QuickStartMarkdownView';\nimport { markdownConvert } from './ConsoleInternal/components/markdown-view';\n\ntype HandleClose = () => void;\n\ninterface QuickStartPanelContentProps {\n quickStarts: QuickStart[];\n activeQuickStartID: string;\n handleClose: HandleClose;\n appendTo?: HTMLElement | (() => HTMLElement);\n isResizable?: boolean;\n showClose?: boolean;\n headerVariant?: '' | 'blue-white';\n}\n\nconst getElement = (appendTo: HTMLElement | (() => HTMLElement)) => {\n if (typeof appendTo === 'function') {\n return appendTo();\n }\n return appendTo;\n};\n\nconst useScrollTopOnTaskNumberChange = (node: HTMLElement, taskNumber: number): void => {\n React.useEffect(() => {\n if (node) {\n node.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, [taskNumber, node]);\n};\n\nconst QuickStartPanelContent: React.FC<QuickStartPanelContentProps> = ({\n quickStarts = [],\n handleClose,\n activeQuickStartID,\n appendTo,\n isResizable = true,\n showClose = true,\n headerVariant = '',\n ...props\n}) => {\n const titleRef = React.useRef(null);\n const { getResource, activeQuickStartState } =\n React.useContext<QuickStartContextValues>(QuickStartContext);\n const [contentRef, setContentRef] = React.useState<HTMLDivElement>();\n const shadows = useScrollShadows(contentRef);\n const quickStart = quickStarts.find((qs) => qs.metadata.name === activeQuickStartID);\n const taskNumber = activeQuickStartState?.taskNumber;\n useScrollTopOnTaskNumberChange(contentRef, taskNumber as number);\n const nextQuickStarts: QuickStart[] = quickStarts.filter((qs: QuickStart) =>\n quickStart?.spec.nextQuickStart?.includes(qs.metadata.name),\n );\n\n const headerClasses = css('pfext-quick-start-panel-content__header', {\n 'pfext-quick-start-panel-content__header__shadow':\n shadows === Shadows.top || shadows === Shadows.both,\n 'pfext-quick-start-panel-content__header--blue-white': headerVariant === 'blue-white',\n });\n\n const footerClass = css({\n 'pfext-quick-start-panel-content__footer__shadow':\n shadows === Shadows.bottom || shadows === Shadows.both,\n });\n\n const getStep = () => {\n const tasks = quickStart.spec.tasks.length;\n if (Number.parseInt(taskNumber as string) === -1) {\n return 'intro';\n }\n if (Number.parseInt(taskNumber as string) === tasks) {\n return 'conclusion';\n }\n return Number.parseInt(taskNumber as string) + 1;\n };\n\n React.useEffect(() => {\n if (quickStart) {\n titleRef.current.focus();\n }\n }, [quickStart]);\n\n const content = quickStart ? (\n <DrawerPanelContent\n isResizable={isResizable}\n className=\"pfext-quick-start__base\"\n data-testid={`qs-drawer-${camelize(quickStart.spec.displayName)}`}\n data-qs={`qs-step-${getStep()}`}\n data-test=\"quickstart drawer\"\n {...props}\n >\n <div className={headerClasses}>\n <DrawerHead>\n <div className=\"pfext-quick-start-panel-content__title\" tabIndex={-1} ref={titleRef}>\n <Title\n headingLevel=\"h2\"\n size=\"xl\"\n className=\"pfext-quick-start-panel-content__name\"\n style={{ marginRight: 'var(--pf-v5-global--spacer--md)' }}\n >\n <span\n dangerouslySetInnerHTML={{\n __html: removeParagraphWrap(markdownConvert(quickStart?.spec.displayName)),\n }}\n />{' '}\n <small className=\"pfext-quick-start-panel-content__duration\">\n {quickStart?.spec.durationMinutes\n ? getResource(\n '{{type}} • {{duration, number}} minutes',\n quickStart?.spec.durationMinutes,\n )\n .replace('{{duration, number}}', quickStart?.spec.durationMinutes)\n .replace('{{type}}', getResource('Type'))\n : getResource('Type')}\n </small>\n </Title>\n </div>\n {showClose && (\n <DrawerActions>\n <DrawerCloseButton\n onClick={handleClose}\n className=\"pfext-quick-start-panel-content__close-button\"\n data-testid=\"qs-drawer-close\"\n />\n </DrawerActions>\n )}\n </DrawerHead>\n </div>\n <DrawerPanelBody\n hasNoPadding\n className=\"pfext-quick-start-panel-content__body\"\n data-test=\"content\"\n >\n <QuickStartController\n quickStart={quickStart}\n nextQuickStarts={nextQuickStarts}\n footerClass={footerClass}\n contentRef={setContentRef}\n />\n </DrawerPanelBody>\n </DrawerPanelContent>\n ) : null;\n\n if (appendTo) {\n return ReactDOM.createPortal(content, getElement(appendTo));\n }\n return content;\n};\n\nexport default QuickStartPanelContent;\n","import './QuickStartDrawer.scss';\nimport * as React from 'react';\nimport { Drawer, DrawerContent, DrawerContentBody } from '@patternfly/react-core';\nimport QuickStartCloseModal from './QuickStartCloseModal';\nimport QuickStartPanelContent from './QuickStartPanelContent';\nimport {\n getDefaultQuickStartState,\n QuickStartContext,\n QuickStartContextValues,\n useValuesForQuickStartContext,\n} from './utils/quick-start-context';\nimport { QUICKSTART_ID_FILTER_KEY } from './utils/const';\nimport { QuickStart, QuickStartStatus, AllQuickStartStates } from './utils/quick-start-types';\nimport { getQuickStartByName } from './utils/quick-start-utils';\n\nexport interface QuickStartContainerProps extends React.HTMLProps<HTMLDivElement> {\n /** array of quick starts */\n quickStarts: QuickStart[];\n /** id of the currently active quick start */\n activeQuickStartID: string;\n /** setter for the active quick starts */\n setActiveQuickStartID: React.Dispatch<React.SetStateAction<string>>;\n /** quick starts state object */\n allQuickStartStates: AllQuickStartStates;\n /** setter for the quick starts state object */\n setAllQuickStartStates: React.Dispatch<React.SetStateAction<AllQuickStartStates>>;\n /** content to render within the container */\n children?: React.ReactNode;\n /** element to render the drawer panel into */\n appendTo?: HTMLElement | (() => HTMLElement);\n /** if true, the panel will take up the full browser width */\n fullWidth?: boolean;\n /** callback when an in-progress quick start is closed */\n onCloseInProgress?: any;\n /** callback when a not-in-progress quick start is closed */\n onCloseNotInProgress?: any;\n /** true to show footer buttons in the catalog tiles (default true) */\n showCardFooters?: boolean;\n /** true to use legacy drawer header variant colors */\n useLegacyHeaderColors?: boolean;\n /** text resources object */\n resourceBundle?: any;\n /** language of the current resource bundle\n * Add custom strings: https://github.com/patternfly/patternfly-quickstarts/tree/main/packages/module#localization\n */\n language?: string;\n /** if true, will show a loading spinner on the catalog page (default false) */\n loading?: boolean;\n /** if true, will update the browser URL with ?quickstart={ID} (default true) */\n useQueryParams?: boolean;\n /** if true, the TaskReview component, aka \"Check your work\", will be shown regardless of task status */\n alwaysShowTaskReview?: boolean;\n /**\n * Additional markdown extensions and renderers to use\n * Example usage: https://github.com/patternfly/patternfly-quickstarts/tree/main/packages/module#markdown-extensions\n */\n markdown?: {\n extensions?: any[];\n renderExtension?: (docContext: Document, rootSelector: string) => React.ReactNode;\n };\n /** additional quick start context props */\n contextProps?: QuickStartContextValues;\n}\n\nexport const QuickStartContainer: React.FC<QuickStartContainerProps> = ({\n quickStarts,\n children,\n activeQuickStartID,\n allQuickStartStates,\n setActiveQuickStartID,\n setAllQuickStartStates,\n appendTo,\n fullWidth,\n onCloseInProgress,\n onCloseNotInProgress,\n resourceBundle,\n showCardFooters,\n useLegacyHeaderColors,\n language,\n loading = false,\n useQueryParams = true,\n markdown,\n contextProps,\n alwaysShowTaskReview = true,\n ...props\n}: QuickStartContainerProps) => {\n const valuesForQuickstartContext: QuickStartContextValues = useValuesForQuickStartContext({\n allQuickStarts: quickStarts,\n activeQuickStartID,\n setActiveQuickStartID,\n allQuickStartStates,\n setAllQuickStartStates,\n footer: {\n show: showCardFooters,\n },\n useLegacyHeaderColors,\n language,\n resourceBundle: {\n ...resourceBundle,\n // Start: \"Let's go!\",\n // Continue: 'Resume',\n // Restart: 'Start over',\n },\n loading,\n useQueryParams,\n markdown,\n alwaysShowTaskReview,\n ...contextProps,\n });\n\n React.useEffect(() => {\n if (\n quickStarts &&\n JSON.stringify(quickStarts) !== JSON.stringify(valuesForQuickstartContext.allQuickStarts)\n ) {\n valuesForQuickstartContext.setAllQuickStarts(quickStarts);\n }\n }, [quickStarts, valuesForQuickstartContext]);\n\n React.useEffect(() => {\n if (loading !== valuesForQuickstartContext.loading) {\n valuesForQuickstartContext.setLoading(loading);\n }\n }, [loading, valuesForQuickstartContext]);\n\n const drawerProps = {\n appendTo,\n fullWidth,\n onCloseInProgress,\n onCloseNotInProgress,\n ...props,\n };\n\n return (\n <QuickStartContext.Provider value={valuesForQuickstartContext}>\n <QuickStartDrawer {...drawerProps}>{children}</QuickStartDrawer>\n </QuickStartContext.Provider>\n );\n};\n\nexport interface QuickStartDrawerProps extends React.HTMLProps<HTMLDivElement> {\n quickStarts?: QuickStart[];\n children?: React.ReactNode;\n appendTo?: HTMLElement | (() => HTMLElement);\n fullWidth?: boolean;\n onCloseInProgress?: any;\n onCloseNotInProgress?: any;\n}\n\nexport const QuickStartDrawer: React.FC<QuickStartDrawerProps> = ({\n quickStarts = [],\n children,\n appendTo,\n fullWidth,\n onCloseInProgress,\n onCloseNotInProgress,\n ...props\n}) => {\n const {\n activeQuickStartID,\n setActiveQuickStart,\n allQuickStarts = [],\n activeQuickStartState,\n allQuickStartStates,\n setAllQuickStartStates,\n useLegacyHeaderColors,\n } = React.useContext<QuickStartContextValues>(QuickStartContext);\n const combinedQuickStarts = allQuickStarts.concat(quickStarts);\n React.useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n // if there is a quick start param, but the quick start is not active, set it\n // this can happen if a new browser session is opened or an incognito window for example\n const quickStartIdFromParam = params.get(QUICKSTART_ID_FILTER_KEY) || '';\n if (quickStartIdFromParam && activeQuickStartID !== quickStartIdFromParam) {\n const activeQuickStart = getQuickStartByName(quickStartIdFromParam, combinedQuickStarts);\n // don't try to load a quick start that is actually just an external resource (spec.link)\n if (combinedQuickStarts.length > 0 && activeQuickStart && !activeQuickStart.spec.link) {\n setActiveQuickStart(quickStartIdFromParam);\n }\n }\n }, [activeQuickStartID, combinedQuickStarts, setActiveQuickStart]);\n\n React.useEffect(() => {\n // If activeQuickStartID was changed through prop from QuickStartContainer, need to init the state if it does not exist yet\n if (activeQuickStartID && !allQuickStartStates[activeQuickStartID]) {\n setAllQuickStartStates({\n ...allQuickStartStates,\n [activeQuickStartID]: getDefaultQuickStartState(),\n });\n }\n }, [activeQuickStartID, allQuickStartStates, setAllQuickStartStates]);\n\n const [modalOpen, setModalOpen] = React.useState<boolean>(false);\n const activeQuickStartStatus = activeQuickStartState?.status;\n const onClose = () => setActiveQuickStart('');\n const handleClose = () => {\n if (activeQuickStartStatus === QuickStartStatus.IN_PROGRESS) {\n if (onCloseInProgress) {\n onCloseInProgress();\n } else {\n setModalOpen(true);\n }\n } else if (onCloseNotInProgress) {\n onCloseNotInProgress();\n } else {\n onClose();\n }\n };\n\n const onModalConfirm = () => {\n setModalOpen(false);\n onClose();\n };\n\n const onModalCancel = () => setModalOpen(false);\n\n const fullWidthPanelStyle = fullWidth\n ? {\n style: {\n flex: 1,\n },\n }\n : {};\n\n const fullWidthBodyStyle = fullWidth\n ? {\n style: {\n display: activeQuickStartID ? 'none' : 'flex',\n },\n }\n : {};\n\n const panelContent = (\n <QuickStartPanelContent\n quickStarts={combinedQuickStarts}\n handleClose={handleClose}\n activeQuickStartID={activeQuickStartID}\n appendTo={appendTo}\n isResizable={!fullWidth}\n headerVariant={useLegacyHeaderColors ? '' : 'blue-white'}\n {...fullWidthPanelStyle}\n />\n );\n\n return (\n <>\n <Drawer isExpanded={!!activeQuickStartID} isInline {...props}>\n {children ? (\n <DrawerContent panelContent={panelContent} {...fullWidthBodyStyle}>\n <DrawerContentBody className=\"pfext-quick-start-drawer__body\">\n {children}\n </DrawerContentBody>\n </DrawerContent>\n ) : (\n <div className=\"pf-v5-c-drawer__main\">{panelContent}</div>\n )}\n </Drawer>\n <QuickStartCloseModal\n isOpen={modalOpen}\n onConfirm={onModalConfirm}\n onCancel={onModalCancel}\n />\n </>\n );\n};\n","import React from 'react';\nimport { HelpTopic } from './help-topic-types';\n\nexport interface HelpTopicContextValues {\n helpTopics?: HelpTopic[];\n setHelpTopics?: React.Dispatch<React.SetStateAction<HelpTopic[]>>;\n activeHelpTopic?: HelpTopic;\n setActiveHelpTopicByName?: (helpTopicName: string) => void;\n filteredHelpTopics?: HelpTopic[];\n setFilteredHelpTopics?: React.Dispatch<React.SetStateAction<HelpTopic[]>>;\n loading?: boolean;\n setLoading?: any;\n}\n\nexport const HelpTopicContextDefaults = {\n helpTopics: [],\n setHelpTopics: () => {},\n activeHelpTopic: null,\n setActiveHelpTopicByName: () => {},\n filteredHelpTopics: [],\n setFilteredHelpTopics: () => {},\n loading: false,\n};\n\nexport const HelpTopicContext = React.createContext<HelpTopicContextValues>(\n HelpTopicContextDefaults,\n);\n\nexport const useValuesForHelpTopicContext = (\n value: HelpTopicContextValues = {},\n): HelpTopicContextValues => {\n const combinedValue = {\n ...HelpTopicContextDefaults,\n ...value,\n };\n\n const [loading, setLoading] = React.useState(combinedValue.loading);\n\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const [helpTopics, setHelpTopics] = React.useState<HelpTopic[]>(combinedValue.helpTopics || []);\n\n const [activeHelpTopic, setActiveHelpTopic] = React.useState(\n combinedValue.activeHelpTopic || null,\n );\n\n const setActiveHelpTopicByName = React.useCallback(\n (helpTopicName: string) => {\n const topic = helpTopics.find((t) => t.name === helpTopicName);\n if (!helpTopicName) {\n setActiveHelpTopic(null);\n return;\n }\n setActiveHelpTopic(topic);\n },\n [helpTopics],\n );\n\n const [filteredHelpTopics, setFilteredHelpTopics] = React.useState(\n combinedValue.filteredHelpTopics || [],\n );\n\n return {\n helpTopics,\n setHelpTopics,\n activeHelpTopic,\n setActiveHelpTopicByName,\n filteredHelpTopics,\n setFilteredHelpTopics,\n loading,\n setLoading,\n };\n};\n","import * as React from 'react';\nimport {\n Button,\n Divider,\n DrawerActions,\n DrawerCloseButton,\n DrawerHead,\n DrawerPanelBody,\n DrawerPanelContent,\n MenuToggle,\n Select,\n SelectList,\n SelectOption,\n Stack,\n StackItem,\n Title,\n} from '@patternfly/react-core';\n\nimport QuickStartMarkdownView from './QuickStartMarkdownView';\nimport { HelpTopic } from './utils/help-topic-types';\nimport BarsIcon from '@patternfly/react-icons/dist/js/icons/bars-icon';\nimport ExternalLinkAltIcon from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';\n\nimport './QuickStartPanelContent.scss';\nimport { HelpTopicContext, HelpTopicContextValues } from './utils/help-topic-context';\n\ninterface HelpTopicPanelContentProps {\n activeHelpTopic: HelpTopic;\n filteredHelpTopics?: HelpTopic[];\n isResizable?: boolean;\n onClose: () => void;\n}\n\nconst HelpTopicPanelContent: React.FC<HelpTopicPanelContentProps> = ({\n activeHelpTopic = null,\n filteredHelpTopics = [],\n isResizable = true,\n onClose,\n ...props\n}) => {\n const { setActiveHelpTopicByName } = React.useContext<HelpTopicContextValues>(HelpTopicContext);\n\n const [isHelpTopicMenuOpen, setIsHelpTopicMenuOpen] = React.useState(false);\n\n const toggleHelpTopicMenu = () => {\n setIsHelpTopicMenuOpen(!isHelpTopicMenuOpen);\n };\n\n const onSelectHelpTopic = (\n _event?: React.MouseEvent<Element, MouseEvent>,\n value?: string | number,\n ) => {\n const topicName = value;\n setActiveHelpTopicByName(topicName.toString());\n toggleHelpTopicMenu();\n };\n\n const helpTopicOptions =\n filteredHelpTopics.length > 1 &&\n filteredHelpTopics.map((topic) => (\n <SelectOption key={topic.name} value={topic.name}>\n {topic.title}\n </SelectOption>\n ));\n\n const paddingContainer = (children) => <div style={{ padding: '24px' }}>{children}</div>;\n\n const panelBodyItems = (\n <>\n {paddingContainer(<QuickStartMarkdownView content={activeHelpTopic?.content} />)}\n {!!activeHelpTopic?.links?.length && <Divider />}\n {paddingContainer(\n <Stack hasGutter>\n {activeHelpTopic?.links?.map(({ href, text, newTab, isExternal }, index) => (\n <StackItem key={index}>\n <Button\n component=\"a\"\n href={href}\n target={newTab ? '_blank' : ''}\n rel=\"noopener noreferrer\"\n variant=\"link\"\n aria-label={`Open documentation in new window`}\n isInline\n icon={isExternal ? <ExternalLinkAltIcon /> : null}\n iconPosition=\"right\"\n style={{ fontSize: 'inherit' }}\n >\n {text || href}\n </Button>\n </StackItem>\n ))}\n </Stack>,\n )}\n </>\n );\n\n const content = (\n <DrawerPanelContent isResizable={isResizable} className=\"pfext-quick-start__base\" {...props}>\n <div>\n <DrawerHead>\n <div className=\"pfext-quick-start-panel-content__title\">\n {helpTopicOptions && (\n <Select\n isPlain\n id=\"help-topics-select\"\n selected={activeHelpTopic}\n isOpen={isHelpTopicMenuOpen}\n onSelect={onSelectHelpTopic}\n onOpenChange={(isOpen: boolean) => setIsHelpTopicMenuOpen(isOpen)}\n toggle={(toggleRef) => (\n <MenuToggle\n isFullWidth\n ref={toggleRef}\n icon={<BarsIcon />}\n onClick={toggleHelpTopicMenu}\n isExpanded={isHelpTopicMenuOpen}\n >\n {activeHelpTopic?.title}\n </MenuToggle>\n )}\n >\n <SelectList>{helpTopicOptions}</SelectList>\n </Select>\n )}\n\n <Title\n headingLevel=\"h1\"\n size=\"xl\"\n className=\"pfext-quick-start-panel-content__name\"\n style={{ marginRight: 'var(--pf-v5-global--spacer--md)' }}\n >\n {activeHelpTopic?.title}\n </Title>\n </div>\n {\n <DrawerActions>\n <DrawerCloseButton\n onClick={onClose}\n className=\"pfext-quick-start-panel-content__close-button\"\n data-testid=\"qs-drawer-close\"\n />\n </DrawerActions>\n }\n </DrawerHead>\n <Divider />\n <DrawerPanelBody\n hasNoPadding\n className=\"pfext-quick-start-panel-content__body\"\n data-test=\"content\"\n >\n {panelBodyItems}\n </DrawerPanelBody>\n </div>\n </DrawerPanelContent>\n );\n\n return content;\n};\n\nexport default HelpTopicPanelContent;\n","import './QuickStartDrawer.scss';\nimport * as React from 'react';\nimport { Drawer, DrawerContent, DrawerContentBody } from '@patternfly/react-core';\nimport HelpTopicPanelContent from './HelpTopicPanelContent';\nimport {\n HelpTopicContext,\n HelpTopicContextValues,\n useValuesForHelpTopicContext,\n} from './utils/help-topic-context';\nimport { QuickStartContextValues } from './utils/quick-start-context';\nimport { HelpTopic } from './utils/help-topic-types';\n\nexport interface HelpTopicContainerProps extends React.HTMLProps<HTMLDivElement> {\n /** array of HelpTopics */\n helpTopics: HelpTopic[];\n /** text resources object\n * Add custom strings: https://github.com/patternfly/patternfly-quickstarts/tree/main/packages/module#localization\n */\n resourceBundle?: any;\n /** language of the current resource bundle */\n language?: string;\n /** if true, will show a loading spinner on the catalog page (default false) */\n loading?: boolean;\n /**\n * Additional markdown extensions and renderers to use\n * Example usage: https://github.com/patternfly/patternfly-quickstarts/tree/main/packages/module#markdown-extensions\n */\n markdown?: {\n extensions?: any[];\n renderExtension?: (docContext: Document, rootSelector: string) => React.ReactNode;\n };\n /** additional quick start context props */\n contextProps?: QuickStartContextValues;\n children?: React.ReactNode;\n}\n\nexport const HelpTopicContainer: React.FC<HelpTopicContainerProps> = ({\n helpTopics,\n children,\n resourceBundle,\n language,\n loading = false,\n markdown,\n contextProps,\n ...props\n}: HelpTopicContainerProps) => {\n const valuesForHelpTopicContext: HelpTopicContextValues = useValuesForHelpTopicContext({\n helpTopics,\n language,\n resourceBundle: {\n ...resourceBundle,\n },\n loading,\n markdown,\n ...contextProps,\n });\n\n React.useEffect(() => {\n if (loading !== valuesForHelpTopicContext.loading) {\n valuesForHelpTopicContext.setLoading(loading);\n }\n }, [loading, valuesForHelpTopicContext]);\n\n React.useEffect(() => {\n if (\n helpTopics &&\n JSON.stringify(helpTopics) !== JSON.stringify(valuesForHelpTopicContext.helpTopics)\n ) {\n valuesForHelpTopicContext.setHelpTopics(helpTopics);\n }\n }, [helpTopics, valuesForHelpTopicContext]);\n\n return (\n <HelpTopicContext.Provider value={valuesForHelpTopicContext}>\n <HelpTopicDrawer {...props}>{children}</HelpTopicDrawer>\n </HelpTopicContext.Provider>\n );\n};\n\nexport interface HelpTopicDrawerProps extends React.HTMLProps<HTMLDivElement> {\n helpTopics?: HelpTopic[];\n children?: React.ReactNode;\n}\n\nexport const HelpTopicDrawer: React.FC<HelpTopicDrawerProps> = ({ children, ...props }) => {\n const { activeHelpTopic, filteredHelpTopics, setActiveHelpTopicByName } =\n React.useContext<HelpTopicContextValues>(HelpTopicContext);\n\n const onClose = () => {\n setActiveHelpTopicByName('');\n };\n\n const panelContent = (\n <HelpTopicPanelContent\n activeHelpTopic={activeHelpTopic}\n filteredHelpTopics={filteredHelpTopics}\n onClose={onClose}\n />\n );\n\n return (\n <>\n <Drawer isExpanded={!!activeHelpTopic} isInline {...props}>\n {children ? (\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody className=\"pfext-quick-start-drawer__body\">\n {children}\n </DrawerContentBody>\n </DrawerContent>\n ) : (\n <div className=\"pf-v5-c-drawer__main\">{panelContent}</div>\n )}\n </Drawer>\n </>\n );\n};\n","import { useState } from 'react';\n\nexport const useLocalStorage = (key: string, initialValue: any) => {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState(() => {\n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // If error also return initialValue\n // eslint-disable-next-line no-console\n console.log(error);\n return initialValue;\n }\n });\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = (value: any) => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n // A more advanced implementation would handle the error case\n // eslint-disable-next-line no-console\n console.log(error);\n }\n };\n\n return [storedValue, setValue];\n};\n","/* eslint-disable */\n// Brought in from dev to publish this with QS module\n// Dev now imports from here\n\nimport { QuickStart, QuickStartTask } from './quick-start-types';\n\nexport const ProcQuickStartParser = (\n quickStart: QuickStart & {\n spec: {\n tasks: undefined | QuickStartTask[] | string[];\n };\n },\n environmentVariables?: { [name: string]: string },\n) => {\n const replaceEnvironmentVariables = (s: string | undefined) =>\n s?.replace(/\\${(\\w+)}/, (substring, name) => {\n return environmentVariables ? ([name] ? environmentVariables[name] : substring) : substring;\n });\n\n quickStart.spec.tasks = quickStart.spec.tasks?.map((task: QuickStartTask | string, index) => {\n let proc: string;\n let answer: QuickStartTask;\n if (typeof task === 'string') {\n proc = task;\n answer = {};\n } else {\n proc = task.proc;\n answer = task;\n delete task.proc;\n }\n\n let description = '',\n procedure,\n verification,\n title,\n summaryFailed,\n success,\n reviewFailed: string | undefined,\n prerequisites;\n if (proc) {\n const taskDOM = document.createElement('div');\n taskDOM.innerHTML = proc;\n\n // remove the screencapture images\n taskDOM.querySelectorAll('.imageblock.screencapture').forEach((node) => {\n node.parentElement?.removeChild(node);\n });\n\n title = taskDOM\n .querySelector('h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child')\n ?.innerHTML.trim();\n let sectionBody = taskDOM.querySelector('.sectionbody');\n if (!sectionBody?.hasChildNodes()) {\n // possibly in other templates, where we want to look for article\n sectionBody = taskDOM.querySelector('article');\n }\n if (sectionBody) {\n for (let i = 0; i < sectionBody.children.length || 0; i++) {\n /**\n child typically looks like:\n\n <div class=\"paragraph|olist|ulist|admonitionblock\">\n <div class=\"title\">Procedure|Prerequisites|Verification|Note|Warning</div>\n <ol|ul class=\"arabic\">\n <li>\n <li>...\n </ol|ul>\n </div>\n\n And the below code extracts the <ol> or <ul>\n Except for when there is no <div class=\"title|heading\"/>, then the description is extracted\n in the else if below\n */\n const child = sectionBody.children.item(i);\n // find the title\n const sectionTitle = child?.querySelector('.heading,.title');\n // should this section be assigned to a specific section\n const sectionTitleText = sectionTitle?.textContent?.trim();\n const isKnownSection = ['Procedure', 'Verification', 'Prerequisites'].includes(\n sectionTitle?.textContent?.trim(),\n );\n if (isKnownSection) {\n switch (sectionTitleText) {\n case 'Procedure':\n procedure = child?.querySelector(':not(.heading):not(.title)')?.outerHTML.trim();\n break;\n case 'Verification':\n verification = child?.querySelector(':not(.heading):not(.title)')?.outerHTML.trim();\n break;\n case 'Prerequisites':\n prerequisites = child\n ?.querySelector(':not(.heading):not(.title)')\n ?.outerHTML.trim();\n break;\n }\n } else if (!procedure) {\n // Otherwise if it comes before a procedure it's part of the description\n description = description + child?.outerHTML.trim();\n }\n }\n }\n success = taskDOM.querySelector('.qs-summary.success')?.innerHTML.trim();\n reviewFailed = taskDOM.querySelector('.qs-review.failed')?.innerHTML.trim();\n summaryFailed = taskDOM.querySelector('.qs-summary.failed')?.innerHTML.trim();\n }\n\n answer.title = replaceEnvironmentVariables(answer.title || title);\n answer.description = replaceEnvironmentVariables(\n answer.description || `${description} ${prerequisites || ''} ${procedure}`,\n );\n answer.review = answer.review || {};\n answer.review.instructions = replaceEnvironmentVariables(\n answer.review?.instructions || verification || 'Have you completed these steps?',\n );\n answer.review.failedTaskHelp = replaceEnvironmentVariables(\n answer.review.failedTaskHelp ||\n reviewFailed ||\n 'This task isn’t verified yet. Try the task again.',\n );\n answer.summary = answer.summary || {};\n answer.summary.success = replaceEnvironmentVariables(\n answer.summary.success || success || 'You have completed this task!',\n );\n answer.summary.failed = replaceEnvironmentVariables(\n answer.summary.failed || summaryFailed || 'Try the steps again.',\n );\n return answer;\n });\n return quickStart;\n};\n"],"names":["React","PfModal","TaskHeader","TaskHeaderList"],"mappings":"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"}
|