@telia-ace/knowledge-widget-ui 1.0.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.
Files changed (91) hide show
  1. package/LICENSE.txt +6 -0
  2. package/README.md +3 -0
  3. package/lib/components/dialog-link.d.ts +12 -0
  4. package/lib/components/dialog-link.js +40 -0
  5. package/lib/components/dialog-list.d.ts +7 -0
  6. package/lib/components/dialog-list.js +72 -0
  7. package/lib/components/drawer-list.d.ts +5 -0
  8. package/lib/components/drawer-list.js +43 -0
  9. package/lib/components/dropdown-actions.d.ts +11 -0
  10. package/lib/components/dropdown-actions.js +25 -0
  11. package/lib/components/dropdown-list.d.ts +5 -0
  12. package/lib/components/dropdown-list.js +66 -0
  13. package/lib/components/favorite-button.d.ts +17 -0
  14. package/lib/components/favorite-button.js +65 -0
  15. package/lib/components/feedback.d.ts +11 -0
  16. package/lib/components/feedback.js +84 -0
  17. package/lib/components/guide-list.d.ts +46 -0
  18. package/lib/components/guide-list.js +202 -0
  19. package/lib/components/index.d.ts +10 -0
  20. package/lib/components/index.js +28 -0
  21. package/lib/components/loader.d.ts +9 -0
  22. package/lib/components/loader.js +50 -0
  23. package/lib/components/metadata.d.ts +17 -0
  24. package/lib/components/metadata.js +35 -0
  25. package/lib/hooks/index.d.ts +5 -0
  26. package/lib/hooks/index.js +14 -0
  27. package/lib/hooks/use-arrow-keys.d.ts +3 -0
  28. package/lib/hooks/use-arrow-keys.js +48 -0
  29. package/lib/hooks/use-debounce.d.ts +2 -0
  30. package/lib/hooks/use-debounce.js +41 -0
  31. package/lib/hooks/use-favorites.d.ts +8 -0
  32. package/lib/hooks/use-favorites.js +81 -0
  33. package/lib/hooks/use-hover.d.ts +2 -0
  34. package/lib/hooks/use-hover.js +29 -0
  35. package/lib/index.d.ts +7 -0
  36. package/lib/index.js +44 -0
  37. package/lib/missing-type-exports.d.ts +47 -0
  38. package/lib/missing-type-exports.js +3 -0
  39. package/lib/styles.d.ts +8 -0
  40. package/lib/styles.js +50 -0
  41. package/lib/utils/embedded-link-mapper.d.ts +4 -0
  42. package/lib/utils/embedded-link-mapper.js +62 -0
  43. package/lib/utils/guide-render-instructions.d.ts +9 -0
  44. package/lib/utils/guide-render-instructions.js +56 -0
  45. package/lib/utils/index.d.ts +1 -0
  46. package/lib/utils/index.js +8 -0
  47. package/lib-esm/components/dialog-link.d.ts +12 -0
  48. package/lib-esm/components/dialog-link.js +35 -0
  49. package/lib-esm/components/dialog-list.d.ts +7 -0
  50. package/lib-esm/components/dialog-list.js +44 -0
  51. package/lib-esm/components/drawer-list.d.ts +5 -0
  52. package/lib-esm/components/drawer-list.js +38 -0
  53. package/lib-esm/components/dropdown-actions.d.ts +11 -0
  54. package/lib-esm/components/dropdown-actions.js +20 -0
  55. package/lib-esm/components/dropdown-list.d.ts +5 -0
  56. package/lib-esm/components/dropdown-list.js +38 -0
  57. package/lib-esm/components/favorite-button.d.ts +17 -0
  58. package/lib-esm/components/favorite-button.js +40 -0
  59. package/lib-esm/components/feedback.d.ts +11 -0
  60. package/lib-esm/components/feedback.js +59 -0
  61. package/lib-esm/components/guide-list.d.ts +46 -0
  62. package/lib-esm/components/guide-list.js +173 -0
  63. package/lib-esm/components/index.d.ts +10 -0
  64. package/lib-esm/components/index.js +10 -0
  65. package/lib-esm/components/loader.d.ts +9 -0
  66. package/lib-esm/components/loader.js +21 -0
  67. package/lib-esm/components/metadata.d.ts +17 -0
  68. package/lib-esm/components/metadata.js +30 -0
  69. package/lib-esm/hooks/index.d.ts +5 -0
  70. package/lib-esm/hooks/index.js +4 -0
  71. package/lib-esm/hooks/use-arrow-keys.d.ts +3 -0
  72. package/lib-esm/hooks/use-arrow-keys.js +46 -0
  73. package/lib-esm/hooks/use-debounce.d.ts +2 -0
  74. package/lib-esm/hooks/use-debounce.js +39 -0
  75. package/lib-esm/hooks/use-favorites.d.ts +8 -0
  76. package/lib-esm/hooks/use-favorites.js +79 -0
  77. package/lib-esm/hooks/use-hover.d.ts +2 -0
  78. package/lib-esm/hooks/use-hover.js +27 -0
  79. package/lib-esm/index.d.ts +7 -0
  80. package/lib-esm/index.js +6 -0
  81. package/lib-esm/missing-type-exports.d.ts +47 -0
  82. package/lib-esm/missing-type-exports.js +2 -0
  83. package/lib-esm/styles.d.ts +8 -0
  84. package/lib-esm/styles.js +24 -0
  85. package/lib-esm/utils/embedded-link-mapper.d.ts +4 -0
  86. package/lib-esm/utils/embedded-link-mapper.js +57 -0
  87. package/lib-esm/utils/guide-render-instructions.d.ts +9 -0
  88. package/lib-esm/utils/guide-render-instructions.js +51 -0
  89. package/lib-esm/utils/index.d.ts +1 -0
  90. package/lib-esm/utils/index.js +1 -0
  91. package/package.json +48 -0
@@ -0,0 +1,40 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import { Confirm, StyledText, SymbolBadge } from '@telia-ace/widget-ui';
6
+ import React, { useCallback } from 'react';
7
+ import styled, { css } from 'styled-components';
8
+ import { StyledListButton } from '../styles';
9
+ var FavoriteButton = function (_a) {
10
+ var addFavoriteTooltip = _a.addFavoriteTooltip, removeFavoriteCancelLabel = _a.removeFavoriteCancelLabel, removeFavoriteConfirmLabel = _a.removeFavoriteConfirmLabel, removeFavoriteHeader = _a.removeFavoriteHeader, removeFavoriteLabel = _a.removeFavoriteLabel, removeFavoriteTooltip = _a.removeFavoriteTooltip, id = _a.id, isFavorite = _a.isFavorite, guideTitle = _a.guideTitle, _b = _a.buttonLabel, buttonLabel = _b === void 0 ? '' : _b, _c = _a.actions, addFavorite = _c.addFavorite, removeFavorite = _c.removeFavorite;
11
+ var remove = useCallback(function () {
12
+ removeFavorite(id);
13
+ }, [id, removeFavorite]);
14
+ var add = useCallback(function () {
15
+ addFavorite(id);
16
+ }, [id, addFavorite]);
17
+ var tooltip = "".concat(isFavorite ? removeFavoriteTooltip : addFavoriteTooltip).concat(guideTitle ? ": \"".concat(guideTitle, "\"") : '');
18
+ return (React.createElement(React.Fragment, null, isFavorite ? (React.createElement(Confirm, { trigger: React.createElement(StyledButton, { className: "humany-favorite-button", title: tooltip, "aria-label": tooltip, "data-favorite": "true", "data-has-label": buttonLabel ? 'true' : 'false', "data-has-symbol": "true" },
19
+ React.createElement(SymbolBadge, { size: 16, symbol: { type: 'Svg', content: 'star-empty' } }),
20
+ buttonLabel && React.createElement(StyledText, null, buttonLabel)), onConfirm: remove, cancelLabel: removeFavoriteCancelLabel, confirmLabel: removeFavoriteConfirmLabel, header: removeFavoriteHeader, text: removeFavoriteLabel })) : (React.createElement(StyledButton, { className: "humany-favorite-button", title: tooltip, "aria-label": tooltip, onClick: add, "data-favorite": "false", "data-has-label": buttonLabel ? 'true' : 'false', "data-has-symbol": "true" },
21
+ React.createElement(SymbolBadge, { size: 16, symbol: { type: 'Svg', content: 'star-empty' } }),
22
+ buttonLabel && React.createElement(StyledText, null, buttonLabel)))));
23
+ };
24
+ export default FavoriteButton;
25
+ var StyledButton = styled(StyledListButton)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n grid-area: favorite;\n\n &:focus {\n ", ";\n }\n\n ", "\n"], ["\n grid-area: favorite;\n\n &:focus {\n ", ";\n }\n\n ", "\n"])), function (p) {
26
+ var _a;
27
+ return ((_a = p.theme.accessibility) === null || _a === void 0 ? void 0 : _a.isTabbing) && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n svg {\n ", "\n }\n "], ["\n svg {\n ", "\n }\n "])), function (p) {
28
+ var _a, _b;
29
+ return p['data-favorite'] === 'true'
30
+ ? "\n fill: transparent;\n\n path {\n fill: transparent;\n }\n "
31
+ : "\n fill: ".concat((_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.text, ";\n\n path {\n fill: ").concat((_b = p.theme.colors) === null || _b === void 0 ? void 0 : _b.text, ";\n }\n ");
32
+ });
33
+ }, function (p) {
34
+ var _a, _b, _c, _d, _e, _f, _g;
35
+ return ((_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.text) && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n svg {\n stroke: ", ";\n\n path {\n stroke: ", ";\n }\n\n ", "\n }\n\n &:hover {\n svg {\n ", "\n }\n }\n "], ["\n svg {\n stroke: ", ";\n\n path {\n stroke: ", ";\n }\n\n ", "\n }\n\n &:hover {\n svg {\n ", "\n }\n }\n "])), (_b = p.theme.colors) === null || _b === void 0 ? void 0 : _b.text, (_c = p.theme.colors) === null || _c === void 0 ? void 0 : _c.text, p['data-favorite'] === 'true' &&
36
+ "\n fill: ".concat((_d = p.theme.colors) === null || _d === void 0 ? void 0 : _d.text, ";\n\n path {\n fill: ").concat((_e = p.theme.colors) === null || _e === void 0 ? void 0 : _e.text, ";\n }\n "), p['data-favorite'] === 'true'
37
+ ? "\n fill: transparent;\n\n path {\n fill: transparent;\n }\n "
38
+ : "\n fill: ".concat((_f = p.theme.colors) === null || _f === void 0 ? void 0 : _f.text, ";\n\n path {\n fill: ").concat((_g = p.theme.colors) === null || _g === void 0 ? void 0 : _g.text, ";\n }\n "));
39
+ });
40
+ var templateObject_1, templateObject_2, templateObject_3;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export declare type Props = Merge<React.ComponentProps<'div'>, {
3
+ onFeedback?: (feedback: 'positive' | 'negative') => void;
4
+ positive?: string;
5
+ negative?: string;
6
+ header?: string;
7
+ selected?: 'positive' | 'negative';
8
+ direction?: 'horizontal' | 'vertical';
9
+ }>;
10
+ declare const _default: React.ForwardRefExoticComponent<Pick<Props, "header" | "key" | keyof React.HTMLAttributes<HTMLDivElement> | "selected" | "direction" | "positive" | "negative" | "onFeedback"> & React.RefAttributes<HTMLDivElement>>;
11
+ export default _default;
@@ -0,0 +1,59 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __rest = (this && this.__rest) || function (s, e) {
17
+ var t = {};
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
+ t[p] = s[p];
20
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
+ t[p[i]] = s[p[i]];
24
+ }
25
+ return t;
26
+ };
27
+ import { Button, convertToStringAttributes, Icon, invertedHoverButton, StyledText, } from '@telia-ace/widget-ui';
28
+ import { appendClassNames } from '@telia-ace/widget-utilities';
29
+ import React, { forwardRef } from 'react';
30
+ import styled, { css } from 'styled-components';
31
+ export default forwardRef(function (_a, ref) {
32
+ var _b = _a.onFeedback, onFeedback = _b === void 0 ? function () { } : _b, _c = _a.direction, direction = _c === void 0 ? 'horizontal' : _c, className = _a.className, header = _a.header, positive = _a.positive, negative = _a.negative, selected = _a.selected, other = __rest(_a, ["onFeedback", "direction", "className", "header", "positive", "negative", "selected"]);
33
+ return (React.createElement(Wrapper, __assign({ className: appendClassNames(className, 'humany-feedback'), "data-direction": direction }, convertToStringAttributes(other), { ref: ref }),
34
+ !!header && React.createElement(Header, null, header),
35
+ React.createElement(FeedbackButton, { className: "humany-feedback-button", disabled: !!selected, "aria-pressed": selected === 'positive', "data-selected": selected === 'positive', "data-direction": direction, onClick: function () { return onFeedback('positive'); } },
36
+ React.createElement(Icon, { faIcon: "smile-o" }),
37
+ React.createElement("span", null, positive)),
38
+ React.createElement(FeedbackButton, { className: "humany-feedback-button", disabled: !!selected, "aria-pressed": selected === 'negative', "data-selected": selected === 'negative', "data-direction": direction, onClick: function () { return onFeedback('negative'); } },
39
+ React.createElement(Icon, { faIcon: "frown-o" }),
40
+ React.createElement("span", null, negative))));
41
+ });
42
+ var Header = styled(StyledText)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n font-weight: normal;\n margin: 0 0 ", ";\n font-size: ", ";\n display: block;\n"], ["\n font-weight: normal;\n margin: 0 0 ", ";\n font-size: ", ";\n display: block;\n"])), function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.normal; }, function (p) { var _a; return (_a = p.theme.fonts) === null || _a === void 0 ? void 0 : _a.normal; });
43
+ var FeedbackButton = styled(Button)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: inline-block;\n font-size: ", ";\n font-weight: 300;\n && {\n margin-right: ", ";\n }\n\n ", "\n\n ", "\n\n ", "\n\n i {\n margin: 0 ", " 0 0;\n }\n"], ["\n display: inline-block;\n font-size: ", ";\n font-weight: 300;\n && {\n margin-right: ", ";\n }\n\n ", "\n\n ", "\n\n ", "\n\n i {\n margin: 0 ", " 0 0;\n }\n"])), function (p) { var _a; return (_a = p.theme.fonts) === null || _a === void 0 ? void 0 : _a.normal; }, function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.large; }, function (p) {
44
+ var _a, _b;
45
+ return p['data-direction'] === 'horizontal' && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n width: 225px;\n max-width: calc(50% - ", " - ", ");\n "], ["\n width: 225px;\n max-width: calc(50% - ", " - ", ");\n "])), (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.large, (_b = p.theme.sizes) === null || _b === void 0 ? void 0 : _b.small);
46
+ }, function (p) {
47
+ return p['data-direction'] === 'vertical' && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n min-width: 190px;\n "], ["\n min-width: 190px;\n "])));
48
+ }, function (p) {
49
+ var _a;
50
+ return invertedHoverButton({
51
+ active: p['data-selected'],
52
+ primaryColor: (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.primary,
53
+ secondaryColor: '#FFFFFF',
54
+ });
55
+ }, function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small; });
56
+ var Wrapper = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (p) {
57
+ return p['data-direction'] === 'vertical' && css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n > button {\n width: 100%;\n &:not(:last-child) {\n margin-bottom: ", ";\n }\n }\n "], ["\n > button {\n width: 100%;\n &:not(:last-child) {\n margin-bottom: ", ";\n }\n }\n "])), function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.normal; });
58
+ });
59
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -0,0 +1,46 @@
1
+ import { Guide } from '@telia-ace/knowledge-widget-core';
2
+ import { DispatchAction, ItemRenderer } from '@telia-ace/widget-ui';
3
+ import { Params } from '@telia-ace/widget-utilities';
4
+ import React from 'react';
5
+ import { ItemListProps } from '../missing-type-exports';
6
+ import { Props as MetadataProps } from './metadata';
7
+ declare type Routing = {
8
+ guide?: string;
9
+ page?: string;
10
+ };
11
+ declare type ParamMappers = {
12
+ guide?: (guide: Guide) => Params;
13
+ page?: () => Params;
14
+ };
15
+ export declare type Props = Merge<ItemListProps, {
16
+ paramMappers?: ParamMappers;
17
+ routing?: Routing;
18
+ pageLabel?: string;
19
+ symbolSize?: number;
20
+ renderItem?: ItemRenderer;
21
+ pageRole?: 'link' | 'button';
22
+ pageCaret?: 'right' | 'down';
23
+ showTags?: boolean;
24
+ showFavoriteToggle?: boolean;
25
+ addFavoriteTooltip?: string;
26
+ removeFavoriteCancelLabel?: string;
27
+ removeFavoriteConfirmLabel?: string;
28
+ removeFavoriteHeader?: string;
29
+ removeFavoriteLabel?: string;
30
+ removeFavoriteTooltip?: string;
31
+ metadata?: Partial<MetadataProps>;
32
+ dispatch?: DispatchAction;
33
+ localPaging?: boolean;
34
+ expandable?: boolean;
35
+ onItemClick?: (e: React.MouseEvent, guide: Guide) => void;
36
+ }>;
37
+ export declare const AccordionListItem: React.ForwardRefExoticComponent<{
38
+ title: string;
39
+ id: string;
40
+ route: string;
41
+ symbolSize?: number | undefined;
42
+ collapseUri?: string | undefined;
43
+ children?: React.ReactNode;
44
+ } & React.RefAttributes<HTMLLIElement>>;
45
+ declare const _default: React.ForwardRefExoticComponent<Pick<Props, "symbol" | "header" | "html" | "metadata" | "text" | "key" | "renderItem" | "items" | "renderLi" | keyof React.HTMLAttributes<HTMLDivElement> | "htmlParseInstruction" | "customHeader" | "ulProps" | "addFavoriteTooltip" | "removeFavoriteCancelLabel" | "removeFavoriteConfirmLabel" | "removeFavoriteHeader" | "removeFavoriteLabel" | "removeFavoriteTooltip" | "paramMappers" | "routing" | "pageLabel" | "symbolSize" | "pageRole" | "pageCaret" | "showTags" | "showFavoriteToggle" | "dispatch" | "localPaging" | "expandable" | "onItemClick"> & React.RefAttributes<HTMLDivElement>>;
46
+ export default _default;
@@ -0,0 +1,173 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __rest = (this && this.__rest) || function (s, e) {
17
+ var t = {};
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
+ t[p] = s[p];
20
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
+ t[p[i]] = s[p[i]];
24
+ }
25
+ return t;
26
+ };
27
+ var __read = (this && this.__read) || function (o, n) {
28
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
29
+ if (!m) return o;
30
+ var i = m.call(o), r, ar = [], e;
31
+ try {
32
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
33
+ }
34
+ catch (error) { e = { error: error }; }
35
+ finally {
36
+ try {
37
+ if (r && !r.done && (m = i["return"])) m.call(i);
38
+ }
39
+ finally { if (e) throw e.error; }
40
+ }
41
+ return ar;
42
+ };
43
+ import { borderTabStyle, convertToStringAttributes, headingElement, ItemList, itemList, List, list, SymbolBadge, TextLink, usePrevious, useRouteData, } from '@telia-ace/widget-ui';
44
+ import { appendClassNames, createParams, htmlParentContains, } from '@telia-ace/widget-utilities';
45
+ import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useRef, } from 'react';
46
+ import styled, { css, ThemeContext } from 'styled-components';
47
+ import { useFavorites } from '../hooks';
48
+ import FavoriteButton from './favorite-button';
49
+ import Metadata from './metadata';
50
+ var Tags = function (_a) {
51
+ var tags = _a.tags;
52
+ if (!tags.filter(function (t) { return t.symbol; }).length) {
53
+ return null;
54
+ }
55
+ return (React.createElement(StyledTagList, { className: "humany-guide-list-tags", items: tags, renderItem: function (_a) {
56
+ var id = _a.id, symbol = _a.symbol, title = _a.title;
57
+ return symbol && (React.createElement("li", { key: id, "data-tag": id },
58
+ React.createElement(StyledTagIcon, { size: 18, symbol: symbol, title: title })));
59
+ } }));
60
+ };
61
+ export var AccordionListItem = forwardRef(function (_a, ref) {
62
+ var title = _a.title, id = _a.id, route = _a.route, symbolSize = _a.symbolSize, collapseUri = _a.collapseUri, children = _a.children;
63
+ var params = useRouteData().params;
64
+ return (React.createElement(ActiveAccordionListItem, { ref: ref, "data-guide": id },
65
+ React.createElement(TextLink, { title: title, "aria-label": title, routeName: route, params: createParams(__assign(__assign({}, params), { uriName: collapseUri ? collapseUri : undefined, id: undefined, guide: undefined, accordion: undefined })), text: title },
66
+ React.createElement(SymbolBadge, { size: symbolSize, symbol: { type: 'Svg', content: 'caret-up' } })),
67
+ children));
68
+ });
69
+ var ActiveAccordionListItem = styled.li(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n > a { \n grid-column: 1 / -1\n font-weight: bold;\n margin: 0 0 ", " 0;\n }\n\n > div {\n grid-column: 1 / -1\n }\n"], ["\n > a { \n grid-column: 1 / -1\n font-weight: bold;\n margin: 0 0 ", " 0;\n }\n\n > div {\n grid-column: 1 / -1\n }\n"])), function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.normal; });
70
+ export default forwardRef(function (_a, ref) {
71
+ var _b = _a.expandable, expandable = _b === void 0 ? false : _b, _c = _a.routing, routing = _c === void 0 ? {} : _c, _d = _a.paramMappers, paramMappers = _d === void 0 ? {} : _d, _e = _a.symbolSize, symbolSize = _e === void 0 ? 11 : _e, _f = _a.pageRole, pageRole = _f === void 0 ? 'link' : _f, _g = _a.pageCaret, pageCaret = _g === void 0 ? 'down' : _g, _h = _a.showTags, showTags = _h === void 0 ? false : _h, _j = _a.showFavoriteToggle, showFavoriteToggle = _j === void 0 ? false : _j, _k = _a.localPaging, localPaging = _k === void 0 ? false : _k, _l = _a.onItemClick, onItemClick = _l === void 0 ? function () { } : _l, _m = _a.dispatch, dispatch = _m === void 0 ? function () { } : _m, _o = _a.metadata, metadata = _o === void 0 ? {} : _o, pageLabel = _a.pageLabel, className = _a.className, children = _a.children, items = _a.items, renderItem = _a.renderItem, addFavoriteTooltip = _a.addFavoriteTooltip, removeFavoriteCancelLabel = _a.removeFavoriteCancelLabel, removeFavoriteConfirmLabel = _a.removeFavoriteConfirmLabel, removeFavoriteHeader = _a.removeFavoriteHeader, removeFavoriteLabel = _a.removeFavoriteLabel, removeFavoriteTooltip = _a.removeFavoriteTooltip, other = __rest(_a, ["expandable", "routing", "paramMappers", "symbolSize", "pageRole", "pageCaret", "showTags", "showFavoriteToggle", "localPaging", "onItemClick", "dispatch", "metadata", "pageLabel", "className", "children", "items", "renderItem", "addFavoriteTooltip", "removeFavoriteCancelLabel", "removeFavoriteConfirmLabel", "removeFavoriteHeader", "removeFavoriteLabel", "removeFavoriteTooltip"]);
72
+ var _p = useContext(ThemeContext).accessibility.isTabbing, isTabbing = _p === void 0 ? false : _p;
73
+ var innerRef = useRef();
74
+ var prevItems = usePrevious(items);
75
+ var _q = routing.guide, guideRoute = _q === void 0 ? 'guide' : _q, _r = routing.page, pageRoute = _r === void 0 ? 'index' : _r;
76
+ var _s = paramMappers.guide, mapGuideParams = _s === void 0 ? function (_a) {
77
+ var id = _a.id;
78
+ return createParams({ guide: id });
79
+ } : _s, _t = paramMappers.page, mapPageParams = _t === void 0 ? function () { return createParams(); } : _t;
80
+ var _u = __read(useFavorites(), 2), favorites = _u[0], actions = _u[1];
81
+ useImperativeHandle(ref, function () { return innerRef.current; });
82
+ var defaultRenderer = function (guide) {
83
+ var id = guide.id, title = guide.title, tags = guide.tags, published = guide.published, modified = guide.modified, publishedBy = guide.publishedBy, modifiedBy = guide.modifiedBy;
84
+ return (React.createElement("li", { key: id, "data-guide": id, "has-metadata": ((!!(metadata === null || metadata === void 0 ? void 0 : metadata.showPublished) && !!published) ||
85
+ (!!(metadata === null || metadata === void 0 ? void 0 : metadata.showModified) && !!modified)).toString() },
86
+ React.createElement(TextLink, { className: "humany-guide-link", title: title, "aria-label": title, routeName: guideRoute, onClick: function (e) { return onItemClick(e, guide); }, params: mapGuideParams(guide), text: title },
87
+ React.createElement(SymbolBadge, { size: symbolSize, symbol: {
88
+ type: 'Svg',
89
+ content: expandable ? 'caret-down' : 'caret-right',
90
+ } })),
91
+ showFavoriteToggle && (React.createElement(FavoriteButton, { guideTitle: title, addFavoriteTooltip: addFavoriteTooltip, removeFavoriteCancelLabel: removeFavoriteCancelLabel, removeFavoriteConfirmLabel: removeFavoriteConfirmLabel, removeFavoriteHeader: removeFavoriteHeader, removeFavoriteLabel: removeFavoriteLabel, removeFavoriteTooltip: removeFavoriteTooltip, isFavorite: favorites.indexOf(id) > -1, actions: actions, id: id })),
92
+ showTags && React.createElement(Tags, { tags: tags }),
93
+ React.createElement(StyledMetadata, __assign({}, metadata, { indent: expandable ? undefined : symbolSize, modified: modified, published: published, publishedBy: publishedBy, modifiedBy: modifiedBy }))));
94
+ };
95
+ var renderer = useCallback(function (guide, index, items) {
96
+ if (renderItem) {
97
+ return renderItem(guide, index, items, defaultRenderer);
98
+ }
99
+ return defaultRenderer(guide, index, items);
100
+ }, [renderItem, defaultRenderer]);
101
+ var onPageClick = useCallback(function (e) {
102
+ if (localPaging) {
103
+ e.preventDefault();
104
+ dispatch('page', mapPageParams());
105
+ }
106
+ }, [dispatch, localPaging]);
107
+ useEffect(function () {
108
+ if (isTabbing && prevItems && prevItems.length < items.length && innerRef.current) {
109
+ var elements = innerRef.current.querySelectorAll('.humany-guide-list > ul > li');
110
+ var listItemElem = elements[prevItems.length];
111
+ if (elements.length === items.length && prevItems.length) {
112
+ var nextListItem = elements[prevItems.length];
113
+ if (nextListItem) {
114
+ var focusNext = nextListItem.querySelector('.humany-guide-link');
115
+ focusNext && focusNext.focus();
116
+ }
117
+ }
118
+ else if (listItemElem) {
119
+ var observer = new MutationObserver(function (mutations, observer) {
120
+ mutations.forEach(function (mutation) {
121
+ if (mutation.addedNodes) {
122
+ var found = Array.from(mutation.addedNodes).find(function (node) { return node.tagName === 'A'; });
123
+ if (found &&
124
+ htmlParentContains(innerRef.current, document.activeElement)) {
125
+ isTabbing && found.focus();
126
+ observer.disconnect();
127
+ }
128
+ }
129
+ });
130
+ });
131
+ observer.observe(listItemElem, {
132
+ attributes: false,
133
+ characterData: false,
134
+ childList: true,
135
+ subtree: true,
136
+ attributeOldValue: false,
137
+ characterDataOldValue: false,
138
+ });
139
+ }
140
+ }
141
+ });
142
+ var hasMetaData = !!Object.keys(metadata).filter(function (k) { return typeof metadata[k] !== 'undefined'; }).length;
143
+ return (React.createElement(StyledItemList, __assign({ className: appendClassNames(className, 'humany-guide-list'), "data-item-count": items.length, items: items, renderItem: renderer, expandable: expandable ? 'true' : 'false', "grid-items": showTags || showFavoriteToggle || hasMetaData ? 'true' : 'false' }, convertToStringAttributes(other), { ref: innerRef }),
144
+ pageLabel ? (React.createElement(TextLink, { text: pageLabel, title: pageLabel, "aria-label": pageLabel, routeName: pageRoute, role: pageRole, params: mapPageParams(), onClick: onPageClick },
145
+ React.createElement(SymbolBadge, { size: symbolSize, symbol: { type: 'Svg', content: "caret-".concat(pageCaret) } }))) : null,
146
+ children));
147
+ });
148
+ var StyledItemList = styled(ItemList)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n ", "\n padding: ", ";\n overflow: auto;\n justify-content: flex-start;\n white-space: nowrap;\n font-weight: 300;\n text-decoration: none;\n\n > div {\n ", "\n }\n\n > ul > li {\n ", "\n > a {\n color: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n display: inline-block;\n\n svg {\n margin: 0 calc(", "*2) 0 0;\n line {\n stroke: ", ";\n }\n }\n\n ", "\n\n &:focus {\n ", ";\n }\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n }\n }\n\n > a {\n color: ", ";\n margin: ", " 0 0;\n align-self: flex-start;\n align-items: center;\n display: flex;\n\n span {\n text-decoration: underline;\n }\n\n svg {\n margin: 0 calc(", "*2) 0 0;\n line {\n stroke: ", ";\n }\n }\n\n &:focus {\n ", ";\n }\n }\n"], ["\n ", "\n padding: ", ";\n overflow: auto;\n justify-content: flex-start;\n white-space: nowrap;\n font-weight: 300;\n text-decoration: none;\n\n > div {\n ", "\n }\n\n > ul > li {\n ", "\n > a {\n color: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n display: inline-block;\n\n svg {\n margin: 0 calc(", "*2) 0 0;\n line {\n stroke: ", ";\n }\n }\n\n ", "\n\n &:focus {\n ", ";\n }\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n }\n }\n\n > a {\n color: ", ";\n margin: ", " 0 0;\n align-self: flex-start;\n align-items: center;\n display: flex;\n\n span {\n text-decoration: underline;\n }\n\n svg {\n margin: 0 calc(", "*2) 0 0;\n line {\n stroke: ", ";\n }\n }\n\n &:focus {\n ", ";\n }\n }\n"])), itemList, function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.large; }, headingElement('> h1', css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n white-space: pre-wrap;\n "], ["\n white-space: pre-wrap;\n "])))), function (p) {
149
+ return p['grid-items'] === 'true' && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: grid;\n grid-template-columns: auto 1fr 1fr;\n gap: 0px 0px;\n grid-template-areas: '. favorite tags';\n align-items: center;\n\n > button {\n margin: 0 0 0 ", ";\n\n &[data-favorite='false'] {\n ", ";\n &:focus {\n opacity: 1;\n }\n }\n }\n\n > span {\n font-size: ", ";\n }\n\n &:hover {\n button[data-favorite='false'] {\n display: flex;\n justify-self: flex-start;\n }\n }\n\n &[has-metadata='true'] {\n grid-template-rows: 1fr 1fr;\n grid-template-areas:\n '. favorite tags'\n 'metadata metadata metadata';\n }\n "], ["\n display: grid;\n grid-template-columns: auto 1fr 1fr;\n gap: 0px 0px;\n grid-template-areas: '. favorite tags';\n align-items: center;\n\n > button {\n margin: 0 0 0 ", ";\n\n &[data-favorite='false'] {\n ", ";\n &:focus {\n opacity: 1;\n }\n }\n }\n\n > span {\n font-size: ", ";\n }\n\n &:hover {\n button[data-favorite='false'] {\n display: flex;\n justify-self: flex-start;\n }\n }\n\n &[has-metadata='true'] {\n grid-template-rows: 1fr 1fr;\n grid-template-areas:\n '. favorite tags'\n 'metadata metadata metadata';\n }\n "])), function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small; }, function (p) { var _a; return ((_a = p.theme.accessibility) === null || _a === void 0 ? void 0 : _a.isTabbing) ? 'opacity: 0;' : 'display: none;'; }, function (p) { var _a; return (_a = p.theme.fonts) === null || _a === void 0 ? void 0 : _a.small; });
150
+ }, function (p) { var _a; return (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.primary; }, function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small; }, function (p) { var _a; return (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.primary; }, function (p) {
151
+ return p.expandable === 'true' && css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: flex;\n flex-direction: row-reverse;\n justify-content: flex-end;\n align-items: center;\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n svg {\n margin: 0 0 0 ", ";\n }\n "], ["\n display: flex;\n flex-direction: row-reverse;\n justify-content: flex-end;\n align-items: center;\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n svg {\n margin: 0 0 0 ", ";\n }\n "])), function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small; });
152
+ }, function (p) {
153
+ var _a;
154
+ return ((_a = p.theme.accessibility) === null || _a === void 0 ? void 0 : _a.isTabbing) && css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n ", "\n text-decoration: underline;\n "], ["\n ", "\n text-decoration: underline;\n "])), borderTabStyle);
155
+ }, function (p) { var _a; return (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.text; }, function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.normal; }, function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small; }, function (p) { var _a; return (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.text; }, function (p) {
156
+ var _a;
157
+ return ((_a = p.theme.accessibility) === null || _a === void 0 ? void 0 : _a.isTabbing) && css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n ", "\n text-decoration: underline;\n "], ["\n ", "\n text-decoration: underline;\n "])), borderTabStyle);
158
+ });
159
+ var StyledTagList = styled(List)(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n ", "\n display: flex;\n margin: 0 0 0 auto;\n grid-area: tags;\n\n li,\n li:last-child {\n margin: 0 0 0 ", ";\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n"], ["\n ", "\n display: flex;\n margin: 0 0 0 auto;\n grid-area: tags;\n\n li,\n li:last-child {\n margin: 0 0 0 ", ";\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n"])), list, function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small; });
160
+ var StyledTagIcon = styled(SymbolBadge)(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n display: block;\n color: ", ";\n ", "\n"], ["\n display: block;\n color: ", ";\n ", "\n"])), function (p) { var _a; return (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.primary; }, function (p) {
161
+ if (p.symbol.type === 'Uri') {
162
+ return "\n width: ".concat(p.size, "px;\n height: ").concat(p.size, "px;\n ");
163
+ }
164
+ if (p.symbol.type === 'FontAwesome') {
165
+ return "\n font-size: ".concat(p.size, "px;\n ");
166
+ }
167
+ });
168
+ var StyledMetadata = styled(Metadata)(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n grid-area: metadata;\n text-overflow: ellipsis;\n overflow: hidden;\n font-size: ", ";\n ", "\n"], ["\n grid-area: metadata;\n text-overflow: ellipsis;\n overflow: hidden;\n font-size: ", ";\n ", "\n"])), function (p) { var _a; return (_a = p.theme.fonts) === null || _a === void 0 ? void 0 : _a.small; }, function (p) {
169
+ var _a;
170
+ return typeof p.indent === 'number' &&
171
+ "text-indent: calc(".concat((_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small, " * 2 + ").concat(p.indent, "px);");
172
+ });
173
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
@@ -0,0 +1,10 @@
1
+ export { default as DialogLink } from './dialog-link';
2
+ export { default as DialogList } from './dialog-list';
3
+ export { default as DrawerList } from './drawer-list';
4
+ export { default as DropdownActions } from './dropdown-actions';
5
+ export { default as DropdownList } from './dropdown-list';
6
+ export { default as FavoriteButton } from './favorite-button';
7
+ export { default as Feedback } from './feedback';
8
+ export { AccordionListItem, default as GuideList } from './guide-list';
9
+ export { default as Loader, Wrapper as LoaderWrapper } from './loader';
10
+ export { default as Metadata } from './metadata';
@@ -0,0 +1,10 @@
1
+ export { default as DialogLink } from './dialog-link';
2
+ export { default as DialogList } from './dialog-list';
3
+ export { default as DrawerList } from './drawer-list';
4
+ export { default as DropdownActions } from './dropdown-actions';
5
+ export { default as DropdownList } from './dropdown-list';
6
+ export { default as FavoriteButton } from './favorite-button';
7
+ export { default as Feedback } from './feedback';
8
+ export { AccordionListItem, default as GuideList } from './guide-list';
9
+ export { default as Loader, Wrapper as LoaderWrapper } from './loader';
10
+ export { default as Metadata } from './metadata';
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ declare type Props = {
3
+ loading: boolean | undefined;
4
+ };
5
+ export declare const Wrapper: import("styled-components").StyledComponent<"div", any, {
6
+ 'data-loading': boolean;
7
+ }, never>;
8
+ declare const Loader: React.SFC<Props>;
9
+ export default Loader;
@@ -0,0 +1,21 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import React from 'react';
6
+ import styled, { keyframes } from 'styled-components';
7
+ var spin = keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n 100% {\n transform: rotate(360deg);\n }\n"], ["\n 100% {\n transform: rotate(360deg);\n }\n"])));
8
+ var dash = keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35px;\n }\n 100% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -124px;\n }\n"], ["\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35px;\n }\n 100% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -124px;\n }\n"])));
9
+ var SpinnerSvg = styled.svg(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n animation: ", " 2s linear infinite;\n height: 100%;\n transform-origin: center center;\n width: 100%;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n transition: 200ms ease-out opacity;\n"], ["\n animation: ", " 2s linear infinite;\n height: 100%;\n transform-origin: center center;\n width: 100%;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n transition: 200ms ease-out opacity;\n"])), spin);
10
+ export var Wrapper = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n height: 100%;\n width: 100%;\n pointer-events: ", "\n display: flex;\n flex-direction: column;\n justify-content: center;\n transition: 200ms ease-out opacity;\n box-sizing: border-box;\n overflow: hidden;\n ", " {\n opacity: ", "\n }\n"], ["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n height: 100%;\n width: 100%;\n pointer-events: ", "\n display: flex;\n flex-direction: column;\n justify-content: center;\n transition: 200ms ease-out opacity;\n box-sizing: border-box;\n overflow: hidden;\n ", " {\n opacity: ", "\n }\n"])), function (p) { return (p['data-loading'] ? 'all' : 'none'); }, SpinnerSvg, function (p) { return (p['data-loading'] ? '1' : '0'); });
11
+ var Spinner = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n position: relative;\n margin: 0 auto;\n width: 100px;\n &:before {\n content: '';\n display: block;\n padding-top: 100%;\n }\n"], ["\n position: relative;\n margin: 0 auto;\n width: 100px;\n &:before {\n content: '';\n display: block;\n padding-top: 100%;\n }\n"])));
12
+ var SpinnerCircle = styled.circle(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n animation: ", " 1.5s ease-in-out infinite;\n stroke-linecap: round;\n stroke: ", ";\n stroke-width: 2px;\n"], ["\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n animation: ", " 1.5s ease-in-out infinite;\n stroke-linecap: round;\n stroke: ", ";\n stroke-width: 2px;\n"])), dash, function (p) { var _a; return (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.primary; });
13
+ var Loader = function (_a) {
14
+ var _b = _a.loading, loading = _b === void 0 ? false : _b;
15
+ return (React.createElement(Wrapper, { className: "humany-loader", "data-loading": loading },
16
+ React.createElement(Spinner, { className: "humany-spinner" },
17
+ React.createElement(SpinnerSvg, { viewBox: "25 25 50 50" },
18
+ React.createElement(SpinnerCircle, { cx: "50", cy: "50", r: "20", fill: "none", "stroke-width": "2", "stroke-miterlimit": "10" })))));
19
+ };
20
+ export default Loader;
21
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -0,0 +1,17 @@
1
+ import { DateFormats } from '@telia-ace/widget-ui';
2
+ import React from 'react';
3
+ export declare type Props = {
4
+ className?: string;
5
+ modified?: string;
6
+ published?: string;
7
+ modifiedBy?: string | null;
8
+ publishedBy?: string | null;
9
+ showModified?: boolean;
10
+ showPublished?: boolean;
11
+ modifiedLabel?: string;
12
+ publishedLabel?: string;
13
+ byLabel?: string;
14
+ format?: DateFormats;
15
+ };
16
+ declare const Metadata: React.FC<Props>;
17
+ export default Metadata;
@@ -0,0 +1,30 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import { DateFormats, Text, Timestamp } from '@telia-ace/widget-ui';
6
+ import { appendClassNames } from '@telia-ace/widget-utilities';
7
+ import React from 'react';
8
+ import styled from 'styled-components';
9
+ var Metadata = function (_a) {
10
+ var _b = _a.format, format = _b === void 0 ? DateFormats.YYYY_MM_DD_HH_MM : _b, _c = _a.className, className = _c === void 0 ? '' : _c, _d = _a.byLabel, byLabel = _d === void 0 ? '' : _d, _e = _a.modifiedLabel, modifiedLabel = _e === void 0 ? '' : _e, _f = _a.publishedLabel, publishedLabel = _f === void 0 ? '' : _f, _g = _a.modifiedBy, modifiedBy = _g === void 0 ? '' : _g, _h = _a.publishedBy, publishedBy = _h === void 0 ? '' : _h, _j = _a.showModified, showModified = _j === void 0 ? false : _j, _k = _a.showPublished, showPublished = _k === void 0 ? false : _k, modified = _a.modified, published = _a.published;
11
+ var publishedTimestamp = showPublished && published ? (React.createElement(StyledTimestamp, { format: format, timestamp: published })) : null;
12
+ var modifiedTimestamp = showModified && modified ? React.createElement(StyledTimestamp, { format: format, timestamp: modified }) : null;
13
+ if (!publishedTimestamp && !modifiedTimestamp) {
14
+ return null;
15
+ }
16
+ return (React.createElement(StyledText, { className: appendClassNames(className, 'humany-metadata') },
17
+ publishedTimestamp && (React.createElement(StyledText, { className: "humany-published" },
18
+ publishedLabel,
19
+ publishedTimestamp,
20
+ byLabel && publishedBy && " ".concat(byLabel.replace('{{editor}}', publishedBy)))),
21
+ modifiedTimestamp && (React.createElement(StyledText, { className: "humany-modified" },
22
+ publishedTimestamp && ', ',
23
+ modifiedLabel,
24
+ modifiedTimestamp,
25
+ byLabel && modifiedBy && " ".concat(byLabel.replace('{{editor}}', modifiedBy))))));
26
+ };
27
+ export default Metadata;
28
+ var StyledTimestamp = styled(Timestamp)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n &:not(:first-child) {\n margin-left: 4px;\n }\n &:not(:last-child) {\n margin-right: 4px;\n }\n"], ["\n &:not(:first-child) {\n margin-left: 4px;\n }\n &:not(:last-child) {\n margin-right: 4px;\n }\n"])));
29
+ var StyledText = styled(Text)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n font-style: italic;\n"], ["\n font-style: italic;\n"])));
30
+ var templateObject_1, templateObject_2;
@@ -0,0 +1,5 @@
1
+ export { default as useArrowKeys } from './use-arrow-keys';
2
+ export { default as useDebounce } from './use-debounce';
3
+ export { default as useFavorites } from './use-favorites';
4
+ export type { FavoriteActions } from './use-favorites';
5
+ export { default as useHover } from './use-hover';
@@ -0,0 +1,4 @@
1
+ export { default as useArrowKeys } from './use-arrow-keys';
2
+ export { default as useDebounce } from './use-debounce';
3
+ export { default as useFavorites } from './use-favorites';
4
+ export { default as useHover } from './use-hover';
@@ -0,0 +1,3 @@
1
+ declare type ArrowKey = 'up' | 'down' | 'left' | 'right';
2
+ declare const useArrowKeys: () => ArrowKey | null;
3
+ export default useArrowKeys;
@@ -0,0 +1,46 @@
1
+ var __read = (this && this.__read) || function (o, n) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
3
+ if (!m) return o;
4
+ var i = m.call(o), r, ar = [], e;
5
+ try {
6
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
+ }
8
+ catch (error) { e = { error: error }; }
9
+ finally {
10
+ try {
11
+ if (r && !r.done && (m = i["return"])) m.call(i);
12
+ }
13
+ finally { if (e) throw e.error; }
14
+ }
15
+ return ar;
16
+ };
17
+ import { useKeyPress } from '@telia-ace/widget-ui';
18
+ import { useEffect, useState } from 'react';
19
+ var useArrowKeys = function () {
20
+ // State for keeping track of whether key is pressed
21
+ var _a = __read(useState(null), 2), keyPressed = _a[0], setKeyPressed = _a[1];
22
+ var left = useKeyPress('ArrowLeft');
23
+ var right = useKeyPress('ArrowRight');
24
+ var up = useKeyPress('ArrowUp');
25
+ var down = useKeyPress('ArrowDown');
26
+ var effect = function () {
27
+ if (left) {
28
+ setKeyPressed('left');
29
+ }
30
+ else if (right) {
31
+ setKeyPressed('right');
32
+ }
33
+ else if (up) {
34
+ setKeyPressed('up');
35
+ }
36
+ else if (down) {
37
+ setKeyPressed('down');
38
+ }
39
+ else {
40
+ setKeyPressed(null);
41
+ }
42
+ };
43
+ useEffect(effect, [left, right, up, down]);
44
+ return keyPressed;
45
+ };
46
+ export default useArrowKeys;
@@ -0,0 +1,2 @@
1
+ declare const useDebounce: (value: string, delay: number) => string;
2
+ export default useDebounce;
@@ -0,0 +1,39 @@
1
+ var __read = (this && this.__read) || function (o, n) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
3
+ if (!m) return o;
4
+ var i = m.call(o), r, ar = [], e;
5
+ try {
6
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
+ }
8
+ catch (error) { e = { error: error }; }
9
+ finally {
10
+ try {
11
+ if (r && !r.done && (m = i["return"])) m.call(i);
12
+ }
13
+ finally { if (e) throw e.error; }
14
+ }
15
+ return ar;
16
+ };
17
+ import { useCallback, useEffect, useState } from 'react';
18
+ var useDebounce = function (value, delay) {
19
+ // State and setters for debounced value
20
+ var _a = __read(useState(value), 2), debouncedValue = _a[0], setDebouncedValue = _a[1];
21
+ var handler = useCallback(function () {
22
+ // Update debounced value after delay
23
+ return setTimeout(function () {
24
+ setDebouncedValue(value);
25
+ }, delay);
26
+ }, [delay, setDebouncedValue, value]);
27
+ useEffect(function () {
28
+ var timeout = handler();
29
+ // Cancel the timeout if value changes (also on delay change or unmount)
30
+ // This is how we prevent debounced value from updating if value is changed
31
+ // within the delay period. Timeout gets cleared and restarted.
32
+ return function () {
33
+ clearTimeout(timeout);
34
+ };
35
+ }, [handler] // Only re-call effect if value or delay changes
36
+ );
37
+ return debouncedValue;
38
+ };
39
+ export default useDebounce;
@@ -0,0 +1,8 @@
1
+ export declare type FavoriteActions = {
2
+ addFavorite: (guideId: string) => Promise<string[]>;
3
+ clearFavorites: () => Promise<string[]>;
4
+ removeFavorite: (guideId: string) => Promise<string[]>;
5
+ toggleFavorite: (guideId: string) => Promise<string[]>;
6
+ };
7
+ declare const useFavorites: () => [string[], FavoriteActions];
8
+ export default useFavorites;