@patternfly/quickstarts 6.3.0 → 6.3.1

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.
@@ -1 +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","../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/QuickStartDrawerContent.tsx","../src/QuickStartDrawer.tsx","../src/QuickStartContainer.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 ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\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?: 'green' | 'purple' | 'grey' | 'blue' | 'orange' | 'red' | 'teal' | 'orangered' | 'yellow';\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> =>\n 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) =>\n 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 { createContext, FC, useCallback, useEffect, useState } 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 focusOnQuickStart?: boolean;\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 focusOnQuickStart: 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] = useState(combinedValue.allQuickStarts || []);\n const [resourceBundle, setResourceBundle] = useState({\n ...en,\n ...combinedValue.resourceBundle,\n });\n const [language, setLanguage] = 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) =>\n getResource(resource, count !== undefined ? { count } : null, resourceBundle, language),\n [resourceBundle, language],\n );\n const [loading, setLoading] = useState(combinedValue.loading);\n const [alwaysShowTaskReview, setAlwaysShowTaskReview] = 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] = 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] = useState<string[]>(initialStatusFilters);\n\n const [filterKeyword, setFilterKeyword] = 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 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(\n (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: 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 { FC, useContext } 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: 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: 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 } = 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 { Fragment } 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 <Fragment key={i}>\n {word}\n {i !== words.length - 1 && <wbr />}\n </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 { FC, Ref } from 'react';\nimport { Modal as PfModal, ModalProps as PfModalProps } from '@patternfly/react-core/deprecated';\nimport { css } from '@patternfly/react-styles';\n\ntype ModalProps = {\n isFullScreen?: boolean;\n ref?: Ref<PfModal>;\n} & PfModalProps;\n\nconst Modal: 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 { useState, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\ntype GetContainer = Element | null | undefined | (() => Element);\n\ninterface PortalProps {\n children: 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] = useState<Element>();\n\n useIsomorphicLayoutEffect(() => {\n setContainerNode(getContainer(container) || document.body);\n }, [container]);\n\n return containerNode ? createPortal(children, containerNode) : null;\n};\n\nexport default Portal;\n","import { ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport Portal from './Portal';\n\ninterface SimplePopperProps {\n children: ReactNode;\n}\n\nconst SimplePopper = ({ children }: SimplePopperProps) => {\n const openProp = true;\n const nodeRef = useRef<Element>(null);\n const popperRef = useRef(null);\n const [isOpen, setOpenState] = useState(openProp);\n\n const setOpen = useCallback((newOpen: boolean) => {\n setOpenState(newOpen);\n }, []);\n\n useEffect(() => {\n setOpen(openProp);\n }, [openProp, setOpen]);\n\n const onKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.keyCode === 27) {\n setOpen(false);\n }\n },\n [setOpen],\n );\n\n const onClickOutside = 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 = 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 = useCallback(() => {\n if (!nodeRef.current || !isOpen) {\n return;\n }\n\n destroy();\n }, [isOpen, destroy]);\n\n const nodeRefCallback = useCallback(\n (node) => {\n nodeRef.current = node;\n initialize();\n },\n [initialize],\n );\n\n useEffect(() => {\n initialize();\n }, [initialize]);\n\n useEffect(\n () => () => {\n destroy();\n },\n [destroy],\n );\n\n 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 { CSSProperties, FC, useEffect, useState } 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: FC<InteractiveSpotlightProps> = ({ element }) => {\n const { top, bottom, left, right, height, width } = element.getBoundingClientRect();\n const style: CSSProperties = {\n height,\n width,\n top,\n left,\n bottom,\n right,\n };\n const [clicked, setClicked] = useState(false);\n\n 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 { useCallback, useRef, useState } 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 = useRef<number>(null);\n const [scrollDirection, setScrollDirection] = useState<ScrollDirection>(null);\n const handleScroll = 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 { useEffect, useMemo } from 'react';\n\nexport const useResizeObserver = (\n callback: ResizeObserverCallback,\n targetElement?: HTMLElement | null,\n observerOptions: ResizeObserverOptions = undefined,\n): void => {\n const element = useMemo(() => targetElement ?? document.querySelector('body'), [targetElement]);\n 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 { useCallback, useEffect, useState } 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] = useState(Shadows.none);\n const computeShadows = 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 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 { useCallback, useState } from 'react';\nimport { useResizeObserver } from './useResizeObserver';\n\ntype BoundingClientRect = ClientRect | null;\n\nexport const useBoundingClientRect = (targetElement: HTMLElement | null): BoundingClientRect => {\n const [clientRect, setClientRect] = useState<BoundingClientRect>(() =>\n targetElement ? targetElement.getBoundingClientRect() : null,\n );\n\n const observerCallback = useCallback(() => {\n setClientRect(targetElement ? targetElement.getBoundingClientRect() : null);\n }, [targetElement]);\n\n useResizeObserver(observerCallback);\n\n return clientRect;\n};\n","import { useReducer } from 'react';\n\n/**\n * React hook that forces component render.\n */\nexport const useForceRender = () => 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 { CSSProperties, FC } from 'react';\nimport { useBoundingClientRect } from '../../hooks';\nimport Portal from '../popper/Portal';\n\ninterface StaticSpotlightProps {\n element: Element;\n}\n\nconst StaticSpotlight: FC<StaticSpotlightProps> = ({ element }) => {\n const clientRect = useBoundingClientRect(element as HTMLElement);\n const style: 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-v6-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 { FC, useMemo } from 'react';\nimport InteractiveSpotlight from './InteractiveSpotlight';\nimport StaticSpotlight from './StaticSpotlight';\n\ninterface SpotlightProps {\n selector: string;\n interactive?: boolean;\n}\n\nconst Spotlight: FC<SpotlightProps> = ({ selector, interactive }) => {\n // if target element is a hidden one return null\n const element = 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 { FC, useEffect, useState } from 'react';\nimport { Spotlight } from '../spotlight';\n\ninterface MarkdownHighlightExtensionProps {\n docContext: Document;\n rootSelector: string;\n}\nconst MarkdownHighlightExtension: FC<MarkdownHighlightExtensionProps> = ({\n docContext,\n rootSelector,\n}) => {\n const [selector, setSelector] = useState<string>(null);\n 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 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 { FC, useCallback, useContext, useMemo, useState } 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: FC<CopyClipboardProps> = ({ element, rootSelector, docContext }) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const [showSuccessContent, setShowSuccessContent] = useState<boolean>(false);\n const textToCopy = 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 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 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: FC<MarkdownCopyClipboardProps> = ({ docContext, rootSelector }) => {\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 =>\n template.replace(/>(?:\\s|\\n)+</g, '><');\n","import { useContext, useMemo } 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';\n\nconst useInlineCopyClipboardShowdownExtension = () => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n return 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-v6-c-clipboard-copy pf-m-inline\">\n <span class=\"pf-v6-c-clipboard-copy__text\" ${MARKDOWN_SNIPPET_ID}=\"${groupId}\">${group}</span>\n <span class=\"pf-v6-c-clipboard-copy__actions\">\n <span class=\"pf-v6-c-clipboard-copy__actions-item\">\n <button class=\"pf-v6-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","/* eslint-disable max-len */\nimport { useContext, useMemo } 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\nconst useMultilineCopyClipboardShowdownExtension = () => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n return 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-v6-c-code-block\">\n <div class=\"pf-v6-c-code-block__header\">\n <div class=\"pf-v6-c-code-block__actions\">\n <div class=\"pf-v6-c-code-block__actions-item\">\n <button class=\"pf-v6-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-v6-c-code-block__content\">\n <pre class=\"pf-v6-c-code-block__pre pfext-code-block__pre\"><code class=\"pf-v6-c-code-block__code\"${MARKDOWN_SNIPPET_ID}=\"${groupId}\">${group.trim()}</code></pre>\n </div>\n </div>`;\n },\n }),\n [getResource],\n );\n};\n\nexport default useMultilineCopyClipboardShowdownExtension;\n","import { FC, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { css } from '@patternfly/react-styles';\nimport { marked } from 'marked';\nimport { useForceRender } from '@console/shared';\nimport { QuickStartContext, QuickStartContextValues } from '../../utils/quick-start-context';\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 = async (markdown: string, extensions?: ShowdownExtension[]) => {\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 content classes\n if (node.nodeType === 1) {\n const contentElements = [\n 'ul',\n 'ol',\n 'p',\n 'li',\n 'hr',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'pre',\n 'dl',\n 'dt',\n 'dd',\n 'table',\n ];\n if (contentElements.includes(node.nodeName.toLowerCase())) {\n // don't overwrite elements already being styled by PatternFly\n if (!node.getAttribute('class')?.includes('pf-v6-c-')) {\n node.setAttribute('class', `pf-v6-c-content--${node.nodeName.toLowerCase()}`);\n return node;\n }\n }\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 const reverseString = (str: string) => str.split('').reverse().join('');\n\n // replace code fences that end in a double curly brace (which are used by our custom md extensions) with non\n // markdown formatting related tokens so that marked doesn't try to parse them as code spans\n //\n // we want to reverse the string before we do the substitution so that we only match the opening code fence which\n // corresponds to the closing code fence with the double curly brace\n const reversedMarkdown = reverseString(markdown);\n const reverseMarkdownWithSubstitutedCodeFences = reversedMarkdown.replace(\n /{{```((.|\\n)*?)```/g,\n '{{@@@$1@@@',\n );\n const markdownWithSubstitutedCodeFences = reverseString(reverseMarkdownWithSubstitutedCodeFences);\n\n const parsedMarkdown = await marked.parse(markdownWithSubstitutedCodeFences);\n // Swap the temporary tokens back to code fences before we run the extensions\n let md = parsedMarkdown.replace(/@@@/g, '```');\n\n if (extensions) {\n // Convert code spans back to md format before we run the custom extension regexes\n md = md.replace(/<code>(.*)<\\/code>/g, '`$1`');\n\n extensions.forEach(({ regex, replace }) => {\n if (regex) {\n md = md.replace(regex, replace);\n }\n });\n\n // Convert any remaining backticks back into code spans\n md = md.replace(/`(.*)`/g, '<code>$1</code>');\n }\n return DOMPurify.sanitize(md);\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: FC<SyncMarkdownProps> = ({\n content,\n emptyMsg,\n extensions,\n renderExtension,\n exactHeight,\n inline,\n className,\n}) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const [markup, setMarkup] = useState<string>('');\n\n useEffect(() => {\n async function getMd() {\n const md = await markdownConvert(\n content || emptyMsg || getResource('Not available'),\n extensions,\n );\n setMarkup(md);\n }\n getMd();\n }, [content, emptyMsg, getResource, extensions]);\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 = useRef<string>(null);\n const shouldRenderExtension = 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 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: FC<InnerSyncMarkdownProps> = ({\n markup,\n isEmpty,\n renderExtension,\n className,\n}) => {\n const id = useMemo(() => uniqueId('markdown'), []);\n return (\n <div className={css({ 'is-empty': isEmpty } as any, 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: FC<InnerSyncMarkdownProps> = ({\n exactHeight,\n markup,\n isEmpty,\n renderExtension,\n className,\n}) => {\n const [frame, setFrame] = useState<HTMLIFrameElement>();\n const [loaded, setLoaded] = useState(false);\n const updateTimeoutHandle = useRef<NodeJS.Timeout>(null);\n\n const updateDimensions = 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 useEffect(\n () => () => {\n clearTimeout(updateTimeoutHandle.current);\n },\n [],\n );\n\n const onLoad = 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-t--global--font--family--body);\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) => {\n setFrame(r);\n }}\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 { FC, useContext } 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: FC<QuickStartMarkdownViewProps> = ({\n content,\n exactHeight,\n className,\n}) => {\n const { markdown } = 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-v6-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 { useMemo } 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 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: 'custom', 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 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 mdContent = <QuickStartMarkdownView content={content} />;\n const pfAlert = (\n <Alert\n variant={variant}\n {...(customIcon && { customIcon })}\n isInline\n title={admonitionType}\n className=\"pfext-markdown-admonition\"\n >\n {mdContent}\n </Alert>\n );\n return removeTemplateWhitespace(renderToStaticMarkup(pfAlert));\n },\n }),\n [],\n );\nexport default useAdmonitionShowdownExtension;\n","import { useMemo } from 'react';\nimport { removeTemplateWhitespace } from './utils';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { CodeBlock } from '@patternfly/react-core';\n\nconst useCodeShowdownExtension = () =>\n 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 { useMemo } 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';\n\nconst useAccordionShowdownExtension = () =>\n 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 <>\n <Accordion asDefinitionList>\n <AccordionItem isExpanded={false}>\n <AccordionToggle id={`${ACCORDION_MARKDOWN_BUTTON_ID}-${accordionId}`}>\n {accordionHeading}\n </AccordionToggle>\n <AccordionContent id={`${ACCORDION_MARKDOWN_CONTENT_ID}-${accordionId}`}>\n {accordionContent}\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n </>,\n ),\n );\n },\n }),\n [],\n );\n\nexport default useAccordionShowdownExtension;\n","import { FC, useState } 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: FC<AccordionShowdownComponentProps> = ({\n buttonElement,\n contentElement,\n}) => {\n const [expanded, setExpanded] = useState<boolean>(false);\n\n const handleClick = () => {\n const expandedModifier = 'pf-m-expanded';\n\n buttonElement.className = `pf-v6-c-accordion__toggle ${!expanded ? expandedModifier : ''}`;\n contentElement.hidden = expanded;\n contentElement.className = `pf-v6-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: 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 { FC, ReactNode, useState } from 'react';\n\ninterface FallbackImgProps {\n src: string;\n alt?: string;\n className?: string;\n fallback?: ReactNode;\n}\n\nconst FallbackImg: FC<FallbackImgProps> = ({ src, alt, className, fallback }) => {\n const [isSrcValid, setIsSrcValid] = 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 { FC, ReactNode } from 'react';\nimport { Button, Popover, PopoverPosition } from '@patternfly/react-core';\n\nconst PopoverStatus: 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: ReactNode;\n statusBody: 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 { cloneElement, FC, ReactElement } 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?: ReactElement<any>;\n spin?: boolean;\n};\n\nconst StatusIconAndText: 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 cloneElement(icon, {\n className: css(\n spin && 'fa-spin',\n (icon.props as any).className,\n !iconOnly && 'pfext-icon-and-text__icon pfext-icon-flex-child',\n ),\n } as any)}\n {!iconOnly && <CamelCaseWrap value={title} dataTest=\"status-text\" />}\n </span>\n );\n};\n\nexport default StatusIconAndText;\n","import { Children, ComponentType, FC, ReactNode } from 'react';\nimport PopoverStatus from './PopoverStatus';\nimport StatusIconAndText from './StatusIconAndText';\nimport { StatusComponentProps } from './types';\n\nconst GenericStatus: 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 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: ComponentType<{ title?: string }>;\n children?: ReactNode;\n popoverTitle?: string;\n noTooltip?: boolean;\n};\n\nexport default GenericStatus;\n","import { FC } 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 { Icon } from '@patternfly/react-core';\n\nexport const GreenCheckCircleIcon: FC<ColoredIconProps> = ({ className, title, size }) => (\n <Icon size={size} status=\"success\">\n <CheckCircleIcon data-test=\"success-icon\" className={className} title={title} />\n </Icon>\n);\n\nexport const RedExclamationCircleIcon: FC<ColoredIconProps> = ({ className, title, size }) => (\n <Icon size={size} status=\"danger\">\n <ExclamationCircleIcon className={className} title={title} />\n </Icon>\n);\n\nexport const BlueInfoCircleIcon: FC<ColoredIconProps> = ({ className, title }) => (\n <Icon status=\"info\">\n <InfoCircleIcon className={className} title={title} />\n </Icon>\n);\n\nexport interface ColoredIconProps {\n className?: string;\n title?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n","import { FC } from 'react';\nimport GenericStatus from './GenericStatus';\nimport { BlueInfoCircleIcon, GreenCheckCircleIcon, RedExclamationCircleIcon } from './icons';\nimport { StatusComponentProps } from './types';\n\nexport const ErrorStatus: FC<StatusComponentProps> = (props) => (\n <GenericStatus {...props} Icon={RedExclamationCircleIcon} title={props.title || 'Error'} />\n);\nErrorStatus.displayName = 'ErrorStatus';\n\nexport const InfoStatus: FC<StatusComponentProps> = (props) => (\n <GenericStatus {...props} Icon={BlueInfoCircleIcon} title={props.title || 'Information'} />\n);\nInfoStatus.displayName = 'InfoStatus';\n\nexport const SuccessStatus: FC<StatusComponentProps> = (props) => (\n <GenericStatus {...props} Icon={GreenCheckCircleIcon} title={props.title || 'Healthy'} />\n);\nSuccessStatus.displayName = 'SuccessStatus';\n","import { FC } 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: FC<StatusProps> = ({ status, title, iconOnly, noTooltip, className }) => {\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: FC<StatusIconProps> = ({ status }) => <Status status={status} iconOnly />;\n\ninterface StatusIconProps {\n status: string;\n}\n\ntype StatusProps = StatusComponentProps & {\n status: string;\n};\n","import { FC, useContext, useRef } from 'react';\nimport { Button, Flex, Popover } 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\ninterface QuickStartTileDescriptionProps {\n description: string;\n prerequisites?: string[];\n}\nconst QuickStartTileDescription: FC<QuickStartTileDescriptionProps> = ({\n description,\n prerequisites,\n}) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const prereqs = prerequisites?.filter((p) => p);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n return (\n <>\n <QuickStartMarkdownView content={description} />\n {prereqs?.length > 0 && (\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n <h5>\n {getResource('Prerequisites ({{totalPrereqs}})').replace(\n '{{totalPrereqs}}',\n prereqs.length,\n )}{' '}\n </h5>\n <Button\n variant=\"link\"\n isInline\n data-testid=\"qs-card-prereqs\"\n ref={buttonRef}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n aria-label={getResource('Show prerequisites')}\n >\n <InfoCircleIcon />\n </Button>\n <Popover\n aria-label={getResource('Prerequisites')}\n headerContent={getResource('Prerequisites')}\n triggerRef={buttonRef}\n bodyContent={\n <div>\n <ul aria-label={getResource('Prerequisites')}>\n {prereqs.map((prerequisite, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <li key={index}>\n <QuickStartMarkdownView content={prerequisite} />\n </li>\n ))}\n </ul>\n </div>\n }\n />\n </Flex>\n )}\n </>\n );\n};\nexport default QuickStartTileDescription;\n","import { FC, useCallback, useContext } 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 onClickContinue: (\n e: React.FormEvent<HTMLInputElement> | React.MouseEvent<Element, MouseEvent>,\n ) => void;\n}\n\nconst QuickStartTileFooter: FC<QuickStartTileFooterProps> = ({\n quickStartId,\n status,\n totalTasks,\n onClickContinue,\n}) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const { activeQuickStartID, startQuickStart, restartQuickStart } =\n useContext<QuickStartContextValues>(QuickStartContext);\n\n const start = useCallback(() => {\n startQuickStart(quickStartId, totalTasks);\n }, [quickStartId, startQuickStart, totalTasks]);\n\n const restart = useCallback(() => {\n restartQuickStart(quickStartId, totalTasks);\n }, [quickStartId, restartQuickStart, totalTasks]);\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 onClick={onClickContinue}\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 { FC } 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: FC<QuickStartTileFooterProps> = ({ link, quickStartId }) => {\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 { FC } from 'react';\nimport { Button, Flex } from '@patternfly/react-core';\n\ninterface QuickStartTileHeaderProps {\n name: string;\n quickStartId?: string;\n onSelect: (e: React.FormEvent<HTMLInputElement> | React.MouseEvent<Element, MouseEvent>) => void;\n}\n\nconst QuickStartTileHeader: FC<QuickStartTileHeaderProps> = ({ name, quickStartId, onSelect }) => (\n <Flex flexWrap={{ default: 'nowrap' }}>\n <Button data-test=\"title\" id={quickStartId} variant=\"link\" isInline onClick={onSelect}>\n {name}\n </Button>\n </Flex>\n);\n\nexport default QuickStartTileHeader;\n","import { FC, useContext, useMemo } from 'react';\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 from './QuickStartTileHeader';\nimport OutlinedBookmarkIcon from '@patternfly/react-icons/dist/js/icons/outlined-bookmark-icon';\nimport {\n Card,\n CardBody,\n CardHeader,\n CardFooter,\n CardTitle,\n Icon,\n Button,\n ButtonProps,\n Flex,\n Stack,\n Label,\n} from '@patternfly/react-core';\nimport OutlinedClockIcon from '@patternfly/react-icons/dist/js/icons/outlined-clock-icon';\nimport { StatusIcon } from '@console/shared';\nimport './QuickStartTile.scss';\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\nexport interface QuickStartTileProps {\n /** The quickstart object triggered by this tile */\n quickStart: QuickStart;\n /** Current status of the quickstart */\n status: QuickStartStatus;\n /** Flag indicating whether the quickstart is active (drawer is open) */\n isActive: boolean;\n /** Event handler attached to the tile */\n onClick?: () => void;\n /** Action config for button rendered next to title */\n action?: QuickstartAction;\n}\n\nconst QuickStartTile: 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, getResource } =\n useContext<QuickStartContextValues>(QuickStartContext);\n\n const statusColorMap = {\n [QuickStartStatus.COMPLETE]: 'green',\n [QuickStartStatus.IN_PROGRESS]: 'purple',\n [QuickStartStatus.NOT_STARTED]: 'grey',\n };\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 let quickStartIcon: React.ReactNode;\n if (typeof icon === 'object') {\n quickStartIcon = <Icon size=\"2xl\">{icon}</Icon>;\n } else {\n quickStartIcon = (\n <Icon size=\"2xl\">\n <FallbackImg\n src={icon as string}\n alt=\"\"\n className=\"pfext-catalog-item-icon__img\"\n fallback={<RocketIcon />}\n />\n </Icon>\n );\n }\n\n const onSelect = () => {\n if (!link) {\n setActiveQuickStart(id, tasks?.length);\n } else {\n window.open(link.href, '_blank', 'noopener,noreferrer');\n }\n onClick();\n };\n\n const footerComponent = 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 (\n <QuickStartTileFooter\n quickStartId={id}\n status={status}\n totalTasks={tasks?.length}\n onClickContinue={onSelect}\n />\n );\n }, [footer, id, link, status, tasks?.length]);\n\n const ActionIcon = action?.icon || OutlinedBookmarkIcon;\n const additionalAction = action ? (\n <Button\n aria-label={action['aria-label']}\n icon={<ActionIcon />}\n variant=\"plain\"\n onClick={action.onClick}\n {...action.buttonProps}\n />\n ) : undefined;\n\n return (\n <Card\n id={`${id}-catalog-tile`}\n style={{ height: '100%' }}\n data-testid={`qs-card-${camelize(displayName)}`}\n className=\"pfext-catalog-item\"\n {...(isActive && {\n isClickable: true,\n isSelectable: true,\n isSelected: true,\n isClicked: true,\n })}\n >\n <CardHeader\n {...(action && {\n actions: { actions: additionalAction },\n })}\n >\n {quickStartIcon}\n </CardHeader>\n <CardTitle>\n <QuickStartTileHeader name={displayName} onSelect={onSelect} quickStartId={id} />\n </CardTitle>\n <CardBody>\n <Stack hasGutter>\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n {type && <Label color={type.color}>{type.text}</Label>}\n {durationMinutes && (\n <Label variant=\"outline\" data-test=\"duration\" icon={<OutlinedClockIcon />}>\n {getResource('{{duration, number}} minutes', durationMinutes).replace(\n '{{duration, number}}',\n durationMinutes,\n )}\n </Label>\n )}\n {status !== QuickStartStatus.NOT_STARTED && (\n <Label\n variant=\"outline\"\n color={statusColorMap[status] as 'green' | 'purple' | 'grey'}\n icon={<StatusIcon status={status} />}\n data-test=\"status\"\n >\n {statusLocaleMap[status]}\n </Label>\n )}\n </Flex>\n <QuickStartTileDescription description={description} prerequisites={prerequisites} />\n </Stack>\n </CardBody>\n <CardFooter>{footerComponent}</CardFooter>\n </Card>\n );\n};\n\nexport default QuickStartTile;\n","import { FunctionComponent, useContext } from 'react';\nimport { Gallery } 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\ninterface QuickStartCatalogProps {\n quickStarts: QuickStart[];\n}\n\nconst QuickStartCatalog: FunctionComponent<QuickStartCatalogProps> = ({ quickStarts }) => {\n const { activeQuickStartID, allQuickStartStates } =\n useContext<QuickStartContextValues>(QuickStartContext);\n\n return (\n <div>\n <Gallery hasGutter className=\"pfext-quick-start-catalog__gallery\">\n {quickStarts.map((quickStart, index) => {\n const {\n metadata: { name: id },\n } = quickStart;\n\n return (\n <QuickStartTile\n key={index}\n quickStart={quickStart}\n isActive={id === activeQuickStartID}\n status={getQuickStartStatus(allQuickStartStates, id)}\n />\n );\n })}\n </Gallery>\n </div>\n );\n};\n\nexport default QuickStartCatalog;\n","import { FC, Ref, useCallback, useContext, useEffect, useState } 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 } = useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <ToolbarItem>\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 } = useContext<QuickStartContextValues>(QuickStartContext);\n\n const toggle = (toggleRef: 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 } = useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <ToolbarItem align={{ default: 'alignEnd' }}>\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: FC<\n QuickStartCatalogFilterSearchWrapperProps\n> = ({ onSearchInputChange = () => {} }) => {\n const { useQueryParams, filter, setFilter } =\n useContext<QuickStartContextValues>(QuickStartContext);\n 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: FC<\n QuickStartCatalogFilterStatusWrapperProps\n> = ({ onStatusChange = () => {} }) => {\n const { useQueryParams, filter, setFilter } =\n useContext<QuickStartContextValues>(QuickStartContext);\n 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] = useState(false);\n\n const onRowfilterSelect = 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: FC<QuickStartCatalogFilterCountWrapperProps> = ({\n quickStartsCount,\n}) => <QuickStartCatalogFilterCount quickStartsCount={quickStartsCount} />;\n","import { FC } from 'react';\nimport { Toolbar, ToolbarContent, ToolbarProps } from '@patternfly/react-core';\nimport {\n QuickStartCatalogFilterCountWrapper,\n QuickStartCatalogFilterSearchWrapper,\n QuickStartCatalogFilterStatusWrapper,\n} from './QuickStartCatalogFilterItems';\n\ninterface QuickStartCatalogFilterProps extends Omit<ToolbarProps, 'ref'> {\n quickStartsCount: number;\n onSearchInputChange: any;\n onStatusChange: any;\n}\n\nconst QuickStartCatalogFilter: FC<QuickStartCatalogFilterProps> = ({\n quickStartsCount,\n onSearchInputChange = () => {},\n onStatusChange = () => {},\n ...props\n}) => (\n <Toolbar {...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 { FC, useCallback, useContext, useEffect, useState } from 'react';\nimport {\n Button,\n Content,\n Divider,\n EmptyState,\n EmptyStateActions,\n EmptyStateBody,\n EmptyStateFooter,\n PageSection,\n Title,\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 } = useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <EmptyState\n headingLevel=\"h4\"\n icon={SearchIcon as any}\n titleText={<>{getResource('No results found')}</>}\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: 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 = useCallback(sortFnc, [sortFnc]);\n const {\n allQuickStarts = [],\n setAllQuickStarts,\n allQuickStartStates,\n getResource,\n filter,\n setFilter,\n loading,\n } = useContext<QuickStartContextValues>(QuickStartContext);\n\n 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] = useState(initialFilteredQuickStarts);\n 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 <>\n {(showTitle || showFilter) && (\n <PageSection hasBodyWrapper={false}>\n {showTitle && (\n <Content isEditorial>\n <Title headingLevel=\"h1\" data-test=\"page-title\">\n {title || getResource('Quick Starts')}\n </Title>\n {hint && <div>{hint}</div>}\n </Content>\n )}\n {showTitle && <Divider component=\"div\" />}\n {showFilter && (\n <>\n <QuickStartCatalogFilter\n quickStartsCount={filteredQuickStarts.length}\n onSearchInputChange={onSearchInputChange}\n onStatusChange={onStatusChange}\n />\n </>\n )}\n </PageSection>\n )}\n <PageSection hasBodyWrapper={false}>\n {filteredQuickStarts.length === 0 ? (\n <QuickStartCatalogEmptyState clearFilters={clearFilters} />\n ) : (\n <QuickStartCatalog quickStarts={filteredQuickStarts} />\n )}\n </PageSection>\n </>\n );\n};\n","import { FunctionComponent } from 'react';\nimport { Title } from '@patternfly/react-core';\n\nexport interface QuickStartCatalogHeaderProps {\n title: string;\n hint?: string;\n}\n\nexport const QuickStartCatalogHeader: FunctionComponent<QuickStartCatalogHeaderProps> = ({\n title,\n hint,\n}) => (\n <div>\n <Title headingLevel=\"h1\" data-pf-content=\"true\">\n {title}\n </Title>\n {hint && <div>{hint}</div>}\n </div>\n);\n","import { FC } from 'react';\n\nexport interface QuickStartCatalogSectionProps {\n children: React.ReactNode;\n}\n\nexport const QuickStartCatalogSection: FC<QuickStartCatalogSectionProps> = ({ children }) => (\n <div>{children}</div>\n);\n","import { FC } from 'react';\nimport { Toolbar } from '@patternfly/react-core';\n\nexport interface QuickStartCatalogToolbarProps {\n children: React.ReactNode;\n}\n\nexport const QuickStartCatalogToolbar: FC<QuickStartCatalogToolbarProps> = ({ children }) => (\n <Toolbar>{children}</Toolbar>\n);\n","import { FC, useContext } from 'react';\nimport { Button, Flex, FlexItem } from '@patternfly/react-core';\nimport { ModalVariant } from '@patternfly/react-core/deprecated';\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: FC<QuickStartCloseModalProps> = ({ isOpen, onConfirm, onCancel }) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <Modal\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 { FC, useContext, useEffect, useRef } from 'react';\nimport { Title, WizardNavItem } from '@patternfly/react-core';\nimport { QuickStartContext } 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 QuickStartTaskHeader: FC<QuickStartTaskHeaderProps> = ({\n title,\n taskIndex,\n subtitle,\n taskStatus,\n size,\n isActiveTask,\n onTaskSelect,\n children,\n}) => {\n const titleRef = useRef(null);\n const { focusOnQuickStart } = useContext(QuickStartContext);\n\n useEffect(() => {\n if (focusOnQuickStart && isActiveTask) {\n // Focus the WizardNavItem button element that contains the title\n titleRef.current.parentNode.focus();\n }\n }, [focusOnQuickStart, isActiveTask]);\n const failedReview = taskStatus === QuickStartTaskStatus.FAILED;\n\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 ref={titleRef}>\n <Title headingLevel=\"h3\" size={size}>\n <span className=\"pfext-quick-start-task-header__title\">{title}</span>\n {isActiveTask && subtitle && (\n <span>\n {' '}\n <span\n data-test-id=\"quick-start-task-subtitle\"\n className=\"pfext-quick-start-task-header__subtitle\"\n >\n {subtitle}\n </span>\n </span>\n )}\n {tryAgain}\n </Title>\n </div>\n );\n\n let status: 'default' | 'error' | 'success' = 'default';\n if (taskStatus === QuickStartTaskStatus.FAILED) {\n status = 'error';\n } else if (taskStatus === QuickStartTaskStatus.SUCCESS) {\n status = 'success';\n }\n\n return (\n <WizardNavItem\n content={content}\n stepIndex={taskIndex}\n onClick={() => onTaskSelect(taskIndex - 1)}\n component=\"button\"\n isCurrent={isActiveTask}\n status={status}\n className=\"pfext-quick-start-task-header\"\n >\n {children}\n </WizardNavItem>\n );\n};\n\nexport default QuickStartTaskHeader;\n","import { FC } from 'react';\nimport { QuickStartTask, QuickStartTaskStatus } from '../utils/quick-start-types';\nimport TaskHeader from './QuickStartTaskHeader';\n\ninterface QuickStartTaskHeaderListProps {\n tasks: QuickStartTask[];\n allTaskStatuses: QuickStartTaskStatus[];\n onTaskSelect: (selectedTaskNumber: number) => void;\n}\n\nconst QuickStartTaskHeaderList: FC<QuickStartTaskHeaderListProps> = ({\n tasks,\n allTaskStatuses,\n onTaskSelect,\n}) =>\n tasks?.length > 0 ? (\n <ul className=\"pf-v6-c-wizard pf-v6-c-wizard__nav-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 </ul>\n ) : null;\n\nexport default QuickStartTaskHeaderList;\n","import { FC, useContext } 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: 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 } = 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 icon={<ArrowRightIcon />}\n iconPosition=\"end\"\n isBlock\n key={index}\n style={{ marginTop: 'var(--pf-t--global--spacer--md' }}\n >\n {getResource('Start {{nextQSDisplayName}} quick start').replace(\n '{{nextQSDisplayName}}',\n nextQuickStart?.spec?.displayName,\n )}\n </Button>\n ))}\n </>\n );\n};\nexport default QuickStartConclusion;\n","import { FC, useContext, useState } from 'react';\nimport { ExpandableSection, List, ListItem, Stack } 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\ninterface QuickStartIntroductionProps {\n introduction: string;\n tasks: QuickStartTask[];\n allTaskStatuses: QuickStartTaskStatus[];\n prerequisites?: string[];\n onTaskSelect: (selectedTaskNumber: number) => void;\n}\n\nconst QuickStartIntroduction: FC<QuickStartIntroductionProps> = ({\n tasks,\n introduction,\n allTaskStatuses,\n prerequisites,\n onTaskSelect,\n}) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const prereqs = prerequisites?.filter((p) => p);\n const [isPrereqsExpanded, setIsPrereqsExpanded] = 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 >\n <List>\n {prereqs.map((pr) => (\n <ListItem key={pr}>\n <QuickStartMarkdownView content={pr} />\n </ListItem>\n ))}\n </List>\n </ExpandableSection>\n );\n return (\n <Stack hasGutter>\n <QuickStartMarkdownView content={introduction} />\n {prereqList}\n <p>\n {getResource(\n 'In this quick start, you will complete {{count, number}} task',\n tasks?.length,\n ).replace('{{count, number}}', tasks?.length || 0)}\n :\n </p>\n <TaskHeaderList tasks={tasks} allTaskStatuses={allTaskStatuses} onTaskSelect={onTaskSelect} />\n </Stack>\n );\n};\n\nexport default QuickStartIntroduction;\n","import { CSSProperties, FC, useContext } from 'react';\nimport { Alert, Radio } from '@patternfly/react-core';\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\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: FC<QuickStartTaskReviewProps> = ({\n review,\n taskStatus,\n onTaskReview,\n}) => {\n const { instructions, failedTaskHelp: taskHelp } = review;\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n\n return (\n <Alert\n variant={getAlertVariant(taskStatus)}\n title={getResource('Check your work')}\n isInline\n role=\"alert\"\n style={\n {\n marginBottom: 'var(--pf-t--global--spacer--md)',\n } as CSSProperties\n }\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 { FC, Fragment, useContext } 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';\nimport { Stack } from '@patternfly/react-core';\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: FC<QuickStartTaskProps> = ({\n tasks,\n taskNumber,\n allTaskStatuses,\n onTaskReview,\n onTaskSelect,\n}) => {\n const { getResource, alwaysShowTaskReview } =\n useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <div className=\"pf-v6-c-wizard pf-v6-c-wizard__nav-list\" style={{ padding: '0 0 0 0' }}>\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 <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 <Stack hasGutter>\n <QuickStartMarkdownView content={description} />\n {shouldShowTaskReview && (\n <QuickStartTaskReview\n review={review}\n taskStatus={taskStatus}\n onTaskReview={onTaskReview}\n />\n )}\n </Stack>\n )}\n </TaskHeader>\n </Fragment>\n );\n })}\n </ul>\n </div>\n );\n};\n\nexport default QuickStartTasks;\n","import { forwardRef } from 'react';\nimport { QuickStart, QuickStartTaskStatus } from '../utils/quick-start-types';\nimport QuickStartConclusion from './QuickStartConclusion';\nimport QuickStartIntroduction from './QuickStartIntroduction';\nimport QuickStartTasks from './QuickStartTasks';\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}\nimport './QuickStartContent.scss';\n\nconst QuickStartContent = 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-task\" 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 { FC, useCallback, useContext, useMemo } from 'react';\nimport { Button } from '@patternfly/react-core';\nimport { css } from '@patternfly/react-styles';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStartStatus } from '../utils/quick-start-types';\nimport { camelize } from '../utils/quick-start-utils';\nimport { ActionList, ActionListItem, ActionListGroup } from '@patternfly/react-core';\nimport './QuickStartFooter.scss';\n\nexport interface QuickStartFooterProps {\n status: QuickStartStatus;\n taskNumber: number;\n totalTasks: number;\n onNext: () => void;\n onBack: () => void;\n quickStartId: string;\n className?: string;\n}\n\nconst QuickStartFooter: FC<QuickStartFooterProps> = ({\n status,\n taskNumber,\n totalTasks,\n onNext,\n onBack,\n quickStartId,\n className,\n}) => {\n const { restartQuickStart, getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n\n const PrimaryButtonText = useMemo(\n () => ({\n START: getResource('Start'),\n CONTINUE: getResource('Continue'),\n NEXT: getResource('Next'),\n CLOSE: getResource('Close'),\n }),\n [getResource],\n );\n\n const SecondaryButtonText = useMemo(\n () => ({\n BACK: getResource('Back'),\n RESTART: getResource('Restart'),\n }),\n [getResource],\n );\n\n const onRestart = 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 = 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 = 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 = 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 = useMemo(\n () =>\n taskNumber !== -1 && (\n <Button variant=\"link\" onClick={onRestart} data-testid=\"qs-drawer-side-note-action\">\n {SecondaryButtonText.RESTART}\n </Button>\n ),\n [taskNumber, onRestart, SecondaryButtonText.RESTART],\n );\n\n return (\n <div className={css('pfext-quick-start-footer', className)}>\n <ActionList>\n <ActionListGroup>\n <ActionListItem>{getPrimaryButton}</ActionListItem>\n <ActionListItem>{getSecondaryButton}</ActionListItem>\n </ActionListGroup>\n <ActionListGroup>\n <ActionListItem>{getSideNoteAction}</ActionListItem>\n </ActionListGroup>\n </ActionList>\n </div>\n );\n};\n\nexport default QuickStartFooter;\n","import { FC, useCallback, useContext, useEffect } from 'react';\nimport QuickStartContent from './controller/QuickStartContent';\nimport QuickStartFooter from './controller/QuickStartFooter';\nimport {\n getDefaultQuickStartState,\n QuickStartContext,\n QuickStartContextValues,\n} from './utils/quick-start-context';\nimport { QuickStart, QuickStartStatus, QuickStartTaskStatus } from './utils/quick-start-types';\n\ninterface QuickStartControllerProps {\n /** The current active quickstart */\n quickStart: QuickStart;\n /** The next quickstart */\n nextQuickStarts?: QuickStart[];\n /** Additional footer classes */\n footerClass?: string;\n /** Ref for the quickstart content */\n contentRef?: React.Ref<HTMLDivElement>;\n}\n\nexport const QuickStartController: 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 activeQuickStartID,\n allQuickStartStates,\n setAllQuickStartStates,\n activeQuickStartState,\n setActiveQuickStart,\n setQuickStartTaskNumber,\n setQuickStartTaskStatus,\n nextStep,\n previousStep,\n } = useContext<QuickStartContextValues>(QuickStartContext);\n 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 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 = useCallback(\n (quickStartId: string) => setActiveQuickStart(quickStartId),\n [setActiveQuickStart],\n );\n\n const handleTaskStatusChange = useCallback(\n (newTaskStatus: QuickStartTaskStatus) => setQuickStartTaskStatus(newTaskStatus),\n [setQuickStartTaskStatus],\n );\n\n const getQuickStartActiveTask = 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 = useCallback(() => {\n const activeTaskNumber = getQuickStartActiveTask();\n setQuickStartTaskNumber(name, activeTaskNumber);\n }, [getQuickStartActiveTask, setQuickStartTaskNumber, name]);\n\n const handleNext = 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 = useCallback(() => previousStep(), [previousStep]);\n\n const handleTaskSelect = 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 className={footerClass}\n quickStartId={quickStart.metadata.name}\n />\n </>\n );\n};\n\nexport default QuickStartController;\n","import { CSSProperties, FC, useContext, useEffect, useRef, useState } from 'react';\nimport {\n DrawerActions,\n DrawerCloseButton,\n DrawerHead,\n DrawerPanelBody,\n DrawerPanelContent,\n Title,\n} from '@patternfly/react-core';\nimport * as ReactDOM from 'react-dom';\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';\n\nimport './QuickStartPanelContent.scss';\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 footerClass?: string;\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 useEffect(() => {\n if (node) {\n node.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, [taskNumber, node]);\n};\n\nconst QuickStartPanelContent: FC<QuickStartPanelContentProps> = ({\n quickStarts = [],\n handleClose,\n activeQuickStartID,\n appendTo,\n isResizable = true,\n showClose = true,\n footerClass,\n ...props\n}) => {\n const titleRef = useRef(null);\n const { getResource, activeQuickStartState, focusOnQuickStart } =\n useContext<QuickStartContextValues>(QuickStartContext);\n const [contentRef, setContentRef] = useState<HTMLDivElement>();\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 getStep = () => {\n const tasks = quickStart.spec.tasks?.length || 0;\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 useEffect(() => {\n if (focusOnQuickStart && quickStart) {\n titleRef.current.focus();\n }\n }, [focusOnQuickStart, quickStart]);\n\n const content = quickStart ? (\n <DrawerPanelContent\n isResizable={isResizable}\n data-testid={`qs-drawer-${camelize(quickStart.spec.displayName)}`}\n data-qs={`qs-step-${getStep()}`}\n data-test=\"quickstart drawer\"\n style={{ '--pf-v6-c-drawer__panel--PaddingBlockStart': '0' } as CSSProperties}\n {...props}\n >\n <div className=\"pfext-quick-start-panel-content\">\n <DrawerHead>\n <div tabIndex={-1} ref={titleRef}>\n <Title\n headingLevel=\"h2\"\n size=\"xl\"\n style={{ marginRight: 'var(--pf-t--global--spacer--md)' }}\n >\n <span>{quickStart?.spec.displayName}</span>{' '}\n </Title>\n <span>\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 </span>\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 className=\"pfext-quick-start-panel-content__body\" data-test=\"content\">\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 { FC, useContext } from 'react';\nimport QuickStartPanelContent from './QuickStartPanelContent';\nimport { QuickStartContext, QuickStartContextValues } from './utils/quick-start-context';\nimport { QuickStart } from './utils/quick-start-types';\n\nexport interface QuickStartDrawerContentProps extends React.HTMLProps<HTMLDivElement> {\n quickStarts?: QuickStart[];\n appendTo?: HTMLElement | (() => HTMLElement);\n fullWidth?: boolean;\n onCloseInProgress?: any;\n onCloseNotInProgress?: any;\n handleDrawerClose?: (quickStartStatus: string | number) => void;\n}\n\nexport const QuickStartDrawerContent: FC<QuickStartDrawerContentProps> = ({\n quickStarts = [],\n appendTo,\n fullWidth,\n handleDrawerClose,\n ...props\n}) => {\n const {\n activeQuickStartID,\n allQuickStarts = [],\n activeQuickStartState,\n } = useContext<QuickStartContextValues>(QuickStartContext);\n const combinedQuickStarts = [\n ...allQuickStarts,\n ...quickStarts,\n ].filter(\n (qs, idx, arr) => arr.findIndex(q => q.metadata.name === qs.metadata.name) === idx\n );\n\n const handleClose = () => {\n handleDrawerClose && handleDrawerClose(activeQuickStartState?.status);\n };\n\n const fullWidthPanelStyle = fullWidth\n ? {\n style: {\n flex: 1,\n },\n }\n : {};\n\n return (\n <QuickStartPanelContent\n quickStarts={combinedQuickStarts}\n handleClose={handleClose}\n activeQuickStartID={activeQuickStartID}\n appendTo={appendTo}\n isResizable={!fullWidth}\n {...fullWidthPanelStyle}\n {...props}\n />\n );\n};\n\nexport default QuickStartDrawerContent;\n","import { FC, useContext, useEffect, useState } from 'react';\nimport { Drawer, DrawerContent, DrawerContentBody } from '@patternfly/react-core';\nimport QuickStartCloseModal from './QuickStartCloseModal';\nimport QuickStartDrawerContent from './QuickStartDrawerContent';\nimport {\n getDefaultQuickStartState,\n QuickStartContext,\n QuickStartContextValues,\n} from './utils/quick-start-context';\nimport { QUICKSTART_ID_FILTER_KEY } from './utils/const';\nimport { QuickStart, QuickStartStatus } from './utils/quick-start-types';\nimport { getQuickStartByName } from './utils/quick-start-utils';\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: 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 allQuickStartStates,\n setAllQuickStartStates,\n } = useContext<QuickStartContextValues>(QuickStartContext);\n const combinedQuickStarts = allQuickStarts.concat(quickStarts);\n 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 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] = useState<boolean>(false);\n const onClose = () => setActiveQuickStart('');\n const handleClose = (activeQuickStartStatus: string | number) => {\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 fullWidthBodyStyle = fullWidth\n ? {\n style: {\n display: activeQuickStartID ? 'none' : 'flex',\n },\n }\n : {};\n\n return (\n <>\n <Drawer isExpanded={!!activeQuickStartID} isInline {...props}>\n <DrawerContent\n panelContent={\n <QuickStartDrawerContent\n quickStarts={combinedQuickStarts}\n handleDrawerClose={handleClose}\n appendTo={appendTo}\n fullWidth={fullWidth}\n />\n }\n {...fullWidthBodyStyle}\n >\n <DrawerContentBody>{children}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n <QuickStartCloseModal\n isOpen={modalOpen}\n onConfirm={onModalConfirm}\n onCancel={onModalCancel}\n />\n </>\n );\n};\n\nexport default QuickStartDrawer;\n","import { FC, useEffect } from 'react';\nimport {\n QuickStartContext,\n QuickStartContextValues,\n useValuesForQuickStartContext,\n} from './utils/quick-start-context';\nimport QuickStartDrawer from './QuickStartDrawer';\nimport { QuickStart, AllQuickStartStates } from './utils/quick-start-types';\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 /** Indicates that QuickStart should create and maintain its own drawer. If false, a QuickStartDrawerContent component should be present within the children, replacing the custom Drawer's DrawerContent. */\n isManagedDrawer?: boolean;\n}\n\nexport const QuickStartContainer: 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 isManagedDrawer = 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 useEffect(() => {\n if (\n quickStarts &&\n JSON.stringify(quickStarts) !== JSON.stringify(valuesForQuickstartContext.allQuickStarts)\n ) {\n valuesForQuickstartContext.setAllQuickStarts(quickStarts);\n }\n }, [quickStarts, valuesForQuickstartContext]);\n\n 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 {isManagedDrawer ? (\n <QuickStartDrawer {...drawerProps}>{children}</QuickStartDrawer>\n ) : (\n children\n )}\n </QuickStartContext.Provider>\n );\n};\n\nexport default QuickStartContainer;\n","import { createContext, useCallback, useState } 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 = createContext<HelpTopicContextValues>(HelpTopicContextDefaults);\n\nexport const useValuesForHelpTopicContext = (\n value: HelpTopicContextValues = {},\n): HelpTopicContextValues => {\n const combinedValue = {\n ...HelpTopicContextDefaults,\n ...value,\n };\n\n const [loading, setLoading] = useState(combinedValue.loading);\n\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const [helpTopics, setHelpTopics] = useState<HelpTopic[]>(combinedValue.helpTopics || []);\n\n const [activeHelpTopic, setActiveHelpTopic] = useState(combinedValue.activeHelpTopic || null);\n\n const setActiveHelpTopicByName = 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] = 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 { FC, useContext, useState } 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 { 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: FC<HelpTopicPanelContentProps> = ({\n activeHelpTopic = null,\n filteredHelpTopics = [],\n isResizable = true,\n onClose,\n ...props\n}) => {\n const { setActiveHelpTopicByName } = useContext<HelpTopicContextValues>(HelpTopicContext);\n\n const [isHelpTopicMenuOpen, setIsHelpTopicMenuOpen] = 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} {...props}>\n <div>\n <DrawerHead>\n <div>\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 style={{ marginRight: 'var(--pf-t--global--spacer--md)' }}\n >\n {activeHelpTopic?.title}\n </Title>\n </div>\n {\n <DrawerActions>\n <DrawerCloseButton onClick={onClose} data-testid=\"qs-drawer-close\" />\n </DrawerActions>\n }\n </DrawerHead>\n <Divider />\n <DrawerPanelBody data-test=\"content\">{panelBodyItems}</DrawerPanelBody>\n </div>\n </DrawerPanelContent>\n );\n\n return content;\n};\n\nexport default HelpTopicPanelContent;\n","import { FC, useContext, useEffect } 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: 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 useEffect(() => {\n if (loading !== valuesForHelpTopicContext.loading) {\n valuesForHelpTopicContext.setLoading(loading);\n }\n }, [loading, valuesForHelpTopicContext]);\n\n 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: FC<HelpTopicDrawerProps> = ({ children, ...props }) => {\n const { activeHelpTopic, filteredHelpTopics, setActiveHelpTopicByName } =\n 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>{children}</DrawerContentBody>\n </DrawerContent>\n ) : (\n <div className=\"pf-v6-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":["_jsx","_jsxs","PfModal","_Fragment","TaskHeader","TaskHeaderList"],"mappings":"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"}
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","../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/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/ConsoleInternal/components/markdown-view.tsx","../src/ConsoleShared/src/components/markdown-highlight-extension/highlight-consts.ts","../src/QuickStartMarkdownView.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/QuickStartDrawerContent.tsx","../src/QuickStartDrawer.tsx","../src/QuickStartContainer.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 ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\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?: 'green' | 'purple' | 'grey' | 'blue' | 'orange' | 'red' | 'teal' | 'orangered' | 'yellow';\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> =>\n 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) =>\n 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 { createContext, FC, useCallback, useEffect, useState } 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 focusOnQuickStart?: boolean;\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 focusOnQuickStart: 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] = useState(combinedValue.allQuickStarts || []);\n const [resourceBundle, setResourceBundle] = useState({\n ...en,\n ...combinedValue.resourceBundle,\n });\n const [language, setLanguage] = 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) =>\n getResource(resource, count !== undefined ? { count } : null, resourceBundle, language),\n [resourceBundle, language],\n );\n const [loading, setLoading] = useState(combinedValue.loading);\n const [alwaysShowTaskReview, setAlwaysShowTaskReview] = 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] = 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] = useState<string[]>(initialStatusFilters);\n\n const [filterKeyword, setFilterKeyword] = 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 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(\n (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: 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 { FC, useContext } 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: 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: 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 } = 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 { Fragment } 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 <Fragment key={i}>\n {word}\n {i !== words.length - 1 && <wbr />}\n </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 { FC, Ref } from 'react';\nimport { Modal as PfModal, ModalProps as PfModalProps } from '@patternfly/react-core/deprecated';\nimport { css } from '@patternfly/react-styles';\n\ntype ModalProps = {\n isFullScreen?: boolean;\n ref?: Ref<PfModal>;\n} & PfModalProps;\n\nconst Modal: 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 { useState, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\ntype GetContainer = Element | null | undefined | (() => Element);\n\ninterface PortalProps {\n children: 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] = useState<Element>();\n\n useIsomorphicLayoutEffect(() => {\n setContainerNode(getContainer(container) || document.body);\n }, [container]);\n\n return containerNode ? createPortal(children, containerNode) : null;\n};\n\nexport default Portal;\n","import { ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport Portal from './Portal';\n\ninterface SimplePopperProps {\n children: ReactNode;\n}\n\nconst SimplePopper = ({ children }: SimplePopperProps) => {\n const openProp = true;\n const nodeRef = useRef<Element>(null);\n const popperRef = useRef(null);\n const [isOpen, setOpenState] = useState(openProp);\n\n const setOpen = useCallback((newOpen: boolean) => {\n setOpenState(newOpen);\n }, []);\n\n useEffect(() => {\n setOpen(openProp);\n }, [openProp, setOpen]);\n\n const onKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.keyCode === 27) {\n setOpen(false);\n }\n },\n [setOpen],\n );\n\n const onClickOutside = 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 = 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 = useCallback(() => {\n if (!nodeRef.current || !isOpen) {\n return;\n }\n\n destroy();\n }, [isOpen, destroy]);\n\n const nodeRefCallback = useCallback(\n (node) => {\n nodeRef.current = node;\n initialize();\n },\n [initialize],\n );\n\n useEffect(() => {\n initialize();\n }, [initialize]);\n\n useEffect(\n () => () => {\n destroy();\n },\n [destroy],\n );\n\n 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 { CSSProperties, FC, useEffect, useState } 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: FC<InteractiveSpotlightProps> = ({ element }) => {\n const { top, bottom, left, right, height, width } = element.getBoundingClientRect();\n const style: CSSProperties = {\n height,\n width,\n top,\n left,\n bottom,\n right,\n };\n const [clicked, setClicked] = useState(false);\n\n 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 { useCallback, useRef, useState } 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 = useRef<number>(null);\n const [scrollDirection, setScrollDirection] = useState<ScrollDirection>(null);\n const handleScroll = 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 { useEffect, useMemo } from 'react';\n\nexport const useResizeObserver = (\n callback: ResizeObserverCallback,\n targetElement?: HTMLElement | null,\n observerOptions: ResizeObserverOptions = undefined,\n): void => {\n const element = useMemo(() => targetElement ?? document.querySelector('body'), [targetElement]);\n 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 { useCallback, useEffect, useState } 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] = useState(Shadows.none);\n const computeShadows = 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 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 { useCallback, useState } from 'react';\nimport { useResizeObserver } from './useResizeObserver';\n\ntype BoundingClientRect = ClientRect | null;\n\nexport const useBoundingClientRect = (targetElement: HTMLElement | null): BoundingClientRect => {\n const [clientRect, setClientRect] = useState<BoundingClientRect>(() =>\n targetElement ? targetElement.getBoundingClientRect() : null,\n );\n\n const observerCallback = useCallback(() => {\n setClientRect(targetElement ? targetElement.getBoundingClientRect() : null);\n }, [targetElement]);\n\n useResizeObserver(observerCallback);\n\n return clientRect;\n};\n","import { useReducer } from 'react';\n\n/**\n * React hook that forces component render.\n */\nexport const useForceRender = () => 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 { CSSProperties, FC } from 'react';\nimport { useBoundingClientRect } from '../../hooks';\nimport Portal from '../popper/Portal';\n\ninterface StaticSpotlightProps {\n element: Element;\n}\n\nconst StaticSpotlight: FC<StaticSpotlightProps> = ({ element }) => {\n const clientRect = useBoundingClientRect(element as HTMLElement);\n const style: 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-v6-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 { FC, useMemo } from 'react';\nimport InteractiveSpotlight from './InteractiveSpotlight';\nimport StaticSpotlight from './StaticSpotlight';\n\ninterface SpotlightProps {\n selector: string;\n interactive?: boolean;\n}\n\nconst Spotlight: FC<SpotlightProps> = ({ selector, interactive }) => {\n // if target element is a hidden one return null\n const element = 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 { FC, useEffect, useState } from 'react';\nimport { Spotlight } from '../spotlight';\n\ninterface MarkdownHighlightExtensionProps {\n docContext: Document;\n rootSelector: string;\n}\nconst MarkdownHighlightExtension: FC<MarkdownHighlightExtensionProps> = ({\n docContext,\n rootSelector,\n}) => {\n const [selector, setSelector] = useState<string>(null);\n 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 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 { FC, useCallback, useContext, useMemo, useState } 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: FC<CopyClipboardProps> = ({ element, rootSelector, docContext }) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const [showSuccessContent, setShowSuccessContent] = useState<boolean>(false);\n const textToCopy = 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 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 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: FC<MarkdownCopyClipboardProps> = ({ docContext, rootSelector }) => {\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 =>\n template.replace(/>(?:\\s|\\n)+</g, '><');\n","import { useContext, useMemo } 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';\n\nconst useInlineCopyClipboardShowdownExtension = () => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n return 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-v6-c-clipboard-copy pf-m-inline\">\n <span class=\"pf-v6-c-clipboard-copy__text\" ${MARKDOWN_SNIPPET_ID}=\"${groupId}\">${group}</span>\n <span class=\"pf-v6-c-clipboard-copy__actions\">\n <span class=\"pf-v6-c-clipboard-copy__actions-item\">\n <button class=\"pf-v6-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","/* eslint-disable max-len */\nimport { useContext, useMemo } 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\nconst useMultilineCopyClipboardShowdownExtension = () => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n return 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-v6-c-code-block\">\n <div class=\"pf-v6-c-code-block__header\">\n <div class=\"pf-v6-c-code-block__actions\">\n <div class=\"pf-v6-c-code-block__actions-item\">\n <button class=\"pf-v6-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-v6-c-code-block__content\">\n <pre class=\"pf-v6-c-code-block__pre pfext-code-block__pre\"><code class=\"pf-v6-c-code-block__code\"${MARKDOWN_SNIPPET_ID}=\"${groupId}\">${group.trim()}</code></pre>\n </div>\n </div>`;\n },\n }),\n [getResource],\n );\n};\n\nexport default useMultilineCopyClipboardShowdownExtension;\n","import { useMemo } 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 { marked } from 'marked';\n\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst DOMPurify = require('dompurify');\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: 'custom', 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 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 ): string => {\n if (!content || !admonitionLabel || !admonitionType) {\n return text;\n }\n if (admonitionLabel !== 'admonition') {\n return text;\n }\n admonitionType = admonitionType.toUpperCase();\n\n // Process markdown content directly using marked\n const processedContent = marked.parseInline(content);\n const sanitizedContent = DOMPurify.sanitize(processedContent);\n\n // Handle unknown admonition types by defaulting to NOTE\n const admonitionConfig =\n admonitionToAlertVariantMap[admonitionType] || admonitionToAlertVariantMap.NOTE;\n const { variant, customIcon } = admonitionConfig;\n const pfAlert = (\n <Alert\n variant={variant}\n {...(customIcon && { customIcon })}\n isInline\n title={admonitionType}\n className=\"pfext-markdown-admonition\"\n >\n <div dangerouslySetInnerHTML={{ __html: sanitizedContent }} />\n </Alert>\n );\n return removeTemplateWhitespace(renderToStaticMarkup(pfAlert));\n },\n }),\n [],\n );\nexport default useAdmonitionShowdownExtension;\n","import { useMemo } from 'react';\nimport { removeTemplateWhitespace } from './utils';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { CodeBlock } from '@patternfly/react-core';\n\nconst useCodeShowdownExtension = () =>\n 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 { useMemo } 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 { marked } from 'marked';\n\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst DOMPurify = require('dompurify');\n\nconst useAccordionShowdownExtension = () =>\n useMemo(\n () => ({\n type: 'lang',\n regex: /\\[(.+)]{{(accordion) (&quot;(.*?)&quot;)}}/g,\n replace: (\n _text: string,\n accordionContent: string,\n _command: string,\n _quotedHeading: string,\n accordionHeading: string,\n ): string => {\n const accordionId = String(accordionHeading).replace(/\\s/g, '-');\n\n // Process accordion content with markdown\n const processedContent = marked.parseInline(accordionContent);\n const sanitizedContent = DOMPurify.sanitize(processedContent);\n\n return removeTemplateWhitespace(\n renderToStaticMarkup(\n <Accordion>\n <AccordionItem>\n <AccordionToggle id={`${ACCORDION_MARKDOWN_BUTTON_ID}-${accordionId}`}>\n {accordionHeading}\n </AccordionToggle>\n <AccordionContent id={`${ACCORDION_MARKDOWN_CONTENT_ID}-${accordionId}`} hidden>\n <div dangerouslySetInnerHTML={{ __html: sanitizedContent }} />\n </AccordionContent>\n </AccordionItem>\n </Accordion>,\n ),\n );\n },\n }),\n [],\n );\n\nexport default useAccordionShowdownExtension;\n","import { FC, useState } 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: FC<AccordionShowdownComponentProps> = ({\n buttonElement,\n contentElement,\n}) => {\n const [expanded, setExpanded] = useState<boolean>(false);\n\n const handleClick = () => {\n const newExpanded = !expanded;\n const expandedModifier = 'pf-m-expanded';\n\n // Find the accordion item element (parent of the button)\n const accordionItem = buttonElement.closest('.pf-v6-c-accordion__item');\n\n // Update button - both visual state and aria-expanded\n buttonElement.className = `pf-v6-c-accordion__toggle ${newExpanded ? expandedModifier : ''}`;\n buttonElement.setAttribute('aria-expanded', newExpanded.toString());\n\n // Update content - both visual state and hidden attribute\n contentElement.hidden = !newExpanded;\n contentElement.className = `pf-v6-c-accordion__expandable-content ${\n newExpanded ? expandedModifier : ''\n }`;\n\n // Update accordion item\n if (accordionItem) {\n accordionItem.className = `pf-v6-c-accordion__item ${newExpanded ? expandedModifier : ''}`;\n }\n\n setExpanded(newExpanded);\n };\n\n useEventListener(buttonElement, 'click', handleClick);\n\n return <></>;\n};\n\ninterface accordionRenderExtensionProps {\n docContext: Document;\n}\n\nconst AccordionRenderExtension: 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 { FC, ReactNode, useState } from 'react';\n\ninterface FallbackImgProps {\n src: string;\n alt?: string;\n className?: string;\n fallback?: ReactNode;\n}\n\nconst FallbackImg: FC<FallbackImgProps> = ({ src, alt, className, fallback }) => {\n const [isSrcValid, setIsSrcValid] = 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 { FC, ReactNode } from 'react';\nimport { Button, Popover, PopoverPosition } from '@patternfly/react-core';\n\nconst PopoverStatus: 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: ReactNode;\n statusBody: 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 { cloneElement, FC, ReactElement } 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?: ReactElement<any>;\n spin?: boolean;\n};\n\nconst StatusIconAndText: 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 cloneElement(icon, {\n className: css(\n spin && 'fa-spin',\n (icon.props as any).className,\n !iconOnly && 'pfext-icon-and-text__icon pfext-icon-flex-child',\n ),\n } as any)}\n {!iconOnly && <CamelCaseWrap value={title} dataTest=\"status-text\" />}\n </span>\n );\n};\n\nexport default StatusIconAndText;\n","import { Children, ComponentType, FC, ReactNode } from 'react';\nimport PopoverStatus from './PopoverStatus';\nimport StatusIconAndText from './StatusIconAndText';\nimport { StatusComponentProps } from './types';\n\nconst GenericStatus: 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 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: ComponentType<{ title?: string }>;\n children?: ReactNode;\n popoverTitle?: string;\n noTooltip?: boolean;\n};\n\nexport default GenericStatus;\n","import { FC } 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 { Icon } from '@patternfly/react-core';\n\nexport const GreenCheckCircleIcon: FC<ColoredIconProps> = ({ className, title, size }) => (\n <Icon size={size} status=\"success\">\n <CheckCircleIcon data-test=\"success-icon\" className={className} title={title} />\n </Icon>\n);\n\nexport const RedExclamationCircleIcon: FC<ColoredIconProps> = ({ className, title, size }) => (\n <Icon size={size} status=\"danger\">\n <ExclamationCircleIcon className={className} title={title} />\n </Icon>\n);\n\nexport const BlueInfoCircleIcon: FC<ColoredIconProps> = ({ className, title }) => (\n <Icon status=\"info\">\n <InfoCircleIcon className={className} title={title} />\n </Icon>\n);\n\nexport interface ColoredIconProps {\n className?: string;\n title?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n","import { FC } from 'react';\nimport GenericStatus from './GenericStatus';\nimport { BlueInfoCircleIcon, GreenCheckCircleIcon, RedExclamationCircleIcon } from './icons';\nimport { StatusComponentProps } from './types';\n\nexport const ErrorStatus: FC<StatusComponentProps> = (props) => (\n <GenericStatus {...props} Icon={RedExclamationCircleIcon} title={props.title || 'Error'} />\n);\nErrorStatus.displayName = 'ErrorStatus';\n\nexport const InfoStatus: FC<StatusComponentProps> = (props) => (\n <GenericStatus {...props} Icon={BlueInfoCircleIcon} title={props.title || 'Information'} />\n);\nInfoStatus.displayName = 'InfoStatus';\n\nexport const SuccessStatus: FC<StatusComponentProps> = (props) => (\n <GenericStatus {...props} Icon={GreenCheckCircleIcon} title={props.title || 'Healthy'} />\n);\nSuccessStatus.displayName = 'SuccessStatus';\n","import { FC } 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: FC<StatusProps> = ({ status, title, iconOnly, noTooltip, className }) => {\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: FC<StatusIconProps> = ({ status }) => <Status status={status} iconOnly />;\n\ninterface StatusIconProps {\n status: string;\n}\n\ntype StatusProps = StatusComponentProps & {\n status: string;\n};\n","import { FC, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { css } from '@patternfly/react-styles';\nimport { marked } from 'marked';\nimport { useForceRender } from '@console/shared';\nimport { QuickStartContext, QuickStartContextValues } from '../../utils/quick-start-context';\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 = async (markdown: string, extensions?: ShowdownExtension[]) => {\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 content classes to standard elements (details blocks get handled separately)\n if (node.nodeType === 1) {\n const contentElements = [\n 'ul',\n 'ol',\n 'p',\n 'li',\n 'hr',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'pre',\n 'dl',\n 'dt',\n 'dd',\n 'table',\n ];\n if (contentElements.includes(node.nodeName.toLowerCase())) {\n // don't overwrite elements already being styled by PatternFly\n if (!node.getAttribute('class')?.includes('pf-v6-c-')) {\n node.setAttribute('class', `pf-v6-c-content--${node.nodeName.toLowerCase()}`);\n return node;\n }\n }\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 const reverseString = (str: string) => str.split('').reverse().join('');\n\n // replace code fences that end in a double curly brace (which are used by our custom md extensions) with non\n // markdown formatting related tokens so that marked doesn't try to parse them as code spans\n //\n // we want to reverse the string before we do the substitution so that we only match the opening code fence which\n // corresponds to the closing code fence with the double curly brace\n const reversedMarkdown = reverseString(markdown);\n const reverseMarkdownWithSubstitutedCodeFences = reversedMarkdown.replace(\n /{{```((.|\\n)*?)```/g,\n '{{@@@$1@@@',\n );\n const markdownWithSubstitutedCodeFences = reverseString(reverseMarkdownWithSubstitutedCodeFences);\n\n // Fix malformed HTML entities early in the process\n let preprocessedMarkdown = markdownWithSubstitutedCodeFences;\n preprocessedMarkdown = preprocessedMarkdown\n .replace(/&nbsp([^;])/g, '&nbsp;$1')\n .replace(/&amp;nbsp;/g, '&nbsp;');\n preprocessedMarkdown = preprocessedMarkdown.replace(/&nbsp(?![;])/g, '&nbsp;');\n\n // Process content in segments to ensure markdown parsing continues after HTML blocks\n const htmlBlockRegex =\n /(<(?:details|div|section|article)[^>]*>[\\s\\S]*?<\\/(?:details|div|section|article)>)/g;\n\n let parsedMarkdown = '';\n\n // Check if there are any HTML blocks\n if (htmlBlockRegex.test(preprocessedMarkdown)) {\n // Reset regex for actual processing\n htmlBlockRegex.lastIndex = 0;\n\n let lastIndex = 0;\n let match;\n\n while ((match = htmlBlockRegex.exec(preprocessedMarkdown)) !== null) {\n // Process markdown before the HTML block\n const markdownBefore = preprocessedMarkdown.slice(lastIndex, match.index).trim();\n if (markdownBefore) {\n const parsed = await marked.parse(markdownBefore);\n parsedMarkdown += parsed;\n }\n\n // Process the HTML block: parse markdown content inside while preserving HTML structure\n let htmlBlock = match[1];\n\n // Find and process markdown content inside HTML tags\n const contentRegex = />(\\s*[\\s\\S]*?)\\s*</g;\n const contentMatches = [];\n let contentMatch;\n\n while ((contentMatch = contentRegex.exec(htmlBlock)) !== null) {\n const content = contentMatch[1];\n // Only process content that has markdown formatting but no extension syntax\n if (\n content.trim() &&\n !content.includes('{{') &&\n (content.includes('**') || content.includes('- ') || content.includes('\\n'))\n ) {\n // This looks like markdown content without extensions - parse it as block content\n const parsedContent = await marked.parse(content.trim());\n // Remove wrapping <p> tags if they exist since we're inside HTML already\n const cleanedContent = parsedContent.replace(/^<p[^>]*>([\\s\\S]*)<\\/p>[\\s]*$/g, '$1');\n contentMatches.push({\n original: contentMatch[0],\n replacement: `>${cleanedContent}<`,\n });\n }\n }\n\n // Apply the content replacements\n contentMatches.forEach(({ original, replacement }) => {\n htmlBlock = htmlBlock.replace(original, replacement);\n });\n\n // Apply extensions (like admonitions) to the processed HTML block\n if (extensions) {\n extensions.forEach(({ regex, replace }) => {\n if (regex) {\n htmlBlock = htmlBlock.replace(regex, replace);\n }\n });\n }\n\n parsedMarkdown += htmlBlock;\n lastIndex = htmlBlockRegex.lastIndex;\n }\n\n // Process any remaining markdown after the last HTML block\n const markdownAfter = preprocessedMarkdown.slice(lastIndex).trim();\n if (markdownAfter) {\n const parsed = await marked.parse(markdownAfter);\n parsedMarkdown += parsed;\n }\n } else {\n // No HTML blocks found, process normally\n parsedMarkdown = await marked.parse(preprocessedMarkdown);\n }\n // Swap the temporary tokens back to code fences before we run the extensions\n let md = parsedMarkdown.replace(/@@@/g, '```');\n\n if (extensions) {\n // Convert code spans back to md format before we run the custom extension regexes\n md = md.replace(/<code>(.*)<\\/code>/g, '`$1`');\n\n extensions.forEach(({ regex, replace }, _index) => {\n if (regex) {\n md = md.replace(regex, replace);\n }\n });\n\n // Convert any remaining backticks back into code spans\n md = md.replace(/`(.*)`/g, '<code>$1</code>');\n }\n\n return DOMPurify.sanitize(md);\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: FC<SyncMarkdownProps> = ({\n content,\n emptyMsg,\n extensions,\n renderExtension,\n exactHeight,\n inline,\n className,\n}) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const [markup, setMarkup] = useState<string>('');\n\n useEffect(() => {\n async function getMd() {\n const md = await markdownConvert(\n content || emptyMsg || getResource('Not available'),\n extensions,\n );\n setMarkup(md);\n }\n getMd();\n }, [content, emptyMsg, getResource, extensions]);\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 = useRef<string>(null);\n const shouldRenderExtension = 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 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: FC<InnerSyncMarkdownProps> = ({\n markup,\n isEmpty,\n renderExtension,\n className,\n}) => {\n const id = useMemo(() => uniqueId('markdown'), []);\n return (\n <div className={css({ 'is-empty': isEmpty } as any, className)} id={id}>\n <div\n style={{ marginBlockEnd: 'var(--pf-t-global--spacer--md)' }}\n dangerouslySetInnerHTML={{ __html: markup }}\n />\n {renderExtension && (\n <RenderExtension renderExtension={renderExtension} selector={`#${id}`} markup={markup} />\n )}\n </div>\n );\n};\n\nconst IFrameMarkdownView: FC<InnerSyncMarkdownProps> = ({\n exactHeight,\n markup,\n isEmpty,\n renderExtension,\n className,\n}) => {\n const [frame, setFrame] = useState<HTMLIFrameElement>();\n const [loaded, setLoaded] = useState(false);\n const updateTimeoutHandle = useRef<NodeJS.Timeout>(null);\n\n const updateDimensions = 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 useEffect(\n () => () => {\n clearTimeout(updateTimeoutHandle.current);\n },\n [],\n );\n\n const onLoad = 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-t--global--font--family--body);\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 title=\"Markdown content preview\"\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) => {\n setFrame(r);\n }}\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 { FC, useContext } 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: FC<QuickStartMarkdownViewProps> = ({\n content,\n exactHeight,\n className,\n}) => {\n const { markdown } = 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-v6-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 { FC, useContext, useRef } from 'react';\nimport { Button, Flex, Popover } 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\ninterface QuickStartTileDescriptionProps {\n description: string;\n prerequisites?: string[];\n}\nconst QuickStartTileDescription: FC<QuickStartTileDescriptionProps> = ({\n description,\n prerequisites,\n}) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const prereqs = prerequisites?.filter((p) => p);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n return (\n <>\n <QuickStartMarkdownView content={description} />\n {prereqs?.length > 0 && (\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n <h5>\n {getResource('Prerequisites ({{totalPrereqs}})').replace(\n '{{totalPrereqs}}',\n prereqs.length,\n )}{' '}\n </h5>\n <Button\n variant=\"link\"\n isInline\n data-testid=\"qs-card-prereqs\"\n ref={buttonRef}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n aria-label={getResource('Show prerequisites')}\n >\n <InfoCircleIcon />\n </Button>\n <Popover\n aria-label={getResource('Prerequisites')}\n headerContent={getResource('Prerequisites')}\n triggerRef={buttonRef}\n bodyContent={\n <div>\n <ul aria-label={getResource('Prerequisites')}>\n {prereqs.map((prerequisite, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <li key={index}>\n <QuickStartMarkdownView content={prerequisite} />\n </li>\n ))}\n </ul>\n </div>\n }\n />\n </Flex>\n )}\n </>\n );\n};\nexport default QuickStartTileDescription;\n","import { FC, useCallback, useContext } 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 onClickContinue: (\n e: React.FormEvent<HTMLInputElement> | React.MouseEvent<Element, MouseEvent>,\n ) => void;\n}\n\nconst QuickStartTileFooter: FC<QuickStartTileFooterProps> = ({\n quickStartId,\n status,\n totalTasks,\n onClickContinue,\n}) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const { activeQuickStartID, startQuickStart, restartQuickStart } =\n useContext<QuickStartContextValues>(QuickStartContext);\n\n const start = useCallback(() => {\n startQuickStart(quickStartId, totalTasks);\n }, [quickStartId, startQuickStart, totalTasks]);\n\n const restart = useCallback(() => {\n restartQuickStart(quickStartId, totalTasks);\n }, [quickStartId, restartQuickStart, totalTasks]);\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 onClick={onClickContinue}\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 { FC } 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: FC<QuickStartTileFooterProps> = ({ link, quickStartId }) => {\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 { FC } from 'react';\nimport { Button, Flex } from '@patternfly/react-core';\n\ninterface QuickStartTileHeaderProps {\n name: string;\n quickStartId?: string;\n onSelect: (e: React.FormEvent<HTMLInputElement> | React.MouseEvent<Element, MouseEvent>) => void;\n}\n\nconst QuickStartTileHeader: FC<QuickStartTileHeaderProps> = ({ name, quickStartId, onSelect }) => (\n <Flex flexWrap={{ default: 'nowrap' }}>\n <Button data-test=\"title\" id={quickStartId} variant=\"link\" isInline onClick={onSelect}>\n {name}\n </Button>\n </Flex>\n);\n\nexport default QuickStartTileHeader;\n","import { FC, useContext, useMemo } from 'react';\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 from './QuickStartTileHeader';\nimport OutlinedBookmarkIcon from '@patternfly/react-icons/dist/js/icons/outlined-bookmark-icon';\nimport {\n Card,\n CardBody,\n CardHeader,\n CardFooter,\n CardTitle,\n Icon,\n Button,\n ButtonProps,\n Flex,\n Stack,\n Label,\n} from '@patternfly/react-core';\nimport OutlinedClockIcon from '@patternfly/react-icons/dist/js/icons/outlined-clock-icon';\nimport { StatusIcon } from '@console/shared';\nimport './QuickStartTile.scss';\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\nexport interface QuickStartTileProps {\n /** The quickstart object triggered by this tile */\n quickStart: QuickStart;\n /** Current status of the quickstart */\n status: QuickStartStatus;\n /** Flag indicating whether the quickstart is active (drawer is open) */\n isActive: boolean;\n /** Event handler attached to the tile */\n onClick?: () => void;\n /** Action config for button rendered next to title */\n action?: QuickstartAction;\n}\n\nconst QuickStartTile: 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, getResource } =\n useContext<QuickStartContextValues>(QuickStartContext);\n\n const statusColorMap = {\n [QuickStartStatus.COMPLETE]: 'green',\n [QuickStartStatus.IN_PROGRESS]: 'purple',\n [QuickStartStatus.NOT_STARTED]: 'grey',\n };\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 let quickStartIcon: React.ReactNode;\n if (typeof icon === 'object') {\n quickStartIcon = <Icon size=\"2xl\">{icon}</Icon>;\n } else {\n quickStartIcon = (\n <Icon size=\"2xl\">\n <FallbackImg\n src={icon as string}\n alt=\"\"\n className=\"pfext-catalog-item-icon__img\"\n fallback={<RocketIcon />}\n />\n </Icon>\n );\n }\n\n const onSelect = () => {\n if (!link) {\n setActiveQuickStart(id, tasks?.length);\n } else {\n window.open(link.href, '_blank', 'noopener,noreferrer');\n }\n onClick();\n };\n\n const footerComponent = 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 (\n <QuickStartTileFooter\n quickStartId={id}\n status={status}\n totalTasks={tasks?.length}\n onClickContinue={onSelect}\n />\n );\n }, [footer, id, link, status, tasks?.length]);\n\n const ActionIcon = action?.icon || OutlinedBookmarkIcon;\n const additionalAction = action ? (\n <Button\n aria-label={action['aria-label']}\n icon={<ActionIcon />}\n variant=\"plain\"\n onClick={action.onClick}\n {...action.buttonProps}\n />\n ) : undefined;\n\n return (\n <Card\n id={`${id}-catalog-tile`}\n style={{ height: '100%' }}\n data-testid={`qs-card-${camelize(displayName)}`}\n className=\"pfext-catalog-item\"\n {...(isActive && {\n isClickable: true,\n isSelectable: true,\n isSelected: true,\n isClicked: true,\n })}\n >\n <CardHeader\n {...(action && {\n actions: { actions: additionalAction },\n })}\n >\n {quickStartIcon}\n </CardHeader>\n <CardTitle>\n <QuickStartTileHeader name={displayName} onSelect={onSelect} quickStartId={id} />\n </CardTitle>\n <CardBody>\n <Stack hasGutter>\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n {type && <Label color={type.color}>{type.text}</Label>}\n {durationMinutes && (\n <Label variant=\"outline\" data-test=\"duration\" icon={<OutlinedClockIcon />}>\n {getResource('{{duration, number}} minutes', durationMinutes).replace(\n '{{duration, number}}',\n durationMinutes,\n )}\n </Label>\n )}\n {status !== QuickStartStatus.NOT_STARTED && (\n <Label\n variant=\"outline\"\n color={statusColorMap[status] as 'green' | 'purple' | 'grey'}\n icon={<StatusIcon status={status} />}\n data-test=\"status\"\n >\n {statusLocaleMap[status]}\n </Label>\n )}\n </Flex>\n <QuickStartTileDescription description={description} prerequisites={prerequisites} />\n </Stack>\n </CardBody>\n <CardFooter>{footerComponent}</CardFooter>\n </Card>\n );\n};\n\nexport default QuickStartTile;\n","import { FunctionComponent, useContext } from 'react';\nimport { Gallery } 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\ninterface QuickStartCatalogProps {\n quickStarts: QuickStart[];\n}\n\nconst QuickStartCatalog: FunctionComponent<QuickStartCatalogProps> = ({ quickStarts }) => {\n const { activeQuickStartID, allQuickStartStates } =\n useContext<QuickStartContextValues>(QuickStartContext);\n\n return (\n <div>\n <Gallery hasGutter className=\"pfext-quick-start-catalog__gallery\">\n {quickStarts.map((quickStart, index) => {\n const {\n metadata: { name: id },\n } = quickStart;\n\n return (\n <QuickStartTile\n key={index}\n quickStart={quickStart}\n isActive={id === activeQuickStartID}\n status={getQuickStartStatus(allQuickStartStates, id)}\n />\n );\n })}\n </Gallery>\n </div>\n );\n};\n\nexport default QuickStartCatalog;\n","import { FC, Ref, useCallback, useContext, useEffect, useState } 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 } = useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <ToolbarItem>\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 } = useContext<QuickStartContextValues>(QuickStartContext);\n\n const toggle = (toggleRef: 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 } = useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <ToolbarItem align={{ default: 'alignEnd' }}>\n {getResource('{{count, number}} item', quickStartsCount)}\n </ToolbarItem>\n );\n};\n\ninterface QuickStartCatalogFilterSearchWrapperProps {\n onSearchInputChange: any;\n}\nexport const QuickStartCatalogFilterSearchWrapper: FC<\n QuickStartCatalogFilterSearchWrapperProps\n> = ({ onSearchInputChange = () => {} }) => {\n const { useQueryParams, filter, setFilter } =\n useContext<QuickStartContextValues>(QuickStartContext);\n 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: FC<\n QuickStartCatalogFilterStatusWrapperProps\n> = ({ onStatusChange = () => {} }) => {\n const { useQueryParams, filter, setFilter } =\n useContext<QuickStartContextValues>(QuickStartContext);\n 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] = useState(false);\n\n const onRowfilterSelect = 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: FC<QuickStartCatalogFilterCountWrapperProps> = ({\n quickStartsCount,\n}) => <QuickStartCatalogFilterCount quickStartsCount={quickStartsCount} />;\n","import { FC } from 'react';\nimport { Toolbar, ToolbarContent, ToolbarProps } from '@patternfly/react-core';\nimport {\n QuickStartCatalogFilterCountWrapper,\n QuickStartCatalogFilterSearchWrapper,\n QuickStartCatalogFilterStatusWrapper,\n} from './QuickStartCatalogFilterItems';\n\ninterface QuickStartCatalogFilterProps extends Omit<ToolbarProps, 'ref'> {\n quickStartsCount: number;\n onSearchInputChange: any;\n onStatusChange: any;\n}\n\nconst QuickStartCatalogFilter: FC<QuickStartCatalogFilterProps> = ({\n quickStartsCount,\n onSearchInputChange = () => {},\n onStatusChange = () => {},\n ...props\n}) => (\n <Toolbar {...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 { FC, useCallback, useContext, useEffect, useState } from 'react';\nimport {\n Button,\n Content,\n Divider,\n EmptyState,\n EmptyStateActions,\n EmptyStateBody,\n EmptyStateFooter,\n PageSection,\n Title,\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 } = useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <EmptyState\n headingLevel=\"h4\"\n icon={SearchIcon as any}\n titleText={<>{getResource('No results found')}</>}\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: 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 = useCallback(sortFnc, [sortFnc]);\n const {\n allQuickStarts = [],\n setAllQuickStarts,\n allQuickStartStates,\n getResource,\n filter,\n setFilter,\n loading,\n } = useContext<QuickStartContextValues>(QuickStartContext);\n\n 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] = useState(initialFilteredQuickStarts);\n 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 <>\n {(showTitle || showFilter) && (\n <PageSection hasBodyWrapper={false}>\n {showTitle && (\n <Content isEditorial>\n <Title headingLevel=\"h1\" data-test=\"page-title\">\n {title || getResource('Quick Starts')}\n </Title>\n {hint && <div>{hint}</div>}\n </Content>\n )}\n {showTitle && <Divider component=\"div\" />}\n {showFilter && (\n <>\n <QuickStartCatalogFilter\n quickStartsCount={filteredQuickStarts.length}\n onSearchInputChange={onSearchInputChange}\n onStatusChange={onStatusChange}\n />\n </>\n )}\n </PageSection>\n )}\n <PageSection hasBodyWrapper={false}>\n {filteredQuickStarts.length === 0 ? (\n <QuickStartCatalogEmptyState clearFilters={clearFilters} />\n ) : (\n <QuickStartCatalog quickStarts={filteredQuickStarts} />\n )}\n </PageSection>\n </>\n );\n};\n","import { FunctionComponent } from 'react';\nimport { Title } from '@patternfly/react-core';\n\nexport interface QuickStartCatalogHeaderProps {\n title: string;\n hint?: string;\n}\n\nexport const QuickStartCatalogHeader: FunctionComponent<QuickStartCatalogHeaderProps> = ({\n title,\n hint,\n}) => (\n <div>\n <Title headingLevel=\"h1\" data-pf-content=\"true\">\n {title}\n </Title>\n {hint && <div>{hint}</div>}\n </div>\n);\n","import { FC } from 'react';\n\nexport interface QuickStartCatalogSectionProps {\n children: React.ReactNode;\n}\n\nexport const QuickStartCatalogSection: FC<QuickStartCatalogSectionProps> = ({ children }) => (\n <div>{children}</div>\n);\n","import { FC } from 'react';\nimport { Toolbar } from '@patternfly/react-core';\n\nexport interface QuickStartCatalogToolbarProps {\n children: React.ReactNode;\n}\n\nexport const QuickStartCatalogToolbar: FC<QuickStartCatalogToolbarProps> = ({ children }) => (\n <Toolbar>{children}</Toolbar>\n);\n","import { FC, useContext } from 'react';\nimport { Button, Flex, FlexItem } from '@patternfly/react-core';\nimport { ModalVariant } from '@patternfly/react-core/deprecated';\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: FC<QuickStartCloseModalProps> = ({ isOpen, onConfirm, onCancel }) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <Modal\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 { FC, useContext, useEffect, useRef } from 'react';\nimport { Title, WizardNavItem } from '@patternfly/react-core';\nimport { QuickStartContext } 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 QuickStartTaskHeader: FC<QuickStartTaskHeaderProps> = ({\n title,\n taskIndex,\n subtitle,\n taskStatus,\n size,\n isActiveTask,\n onTaskSelect,\n children,\n}) => {\n const titleRef = useRef(null);\n const { focusOnQuickStart } = useContext(QuickStartContext);\n\n useEffect(() => {\n if (focusOnQuickStart && isActiveTask) {\n // Focus the WizardNavItem button element that contains the title\n titleRef.current.parentNode.focus();\n }\n }, [focusOnQuickStart, isActiveTask]);\n const failedReview = taskStatus === QuickStartTaskStatus.FAILED;\n\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 ref={titleRef}>\n <Title headingLevel=\"h3\" size={size}>\n <span className=\"pfext-quick-start-task-header__title\">{title}</span>\n {isActiveTask && subtitle && (\n <span>\n {' '}\n <span\n data-test-id=\"quick-start-task-subtitle\"\n className=\"pfext-quick-start-task-header__subtitle\"\n >\n {subtitle}\n </span>\n </span>\n )}\n {tryAgain}\n </Title>\n </div>\n );\n\n let status: 'default' | 'error' | 'success' = 'default';\n if (taskStatus === QuickStartTaskStatus.FAILED) {\n status = 'error';\n } else if (taskStatus === QuickStartTaskStatus.SUCCESS) {\n status = 'success';\n }\n\n return (\n <WizardNavItem\n content={content}\n stepIndex={taskIndex}\n onClick={() => onTaskSelect(taskIndex - 1)}\n component=\"button\"\n isCurrent={isActiveTask}\n status={status}\n className=\"pfext-quick-start-task-header\"\n >\n {children}\n </WizardNavItem>\n );\n};\n\nexport default QuickStartTaskHeader;\n","import { FC } from 'react';\nimport { QuickStartTask, QuickStartTaskStatus } from '../utils/quick-start-types';\nimport TaskHeader from './QuickStartTaskHeader';\n\ninterface QuickStartTaskHeaderListProps {\n tasks: QuickStartTask[];\n allTaskStatuses: QuickStartTaskStatus[];\n onTaskSelect: (selectedTaskNumber: number) => void;\n}\n\nconst QuickStartTaskHeaderList: FC<QuickStartTaskHeaderListProps> = ({\n tasks,\n allTaskStatuses,\n onTaskSelect,\n}) =>\n tasks?.length > 0 ? (\n <ul className=\"pf-v6-c-wizard pf-v6-c-wizard__nav-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 </ul>\n ) : null;\n\nexport default QuickStartTaskHeaderList;\n","import { FC, useContext } 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: 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 } = 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 icon={<ArrowRightIcon />}\n iconPosition=\"end\"\n isBlock\n key={index}\n style={{ marginTop: 'var(--pf-t--global--spacer--md' }}\n >\n {getResource('Start {{nextQSDisplayName}} quick start').replace(\n '{{nextQSDisplayName}}',\n nextQuickStart?.spec?.displayName,\n )}\n </Button>\n ))}\n </>\n );\n};\nexport default QuickStartConclusion;\n","import { FC, useContext, useState } from 'react';\nimport { ExpandableSection, List, ListItem, Stack } 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\ninterface QuickStartIntroductionProps {\n introduction: string;\n tasks: QuickStartTask[];\n allTaskStatuses: QuickStartTaskStatus[];\n prerequisites?: string[];\n onTaskSelect: (selectedTaskNumber: number) => void;\n}\n\nconst QuickStartIntroduction: FC<QuickStartIntroductionProps> = ({\n tasks,\n introduction,\n allTaskStatuses,\n prerequisites,\n onTaskSelect,\n}) => {\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n const prereqs = prerequisites?.filter((p) => p);\n const [isPrereqsExpanded, setIsPrereqsExpanded] = 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 >\n <List>\n {prereqs.map((pr) => (\n <ListItem key={pr}>\n <QuickStartMarkdownView content={pr} />\n </ListItem>\n ))}\n </List>\n </ExpandableSection>\n );\n return (\n <Stack hasGutter>\n <QuickStartMarkdownView content={introduction} />\n {prereqList}\n <p>\n {getResource(\n 'In this quick start, you will complete {{count, number}} task',\n tasks?.length || 0,\n ).replace('{{count, number}}', tasks?.length || 0)}\n :\n </p>\n <TaskHeaderList tasks={tasks} allTaskStatuses={allTaskStatuses} onTaskSelect={onTaskSelect} />\n </Stack>\n );\n};\n\nexport default QuickStartIntroduction;\n","import { CSSProperties, FC, useContext } from 'react';\nimport { Alert, Radio } from '@patternfly/react-core';\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\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: FC<QuickStartTaskReviewProps> = ({\n review,\n taskStatus,\n onTaskReview,\n}) => {\n const { instructions, failedTaskHelp: taskHelp } = review;\n const { getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n\n return (\n <Alert\n variant={getAlertVariant(taskStatus)}\n title={getResource('Check your work')}\n isInline\n role=\"alert\"\n style={\n {\n marginBottom: 'var(--pf-t--global--spacer--md)',\n } as CSSProperties\n }\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 { FC, Fragment, useContext } 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';\nimport { Stack } from '@patternfly/react-core';\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: FC<QuickStartTaskProps> = ({\n tasks,\n taskNumber,\n allTaskStatuses,\n onTaskReview,\n onTaskSelect,\n}) => {\n const { getResource, alwaysShowTaskReview } =\n useContext<QuickStartContextValues>(QuickStartContext);\n return (\n <div className=\"pf-v6-c-wizard pf-v6-c-wizard__nav-list\" style={{ padding: '0 0 0 0' }}>\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 <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 <Stack hasGutter>\n <QuickStartMarkdownView content={description} />\n {shouldShowTaskReview && (\n <QuickStartTaskReview\n review={review}\n taskStatus={taskStatus}\n onTaskReview={onTaskReview}\n />\n )}\n </Stack>\n )}\n </TaskHeader>\n </Fragment>\n );\n })}\n </ul>\n </div>\n );\n};\n\nexport default QuickStartTasks;\n","import { forwardRef } from 'react';\nimport { QuickStart, QuickStartTaskStatus } from '../utils/quick-start-types';\nimport QuickStartConclusion from './QuickStartConclusion';\nimport QuickStartIntroduction from './QuickStartIntroduction';\nimport QuickStartTasks from './QuickStartTasks';\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}\nimport './QuickStartContent.scss';\n\nconst QuickStartContent = 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-task\" 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 { FC, useCallback, useContext, useMemo } from 'react';\nimport { Button } from '@patternfly/react-core';\nimport { css } from '@patternfly/react-styles';\nimport { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';\nimport { QuickStartStatus } from '../utils/quick-start-types';\nimport { camelize } from '../utils/quick-start-utils';\nimport { ActionList, ActionListItem, ActionListGroup } from '@patternfly/react-core';\nimport './QuickStartFooter.scss';\n\nexport interface QuickStartFooterProps {\n status: QuickStartStatus;\n taskNumber: number;\n totalTasks: number;\n onNext: () => void;\n onBack: () => void;\n quickStartId: string;\n className?: string;\n}\n\nconst QuickStartFooter: FC<QuickStartFooterProps> = ({\n status,\n taskNumber,\n totalTasks,\n onNext,\n onBack,\n quickStartId,\n className,\n}) => {\n const { restartQuickStart, getResource } = useContext<QuickStartContextValues>(QuickStartContext);\n\n const PrimaryButtonText = useMemo(\n () => ({\n START: getResource('Start'),\n CONTINUE: getResource('Continue'),\n NEXT: getResource('Next'),\n CLOSE: getResource('Close'),\n }),\n [getResource],\n );\n\n const SecondaryButtonText = useMemo(\n () => ({\n BACK: getResource('Back'),\n RESTART: getResource('Restart'),\n }),\n [getResource],\n );\n\n const onRestart = 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 = 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 = 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 = 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 = useMemo(\n () =>\n taskNumber !== -1 && (\n <Button variant=\"link\" onClick={onRestart} data-testid=\"qs-drawer-side-note-action\">\n {SecondaryButtonText.RESTART}\n </Button>\n ),\n [taskNumber, onRestart, SecondaryButtonText.RESTART],\n );\n\n return (\n <div className={css('pfext-quick-start-footer', className)}>\n <ActionList>\n <ActionListGroup>\n <ActionListItem>{getPrimaryButton}</ActionListItem>\n <ActionListItem>{getSecondaryButton}</ActionListItem>\n </ActionListGroup>\n <ActionListGroup>\n <ActionListItem>{getSideNoteAction}</ActionListItem>\n </ActionListGroup>\n </ActionList>\n </div>\n );\n};\n\nexport default QuickStartFooter;\n","import { FC, useCallback, useContext, useEffect } from 'react';\nimport QuickStartContent from './controller/QuickStartContent';\nimport QuickStartFooter from './controller/QuickStartFooter';\nimport {\n getDefaultQuickStartState,\n QuickStartContext,\n QuickStartContextValues,\n} from './utils/quick-start-context';\nimport { QuickStart, QuickStartStatus, QuickStartTaskStatus } from './utils/quick-start-types';\n\ninterface QuickStartControllerProps {\n /** The current active quickstart */\n quickStart: QuickStart;\n /** The next quickstart */\n nextQuickStarts?: QuickStart[];\n /** Additional footer classes */\n footerClass?: string;\n /** Ref for the quickstart content */\n contentRef?: React.Ref<HTMLDivElement>;\n}\n\nexport const QuickStartController: 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 activeQuickStartID,\n allQuickStartStates,\n setAllQuickStartStates,\n activeQuickStartState,\n setActiveQuickStart,\n setQuickStartTaskNumber,\n setQuickStartTaskStatus,\n nextStep,\n previousStep,\n } = useContext<QuickStartContextValues>(QuickStartContext);\n 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 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 = useCallback(\n (quickStartId: string) => setActiveQuickStart(quickStartId),\n [setActiveQuickStart],\n );\n\n const handleTaskStatusChange = useCallback(\n (newTaskStatus: QuickStartTaskStatus) => setQuickStartTaskStatus(newTaskStatus),\n [setQuickStartTaskStatus],\n );\n\n const getQuickStartActiveTask = 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 = useCallback(() => {\n const activeTaskNumber = getQuickStartActiveTask();\n setQuickStartTaskNumber(name, activeTaskNumber);\n }, [getQuickStartActiveTask, setQuickStartTaskNumber, name]);\n\n const handleNext = 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 = useCallback(() => previousStep(), [previousStep]);\n\n const handleTaskSelect = 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 className={footerClass}\n quickStartId={quickStart.metadata.name}\n />\n </>\n );\n};\n\nexport default QuickStartController;\n","import { CSSProperties, FC, useContext, useEffect, useRef, useState } from 'react';\nimport {\n DrawerActions,\n DrawerCloseButton,\n DrawerHead,\n DrawerPanelBody,\n DrawerPanelContent,\n Title,\n} from '@patternfly/react-core';\nimport * as ReactDOM from 'react-dom';\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';\n\nimport './QuickStartPanelContent.scss';\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 footerClass?: string;\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 useEffect(() => {\n if (node) {\n node.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, [taskNumber, node]);\n};\n\nconst QuickStartPanelContent: FC<QuickStartPanelContentProps> = ({\n quickStarts = [],\n handleClose,\n activeQuickStartID,\n appendTo,\n isResizable = true,\n showClose = true,\n footerClass,\n ...props\n}) => {\n const titleRef = useRef(null);\n const { getResource, activeQuickStartState, focusOnQuickStart } =\n useContext<QuickStartContextValues>(QuickStartContext);\n const [contentRef, setContentRef] = useState<HTMLDivElement>();\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 getStep = () => {\n const tasks = quickStart.spec.tasks?.length || 0;\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 useEffect(() => {\n if (focusOnQuickStart && quickStart) {\n titleRef.current.focus();\n }\n }, [focusOnQuickStart, quickStart]);\n\n const content = quickStart ? (\n <DrawerPanelContent\n isResizable={isResizable}\n data-testid={`qs-drawer-${camelize(quickStart.spec.displayName)}`}\n data-qs={`qs-step-${getStep()}`}\n data-test=\"quickstart drawer\"\n style={{ '--pf-v6-c-drawer__panel--PaddingBlockStart': '0' } as CSSProperties}\n {...props}\n >\n <div className=\"pfext-quick-start-panel-content\">\n <DrawerHead>\n <div tabIndex={-1} ref={titleRef}>\n <Title\n headingLevel=\"h2\"\n size=\"xl\"\n style={{ marginRight: 'var(--pf-t--global--spacer--md)' }}\n >\n <span>{quickStart?.spec.displayName}</span>{' '}\n </Title>\n <span>\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 </span>\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 className=\"pfext-quick-start-panel-content__body\" data-test=\"content\">\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 { FC, useContext } from 'react';\nimport QuickStartPanelContent from './QuickStartPanelContent';\nimport { QuickStartContext, QuickStartContextValues } from './utils/quick-start-context';\nimport { QuickStart } from './utils/quick-start-types';\n\nexport interface QuickStartDrawerContentProps extends React.HTMLProps<HTMLDivElement> {\n quickStarts?: QuickStart[];\n appendTo?: HTMLElement | (() => HTMLElement);\n fullWidth?: boolean;\n onCloseInProgress?: any;\n onCloseNotInProgress?: any;\n handleDrawerClose?: (quickStartStatus: string | number) => void;\n}\n\nexport const QuickStartDrawerContent: FC<QuickStartDrawerContentProps> = ({\n quickStarts = [],\n appendTo,\n fullWidth,\n handleDrawerClose,\n ...props\n}) => {\n const {\n activeQuickStartID,\n allQuickStarts = [],\n activeQuickStartState,\n } = useContext<QuickStartContextValues>(QuickStartContext);\n const combinedQuickStarts = [...allQuickStarts, ...quickStarts].filter(\n (qs, idx, arr) => arr.findIndex((q) => q.metadata.name === qs.metadata.name) === idx,\n );\n\n const handleClose = () => {\n handleDrawerClose && handleDrawerClose(activeQuickStartState?.status);\n };\n\n const fullWidthPanelStyle = fullWidth\n ? {\n style: {\n flex: 1,\n },\n }\n : {};\n\n return (\n <QuickStartPanelContent\n quickStarts={combinedQuickStarts}\n handleClose={handleClose}\n activeQuickStartID={activeQuickStartID}\n appendTo={appendTo}\n isResizable={!fullWidth}\n {...fullWidthPanelStyle}\n {...props}\n />\n );\n};\n\nexport default QuickStartDrawerContent;\n","import { FC, useContext, useEffect, useState } from 'react';\nimport { Drawer, DrawerContent, DrawerContentBody } from '@patternfly/react-core';\nimport QuickStartCloseModal from './QuickStartCloseModal';\nimport QuickStartDrawerContent from './QuickStartDrawerContent';\nimport {\n getDefaultQuickStartState,\n QuickStartContext,\n QuickStartContextValues,\n} from './utils/quick-start-context';\nimport { QUICKSTART_ID_FILTER_KEY } from './utils/const';\nimport { QuickStart, QuickStartStatus } from './utils/quick-start-types';\nimport { getQuickStartByName } from './utils/quick-start-utils';\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: 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 allQuickStartStates,\n setAllQuickStartStates,\n } = useContext<QuickStartContextValues>(QuickStartContext);\n const combinedQuickStarts = allQuickStarts.concat(quickStarts);\n 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 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] = useState<boolean>(false);\n const onClose = () => setActiveQuickStart('');\n const handleClose = (activeQuickStartStatus: string | number) => {\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 fullWidthBodyStyle = fullWidth\n ? {\n style: {\n display: activeQuickStartID ? 'none' : 'flex',\n },\n }\n : {};\n\n return (\n <>\n <Drawer isExpanded={!!activeQuickStartID} isInline {...props}>\n <DrawerContent\n panelContent={\n <QuickStartDrawerContent\n quickStarts={combinedQuickStarts}\n handleDrawerClose={handleClose}\n appendTo={appendTo}\n fullWidth={fullWidth}\n />\n }\n {...fullWidthBodyStyle}\n >\n <DrawerContentBody>{children}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n <QuickStartCloseModal\n isOpen={modalOpen}\n onConfirm={onModalConfirm}\n onCancel={onModalCancel}\n />\n </>\n );\n};\n\nexport default QuickStartDrawer;\n","import { FC, useEffect } from 'react';\nimport {\n QuickStartContext,\n QuickStartContextValues,\n useValuesForQuickStartContext,\n} from './utils/quick-start-context';\nimport QuickStartDrawer from './QuickStartDrawer';\nimport { QuickStart, AllQuickStartStates } from './utils/quick-start-types';\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 /** Indicates that QuickStart should create and maintain its own drawer. If false, a QuickStartDrawerContent component should be present within the children, replacing the custom Drawer's DrawerContent. */\n isManagedDrawer?: boolean;\n}\n\nexport const QuickStartContainer: 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 isManagedDrawer = 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 useEffect(() => {\n if (\n quickStarts &&\n JSON.stringify(quickStarts) !== JSON.stringify(valuesForQuickstartContext.allQuickStarts)\n ) {\n valuesForQuickstartContext.setAllQuickStarts(quickStarts);\n }\n }, [quickStarts, valuesForQuickstartContext]);\n\n 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 {isManagedDrawer ? (\n <QuickStartDrawer {...drawerProps}>{children}</QuickStartDrawer>\n ) : (\n children\n )}\n </QuickStartContext.Provider>\n );\n};\n\nexport default QuickStartContainer;\n","import { createContext, useCallback, useState } 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 = createContext<HelpTopicContextValues>(HelpTopicContextDefaults);\n\nexport const useValuesForHelpTopicContext = (\n value: HelpTopicContextValues = {},\n): HelpTopicContextValues => {\n const combinedValue = {\n ...HelpTopicContextDefaults,\n ...value,\n };\n\n const [loading, setLoading] = useState(combinedValue.loading);\n\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const [helpTopics, setHelpTopics] = useState<HelpTopic[]>(combinedValue.helpTopics || []);\n\n const [activeHelpTopic, setActiveHelpTopic] = useState(combinedValue.activeHelpTopic || null);\n\n const setActiveHelpTopicByName = 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] = 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 { FC, useContext, useState } 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 { 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: FC<HelpTopicPanelContentProps> = ({\n activeHelpTopic = null,\n filteredHelpTopics = [],\n isResizable = true,\n onClose,\n ...props\n}) => {\n const { setActiveHelpTopicByName } = useContext<HelpTopicContextValues>(HelpTopicContext);\n\n const [isHelpTopicMenuOpen, setIsHelpTopicMenuOpen] = 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} {...props}>\n <div>\n <DrawerHead>\n <div>\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 style={{ marginRight: 'var(--pf-t--global--spacer--md)' }}\n >\n {activeHelpTopic?.title}\n </Title>\n </div>\n {\n <DrawerActions>\n <DrawerCloseButton onClick={onClose} data-testid=\"qs-drawer-close\" />\n </DrawerActions>\n }\n </DrawerHead>\n <Divider />\n <DrawerPanelBody data-test=\"content\">{panelBodyItems}</DrawerPanelBody>\n </div>\n </DrawerPanelContent>\n );\n\n return content;\n};\n\nexport default HelpTopicPanelContent;\n","import { FC, useContext, useEffect } 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: 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 useEffect(() => {\n if (loading !== valuesForHelpTopicContext.loading) {\n valuesForHelpTopicContext.setLoading(loading);\n }\n }, [loading, valuesForHelpTopicContext]);\n\n 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: FC<HelpTopicDrawerProps> = ({ children, ...props }) => {\n const { activeHelpTopic, filteredHelpTopics, setActiveHelpTopicByName } =\n 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>{children}</DrawerContentBody>\n </DrawerContent>\n ) : (\n <div className=\"pf-v6-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":["_jsx","_jsxs","PfModal","_Fragment","DOMPurify","TaskHeader","TaskHeaderList"],"mappings":"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"}