@equinor/fusion-framework-react-components-bookmark 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +69 -0
- package/dist/esm/components/Bookmark.js +12 -2
- package/dist/esm/components/Bookmark.js.map +1 -1
- package/dist/esm/components/BookmarkProvider.js +16 -0
- package/dist/esm/components/BookmarkProvider.js.map +1 -1
- package/dist/esm/components/create-bookmark/{CreateBookmark.js → CreateBookmarkModal.js} +13 -5
- package/dist/esm/components/create-bookmark/CreateBookmarkModal.js.map +1 -0
- package/dist/esm/components/create-bookmark/index.js +1 -1
- package/dist/esm/components/create-bookmark/index.js.map +1 -1
- package/dist/esm/components/edit-bookmark/{EditBookmark.js → EditBookmarkModal.js} +16 -4
- package/dist/esm/components/edit-bookmark/EditBookmarkModal.js.map +1 -0
- package/dist/esm/components/edit-bookmark/index.js +1 -1
- package/dist/esm/components/edit-bookmark/index.js.map +1 -1
- package/dist/esm/components/filter/{Filter.js → BookmarkFilter.js} +9 -3
- package/dist/esm/components/filter/BookmarkFilter.js.map +1 -0
- package/dist/esm/components/import-bookmark/{ImportBookmark.js → ImportBookmarkModal.js} +13 -1
- package/dist/esm/components/import-bookmark/ImportBookmarkModal.js.map +1 -0
- package/dist/esm/components/import-bookmark/index.js +1 -1
- package/dist/esm/components/import-bookmark/index.js.map +1 -1
- package/dist/esm/components/loading/Loading.js +5 -0
- package/dist/esm/components/loading/Loading.js.map +1 -1
- package/dist/esm/components/messages/Message.js +7 -0
- package/dist/esm/components/messages/Message.js.map +1 -1
- package/dist/esm/components/row/MoreMenu.js +15 -7
- package/dist/esm/components/row/MoreMenu.js.map +1 -1
- package/dist/esm/components/row/Row.js +9 -4
- package/dist/esm/components/row/Row.js.map +1 -1
- package/dist/esm/components/section/Section.js +6 -0
- package/dist/esm/components/section/Section.js.map +1 -1
- package/dist/esm/components/sectionList/SectionList.js +16 -5
- package/dist/esm/components/sectionList/SectionList.js.map +1 -1
- package/dist/esm/components/shared/SharedIcon.js +7 -1
- package/dist/esm/components/shared/SharedIcon.js.map +1 -1
- package/dist/esm/hooks/useBookmarkGrouping.js +23 -10
- package/dist/esm/hooks/useBookmarkGrouping.js.map +1 -1
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/{append-bookmark-to-uri.js → append-bookmark-id-to-url.js} +1 -1
- package/dist/esm/utils/append-bookmark-id-to-url.js.map +1 -0
- package/dist/esm/utils/filter-empty-groups.js +4 -0
- package/dist/esm/utils/filter-empty-groups.js.map +1 -0
- package/dist/esm/utils/sort-by-name.js +2 -0
- package/dist/esm/utils/sort-by-name.js.map +1 -0
- package/dist/esm/utils/to-human-readable.js +6 -0
- package/dist/esm/utils/to-human-readable.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/components/Bookmark.d.ts +6 -1
- package/dist/types/components/BookmarkProvider.d.ts +16 -1
- package/dist/types/components/create-bookmark/CreateBookmarkModal.d.ts +12 -0
- package/dist/types/components/create-bookmark/index.d.ts +1 -1
- package/dist/types/components/edit-bookmark/EditBookmarkModal.d.ts +14 -0
- package/dist/types/components/edit-bookmark/index.d.ts +1 -1
- package/dist/types/components/filter/BookmarkFilter.d.ts +16 -0
- package/dist/types/components/import-bookmark/ImportBookmarkModal.d.ts +6 -0
- package/dist/types/components/import-bookmark/index.d.ts +1 -1
- package/dist/types/components/loading/Loading.d.ts +6 -1
- package/dist/types/components/messages/Message.d.ts +7 -1
- package/dist/types/components/row/MoreMenu.d.ts +7 -1
- package/dist/types/components/row/Row.d.ts +7 -1
- package/dist/types/components/section/Section.d.ts +7 -1
- package/dist/types/components/sectionList/SectionList.d.ts +7 -1
- package/dist/types/components/shared/SharedIcon.d.ts +7 -1
- package/dist/types/hooks/useBookmarkGrouping.d.ts +6 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/utils/filter-empty-groups.d.ts +5 -0
- package/dist/types/utils/sort-by-name.d.ts +2 -0
- package/dist/types/utils/to-human-readable.d.ts +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +8 -8
- package/src/components/Bookmark.tsx +12 -5
- package/src/components/BookmarkProvider.tsx +16 -0
- package/src/components/create-bookmark/{CreateBookmark.tsx → CreateBookmarkModal.tsx} +12 -4
- package/src/components/create-bookmark/index.ts +1 -1
- package/src/components/edit-bookmark/{EditBookmark.tsx → EditBookmarkModal.tsx} +16 -4
- package/src/components/edit-bookmark/index.ts +1 -1
- package/src/components/filter/{Filter.tsx → BookmarkFilter.tsx} +11 -5
- package/src/components/import-bookmark/{ImportBookmark.tsx → ImportBookmarkModal.tsx} +12 -0
- package/src/components/import-bookmark/index.ts +1 -1
- package/src/components/loading/Loading.tsx +5 -1
- package/src/components/messages/Message.tsx +7 -0
- package/src/components/row/MoreMenu.tsx +24 -17
- package/src/components/row/Row.tsx +8 -1
- package/src/components/section/Section.tsx +6 -0
- package/src/components/sectionList/SectionList.tsx +16 -5
- package/src/components/shared/SharedIcon.tsx +6 -0
- package/src/hooks/useBookmarkGrouping.ts +29 -18
- package/src/index.ts +10 -0
- package/src/utils/filter-empty-groups.ts +5 -0
- package/src/utils/sort-by-name.ts +4 -0
- package/src/utils/to-human-readable.ts +6 -0
- package/src/version.ts +1 -1
- package/dist/esm/components/create-bookmark/CreateBookmark.js.map +0 -1
- package/dist/esm/components/edit-bookmark/EditBookmark.js.map +0 -1
- package/dist/esm/components/filter/Filter.js.map +0 -1
- package/dist/esm/components/import-bookmark/ImportBookmark.js.map +0 -1
- package/dist/esm/utils/append-bookmark-to-uri.js.map +0 -1
- package/dist/esm/utils/utils.js +0 -9
- package/dist/esm/utils/utils.js.map +0 -1
- package/dist/types/components/create-bookmark/CreateBookmark.d.ts +0 -4
- package/dist/types/components/edit-bookmark/EditBookmark.d.ts +0 -5
- package/dist/types/components/filter/Filter.d.ts +0 -10
- package/dist/types/components/import-bookmark/ImportBookmark.d.ts +0 -1
- package/dist/types/utils/utils.d.ts +0 -7
- package/src/utils/utils.ts +0 -13
- /package/dist/types/utils/{append-bookmark-to-uri.d.ts → append-bookmark-id-to-url.d.ts} +0 -0
- /package/src/utils/{append-bookmark-to-uri.ts → append-bookmark-id-to-url.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Icon } from '@equinor/eds-core-react';
|
|
3
3
|
import { Row } from '../row/Row';
|
|
4
4
|
import { Section } from '../section/Section';
|
|
@@ -6,7 +6,9 @@ import { SharedIcon } from '../shared/SharedIcon';
|
|
|
6
6
|
import { useCurrentUser } from '@equinor/fusion-framework-react/hooks';
|
|
7
7
|
import { useCallback, useState } from 'react';
|
|
8
8
|
import { delete_to_trash, share, edit, close, update } from '@equinor/eds-icons';
|
|
9
|
-
import { filterEmptyGroups
|
|
9
|
+
import { filterEmptyGroups } from '../../utils/filter-empty-groups';
|
|
10
|
+
import { sortByName } from '../../utils/sort-by-name';
|
|
11
|
+
import { toHumanReadable } from '../../utils/to-human-readable';
|
|
10
12
|
import { useBookmarkComponentContext } from '../BookmarkProvider';
|
|
11
13
|
import { from } from 'rxjs';
|
|
12
14
|
Icon.add({
|
|
@@ -16,13 +18,20 @@ Icon.add({
|
|
|
16
18
|
close,
|
|
17
19
|
update,
|
|
18
20
|
});
|
|
21
|
+
/**
|
|
22
|
+
* Renders bookmark groups as sections of rows with edit/share/delete actions.
|
|
23
|
+
*
|
|
24
|
+
* @param props - The component's props
|
|
25
|
+
* @returns The section list
|
|
26
|
+
*/
|
|
19
27
|
export const SectionList = ({ bookmarkGroups }) => {
|
|
20
28
|
// const { deleteBookmarkById, updateBookmark, removeBookmarkFavorite } = useBookmark();
|
|
21
29
|
const { provider, currentApp, showEditBookmark, addBookmarkToClipboard } = useBookmarkComponentContext();
|
|
22
|
-
// TODO
|
|
30
|
+
// TODO(#5095): should be removed when bookmark has property for isOwner
|
|
23
31
|
const user = useCurrentUser();
|
|
24
32
|
const [isMenuByIdOpen, setIsMenuByIdOpen] = useState('');
|
|
25
33
|
const createMenuOptions = useCallback((bookmark) => {
|
|
34
|
+
// Without a provider there are no actions that can be performed on the bookmark
|
|
26
35
|
if (!provider)
|
|
27
36
|
return [];
|
|
28
37
|
const appKey = currentApp?.appKey;
|
|
@@ -36,6 +45,7 @@ export const SectionList = ({ bookmarkGroups }) => {
|
|
|
36
45
|
},
|
|
37
46
|
Icon: _jsx(Icon, { name: "share" }),
|
|
38
47
|
};
|
|
48
|
+
// Only the bookmark owner is allowed to edit, update, remove, or share it
|
|
39
49
|
if (isOwner) {
|
|
40
50
|
const ownerOptions = [
|
|
41
51
|
{
|
|
@@ -50,7 +60,7 @@ export const SectionList = ({ bookmarkGroups }) => {
|
|
|
50
60
|
name: 'Update with current view',
|
|
51
61
|
disabled: appKey !== bookmark.appKey,
|
|
52
62
|
onClick: () => {
|
|
53
|
-
// TODO: add success and failure message
|
|
63
|
+
// TODO(#5089): add success and failure message
|
|
54
64
|
from(provider.updateBookmark(bookmark.id, undefined, {
|
|
55
65
|
excludePayloadGeneration: false,
|
|
56
66
|
})).subscribe({
|
|
@@ -68,7 +78,7 @@ export const SectionList = ({ bookmarkGroups }) => {
|
|
|
68
78
|
name: 'Remove',
|
|
69
79
|
disabled: false,
|
|
70
80
|
onClick: () => {
|
|
71
|
-
// TODO: add success and failure message
|
|
81
|
+
// TODO(#5089): add success and failure message
|
|
72
82
|
from(provider.deleteBookmark(bookmark.id)).subscribe({
|
|
73
83
|
error(err) {
|
|
74
84
|
console.error('Failed to remove bookmark', err);
|
|
@@ -88,6 +98,7 @@ export const SectionList = ({ bookmarkGroups }) => {
|
|
|
88
98
|
isShared: !bookmark.isShared,
|
|
89
99
|
})).subscribe({
|
|
90
100
|
next(value) {
|
|
101
|
+
// Copy the bookmark URL to the clipboard once it becomes shared
|
|
91
102
|
if (value.isShared) {
|
|
92
103
|
addBookmarkToClipboard(value.id);
|
|
93
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionList.js","sourceRoot":"","sources":["../../../../src/components/sectionList/SectionList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAmB,GAAG,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SectionList.js","sourceRoot":"","sources":["../../../../src/components/sectionList/SectionList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Icon } from '@equinor/eds-core-react';
|
|
3
3
|
import { tokens } from '@equinor/eds-tokens';
|
|
4
4
|
import { useFramework } from '@equinor/fusion-framework-react';
|
|
@@ -17,6 +17,12 @@ const Styled = {
|
|
|
17
17
|
text-align: right;
|
|
18
18
|
`,
|
|
19
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* Displays a "shared by" indicator when a bookmark was created by another user.
|
|
22
|
+
*
|
|
23
|
+
* @param props - The component's props
|
|
24
|
+
* @returns The shared icon, or nothing when the current user created the bookmark
|
|
25
|
+
*/
|
|
20
26
|
export const SharedIcon = ({ createdBy, createdById }) => {
|
|
21
27
|
const myId = useFramework().modules.auth.account?.localAccountId;
|
|
22
28
|
const isMe = createdById === myId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SharedIcon.js","sourceRoot":"","sources":["../../../../src/components/shared/SharedIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,MAAM,GAAG;IACb,GAAG,EAAE,MAAM,CAAC,GAAG,CAAA;;;;KAIZ;IACH,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;;;;;;KAMhB;CACJ,CAAC;AAOF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAmB,EAAE,EAAE;IACxE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjE,MAAM,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;IAElC,OAAO,CACL,MAAC,MAAM,CAAC,GAAG,eACR,CAAC,IAAI,IAAI,MAAC,MAAM,CAAC,SAAS,6BAAY,SAAS,IAAoB,EACpE,KAAC,IAAI,IACH,IAAI,EAAC,OAAO,EACZ,KAAK,EACH,IAAI;oBACF,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG;oBAChD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,GAEpD,IACS,CACd,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"SharedIcon.js","sourceRoot":"","sources":["../../../../src/components/shared/SharedIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,MAAM,GAAG;IACb,GAAG,EAAE,MAAM,CAAC,GAAG,CAAA;;;;KAIZ;IACH,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;;;;;;KAMhB;CACJ,CAAC;AAOF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAmB,EAAE,EAAE;IACxE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjE,MAAM,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;IAElC,OAAO,CACL,MAAC,MAAM,CAAC,GAAG,eACR,CAAC,IAAI,IAAI,MAAC,MAAM,CAAC,SAAS,6BAAY,SAAS,IAAoB,EACpE,KAAC,IAAI,IACH,IAAI,EAAC,OAAO,EACZ,KAAK,EACH,IAAI;oBACF,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG;oBAChD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,GAEpD,IACS,CACd,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -4,6 +4,12 @@ const groupingModes = {
|
|
|
4
4
|
'Created by': (item) => item.createdBy.name,
|
|
5
5
|
'Group by Context': (item) => item?.context?.name ?? 'Unknown',
|
|
6
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* Hook for grouping and searching bookmarks by app, creator, or context.
|
|
9
|
+
*
|
|
10
|
+
* @param bookmarks - The bookmarks to group and search
|
|
11
|
+
* @returns The grouped bookmarks along with the search text and grouping key state/setters
|
|
12
|
+
*/
|
|
7
13
|
export const useBookmarkGrouping = (bookmarks) => {
|
|
8
14
|
const [searchText, setSearchText] = useState(null);
|
|
9
15
|
const [groupByKey, setGroupBy] = useState('Group by app');
|
|
@@ -18,20 +24,27 @@ export const useBookmarkGrouping = (bookmarks) => {
|
|
|
18
24
|
};
|
|
19
25
|
};
|
|
20
26
|
const groupBy = (array, getKey, searchText, field) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
// Treat a missing array as an empty one so downstream calls are safe
|
|
28
|
+
const items = array ?? [];
|
|
29
|
+
// Collect the key for every item
|
|
30
|
+
const keys = items.map(getKey);
|
|
31
|
+
// Deduplicate to get the unique set of group keys, preserving first-seen order
|
|
32
|
+
const uniqueKeys = keys.filter((v, i, a) => a.indexOf(v) === i);
|
|
33
|
+
// Build a group entry for each unique key
|
|
34
|
+
const groups = uniqueKeys.map((groupingProperty) => {
|
|
35
|
+
// Only include values in this group whose key matches
|
|
36
|
+
const matchingValues = array.filter((s) => getKey(s) === groupingProperty);
|
|
37
|
+
// Then narrow those matches down by the search-text filter
|
|
38
|
+
const values = matchingValues.filter((s) => {
|
|
29
39
|
const fieldData = s[field];
|
|
40
|
+
// Only apply search-text filtering to string fields
|
|
30
41
|
if (typeof fieldData === 'string' && searchText) {
|
|
31
42
|
return fieldData.includes(searchText);
|
|
32
43
|
}
|
|
33
44
|
return true;
|
|
34
|
-
})
|
|
35
|
-
|
|
45
|
+
});
|
|
46
|
+
return { groupingProperty, values };
|
|
47
|
+
});
|
|
48
|
+
return groups;
|
|
36
49
|
};
|
|
37
50
|
//# sourceMappingURL=useBookmarkGrouping.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBookmarkGrouping.js","sourceRoot":"","sources":["../../../src/hooks/useBookmarkGrouping.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIjC,MAAM,aAAa,GAAiE;IAClF,cAAc,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;IAC1D,YAAY,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI;IAChE,kBAAkB,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,SAAS;CAC3E,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAqB,EAAE,EAAE;IAC3D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAElE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA6B,cAAc,CAAC,CAAC;IAEtF,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/F,OAAO;QACL,UAAU;QACV,aAAa;QACb,UAAU;QACV,cAAc;QACd,aAAa;QACb,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CACd,KAAU,EACV,MAA2B,EAC3B,UAAyB,EACzB,KAAc,EACd,EAAE;IACF,
|
|
1
|
+
{"version":3,"file":"useBookmarkGrouping.js","sourceRoot":"","sources":["../../../src/hooks/useBookmarkGrouping.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIjC,MAAM,aAAa,GAAiE;IAClF,cAAc,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;IAC1D,YAAY,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI;IAChE,kBAAkB,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,SAAS;CAC3E,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAqB,EAAE,EAAE;IAC3D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAElE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA6B,cAAc,CAAC,CAAC;IAEtF,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/F,OAAO;QACL,UAAU;QACV,aAAa;QACb,UAAU;QACV,cAAc;QACd,aAAa;QACb,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CACd,KAAU,EACV,MAA2B,EAC3B,UAAyB,EACzB,KAAc,EACd,EAAE;IACF,qEAAqE;IACrE,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IAC1B,iCAAiC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,+EAA+E;IAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,0CAA0C;IAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE;QACjD,sDAAsD;QACtD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC;QAC3E,2DAA2D;QAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3B,oDAAoD;YACpD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAChD,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACxC,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-built React UI components for bookmark management.
|
|
3
|
+
*
|
|
4
|
+
* Provides the {@link Bookmark} list component and {@link BookmarkProvider}
|
|
5
|
+
* context wrapper with built-in create, edit, and import modals plus filtering controls.
|
|
6
|
+
*
|
|
7
|
+
* For bookmark hooks without UI, see `@equinor/fusion-framework-react-app/bookmark`.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
1
11
|
export { Bookmark } from './components/Bookmark';
|
|
2
12
|
export { BookmarkProvider, useBookmarkComponentContext } from './components/BookmarkProvider';
|
|
3
13
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"append-bookmark-id-to-url.js","sourceRoot":"","sources":["../../../src/utils/append-bookmark-id-to-url.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAU,EAAU,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-empty-groups.js","sourceRoot":"","sources":["../../../src/utils/filter-empty-groups.ts"],"names":[],"mappings":"AAEA,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/E,kFAAkF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-by-name.js","sourceRoot":"","sources":["../../../src/utils/sort-by-name.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAsB,EAAE,CAAsB,EAAE,EAAE,CAC3E,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-human-readable.js","sourceRoot":"","sources":["../../../src/utils/to-human-readable.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CAC7C,GAAG;KACA,KAAK,CAAC,GAAG,CAAC;IACX,+DAA+D;KAC9D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,IAAI,CAAC,GAAG,CAAC,CAAC"}
|
package/dist/esm/version.js
CHANGED