@bigbinary/neeto-molecules 5.3.28 → 5.3.30
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/dist/FloatingActionMenu.js +1 -1
- package/dist/Sidebar.js +2 -2
- package/dist/Sidebar.js.map +1 -1
- package/dist/StickyRibbonsContainer.js +27 -18
- package/dist/StickyRibbonsContainer.js.map +1 -1
- package/dist/cjs/FloatingActionMenu.js +1 -1
- package/dist/cjs/Sidebar.js +2 -2
- package/dist/cjs/Sidebar.js.map +1 -1
- package/dist/cjs/StickyRibbonsContainer.js +29 -20
- package/dist/cjs/StickyRibbonsContainer.js.map +1 -1
- package/dist/cjs/{useWhatsNewChangesCount-C9DSz8TY.js → useWhatsNewChangesCount-BzQTamII.js} +6 -12
- package/dist/cjs/useWhatsNewChangesCount-BzQTamII.js.map +1 -0
- package/dist/cjs/{useWhatsNewChangesCount-Bx_vHoMO.js → useWhatsNewChangesCount-CLo5AJny.js} +6 -12
- package/dist/cjs/useWhatsNewChangesCount-CLo5AJny.js.map +1 -0
- package/dist/cjs/v2/FloatingActionMenu.js +1 -1
- package/dist/cjs/v2/Sidebar.js +2 -2
- package/dist/cjs/v2/Sidebar.js.map +1 -1
- package/dist/cjs/v2/StickyRibbonsContainer.js +29 -19
- package/dist/cjs/v2/StickyRibbonsContainer.js.map +1 -1
- package/dist/{useWhatsNewChangesCount-Cy7rXdSf.js → useWhatsNewChangesCount-BaLLrXk5.js} +6 -12
- package/dist/useWhatsNewChangesCount-BaLLrXk5.js.map +1 -0
- package/dist/{useWhatsNewChangesCount-5ChErwhP.js → useWhatsNewChangesCount-DLIMw7dA.js} +6 -12
- package/dist/useWhatsNewChangesCount-DLIMw7dA.js.map +1 -0
- package/dist/v2/FloatingActionMenu.js +1 -1
- package/dist/v2/Sidebar.js +2 -2
- package/dist/v2/Sidebar.js.map +1 -1
- package/dist/v2/StickyRibbonsContainer.js +27 -17
- package/dist/v2/StickyRibbonsContainer.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/useWhatsNewChangesCount-Bx_vHoMO.js.map +0 -1
- package/dist/cjs/useWhatsNewChangesCount-C9DSz8TY.js.map +0 -1
- package/dist/useWhatsNewChangesCount-5ChErwhP.js.map +0 -1
- package/dist/useWhatsNewChangesCount-Cy7rXdSf.js.map +0 -1
|
@@ -28,7 +28,8 @@ var NEETO_AUTH_BILLING_INFO_URL = "/neeto_sso/api/v1/subscription/billing";
|
|
|
28
28
|
// Shared source of truth for the neetoEngage changelog unread count.
|
|
29
29
|
//
|
|
30
30
|
// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`
|
|
31
|
-
//
|
|
31
|
+
// whenever it changes (on load and each time entries are marked read). Opening
|
|
32
|
+
// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the
|
|
32
33
|
// Sidebar surface this count, so this module installs a SINGLE set of
|
|
33
34
|
// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value
|
|
34
35
|
// out to every subscribed component. Installation happens on the first
|
|
@@ -40,7 +41,6 @@ var currentCount = null;
|
|
|
40
41
|
var subscribers = new Set();
|
|
41
42
|
var isInstalled = false;
|
|
42
43
|
var previousOnReceiveData;
|
|
43
|
-
var previousOnShow;
|
|
44
44
|
var notify = function notify() {
|
|
45
45
|
return subscribers.forEach(function (setCount) {
|
|
46
46
|
return setCount(currentCount);
|
|
@@ -51,7 +51,6 @@ var install = function install() {
|
|
|
51
51
|
isInstalled = true;
|
|
52
52
|
var existing = window.Nv || {};
|
|
53
53
|
previousOnReceiveData = existing.onReceiveData;
|
|
54
|
-
previousOnShow = existing.onShow;
|
|
55
54
|
window.Nv = Object.assign(existing, {
|
|
56
55
|
onReceiveData: function onReceiveData(data) {
|
|
57
56
|
var _previousOnReceiveDat;
|
|
@@ -62,12 +61,6 @@ var install = function install() {
|
|
|
62
61
|
currentCount = data.unreadCount || null;
|
|
63
62
|
notify();
|
|
64
63
|
}
|
|
65
|
-
},
|
|
66
|
-
onShow: function onShow() {
|
|
67
|
-
var _previousOnShow;
|
|
68
|
-
(_previousOnShow = previousOnShow) === null || _previousOnShow === void 0 || _previousOnShow();
|
|
69
|
-
currentCount = null;
|
|
70
|
-
notify();
|
|
71
64
|
}
|
|
72
65
|
});
|
|
73
66
|
};
|
|
@@ -76,9 +69,10 @@ var uninstall = function uninstall() {
|
|
|
76
69
|
isInstalled = false;
|
|
77
70
|
if (window.Nv) {
|
|
78
71
|
window.Nv.onReceiveData = previousOnReceiveData;
|
|
79
|
-
window.Nv.onShow = previousOnShow;
|
|
80
72
|
}
|
|
81
|
-
currentCount
|
|
73
|
+
// currentCount is kept: the widget only reports it on page load and after a
|
|
74
|
+
// "Mark as read", so a surface that remounts (e.g. after navigating to a page
|
|
75
|
+
// without a sidebar and back) would otherwise lose it until a full reload.
|
|
82
76
|
};
|
|
83
77
|
var useWhatsNewChangesCount = function useWhatsNewChangesCount() {
|
|
84
78
|
var _useState = useState(currentCount),
|
|
@@ -98,4 +92,4 @@ var useWhatsNewChangesCount = function useWhatsNewChangesCount() {
|
|
|
98
92
|
};
|
|
99
93
|
|
|
100
94
|
export { APP_THEME_LOCALSTORAGE_KEY as A, DELETE_WORKSPACE_URL as D, ENGAGE_WIDGET_TRIGGER_ID as E, MY_ORGANIZATION_URL as M, NEETO_AUTH_BILLING_INFO_URL as N, THEMES as T, DEFAULT_MENU_LINK_PROPS as a, useWhatsNewChangesCount as u };
|
|
101
|
-
//# sourceMappingURL=useWhatsNewChangesCount-
|
|
95
|
+
//# sourceMappingURL=useWhatsNewChangesCount-BaLLrXk5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWhatsNewChangesCount-BaLLrXk5.js","sources":["../src/components/FloatingActionMenu/constants.js","../src/components/FloatingActionMenu/hooks/useWhatsNewChangesCount.js"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const MY_ORGANIZATION_URL = \"/auth/organization/edit\";\nexport const DELETE_WORKSPACE_URL = \"/auth/organization/delete\";\nexport const ENGAGE_WIDGET_TRIGGER_ID = \"neetoengage-trigger\";\n\nexport const DEFAULT_MENU_LINK_PROPS = {\n engageProps: {\n id: ENGAGE_WIDGET_TRIGGER_ID,\n label: t(\"neetoMolecules.sidebar.helpLinks.whatsNew\"),\n \"data-testid\": \"help-link-engage-button\",\n },\n keyboardShortcutProps: {\n label: t(\"neetoMolecules.sidebar.helpLinks.keyboardShortcuts\"),\n \"data-testid\": \"help-link-keyboard-shortcut-button\",\n },\n};\n\n// Theme switcher\nexport const APP_THEME_LOCALSTORAGE_KEY = \"appTheme\";\n\nexport const THEMES = {\n LIGHT: \"neeto-ui-theme--light\",\n DARK: \"neeto-ui-theme--dark\",\n};\n\nexport const NEETO_AUTH_BILLING_INFO_URL =\n \"/neeto_sso/api/v1/subscription/billing\";\n","import { useEffect, useState } from \"react\";\n\n// Shared source of truth for the neetoEngage changelog unread count.\n//\n// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`\n// whenever it changes (on load and each time entries are marked read). Opening\n// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the\n// Sidebar surface this count, so this module installs a SINGLE set of\n// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value\n// out to every subscribed component. Installation happens on the first\n// subscriber and is torn down only when the last one unsubscribes — so\n// interleaved mount/unmount of the two surfaces can never leave a stale handler\n// on the global object.\n\nlet currentCount = null;\nconst subscribers = new Set();\nlet isInstalled = false;\nlet previousOnReceiveData;\n\nconst notify = () => subscribers.forEach(setCount => setCount(currentCount));\n\nconst install = () => {\n if (isInstalled) return;\n isInstalled = true;\n\n const existing = window.Nv || {};\n previousOnReceiveData = existing.onReceiveData;\n\n window.Nv = Object.assign(existing, {\n onReceiveData: data => {\n previousOnReceiveData?.(data);\n // Only react to a numeric unreadCount; `0` clears the badge (a non-zero\n // count would otherwise stay stale until the pane is opened).\n if (typeof data?.unreadCount === \"number\") {\n currentCount = data.unreadCount || null;\n notify();\n }\n },\n });\n};\n\nconst uninstall = () => {\n if (!isInstalled) return;\n isInstalled = false;\n\n if (window.Nv) {\n window.Nv.onReceiveData = previousOnReceiveData;\n }\n // currentCount is kept: the widget only reports it on page load and after a\n // \"Mark as read\", so a surface that remounts (e.g. after navigating to a page\n // without a sidebar and back) would otherwise lose it until a full reload.\n};\n\nconst useWhatsNewChangesCount = () => {\n const [changesCount, setChangesCount] = useState(currentCount);\n\n useEffect(() => {\n install();\n subscribers.add(setChangesCount);\n setChangesCount(currentCount);\n\n return () => {\n subscribers.delete(setChangesCount);\n if (subscribers.size === 0) uninstall();\n };\n }, []);\n\n return changesCount;\n};\n\nexport default useWhatsNewChangesCount;\n"],"names":["MY_ORGANIZATION_URL","DELETE_WORKSPACE_URL","ENGAGE_WIDGET_TRIGGER_ID","DEFAULT_MENU_LINK_PROPS","engageProps","id","label","t","keyboardShortcutProps","APP_THEME_LOCALSTORAGE_KEY","THEMES","LIGHT","DARK","NEETO_AUTH_BILLING_INFO_URL","currentCount","subscribers","Set","isInstalled","previousOnReceiveData","notify","forEach","setCount","install","existing","window","Nv","onReceiveData","Object","assign","data","_previousOnReceiveDat","unreadCount","uninstall","useWhatsNewChangesCount","_useState","useState","_useState2","_slicedToArray","changesCount","setChangesCount","useEffect","add","size"],"mappings":"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"}
|
|
@@ -38,7 +38,8 @@ var THEME_ICON_BASE = "transition-transform duration-300 ease-out";
|
|
|
38
38
|
// Shared source of truth for the neetoEngage changelog unread count.
|
|
39
39
|
//
|
|
40
40
|
// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`
|
|
41
|
-
//
|
|
41
|
+
// whenever it changes (on load and each time entries are marked read). Opening
|
|
42
|
+
// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the
|
|
42
43
|
// Sidebar surface this count, so this module installs a SINGLE set of
|
|
43
44
|
// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value
|
|
44
45
|
// out to every subscribed component. Installation happens on the first
|
|
@@ -50,7 +51,6 @@ var currentCount = null;
|
|
|
50
51
|
var subscribers = new Set();
|
|
51
52
|
var isInstalled = false;
|
|
52
53
|
var previousOnReceiveData;
|
|
53
|
-
var previousOnShow;
|
|
54
54
|
var notify = function notify() {
|
|
55
55
|
return subscribers.forEach(function (setCount) {
|
|
56
56
|
return setCount(currentCount);
|
|
@@ -61,7 +61,6 @@ var install = function install() {
|
|
|
61
61
|
isInstalled = true;
|
|
62
62
|
var existing = window.Nv || {};
|
|
63
63
|
previousOnReceiveData = existing.onReceiveData;
|
|
64
|
-
previousOnShow = existing.onShow;
|
|
65
64
|
window.Nv = Object.assign(existing, {
|
|
66
65
|
onReceiveData: function onReceiveData(data) {
|
|
67
66
|
var _previousOnReceiveDat;
|
|
@@ -72,12 +71,6 @@ var install = function install() {
|
|
|
72
71
|
currentCount = data.unreadCount || null;
|
|
73
72
|
notify();
|
|
74
73
|
}
|
|
75
|
-
},
|
|
76
|
-
onShow: function onShow() {
|
|
77
|
-
var _previousOnShow;
|
|
78
|
-
(_previousOnShow = previousOnShow) === null || _previousOnShow === void 0 || _previousOnShow();
|
|
79
|
-
currentCount = null;
|
|
80
|
-
notify();
|
|
81
74
|
}
|
|
82
75
|
});
|
|
83
76
|
};
|
|
@@ -86,9 +79,10 @@ var uninstall = function uninstall() {
|
|
|
86
79
|
isInstalled = false;
|
|
87
80
|
if (window.Nv) {
|
|
88
81
|
window.Nv.onReceiveData = previousOnReceiveData;
|
|
89
|
-
window.Nv.onShow = previousOnShow;
|
|
90
82
|
}
|
|
91
|
-
currentCount
|
|
83
|
+
// currentCount is kept: the widget only reports it on page load and after a
|
|
84
|
+
// "Mark as read", so a surface that remounts (e.g. after navigating to a page
|
|
85
|
+
// without a sidebar and back) would otherwise lose it until a full reload.
|
|
92
86
|
};
|
|
93
87
|
var useWhatsNewChangesCount = function useWhatsNewChangesCount() {
|
|
94
88
|
var _useState = useState(currentCount),
|
|
@@ -108,4 +102,4 @@ var useWhatsNewChangesCount = function useWhatsNewChangesCount() {
|
|
|
108
102
|
};
|
|
109
103
|
|
|
110
104
|
export { APP_THEME_LOCALSTORAGE_KEY as A, BILLING_URL as B, DELETE_WORKSPACE_URL as D, ENGAGE_WIDGET_TRIGGER_ID as E, LEGACY_THEMES as L, MENU_ITEM_CLASSES as M, NEETO_AUTH_BILLING_INFO_URL as N, THEMES as T, THEME_ICON_BASE as a, THEME_BUTTON_BASE as b, MY_ORGANIZATION_URL as c, DEFAULT_MENU_LINK_PROPS as d, useWhatsNewChangesCount as u };
|
|
111
|
-
//# sourceMappingURL=useWhatsNewChangesCount-
|
|
105
|
+
//# sourceMappingURL=useWhatsNewChangesCount-DLIMw7dA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWhatsNewChangesCount-DLIMw7dA.js","sources":["../src/v2/components/FloatingActionMenu/constants.js","../src/v2/components/FloatingActionMenu/hooks/useWhatsNewChangesCount.js"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const MY_ORGANIZATION_URL = \"/auth/organization/edit\";\nexport const BILLING_URL = \"/auth/admin_billing\";\nexport const DELETE_WORKSPACE_URL = \"/auth/organization/delete\";\nexport const ENGAGE_WIDGET_TRIGGER_ID = \"neetoengage-trigger\";\n\nexport const DEFAULT_MENU_LINK_PROPS = {\n engageProps: {\n id: ENGAGE_WIDGET_TRIGGER_ID,\n label: t(\"neetoMolecules.sidebar.helpLinks.whatsNew\"),\n \"data-testid\": \"help-link-engage-button\",\n },\n keyboardShortcutProps: {\n label: t(\"neetoMolecules.sidebar.helpLinks.keyboardShortcuts\"),\n \"data-testid\": \"help-link-keyboard-shortcut-button\",\n },\n};\n\n// Theme switcher\nexport const APP_THEME_LOCALSTORAGE_KEY = \"appTheme\";\n\nexport const THEMES = { LIGHT: \"light\", DARK: \"dark\" };\n\n// Legacy neetoUI theme classes — kept until full migration is complete.\nexport const LEGACY_THEMES = {\n LIGHT: \"neeto-ui-theme--light\",\n DARK: \"neeto-ui-theme--dark\",\n};\n\nexport const NEETO_AUTH_BILLING_INFO_URL =\n \"/neeto_sso/api/v1/subscription/billing\";\n\nexport const MENU_ITEM_CLASSES =\n \"gap-2.5 px-2.5 py-2 font-medium [&>[data-slot=menu-item-prefix]>svg]:!size-[18px] [&>[data-slot=menu-item-suffix]>svg]:!size-[18px]\";\n\nexport const THEME_BUTTON_BASE =\n \"relative z-10 flex items-center justify-center gap-1 rounded-md px-2.5 py-1.5 text-xs font-medium transition-colors focus-visible:outline-none\";\n\nexport const THEME_ICON_BASE = \"transition-transform duration-300 ease-out\";\n","import { useEffect, useState } from \"react\";\n\n// Shared source of truth for the neetoEngage changelog unread count.\n//\n// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`\n// whenever it changes (on load and each time entries are marked read). Opening\n// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the\n// Sidebar surface this count, so this module installs a SINGLE set of\n// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value\n// out to every subscribed component. Installation happens on the first\n// subscriber and is torn down only when the last one unsubscribes — so\n// interleaved mount/unmount of the two surfaces can never leave a stale handler\n// on the global object.\n\nlet currentCount = null;\nconst subscribers = new Set();\nlet isInstalled = false;\nlet previousOnReceiveData;\n\nconst notify = () => subscribers.forEach(setCount => setCount(currentCount));\n\nconst install = () => {\n if (isInstalled) return;\n isInstalled = true;\n\n const existing = window.Nv || {};\n previousOnReceiveData = existing.onReceiveData;\n\n window.Nv = Object.assign(existing, {\n onReceiveData: data => {\n previousOnReceiveData?.(data);\n // Only react to a numeric unreadCount; `0` clears the badge (a non-zero\n // count would otherwise stay stale until the pane is opened).\n if (typeof data?.unreadCount === \"number\") {\n currentCount = data.unreadCount || null;\n notify();\n }\n },\n });\n};\n\nconst uninstall = () => {\n if (!isInstalled) return;\n isInstalled = false;\n\n if (window.Nv) {\n window.Nv.onReceiveData = previousOnReceiveData;\n }\n // currentCount is kept: the widget only reports it on page load and after a\n // \"Mark as read\", so a surface that remounts (e.g. after navigating to a page\n // without a sidebar and back) would otherwise lose it until a full reload.\n};\n\nconst useWhatsNewChangesCount = () => {\n const [changesCount, setChangesCount] = useState(currentCount);\n\n useEffect(() => {\n install();\n subscribers.add(setChangesCount);\n setChangesCount(currentCount);\n\n return () => {\n subscribers.delete(setChangesCount);\n if (subscribers.size === 0) uninstall();\n };\n }, []);\n\n return changesCount;\n};\n\nexport default useWhatsNewChangesCount;\n"],"names":["MY_ORGANIZATION_URL","BILLING_URL","DELETE_WORKSPACE_URL","ENGAGE_WIDGET_TRIGGER_ID","DEFAULT_MENU_LINK_PROPS","engageProps","id","label","t","keyboardShortcutProps","APP_THEME_LOCALSTORAGE_KEY","THEMES","LIGHT","DARK","LEGACY_THEMES","NEETO_AUTH_BILLING_INFO_URL","MENU_ITEM_CLASSES","THEME_BUTTON_BASE","THEME_ICON_BASE","currentCount","subscribers","Set","isInstalled","previousOnReceiveData","notify","forEach","setCount","install","existing","window","Nv","onReceiveData","Object","assign","data","_previousOnReceiveDat","unreadCount","uninstall","useWhatsNewChangesCount","_useState","useState","_useState2","_slicedToArray","changesCount","setChangesCount","useEffect","add","size"],"mappings":";;;;AAEO,IAAMA,mBAAmB,GAAG;AAC5B,IAAMC,WAAW,GAAG;AACpB,IAAMC,oBAAoB,GAAG;AAC7B,IAAMC,wBAAwB,GAAG;AAEjC,IAAMC,uBAAuB,GAAG;AACrCC,EAAAA,WAAW,EAAE;AACXC,IAAAA,EAAE,EAAEH,wBAAwB;AAC5BI,IAAAA,KAAK,EAAEC,CAAC,CAAC,2CAA2C,CAAC;AACrD,IAAA,aAAa,EAAE;GAChB;AACDC,EAAAA,qBAAqB,EAAE;AACrBF,IAAAA,KAAK,EAAEC,CAAC,CAAC,oDAAoD,CAAC;AAC9D,IAAA,aAAa,EAAE;AACjB;AACF;;AAEA;AACO,IAAME,0BAA0B,GAAG;AAEnC,IAAMC,MAAM,GAAG;AAAEC,EAAAA,KAAK,EAAE,OAAO;AAAEC,EAAAA,IAAI,EAAE;AAAO;;AAErD;AACO,IAAMC,aAAa,GAAG;AAC3BF,EAAAA,KAAK,EAAE,uBAAuB;AAC9BC,EAAAA,IAAI,EAAE;AACR;AAEO,IAAME,2BAA2B,GACtC;AAEK,IAAMC,iBAAiB,GAC5B;AAEK,IAAMC,iBAAiB,GAC5B;AAEK,IAAMC,eAAe,GAAG;;ACrC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIC,YAAY,GAAG,IAAI;AACvB,IAAMC,WAAW,GAAG,IAAIC,GAAG,EAAE;AAC7B,IAAIC,WAAW,GAAG,KAAK;AACvB,IAAIC,qBAAqB;AAEzB,IAAMC,MAAM,GAAG,SAATA,MAAMA,GAAA;AAAA,EAAA,OAASJ,WAAW,CAACK,OAAO,CAAC,UAAAC,QAAQ,EAAA;IAAA,OAAIA,QAAQ,CAACP,YAAY,CAAC;EAAA,CAAA,CAAC;AAAA,CAAA;AAE5E,IAAMQ,OAAO,GAAG,SAAVA,OAAOA,GAAS;AACpB,EAAA,IAAIL,WAAW,EAAE;AACjBA,EAAAA,WAAW,GAAG,IAAI;AAElB,EAAA,IAAMM,QAAQ,GAAGC,MAAM,CAACC,EAAE,IAAI,EAAE;EAChCP,qBAAqB,GAAGK,QAAQ,CAACG,aAAa;EAE9CF,MAAM,CAACC,EAAE,GAAGE,MAAM,CAACC,MAAM,CAACL,QAAQ,EAAE;AAClCG,IAAAA,aAAa,EAAE,SAAfA,aAAaA,CAAEG,IAAI,EAAI;AAAA,MAAA,IAAAC,qBAAA;MACrB,CAAAA,qBAAA,GAAAZ,qBAAqB,MAAA,IAAA,IAAAY,qBAAA,KAAA,MAAA,IAArBA,qBAAA,CAAwBD,IAAI,CAAC;AAC7B;AACA;MACA,IAAI,QAAOA,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJA,IAAI,CAAEE,WAAW,CAAA,KAAK,QAAQ,EAAE;AACzCjB,QAAAA,YAAY,GAAGe,IAAI,CAACE,WAAW,IAAI,IAAI;AACvCZ,QAAAA,MAAM,EAAE;AACV,MAAA;AACF,IAAA;AACF,GAAC,CAAC;AACJ,CAAC;AAED,IAAMa,SAAS,GAAG,SAAZA,SAASA,GAAS;EACtB,IAAI,CAACf,WAAW,EAAE;AAClBA,EAAAA,WAAW,GAAG,KAAK;EAEnB,IAAIO,MAAM,CAACC,EAAE,EAAE;AACbD,IAAAA,MAAM,CAACC,EAAE,CAACC,aAAa,GAAGR,qBAAqB;AACjD,EAAA;AACA;AACA;AACA;AACF,CAAC;AAED,IAAMe,uBAAuB,GAAG,SAA1BA,uBAAuBA,GAAS;AACpC,EAAA,IAAAC,SAAA,GAAwCC,QAAQ,CAACrB,YAAY,CAAC;IAAAsB,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAvDI,IAAAA,YAAY,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,eAAe,GAAAH,UAAA,CAAA,CAAA,CAAA;AAEpCI,EAAAA,SAAS,CAAC,YAAM;AACdlB,IAAAA,OAAO,EAAE;AACTP,IAAAA,WAAW,CAAC0B,GAAG,CAACF,eAAe,CAAC;IAChCA,eAAe,CAACzB,YAAY,CAAC;AAE7B,IAAA,OAAO,YAAM;MACXC,WAAW,CAAA,QAAA,CAAO,CAACwB,eAAe,CAAC;MACnC,IAAIxB,WAAW,CAAC2B,IAAI,KAAK,CAAC,EAAEV,SAAS,EAAE;IACzC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AAEN,EAAA,OAAOM,YAAY;AACrB;;;;"}
|
|
@@ -23,7 +23,7 @@ import axios from 'axios';
|
|
|
23
23
|
import { S as Search } from '../search-H0uYy0W-.js';
|
|
24
24
|
import { g as getNeetoUrl, a as getProductBillingUrl } from '../urls-DC61u0b2.js';
|
|
25
25
|
import useBreakpoints from '@bigbinary/neeto-commons-frontend/v2/react-utils/useBreakpoints';
|
|
26
|
-
import { M as MENU_ITEM_CLASSES, D as DELETE_WORKSPACE_URL, A as APP_THEME_LOCALSTORAGE_KEY, T as THEMES, L as LEGACY_THEMES, a as THEME_ICON_BASE, b as THEME_BUTTON_BASE, c as MY_ORGANIZATION_URL, B as BILLING_URL, N as NEETO_AUTH_BILLING_INFO_URL, u as useWhatsNewChangesCount, d as DEFAULT_MENU_LINK_PROPS } from '../useWhatsNewChangesCount-
|
|
26
|
+
import { M as MENU_ITEM_CLASSES, D as DELETE_WORKSPACE_URL, A as APP_THEME_LOCALSTORAGE_KEY, T as THEMES, L as LEGACY_THEMES, a as THEME_ICON_BASE, b as THEME_BUTTON_BASE, c as MY_ORGANIZATION_URL, B as BILLING_URL, N as NEETO_AUTH_BILLING_INFO_URL, u as useWhatsNewChangesCount, d as DEFAULT_MENU_LINK_PROPS } from '../useWhatsNewChangesCount-DLIMw7dA.js';
|
|
27
27
|
import { c as createLucideIcon } from '../createLucideIcon--oLqczpc.js';
|
|
28
28
|
import { C as CircleQuestionMark } from '../circle-question-mark-B807GLZf.js';
|
|
29
29
|
import { C as ChevronRight } from '../chevron-right-CEsVcNLw.js';
|
package/dist/v2/Sidebar.js
CHANGED
|
@@ -17,7 +17,7 @@ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProper
|
|
|
17
17
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
18
18
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
19
19
|
import { DropdownMenu, Badge, Tooltip, Button } from '@bigbinary/neeto-atoms';
|
|
20
|
-
import { u as useWhatsNewChangesCount, E as ENGAGE_WIDGET_TRIGGER_ID } from '../useWhatsNewChangesCount-
|
|
20
|
+
import { u as useWhatsNewChangesCount, E as ENGAGE_WIDGET_TRIGGER_ID } from '../useWhatsNewChangesCount-DLIMw7dA.js';
|
|
21
21
|
import { P as Plus } from '../plus-Bnd2C3yl.js';
|
|
22
22
|
import { E as Ellipsis } from '../ellipsis-BSu1ZIFZ.js';
|
|
23
23
|
import { C as ChevronRight } from '../chevron-right-CEsVcNLw.js';
|
|
@@ -328,7 +328,7 @@ var NavLinks = function NavLinks(_ref) {
|
|
|
328
328
|
"data-testid": "sidebar-whats-new-count"
|
|
329
329
|
}
|
|
330
330
|
});
|
|
331
|
-
var combinedNavLinks = [].concat(_toConsumableArray(showWhatsNew ? [whatsNewNavLink] : []), _toConsumableArray(navLinks), _toConsumableArray(additionalItems));
|
|
331
|
+
var combinedNavLinks = [].concat(_toConsumableArray(showWhatsNew && isPresent(whatsNewCount) ? [whatsNewNavLink] : []), _toConsumableArray(navLinks), _toConsumableArray(additionalItems));
|
|
332
332
|
return /*#__PURE__*/jsx(SidebarGroup, {
|
|
333
333
|
children: /*#__PURE__*/jsx(SidebarGroupContent, {
|
|
334
334
|
children: /*#__PURE__*/jsxs(SidebarMenu, {
|
package/dist/v2/Sidebar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sources":["../../node_modules/lucide-react/dist/esm/icons/megaphone.mjs","../../src/v2/components/Sidebar/Components/Header.jsx","../../src/v2/components/Sidebar/Components/AddAction.jsx","../../src/v2/components/Sidebar/Components/PinIcon.jsx","../../src/v2/components/Sidebar/Components/UnpinIcon.jsx","../../src/v2/components/Sidebar/Components/MoreDropdown.jsx","../../src/v2/components/Sidebar/Components/NavLinks.jsx","../../src/v2/components/Sidebar/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.24.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z\",\n key: \"q8bfy3\"\n }\n ],\n [\"path\", { d: \"M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14\", key: \"1853fq\" }],\n [\"path\", { d: \"M8 6v8\", key: \"15ugcq\" }]\n];\nconst Megaphone = createLucideIcon(\"megaphone\", __iconNode);\n\nexport { __iconNode, Megaphone as default };\n//# sourceMappingURL=megaphone.mjs.map\n","import { memo } from \"react\";\n\nimport classnames from \"classnames\";\nimport { capitalize } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { Neeto } from \"neetoicons/typeface-logos\";\nimport * as ProductTypefaceLogos from \"neetoicons/typeface-logos\";\nimport { Link } from \"react-router-dom\";\n\nimport { DEFAULT_HOME_PATH, SPECIAL_APP_NAMES } from \"../constants\";\n\nconst Header = ({ customLogo, clearSettingsNav }) => {\n const productName = globalProps.appName.substr(5);\n const normalizedName = (productName || \"\").trim().toLowerCase();\n const specialCase = SPECIAL_APP_NAMES[normalizedName];\n const logoName = specialCase\n ? `Neeto${specialCase}`\n : `Neeto${capitalize(normalizedName)}`;\n const ProductTypefaceLogo = ProductTypefaceLogos[logoName] ?? Neeto;\n const LogoComponent = customLogo ?? ProductTypefaceLogo;\n const isOnboarded = globalProps.user.isOnboarded !== false;\n\n return (\n <div className=\"px-4 py-3\" data-testid=\"sidebar-info\">\n <Link\n to={DEFAULT_HOME_PATH}\n className={classnames(\"mt-2 block w-full py-2\", {\n \"cursor-pointer\": isOnboarded,\n \"pointer-events-none\": !isOnboarded,\n })}\n onClick={clearSettingsNav}\n >\n {globalProps.sidebarTitle ? (\n <span className=\"text-sidebar-foreground text-xl leading-9 font-bold\">\n {globalProps.sidebarTitle}\n </span>\n ) : (\n <LogoComponent className=\"h-9 w-auto max-w-full\" />\n )}\n </Link>\n </div>\n );\n};\n\nexport default memo(Header);\n","import { DropdownMenu } from \"@bigbinary/neeto-atoms\";\nimport { Plus } from \"lucide-react\";\n\nconst AddAction = ({ actions }) => (\n <DropdownMenu\n dropdownProps={{ align: \"end\", side: \"bottom\" }}\n customTarget={\n <span\n className=\"text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-sidebar-ring md:data-[state=open]:bg-sidebar-accent flex aspect-square w-5 shrink-0 cursor-pointer items-center justify-center rounded-md outline-hidden focus-visible:ring-2 md:opacity-0 md:group-focus-within/menu-item:opacity-100 md:group-hover/menu-item:opacity-100 md:data-[state=open]:opacity-100\"\n data-testid=\"add-dropdown-trigger\"\n role=\"button\"\n tabIndex={0}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Plus className=\"size-4\" />\n </span>\n }\n >\n {actions.map(action => (\n <DropdownMenu.MenuItem\n key={action.key}\n onClick={() => {\n action.onClick?.();\n }}\n >\n {action.label}\n </DropdownMenu.MenuItem>\n ))}\n </DropdownMenu>\n);\n\nexport default AddAction;\n","const PinIcon = ({ size, otherProps }) => (\n <svg\n fill=\"currentColor\"\n height={size}\n viewBox=\"0 -960 960 960\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...otherProps}\n >\n <path d=\"m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40zm-286 80h252l-46-46v-314H400v314zm126 0\" />\n </svg>\n);\n\nexport default PinIcon;\n","const UnpinIcon = ({ size, otherProps }) => (\n <svg\n fill=\"currentColor\"\n height={size}\n viewBox=\"0 -960 960 960\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...otherProps}\n >\n <path d=\"m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40z\" />\n </svg>\n);\n\nexport default UnpinIcon;\n","import { Badge, Button, DropdownMenu, Tooltip } from \"@bigbinary/neeto-atoms\";\nimport { SidebarMenuItem } from \"@bigbinary/neeto-atoms/primitives\";\nimport { Ellipsis } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CheckPointNavLinks from \"./CheckPointNavLink\";\nimport PinIcon from \"./PinIcon\";\nimport UnpinIcon from \"./UnpinIcon\";\n\nimport { filterByPermissions } from \"../utils\";\n\nconst MoreDropdown = ({ moreNavLinks, isNavLinkPinned, handleTogglePin }) => {\n const { t } = useTranslation();\n const isRTL = document.documentElement.dir === \"rtl\";\n\n return (\n <SidebarMenuItem>\n <DropdownMenu\n closeOnSelect={false}\n position={isRTL ? \"left-start\" : \"right-start\"}\n customTarget={\n <button\n className=\"text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground flex w-full items-center gap-2 rounded-md p-2 text-sm outline-hidden\"\n data-testid=\"more-nav-links-dropdown-button\"\n >\n <Ellipsis />\n <span className=\"truncate\">{t(\"neetoMolecules.sidebar.more\")}</span>\n </button>\n }\n dropdownProps={{\n className: \"z-[99999] p-0\",\n \"data-testid\": \"more-nav-links-dropdown-menu\",\n }}\n >\n {moreNavLinks.filter(filterByPermissions).map((navLink, index) => {\n const { label, icon, key: navLinkKey, to, onClick, tag } = navLink;\n const IconSVG = icon;\n const isPinned = isNavLinkPinned(navLink);\n\n return (\n <DropdownMenu.MenuItem\n data-testid={label}\n key={navLinkKey || index}\n onSelect={e => e.preventDefault()}\n >\n <CheckPointNavLinks\n {...{ onClick, to }}\n className=\"flex w-full cursor-pointer items-center justify-between gap-2 px-2 py-1\"\n >\n <span className=\"flex min-w-0 flex-grow items-center gap-2\">\n {icon && <IconSVG className=\"flex-shrink-0\" size={20} />}\n <span className=\"flex min-w-0 flex-grow items-center gap-2\">\n {label}\n {tag && <Badge {...tag} />}\n </span>\n </span>\n <Tooltip\n position=\"right\"\n content={\n isPinned\n ? t(\"neetoMolecules.sidebar.unpin\")\n : t(\"neetoMolecules.sidebar.pin\")\n }\n >\n <Button\n className=\"flex-shrink-0\"\n data-testid=\"pin-button\"\n size=\"icon-sm\"\n variant=\"ghost\"\n onClick={event => handleTogglePin(navLink, event)}\n >\n {isPinned ? (\n <UnpinIcon otherProps={{}} size={16} />\n ) : (\n <PinIcon otherProps={{}} size={16} />\n )}\n </Button>\n </Tooltip>\n </CheckPointNavLinks>\n </DropdownMenu.MenuItem>\n );\n })}\n </DropdownMenu>\n </SidebarMenuItem>\n );\n};\n\nexport default MoreDropdown;\n","import { Fragment, useState } from \"react\";\n\nimport { Badge } from \"@bigbinary/neeto-atoms\";\nimport {\n SidebarGroup,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarMenuSub,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { ChevronRight, Megaphone } from \"lucide-react\";\nimport { isNot, hyphenate, isNotEmpty, isPresent } from \"neetocist\";\nimport useLocalStorage from \"neetocommons/v2/react-utils/useLocalStorage\";\nimport { append, is } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation } from \"react-router-dom\";\nimport { ENGAGE_WIDGET_TRIGGER_ID } from \"v2/components/FloatingActionMenu/constants\";\nimport useWhatsNewChangesCount from \"v2/components/FloatingActionMenu/hooks/useWhatsNewChangesCount\";\n\nimport AddAction from \"./AddAction\";\nimport CheckPointNavLinks from \"./CheckPointNavLink\";\nimport MoreDropdown from \"./MoreDropdown\";\nimport SubLinkItem from \"./SubLinkItem\";\n\nimport { PINNED_MORE_NAV_LINKS_KEY } from \"../constants\";\nimport { filterByPermissions } from \"../utils\";\n\nconst renderCount = count => (count > 999 ? \"999+\" : count);\n\nconst NavLinks = ({\n navLinks,\n moreNavLinks,\n isCountsLoading: isCountsLoadingDeprecated,\n setSelectedNavLinkRoute,\n showWhatsNew = false,\n}) => {\n const location = useLocation();\n const { t } = useTranslation();\n const whatsNewCount = useWhatsNewChangesCount();\n const [expandedNavLinkKeys, setExpandedNavLinkKeys] = useState([]);\n const [pinnedNavLinks, setPinnedNavLinks] = useLocalStorage(\n PINNED_MORE_NAV_LINKS_KEY,\n []\n );\n\n const handleNavLinkClick = ({ event, isActive, navLink }) => {\n const isExpandable =\n isPresent(navLink.items) || isPresent(navLink.component);\n if (!isExpandable) {\n setExpandedNavLinkKeys([]);\n\n return;\n }\n\n if (navLink.isConfigureNavLink && isNotEmpty(navLink.items)) {\n setSelectedNavLinkRoute(navLink.to);\n }\n\n const navLinkKey = navLink.key || navLink.to;\n if (isActive()) {\n const isExpanded = expandedNavLinkKeys.includes(navLinkKey);\n setExpandedNavLinkKeys(isExpanded ? [] : [navLinkKey]);\n navLink.resetPath !== true && event.preventDefault();\n\n return;\n }\n\n setExpandedNavLinkKeys([navLinkKey]);\n };\n\n const handleTogglePin = (navLink, event) => {\n event.preventDefault();\n event.stopPropagation();\n const navLinkKey = navLink.key || navLink.to;\n const isPinned = pinnedNavLinks.includes(navLinkKey);\n\n if (isPinned) {\n setPinnedNavLinks(pinnedNavLinks.filter(isNot(navLinkKey)));\n } else {\n setPinnedNavLinks([...pinnedNavLinks, navLinkKey]);\n }\n };\n\n const isNavLinkPinned = navLink => {\n if (!navLink) return false;\n const navLinkKey = navLink.key || navLink.to;\n\n return pinnedNavLinks.includes(navLinkKey);\n };\n\n const pinnedItems = moreNavLinks ? moreNavLinks.filter(isNavLinkPinned) : [];\n\n const activeMoreNavLink = moreNavLinks\n ? moreNavLinks.find(\n navLink =>\n navLink &&\n (location.pathname + location.search).startsWith(navLink.to)\n )\n : null;\n\n const additionalItems = [...pinnedItems];\n\n if (activeMoreNavLink && !isNavLinkPinned(activeMoreNavLink)) {\n additionalItems.push(activeMoreNavLink);\n }\n\n // \"What's new\" opens the neetoEngage changelog widget, which binds to the\n // element carrying ENGAGE_WIDGET_TRIGGER_ID. Rendering it as a persistent\n // sidebar item gives the widget a stable trigger. The unread count is shown\n // as an info-blue badge on the right of the item (via the `tag` slot).\n const whatsNewNavLink = {\n key: \"sidebar-whats-new\",\n icon: Megaphone,\n label: t(\"neetoMolecules.sidebar.helpLinks.whatsNew\"),\n to: \"#\",\n id: ENGAGE_WIDGET_TRIGGER_ID,\n isActive: () => false,\n \"data-testid\": \"sidebar-whats-new\",\n onClick: event => event.preventDefault(),\n ...(isPresent(whatsNewCount) && {\n tag: {\n label: String(renderCount(whatsNewCount)),\n variant: \"blue\",\n size: \"sm\",\n \"data-testid\": \"sidebar-whats-new-count\",\n },\n }),\n };\n\n const combinedNavLinks = [\n ...(showWhatsNew ? [whatsNewNavLink] : []),\n ...navLinks,\n ...additionalItems,\n ];\n\n return (\n <SidebarGroup>\n <SidebarGroupContent>\n <SidebarMenu className=\"gap-1\">\n {combinedNavLinks\n .filter(filterByPermissions)\n .map((navLink, index) => {\n const {\n label,\n to,\n icon,\n items,\n isConfigureNavLink,\n isCountsLoading = false,\n count = null,\n component: Component,\n onClick,\n addActions = [],\n tag,\n ...otherProps\n } = navLink;\n const IconSVG = icon;\n const url = new URL(to, window.location.href);\n const isActive = () =>\n is(Function, otherProps.isActive)\n ? otherProps.isActive()\n : location.pathname.startsWith(url.pathname);\n\n const isExpandable = items || Component;\n const navLinkKey = navLink.key || navLink.to;\n const isMenuExpanded =\n expandedNavLinkKeys.includes(navLinkKey) &&\n !isCountsLoadingDeprecated;\n\n const handleCaretClick = event => {\n event.preventDefault();\n event.stopPropagation();\n setExpandedNavLinkKeys(keys =>\n keys.includes(navLinkKey)\n ? keys.filter(isNot(navLinkKey))\n : append(navLinkKey, keys)\n );\n };\n\n return (\n <Fragment key={navLink.key || index}>\n <SidebarMenuItem>\n <SidebarMenuButton\n asChild\n className=\"h-10\"\n isActive={isActive()}\n >\n <CheckPointNavLinks\n activeClassName=\"active\"\n className=\"font-medium\"\n data-testid={`navlink-${hyphenate(label)}`}\n onClick={event => {\n handleNavLinkClick({ event, isActive, navLink });\n onClick?.(event);\n }}\n {...{ isActive, to, ...otherProps }}\n >\n {icon && (\n <span className=\"relative\" data-testid={label}>\n <IconSVG />\n {isPresent(count) && !isCountsLoading && (\n <span className=\"bg-destructive text-destructive-foreground absolute -end-1.5 -top-1.5 flex h-4 min-w-4 items-center justify-center rounded-full px-0.5 text-[10px]\">\n {renderCount(count)}\n </span>\n )}\n </span>\n )}\n <span className=\"flex-grow truncate\">{label}</span>\n {tag && <Badge {...tag} />}\n {(isNotEmpty(addActions) ||\n (isExpandable && !isConfigureNavLink)) && (\n <span className=\"ms-auto flex shrink-0 items-center gap-0.5\">\n {isNotEmpty(addActions) && (\n <AddAction actions={addActions} />\n )}\n {isExpandable && !isConfigureNavLink && (\n <span\n className=\"shrink-0 transition-transform duration-200\"\n role=\"button\"\n tabIndex={-1}\n style={{\n transform: isMenuExpanded\n ? \"rotate(90deg)\"\n : \"rotate(0deg)\",\n }}\n onClick={handleCaretClick}\n >\n <ChevronRight className=\"rtl:rotate-180\" />\n </span>\n )}\n </span>\n )}\n </CheckPointNavLinks>\n </SidebarMenuButton>\n </SidebarMenuItem>\n {isExpandable && !isConfigureNavLink && isMenuExpanded && (\n <>\n {items && (\n <SidebarMenuSub data-testid=\"sidebar-sub-link-wrapper\">\n {items\n .filter(filterByPermissions)\n .map((subItem, subIndex) => (\n <SubLinkItem\n key={subIndex}\n {...{ ...subItem, isCountsLoading }}\n href={subItem.href}\n isActive={subItem.isActive}\n isSectionHeader={isPresent(subItem.item)}\n to={subItem.to ?? subItem.path}\n onClick={subItem.onClick}\n />\n ))}\n </SidebarMenuSub>\n )}\n {Component && <Component {...{ navLink }} />}\n </>\n )}\n </Fragment>\n );\n })}\n {isNotEmpty(moreNavLinks) && (\n <MoreDropdown\n {...{ handleTogglePin, isNavLinkPinned, moreNavLinks }}\n />\n )}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n );\n};\n\nexport default NavLinks;\n","import { useCallback, useEffect, useMemo, useRef } from \"react\";\n\nimport {\n Sidebar as SidebarComponent,\n SidebarContent,\n SidebarHeader,\n SidebarProvider,\n SidebarRail,\n SidebarTrigger,\n useSidebar,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { isPresent, isNotEmpty } from \"neetocist\";\nimport useLocalStorage from \"neetocommons/v2/react-utils/useLocalStorage\";\nimport PropTypes from \"prop-types\";\nimport { findLast, is } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport useKeyboardShortcutsPaneState from \"v2/components/KeyboardShortcuts/hooks/useKeyboardShortcutsPaneState\";\n\nimport ConfigureView from \"./Components/ConfigureView\";\nimport Header from \"./Components/Header\";\nimport NavLinks from \"./Components/NavLinks\";\nimport {\n SELECTED_NAV_LINK_ROUTE_STORAGE_KEY,\n SIDEBAR_WIDTH_KEY,\n MIN_SIDEBAR_WIDTH,\n MAX_SIDEBAR_WIDTH,\n DEFAULT_SIDEBAR_WIDTH,\n} from \"./constants\";\nimport \"./sidebar.css\";\nimport {\n getActiveConfigurePageLink,\n getSidebarStateLocalStorageKey,\n} from \"./utils\";\n\nconst Sidebar = ({\n navLinks,\n moreNavLinks = [],\n customLogo,\n isCountsLoading = false,\n showWorkspaceName = false,\n isExpandable = true,\n showWhatsNew = true,\n}) => {\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useLocalStorage(\n getSidebarStateLocalStorageKey(),\n false\n );\n\n const [sidebarWidthRaw, setSidebarWidth] = useLocalStorage(\n SIDEBAR_WIDTH_KEY,\n DEFAULT_SIDEBAR_WIDTH\n );\n\n const sidebarWidth =\n typeof sidebarWidthRaw === \"string\"\n ? parseInt(sidebarWidthRaw, 10) || DEFAULT_SIDEBAR_WIDTH\n : sidebarWidthRaw || DEFAULT_SIDEBAR_WIDTH;\n\n return (\n <SidebarProvider\n className=\"!w-auto\"\n data-testid=\"sidebar-container\"\n open={!isSidebarCollapsed}\n style={{ \"--sidebar-width\": `${sidebarWidth / 16}rem` }}\n onOpenChange={open => setIsSidebarCollapsed(!open)}\n >\n <SidebarBody\n {...{\n customLogo,\n isCountsLoading,\n isExpandable,\n isSidebarCollapsed,\n moreNavLinks,\n navLinks,\n setIsSidebarCollapsed,\n setSidebarWidth,\n showWhatsNew,\n showWorkspaceName,\n sidebarWidth,\n }}\n />\n </SidebarProvider>\n );\n};\n\nconst SidebarBody = ({\n navLinks,\n moreNavLinks,\n customLogo,\n isCountsLoading,\n showWorkspaceName,\n isExpandable,\n isSidebarCollapsed,\n setIsSidebarCollapsed,\n sidebarWidth,\n setSidebarWidth,\n showWhatsNew,\n}) => {\n const { isMobile, setOpenMobile, openMobile } = useSidebar();\n const [isKeyboardShortcutsPaneOpen] = useKeyboardShortcutsPaneState();\n\n const [selectedNavLinkRoute, setSelectedNavLinkRoute] = useLocalStorage(\n SELECTED_NAV_LINK_ROUTE_STORAGE_KEY,\n null\n );\n\n const isDraggingRef = useRef(false);\n const hasDraggedRef = useRef(false);\n const startXRef = useRef(null);\n const startWidthRef = useRef(null);\n const isInitialMountRef = useRef(true);\n\n const location = useLocation();\n const history = useHistory();\n const { t } = useTranslation();\n\n const isRTL = document.documentElement.dir === \"rtl\";\n const sidebarSide = isRTL ? \"right\" : \"left\";\n\n useEffect(() => {\n if (isInitialMountRef.current) {\n isInitialMountRef.current = false;\n\n return;\n }\n\n if (isMobile) {\n if (isKeyboardShortcutsPaneOpen) setOpenMobile(false);\n\n return;\n }\n\n if (isKeyboardShortcutsPaneOpen) setIsSidebarCollapsed(true);\n else setIsSidebarCollapsed(false);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- setIsSidebarCollapsed / setOpenMobile may not be stable across renders\n }, [isKeyboardShortcutsPaneOpen, isMobile]);\n\n useEffect(() => {\n if (!isPresent(navLinks)) return;\n const currentLink = findLast(({ to, isActive }) => {\n const url = new URL(to, window.location.href);\n\n return is(Function, isActive)\n ? isActive()\n : location.pathname.includes(url.pathname);\n })(navLinks);\n\n if (isPresent(currentLink)) {\n setSelectedNavLinkRoute(\n currentLink.isConfigureNavLink ? currentLink.to : null\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only: sets initial selected route from current URL\n }, []);\n\n const handleRailMouseDown = useCallback(\n e => {\n if (!isExpandable || isMobile) return;\n\n isDraggingRef.current = true;\n hasDraggedRef.current = false;\n startXRef.current = e.clientX;\n startWidthRef.current = sidebarWidth;\n\n const wrapper = document.querySelector(\"[data-slot='sidebar-wrapper']\");\n if (wrapper) wrapper.dataset.resizing = \"true\";\n\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n e.preventDefault();\n },\n [sidebarWidth, isExpandable, isMobile]\n );\n\n const handleRailClick = useCallback(e => {\n if (!hasDraggedRef.current) return;\n e.preventDefault();\n e.stopPropagation();\n hasDraggedRef.current = false;\n }, []);\n\n useEffect(() => {\n if (!isExpandable || isMobile) return undefined;\n\n const onMouseMove = e => {\n if (!isDraggingRef.current) return;\n\n hasDraggedRef.current = true;\n const dx = e.clientX - startXRef.current;\n const rtl = document.documentElement.dir === \"rtl\";\n let newWidth = startWidthRef.current + (rtl ? -dx : dx);\n newWidth = Math.max(\n MIN_SIDEBAR_WIDTH,\n Math.min(newWidth, MAX_SIDEBAR_WIDTH)\n );\n\n const widthRem = `${newWidth / 16}rem`;\n const wrapper = document.querySelector(\"[data-slot='sidebar-wrapper']\");\n if (wrapper) wrapper.style.setProperty(\"--sidebar-width\", widthRem);\n\n document.documentElement.style.setProperty(\n \"--nv-sidebar-width\",\n widthRem\n );\n };\n\n const onMouseUp = e => {\n if (!isDraggingRef.current) return;\n\n const dx = e.clientX - startXRef.current;\n const rtlUp = document.documentElement.dir === \"rtl\";\n let finalWidth = startWidthRef.current + (rtlUp ? -dx : dx);\n finalWidth = Math.round(\n Math.max(MIN_SIDEBAR_WIDTH, Math.min(finalWidth, MAX_SIDEBAR_WIDTH))\n );\n setSidebarWidth(finalWidth);\n\n const wrapper = document.querySelector(\"[data-slot='sidebar-wrapper']\");\n if (wrapper) delete wrapper.dataset.resizing;\n\n isDraggingRef.current = false;\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n\n return () => {\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n }, [isExpandable, isMobile, setSidebarWidth]);\n\n useEffect(() => {\n document.documentElement.style.setProperty(\n \"--nv-sidebar-width\",\n isMobile ? \"0rem\" : `${sidebarWidth / 16}rem`\n );\n }, [sidebarWidth, isMobile]);\n\n const handleGoBack = event => {\n event.preventDefault();\n setSelectedNavLinkRoute(null);\n const configureNavLink = getActiveConfigurePageLink({ navLinks, location });\n if (configureNavLink?.to) {\n history.push(configureNavLink.to);\n }\n };\n\n const activeLink = useMemo(\n () =>\n navLinks.find(link => {\n if (is(Function, link.isActive)) return link.isActive();\n const url = new URL(link.to, window.location.href);\n\n return location.pathname.startsWith(url.pathname);\n }),\n [location.pathname, navLinks]\n );\n\n const isSelectedNavLinkVisible =\n selectedNavLinkRoute &&\n activeLink?.to === selectedNavLinkRoute &&\n isNotEmpty(navLinks);\n\n return (\n <>\n <SidebarComponent\n collapsible=\"offcanvas\"\n data-testid=\"sidebar-wrapper\"\n side={sidebarSide}\n >\n <SidebarHeader className=\"nm-sidebar-shadcn-header relative p-0\">\n <Header\n {...{ customLogo }}\n clearSettingsNav={() => setSelectedNavLinkRoute(null)}\n />\n <SidebarTrigger\n className=\"absolute end-2 top-3\"\n data-testid=\"neeto-molecules-sidebar-toggler\"\n title={t(\"neetoMolecules.sidebar.hideMenu\")}\n />\n {showWorkspaceName && (\n <div className=\"border-sidebar-border border-b px-4 py-2\">\n <h5 className=\"text-sidebar-foreground mb-1 text-sm font-semibold\">\n {t(\"neetoMolecules.sidebar.myWorkspace\")}\n </h5>\n <span className=\"text-sidebar-foreground/70 truncate text-xs\">\n {globalProps.organization.name}\n </span>\n </div>\n )}\n </SidebarHeader>\n <SidebarContent>\n {isSelectedNavLinkVisible ? (\n <ConfigureView {...{ handleGoBack }} navLink={activeLink} />\n ) : (\n <NavLinks\n {...{\n isCountsLoading,\n moreNavLinks,\n navLinks,\n setSelectedNavLinkRoute,\n showWhatsNew,\n }}\n />\n )}\n </SidebarContent>\n {!isMobile && isExpandable && !isSidebarCollapsed && (\n <SidebarRail\n onClickCapture={handleRailClick}\n onMouseDown={handleRailMouseDown}\n />\n )}\n </SidebarComponent>\n {((isMobile && !openMobile) || (!isMobile && isSidebarCollapsed)) && (\n <SidebarTrigger\n className=\"bg-background hover:bg-accent fixed start-2 top-2 z-50 size-9 rounded-full border shadow-sm\"\n data-testid=\"neeto-molecules-sidebar-expander\"\n title={t(\"neetoMolecules.sidebar.showMenu\")}\n />\n )}\n </>\n );\n};\n\nSidebar.propTypes = {\n navLinks: PropTypes.arrayOf(\n PropTypes.shape({\n icon: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.object,\n ]),\n label: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n count: PropTypes.number,\n isActive: PropTypes.func,\n checkpointKey: PropTypes.string,\n isCountsLoading: PropTypes.bool,\n tag: PropTypes.object,\n addActions: PropTypes.arrayOf(\n PropTypes.shape({\n key: PropTypes.string,\n label: PropTypes.string,\n onClick: PropTypes.func,\n })\n ),\n items: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n href: PropTypes.string,\n count: PropTypes.number,\n isActive: PropTypes.func,\n type: PropTypes.string,\n filters: PropTypes.array,\n checkpointKey: PropTypes.string,\n tag: PropTypes.object,\n })\n ),\n })\n ),\n moreNavLinks: PropTypes.arrayOf(\n PropTypes.shape({\n icon: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.object,\n ]),\n label: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n count: PropTypes.number,\n isActive: PropTypes.func,\n checkpointKey: PropTypes.string,\n isCountsLoading: PropTypes.bool,\n tag: PropTypes.object,\n items: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n href: PropTypes.string,\n count: PropTypes.number,\n isActive: PropTypes.func,\n type: PropTypes.string,\n filters: PropTypes.array,\n checkpointKey: PropTypes.string,\n tag: PropTypes.object,\n })\n ),\n })\n ),\n customLogo: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n isCountsLoading: PropTypes.bool,\n showWorkspaceName: PropTypes.bool,\n isExpandable: PropTypes.bool,\n showWhatsNew: PropTypes.bool,\n};\n\nexport default Sidebar;\n"],"names":["Header","_ref","_ProductTypefaceLogos","customLogo","clearSettingsNav","productName","globalProps","appName","substr","normalizedName","trim","toLowerCase","specialCase","SPECIAL_APP_NAMES","logoName","concat","capitalize","ProductTypefaceLogo","ProductTypefaceLogos","Neeto","LogoComponent","isOnboarded","user","_jsx","className","children","Link","to","DEFAULT_HOME_PATH","classnames","onClick","sidebarTitle","memo","AddAction","actions","DropdownMenu","dropdownProps","align","side","customTarget","role","tabIndex","e","preventDefault","stopPropagation","Plus","map","action","MenuItem","_action$onClick","call","label","key","PinIcon","size","otherProps","_objectSpread","fill","height","viewBox","width","xmlns","d","UnpinIcon","MoreDropdown","moreNavLinks","isNavLinkPinned","handleTogglePin","_useTranslation","useTranslation","t","isRTL","document","documentElement","dir","SidebarMenuItem","closeOnSelect","position","_jsxs","Ellipsis","filter","filterByPermissions","navLink","index","icon","navLinkKey","tag","IconSVG","isPinned","onSelect","CheckPointNavLinks","Badge","Tooltip","content","Button","variant","event","renderCount","count","NavLinks","navLinks","isCountsLoadingDeprecated","isCountsLoading","setSelectedNavLinkRoute","_ref$showWhatsNew","showWhatsNew","location","useLocation","whatsNewCount","useWhatsNewChangesCount","_useState","useState","_useState2","_slicedToArray","expandedNavLinkKeys","setExpandedNavLinkKeys","_useLocalStorage","useLocalStorage","PINNED_MORE_NAV_LINKS_KEY","_useLocalStorage2","pinnedNavLinks","setPinnedNavLinks","handleNavLinkClick","_ref2","isActive","isExpandable","isPresent","items","component","isConfigureNavLink","isNotEmpty","isExpanded","includes","resetPath","isNot","_toConsumableArray","pinnedItems","activeMoreNavLink","find","pathname","search","startsWith","additionalItems","push","whatsNewNavLink","Megaphone","id","ENGAGE_WIDGET_TRIGGER_ID","String","combinedNavLinks","SidebarGroup","SidebarGroupContent","SidebarMenu","_navLink$isCountsLoad","_navLink$count","Component","_navLink$addActions","addActions","_objectWithoutProperties","_excluded","url","URL","window","href","is","Function","isMenuExpanded","handleCaretClick","keys","append","Fragment","SidebarMenuButton","asChild","activeClassName","hyphenate","style","transform","ChevronRight","_Fragment","SidebarMenuSub","subItem","subIndex","_subItem$to","SubLinkItem","isSectionHeader","item","path","Sidebar","_ref$moreNavLinks","_ref$isCountsLoading","_ref$showWorkspaceNam","showWorkspaceName","_ref$isExpandable","getSidebarStateLocalStorageKey","isSidebarCollapsed","setIsSidebarCollapsed","_useLocalStorage3","SIDEBAR_WIDTH_KEY","DEFAULT_SIDEBAR_WIDTH","_useLocalStorage4","sidebarWidthRaw","setSidebarWidth","sidebarWidth","parseInt","SidebarProvider","open","onOpenChange","SidebarBody","_useSidebar","useSidebar","isMobile","setOpenMobile","openMobile","_useKeyboardShortcuts","useKeyboardShortcutsPaneState","_useKeyboardShortcuts2","isKeyboardShortcutsPaneOpen","_useLocalStorage5","SELECTED_NAV_LINK_ROUTE_STORAGE_KEY","_useLocalStorage6","selectedNavLinkRoute","isDraggingRef","useRef","hasDraggedRef","startXRef","startWidthRef","isInitialMountRef","history","useHistory","sidebarSide","useEffect","current","currentLink","findLast","_ref3","handleRailMouseDown","useCallback","clientX","wrapper","querySelector","dataset","resizing","body","cursor","userSelect","handleRailClick","undefined","onMouseMove","dx","rtl","newWidth","Math","max","MIN_SIDEBAR_WIDTH","min","MAX_SIDEBAR_WIDTH","widthRem","setProperty","onMouseUp","rtlUp","finalWidth","round","addEventListener","removeEventListener","handleGoBack","configureNavLink","getActiveConfigurePageLink","activeLink","useMemo","link","isSelectedNavLinkVisible","SidebarComponent","collapsible","SidebarHeader","SidebarTrigger","title","organization","name","SidebarContent","ConfigureView","SidebarRail","onClickCapture","onMouseDown"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sources":["../../node_modules/lucide-react/dist/esm/icons/megaphone.mjs","../../src/v2/components/Sidebar/Components/Header.jsx","../../src/v2/components/Sidebar/Components/AddAction.jsx","../../src/v2/components/Sidebar/Components/PinIcon.jsx","../../src/v2/components/Sidebar/Components/UnpinIcon.jsx","../../src/v2/components/Sidebar/Components/MoreDropdown.jsx","../../src/v2/components/Sidebar/Components/NavLinks.jsx","../../src/v2/components/Sidebar/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.24.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z\",\n key: \"q8bfy3\"\n }\n ],\n [\"path\", { d: \"M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14\", key: \"1853fq\" }],\n [\"path\", { d: \"M8 6v8\", key: \"15ugcq\" }]\n];\nconst Megaphone = createLucideIcon(\"megaphone\", __iconNode);\n\nexport { __iconNode, Megaphone as default };\n//# sourceMappingURL=megaphone.mjs.map\n","import { memo } from \"react\";\n\nimport classnames from \"classnames\";\nimport { capitalize } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { Neeto } from \"neetoicons/typeface-logos\";\nimport * as ProductTypefaceLogos from \"neetoicons/typeface-logos\";\nimport { Link } from \"react-router-dom\";\n\nimport { DEFAULT_HOME_PATH, SPECIAL_APP_NAMES } from \"../constants\";\n\nconst Header = ({ customLogo, clearSettingsNav }) => {\n const productName = globalProps.appName.substr(5);\n const normalizedName = (productName || \"\").trim().toLowerCase();\n const specialCase = SPECIAL_APP_NAMES[normalizedName];\n const logoName = specialCase\n ? `Neeto${specialCase}`\n : `Neeto${capitalize(normalizedName)}`;\n const ProductTypefaceLogo = ProductTypefaceLogos[logoName] ?? Neeto;\n const LogoComponent = customLogo ?? ProductTypefaceLogo;\n const isOnboarded = globalProps.user.isOnboarded !== false;\n\n return (\n <div className=\"px-4 py-3\" data-testid=\"sidebar-info\">\n <Link\n to={DEFAULT_HOME_PATH}\n className={classnames(\"mt-2 block w-full py-2\", {\n \"cursor-pointer\": isOnboarded,\n \"pointer-events-none\": !isOnboarded,\n })}\n onClick={clearSettingsNav}\n >\n {globalProps.sidebarTitle ? (\n <span className=\"text-sidebar-foreground text-xl leading-9 font-bold\">\n {globalProps.sidebarTitle}\n </span>\n ) : (\n <LogoComponent className=\"h-9 w-auto max-w-full\" />\n )}\n </Link>\n </div>\n );\n};\n\nexport default memo(Header);\n","import { DropdownMenu } from \"@bigbinary/neeto-atoms\";\nimport { Plus } from \"lucide-react\";\n\nconst AddAction = ({ actions }) => (\n <DropdownMenu\n dropdownProps={{ align: \"end\", side: \"bottom\" }}\n customTarget={\n <span\n className=\"text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-sidebar-ring md:data-[state=open]:bg-sidebar-accent flex aspect-square w-5 shrink-0 cursor-pointer items-center justify-center rounded-md outline-hidden focus-visible:ring-2 md:opacity-0 md:group-focus-within/menu-item:opacity-100 md:group-hover/menu-item:opacity-100 md:data-[state=open]:opacity-100\"\n data-testid=\"add-dropdown-trigger\"\n role=\"button\"\n tabIndex={0}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Plus className=\"size-4\" />\n </span>\n }\n >\n {actions.map(action => (\n <DropdownMenu.MenuItem\n key={action.key}\n onClick={() => {\n action.onClick?.();\n }}\n >\n {action.label}\n </DropdownMenu.MenuItem>\n ))}\n </DropdownMenu>\n);\n\nexport default AddAction;\n","const PinIcon = ({ size, otherProps }) => (\n <svg\n fill=\"currentColor\"\n height={size}\n viewBox=\"0 -960 960 960\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...otherProps}\n >\n <path d=\"m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40zm-286 80h252l-46-46v-314H400v314zm126 0\" />\n </svg>\n);\n\nexport default PinIcon;\n","const UnpinIcon = ({ size, otherProps }) => (\n <svg\n fill=\"currentColor\"\n height={size}\n viewBox=\"0 -960 960 960\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...otherProps}\n >\n <path d=\"m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40z\" />\n </svg>\n);\n\nexport default UnpinIcon;\n","import { Badge, Button, DropdownMenu, Tooltip } from \"@bigbinary/neeto-atoms\";\nimport { SidebarMenuItem } from \"@bigbinary/neeto-atoms/primitives\";\nimport { Ellipsis } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CheckPointNavLinks from \"./CheckPointNavLink\";\nimport PinIcon from \"./PinIcon\";\nimport UnpinIcon from \"./UnpinIcon\";\n\nimport { filterByPermissions } from \"../utils\";\n\nconst MoreDropdown = ({ moreNavLinks, isNavLinkPinned, handleTogglePin }) => {\n const { t } = useTranslation();\n const isRTL = document.documentElement.dir === \"rtl\";\n\n return (\n <SidebarMenuItem>\n <DropdownMenu\n closeOnSelect={false}\n position={isRTL ? \"left-start\" : \"right-start\"}\n customTarget={\n <button\n className=\"text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground flex w-full items-center gap-2 rounded-md p-2 text-sm outline-hidden\"\n data-testid=\"more-nav-links-dropdown-button\"\n >\n <Ellipsis />\n <span className=\"truncate\">{t(\"neetoMolecules.sidebar.more\")}</span>\n </button>\n }\n dropdownProps={{\n className: \"z-[99999] p-0\",\n \"data-testid\": \"more-nav-links-dropdown-menu\",\n }}\n >\n {moreNavLinks.filter(filterByPermissions).map((navLink, index) => {\n const { label, icon, key: navLinkKey, to, onClick, tag } = navLink;\n const IconSVG = icon;\n const isPinned = isNavLinkPinned(navLink);\n\n return (\n <DropdownMenu.MenuItem\n data-testid={label}\n key={navLinkKey || index}\n onSelect={e => e.preventDefault()}\n >\n <CheckPointNavLinks\n {...{ onClick, to }}\n className=\"flex w-full cursor-pointer items-center justify-between gap-2 px-2 py-1\"\n >\n <span className=\"flex min-w-0 flex-grow items-center gap-2\">\n {icon && <IconSVG className=\"flex-shrink-0\" size={20} />}\n <span className=\"flex min-w-0 flex-grow items-center gap-2\">\n {label}\n {tag && <Badge {...tag} />}\n </span>\n </span>\n <Tooltip\n position=\"right\"\n content={\n isPinned\n ? t(\"neetoMolecules.sidebar.unpin\")\n : t(\"neetoMolecules.sidebar.pin\")\n }\n >\n <Button\n className=\"flex-shrink-0\"\n data-testid=\"pin-button\"\n size=\"icon-sm\"\n variant=\"ghost\"\n onClick={event => handleTogglePin(navLink, event)}\n >\n {isPinned ? (\n <UnpinIcon otherProps={{}} size={16} />\n ) : (\n <PinIcon otherProps={{}} size={16} />\n )}\n </Button>\n </Tooltip>\n </CheckPointNavLinks>\n </DropdownMenu.MenuItem>\n );\n })}\n </DropdownMenu>\n </SidebarMenuItem>\n );\n};\n\nexport default MoreDropdown;\n","import { Fragment, useState } from \"react\";\n\nimport { Badge } from \"@bigbinary/neeto-atoms\";\nimport {\n SidebarGroup,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarMenuSub,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { ChevronRight, Megaphone } from \"lucide-react\";\nimport { isNot, hyphenate, isNotEmpty, isPresent } from \"neetocist\";\nimport useLocalStorage from \"neetocommons/v2/react-utils/useLocalStorage\";\nimport { append, is } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation } from \"react-router-dom\";\nimport { ENGAGE_WIDGET_TRIGGER_ID } from \"v2/components/FloatingActionMenu/constants\";\nimport useWhatsNewChangesCount from \"v2/components/FloatingActionMenu/hooks/useWhatsNewChangesCount\";\n\nimport AddAction from \"./AddAction\";\nimport CheckPointNavLinks from \"./CheckPointNavLink\";\nimport MoreDropdown from \"./MoreDropdown\";\nimport SubLinkItem from \"./SubLinkItem\";\n\nimport { PINNED_MORE_NAV_LINKS_KEY } from \"../constants\";\nimport { filterByPermissions } from \"../utils\";\n\nconst renderCount = count => (count > 999 ? \"999+\" : count);\n\nconst NavLinks = ({\n navLinks,\n moreNavLinks,\n isCountsLoading: isCountsLoadingDeprecated,\n setSelectedNavLinkRoute,\n showWhatsNew = false,\n}) => {\n const location = useLocation();\n const { t } = useTranslation();\n const whatsNewCount = useWhatsNewChangesCount();\n const [expandedNavLinkKeys, setExpandedNavLinkKeys] = useState([]);\n const [pinnedNavLinks, setPinnedNavLinks] = useLocalStorage(\n PINNED_MORE_NAV_LINKS_KEY,\n []\n );\n\n const handleNavLinkClick = ({ event, isActive, navLink }) => {\n const isExpandable =\n isPresent(navLink.items) || isPresent(navLink.component);\n if (!isExpandable) {\n setExpandedNavLinkKeys([]);\n\n return;\n }\n\n if (navLink.isConfigureNavLink && isNotEmpty(navLink.items)) {\n setSelectedNavLinkRoute(navLink.to);\n }\n\n const navLinkKey = navLink.key || navLink.to;\n if (isActive()) {\n const isExpanded = expandedNavLinkKeys.includes(navLinkKey);\n setExpandedNavLinkKeys(isExpanded ? [] : [navLinkKey]);\n navLink.resetPath !== true && event.preventDefault();\n\n return;\n }\n\n setExpandedNavLinkKeys([navLinkKey]);\n };\n\n const handleTogglePin = (navLink, event) => {\n event.preventDefault();\n event.stopPropagation();\n const navLinkKey = navLink.key || navLink.to;\n const isPinned = pinnedNavLinks.includes(navLinkKey);\n\n if (isPinned) {\n setPinnedNavLinks(pinnedNavLinks.filter(isNot(navLinkKey)));\n } else {\n setPinnedNavLinks([...pinnedNavLinks, navLinkKey]);\n }\n };\n\n const isNavLinkPinned = navLink => {\n if (!navLink) return false;\n const navLinkKey = navLink.key || navLink.to;\n\n return pinnedNavLinks.includes(navLinkKey);\n };\n\n const pinnedItems = moreNavLinks ? moreNavLinks.filter(isNavLinkPinned) : [];\n\n const activeMoreNavLink = moreNavLinks\n ? moreNavLinks.find(\n navLink =>\n navLink &&\n (location.pathname + location.search).startsWith(navLink.to)\n )\n : null;\n\n const additionalItems = [...pinnedItems];\n\n if (activeMoreNavLink && !isNavLinkPinned(activeMoreNavLink)) {\n additionalItems.push(activeMoreNavLink);\n }\n\n // \"What's new\" opens the neetoEngage changelog widget, which binds to the\n // element carrying ENGAGE_WIDGET_TRIGGER_ID. Rendering it as a persistent\n // sidebar item gives the widget a stable trigger. The unread count is shown\n // as an info-blue badge on the right of the item (via the `tag` slot).\n const whatsNewNavLink = {\n key: \"sidebar-whats-new\",\n icon: Megaphone,\n label: t(\"neetoMolecules.sidebar.helpLinks.whatsNew\"),\n to: \"#\",\n id: ENGAGE_WIDGET_TRIGGER_ID,\n isActive: () => false,\n \"data-testid\": \"sidebar-whats-new\",\n onClick: event => event.preventDefault(),\n ...(isPresent(whatsNewCount) && {\n tag: {\n label: String(renderCount(whatsNewCount)),\n variant: \"blue\",\n size: \"sm\",\n \"data-testid\": \"sidebar-whats-new-count\",\n },\n }),\n };\n\n const combinedNavLinks = [\n // Only shown while there are unread changelogs (the count is null at 0).\n ...(showWhatsNew && isPresent(whatsNewCount) ? [whatsNewNavLink] : []),\n ...navLinks,\n ...additionalItems,\n ];\n\n return (\n <SidebarGroup>\n <SidebarGroupContent>\n <SidebarMenu className=\"gap-1\">\n {combinedNavLinks\n .filter(filterByPermissions)\n .map((navLink, index) => {\n const {\n label,\n to,\n icon,\n items,\n isConfigureNavLink,\n isCountsLoading = false,\n count = null,\n component: Component,\n onClick,\n addActions = [],\n tag,\n ...otherProps\n } = navLink;\n const IconSVG = icon;\n const url = new URL(to, window.location.href);\n const isActive = () =>\n is(Function, otherProps.isActive)\n ? otherProps.isActive()\n : location.pathname.startsWith(url.pathname);\n\n const isExpandable = items || Component;\n const navLinkKey = navLink.key || navLink.to;\n const isMenuExpanded =\n expandedNavLinkKeys.includes(navLinkKey) &&\n !isCountsLoadingDeprecated;\n\n const handleCaretClick = event => {\n event.preventDefault();\n event.stopPropagation();\n setExpandedNavLinkKeys(keys =>\n keys.includes(navLinkKey)\n ? keys.filter(isNot(navLinkKey))\n : append(navLinkKey, keys)\n );\n };\n\n return (\n <Fragment key={navLink.key || index}>\n <SidebarMenuItem>\n <SidebarMenuButton\n asChild\n className=\"h-10\"\n isActive={isActive()}\n >\n <CheckPointNavLinks\n activeClassName=\"active\"\n className=\"font-medium\"\n data-testid={`navlink-${hyphenate(label)}`}\n onClick={event => {\n handleNavLinkClick({ event, isActive, navLink });\n onClick?.(event);\n }}\n {...{ isActive, to, ...otherProps }}\n >\n {icon && (\n <span className=\"relative\" data-testid={label}>\n <IconSVG />\n {isPresent(count) && !isCountsLoading && (\n <span className=\"bg-destructive text-destructive-foreground absolute -end-1.5 -top-1.5 flex h-4 min-w-4 items-center justify-center rounded-full px-0.5 text-[10px]\">\n {renderCount(count)}\n </span>\n )}\n </span>\n )}\n <span className=\"flex-grow truncate\">{label}</span>\n {tag && <Badge {...tag} />}\n {(isNotEmpty(addActions) ||\n (isExpandable && !isConfigureNavLink)) && (\n <span className=\"ms-auto flex shrink-0 items-center gap-0.5\">\n {isNotEmpty(addActions) && (\n <AddAction actions={addActions} />\n )}\n {isExpandable && !isConfigureNavLink && (\n <span\n className=\"shrink-0 transition-transform duration-200\"\n role=\"button\"\n tabIndex={-1}\n style={{\n transform: isMenuExpanded\n ? \"rotate(90deg)\"\n : \"rotate(0deg)\",\n }}\n onClick={handleCaretClick}\n >\n <ChevronRight className=\"rtl:rotate-180\" />\n </span>\n )}\n </span>\n )}\n </CheckPointNavLinks>\n </SidebarMenuButton>\n </SidebarMenuItem>\n {isExpandable && !isConfigureNavLink && isMenuExpanded && (\n <>\n {items && (\n <SidebarMenuSub data-testid=\"sidebar-sub-link-wrapper\">\n {items\n .filter(filterByPermissions)\n .map((subItem, subIndex) => (\n <SubLinkItem\n key={subIndex}\n {...{ ...subItem, isCountsLoading }}\n href={subItem.href}\n isActive={subItem.isActive}\n isSectionHeader={isPresent(subItem.item)}\n to={subItem.to ?? subItem.path}\n onClick={subItem.onClick}\n />\n ))}\n </SidebarMenuSub>\n )}\n {Component && <Component {...{ navLink }} />}\n </>\n )}\n </Fragment>\n );\n })}\n {isNotEmpty(moreNavLinks) && (\n <MoreDropdown\n {...{ handleTogglePin, isNavLinkPinned, moreNavLinks }}\n />\n )}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n );\n};\n\nexport default NavLinks;\n","import { useCallback, useEffect, useMemo, useRef } from \"react\";\n\nimport {\n Sidebar as SidebarComponent,\n SidebarContent,\n SidebarHeader,\n SidebarProvider,\n SidebarRail,\n SidebarTrigger,\n useSidebar,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { isPresent, isNotEmpty } from \"neetocist\";\nimport useLocalStorage from \"neetocommons/v2/react-utils/useLocalStorage\";\nimport PropTypes from \"prop-types\";\nimport { findLast, is } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport useKeyboardShortcutsPaneState from \"v2/components/KeyboardShortcuts/hooks/useKeyboardShortcutsPaneState\";\n\nimport ConfigureView from \"./Components/ConfigureView\";\nimport Header from \"./Components/Header\";\nimport NavLinks from \"./Components/NavLinks\";\nimport {\n SELECTED_NAV_LINK_ROUTE_STORAGE_KEY,\n SIDEBAR_WIDTH_KEY,\n MIN_SIDEBAR_WIDTH,\n MAX_SIDEBAR_WIDTH,\n DEFAULT_SIDEBAR_WIDTH,\n} from \"./constants\";\nimport \"./sidebar.css\";\nimport {\n getActiveConfigurePageLink,\n getSidebarStateLocalStorageKey,\n} from \"./utils\";\n\nconst Sidebar = ({\n navLinks,\n moreNavLinks = [],\n customLogo,\n isCountsLoading = false,\n showWorkspaceName = false,\n isExpandable = true,\n showWhatsNew = true,\n}) => {\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useLocalStorage(\n getSidebarStateLocalStorageKey(),\n false\n );\n\n const [sidebarWidthRaw, setSidebarWidth] = useLocalStorage(\n SIDEBAR_WIDTH_KEY,\n DEFAULT_SIDEBAR_WIDTH\n );\n\n const sidebarWidth =\n typeof sidebarWidthRaw === \"string\"\n ? parseInt(sidebarWidthRaw, 10) || DEFAULT_SIDEBAR_WIDTH\n : sidebarWidthRaw || DEFAULT_SIDEBAR_WIDTH;\n\n return (\n <SidebarProvider\n className=\"!w-auto\"\n data-testid=\"sidebar-container\"\n open={!isSidebarCollapsed}\n style={{ \"--sidebar-width\": `${sidebarWidth / 16}rem` }}\n onOpenChange={open => setIsSidebarCollapsed(!open)}\n >\n <SidebarBody\n {...{\n customLogo,\n isCountsLoading,\n isExpandable,\n isSidebarCollapsed,\n moreNavLinks,\n navLinks,\n setIsSidebarCollapsed,\n setSidebarWidth,\n showWhatsNew,\n showWorkspaceName,\n sidebarWidth,\n }}\n />\n </SidebarProvider>\n );\n};\n\nconst SidebarBody = ({\n navLinks,\n moreNavLinks,\n customLogo,\n isCountsLoading,\n showWorkspaceName,\n isExpandable,\n isSidebarCollapsed,\n setIsSidebarCollapsed,\n sidebarWidth,\n setSidebarWidth,\n showWhatsNew,\n}) => {\n const { isMobile, setOpenMobile, openMobile } = useSidebar();\n const [isKeyboardShortcutsPaneOpen] = useKeyboardShortcutsPaneState();\n\n const [selectedNavLinkRoute, setSelectedNavLinkRoute] = useLocalStorage(\n SELECTED_NAV_LINK_ROUTE_STORAGE_KEY,\n null\n );\n\n const isDraggingRef = useRef(false);\n const hasDraggedRef = useRef(false);\n const startXRef = useRef(null);\n const startWidthRef = useRef(null);\n const isInitialMountRef = useRef(true);\n\n const location = useLocation();\n const history = useHistory();\n const { t } = useTranslation();\n\n const isRTL = document.documentElement.dir === \"rtl\";\n const sidebarSide = isRTL ? \"right\" : \"left\";\n\n useEffect(() => {\n if (isInitialMountRef.current) {\n isInitialMountRef.current = false;\n\n return;\n }\n\n if (isMobile) {\n if (isKeyboardShortcutsPaneOpen) setOpenMobile(false);\n\n return;\n }\n\n if (isKeyboardShortcutsPaneOpen) setIsSidebarCollapsed(true);\n else setIsSidebarCollapsed(false);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- setIsSidebarCollapsed / setOpenMobile may not be stable across renders\n }, [isKeyboardShortcutsPaneOpen, isMobile]);\n\n useEffect(() => {\n if (!isPresent(navLinks)) return;\n const currentLink = findLast(({ to, isActive }) => {\n const url = new URL(to, window.location.href);\n\n return is(Function, isActive)\n ? isActive()\n : location.pathname.includes(url.pathname);\n })(navLinks);\n\n if (isPresent(currentLink)) {\n setSelectedNavLinkRoute(\n currentLink.isConfigureNavLink ? currentLink.to : null\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only: sets initial selected route from current URL\n }, []);\n\n const handleRailMouseDown = useCallback(\n e => {\n if (!isExpandable || isMobile) return;\n\n isDraggingRef.current = true;\n hasDraggedRef.current = false;\n startXRef.current = e.clientX;\n startWidthRef.current = sidebarWidth;\n\n const wrapper = document.querySelector(\"[data-slot='sidebar-wrapper']\");\n if (wrapper) wrapper.dataset.resizing = \"true\";\n\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n e.preventDefault();\n },\n [sidebarWidth, isExpandable, isMobile]\n );\n\n const handleRailClick = useCallback(e => {\n if (!hasDraggedRef.current) return;\n e.preventDefault();\n e.stopPropagation();\n hasDraggedRef.current = false;\n }, []);\n\n useEffect(() => {\n if (!isExpandable || isMobile) return undefined;\n\n const onMouseMove = e => {\n if (!isDraggingRef.current) return;\n\n hasDraggedRef.current = true;\n const dx = e.clientX - startXRef.current;\n const rtl = document.documentElement.dir === \"rtl\";\n let newWidth = startWidthRef.current + (rtl ? -dx : dx);\n newWidth = Math.max(\n MIN_SIDEBAR_WIDTH,\n Math.min(newWidth, MAX_SIDEBAR_WIDTH)\n );\n\n const widthRem = `${newWidth / 16}rem`;\n const wrapper = document.querySelector(\"[data-slot='sidebar-wrapper']\");\n if (wrapper) wrapper.style.setProperty(\"--sidebar-width\", widthRem);\n\n document.documentElement.style.setProperty(\n \"--nv-sidebar-width\",\n widthRem\n );\n };\n\n const onMouseUp = e => {\n if (!isDraggingRef.current) return;\n\n const dx = e.clientX - startXRef.current;\n const rtlUp = document.documentElement.dir === \"rtl\";\n let finalWidth = startWidthRef.current + (rtlUp ? -dx : dx);\n finalWidth = Math.round(\n Math.max(MIN_SIDEBAR_WIDTH, Math.min(finalWidth, MAX_SIDEBAR_WIDTH))\n );\n setSidebarWidth(finalWidth);\n\n const wrapper = document.querySelector(\"[data-slot='sidebar-wrapper']\");\n if (wrapper) delete wrapper.dataset.resizing;\n\n isDraggingRef.current = false;\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n\n return () => {\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n }, [isExpandable, isMobile, setSidebarWidth]);\n\n useEffect(() => {\n document.documentElement.style.setProperty(\n \"--nv-sidebar-width\",\n isMobile ? \"0rem\" : `${sidebarWidth / 16}rem`\n );\n }, [sidebarWidth, isMobile]);\n\n const handleGoBack = event => {\n event.preventDefault();\n setSelectedNavLinkRoute(null);\n const configureNavLink = getActiveConfigurePageLink({ navLinks, location });\n if (configureNavLink?.to) {\n history.push(configureNavLink.to);\n }\n };\n\n const activeLink = useMemo(\n () =>\n navLinks.find(link => {\n if (is(Function, link.isActive)) return link.isActive();\n const url = new URL(link.to, window.location.href);\n\n return location.pathname.startsWith(url.pathname);\n }),\n [location.pathname, navLinks]\n );\n\n const isSelectedNavLinkVisible =\n selectedNavLinkRoute &&\n activeLink?.to === selectedNavLinkRoute &&\n isNotEmpty(navLinks);\n\n return (\n <>\n <SidebarComponent\n collapsible=\"offcanvas\"\n data-testid=\"sidebar-wrapper\"\n side={sidebarSide}\n >\n <SidebarHeader className=\"nm-sidebar-shadcn-header relative p-0\">\n <Header\n {...{ customLogo }}\n clearSettingsNav={() => setSelectedNavLinkRoute(null)}\n />\n <SidebarTrigger\n className=\"absolute end-2 top-3\"\n data-testid=\"neeto-molecules-sidebar-toggler\"\n title={t(\"neetoMolecules.sidebar.hideMenu\")}\n />\n {showWorkspaceName && (\n <div className=\"border-sidebar-border border-b px-4 py-2\">\n <h5 className=\"text-sidebar-foreground mb-1 text-sm font-semibold\">\n {t(\"neetoMolecules.sidebar.myWorkspace\")}\n </h5>\n <span className=\"text-sidebar-foreground/70 truncate text-xs\">\n {globalProps.organization.name}\n </span>\n </div>\n )}\n </SidebarHeader>\n <SidebarContent>\n {isSelectedNavLinkVisible ? (\n <ConfigureView {...{ handleGoBack }} navLink={activeLink} />\n ) : (\n <NavLinks\n {...{\n isCountsLoading,\n moreNavLinks,\n navLinks,\n setSelectedNavLinkRoute,\n showWhatsNew,\n }}\n />\n )}\n </SidebarContent>\n {!isMobile && isExpandable && !isSidebarCollapsed && (\n <SidebarRail\n onClickCapture={handleRailClick}\n onMouseDown={handleRailMouseDown}\n />\n )}\n </SidebarComponent>\n {((isMobile && !openMobile) || (!isMobile && isSidebarCollapsed)) && (\n <SidebarTrigger\n className=\"bg-background hover:bg-accent fixed start-2 top-2 z-50 size-9 rounded-full border shadow-sm\"\n data-testid=\"neeto-molecules-sidebar-expander\"\n title={t(\"neetoMolecules.sidebar.showMenu\")}\n />\n )}\n </>\n );\n};\n\nSidebar.propTypes = {\n navLinks: PropTypes.arrayOf(\n PropTypes.shape({\n icon: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.object,\n ]),\n label: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n count: PropTypes.number,\n isActive: PropTypes.func,\n checkpointKey: PropTypes.string,\n isCountsLoading: PropTypes.bool,\n tag: PropTypes.object,\n addActions: PropTypes.arrayOf(\n PropTypes.shape({\n key: PropTypes.string,\n label: PropTypes.string,\n onClick: PropTypes.func,\n })\n ),\n items: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n href: PropTypes.string,\n count: PropTypes.number,\n isActive: PropTypes.func,\n type: PropTypes.string,\n filters: PropTypes.array,\n checkpointKey: PropTypes.string,\n tag: PropTypes.object,\n })\n ),\n })\n ),\n moreNavLinks: PropTypes.arrayOf(\n PropTypes.shape({\n icon: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.object,\n ]),\n label: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n count: PropTypes.number,\n isActive: PropTypes.func,\n checkpointKey: PropTypes.string,\n isCountsLoading: PropTypes.bool,\n tag: PropTypes.object,\n items: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n href: PropTypes.string,\n count: PropTypes.number,\n isActive: PropTypes.func,\n type: PropTypes.string,\n filters: PropTypes.array,\n checkpointKey: PropTypes.string,\n tag: PropTypes.object,\n })\n ),\n })\n ),\n customLogo: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n isCountsLoading: PropTypes.bool,\n showWorkspaceName: PropTypes.bool,\n isExpandable: PropTypes.bool,\n showWhatsNew: PropTypes.bool,\n};\n\nexport default Sidebar;\n"],"names":["Header","_ref","_ProductTypefaceLogos","customLogo","clearSettingsNav","productName","globalProps","appName","substr","normalizedName","trim","toLowerCase","specialCase","SPECIAL_APP_NAMES","logoName","concat","capitalize","ProductTypefaceLogo","ProductTypefaceLogos","Neeto","LogoComponent","isOnboarded","user","_jsx","className","children","Link","to","DEFAULT_HOME_PATH","classnames","onClick","sidebarTitle","memo","AddAction","actions","DropdownMenu","dropdownProps","align","side","customTarget","role","tabIndex","e","preventDefault","stopPropagation","Plus","map","action","MenuItem","_action$onClick","call","label","key","PinIcon","size","otherProps","_objectSpread","fill","height","viewBox","width","xmlns","d","UnpinIcon","MoreDropdown","moreNavLinks","isNavLinkPinned","handleTogglePin","_useTranslation","useTranslation","t","isRTL","document","documentElement","dir","SidebarMenuItem","closeOnSelect","position","_jsxs","Ellipsis","filter","filterByPermissions","navLink","index","icon","navLinkKey","tag","IconSVG","isPinned","onSelect","CheckPointNavLinks","Badge","Tooltip","content","Button","variant","event","renderCount","count","NavLinks","navLinks","isCountsLoadingDeprecated","isCountsLoading","setSelectedNavLinkRoute","_ref$showWhatsNew","showWhatsNew","location","useLocation","whatsNewCount","useWhatsNewChangesCount","_useState","useState","_useState2","_slicedToArray","expandedNavLinkKeys","setExpandedNavLinkKeys","_useLocalStorage","useLocalStorage","PINNED_MORE_NAV_LINKS_KEY","_useLocalStorage2","pinnedNavLinks","setPinnedNavLinks","handleNavLinkClick","_ref2","isActive","isExpandable","isPresent","items","component","isConfigureNavLink","isNotEmpty","isExpanded","includes","resetPath","isNot","_toConsumableArray","pinnedItems","activeMoreNavLink","find","pathname","search","startsWith","additionalItems","push","whatsNewNavLink","Megaphone","id","ENGAGE_WIDGET_TRIGGER_ID","String","combinedNavLinks","SidebarGroup","SidebarGroupContent","SidebarMenu","_navLink$isCountsLoad","_navLink$count","Component","_navLink$addActions","addActions","_objectWithoutProperties","_excluded","url","URL","window","href","is","Function","isMenuExpanded","handleCaretClick","keys","append","Fragment","SidebarMenuButton","asChild","activeClassName","hyphenate","style","transform","ChevronRight","_Fragment","SidebarMenuSub","subItem","subIndex","_subItem$to","SubLinkItem","isSectionHeader","item","path","Sidebar","_ref$moreNavLinks","_ref$isCountsLoading","_ref$showWorkspaceNam","showWorkspaceName","_ref$isExpandable","getSidebarStateLocalStorageKey","isSidebarCollapsed","setIsSidebarCollapsed","_useLocalStorage3","SIDEBAR_WIDTH_KEY","DEFAULT_SIDEBAR_WIDTH","_useLocalStorage4","sidebarWidthRaw","setSidebarWidth","sidebarWidth","parseInt","SidebarProvider","open","onOpenChange","SidebarBody","_useSidebar","useSidebar","isMobile","setOpenMobile","openMobile","_useKeyboardShortcuts","useKeyboardShortcutsPaneState","_useKeyboardShortcuts2","isKeyboardShortcutsPaneOpen","_useLocalStorage5","SELECTED_NAV_LINK_ROUTE_STORAGE_KEY","_useLocalStorage6","selectedNavLinkRoute","isDraggingRef","useRef","hasDraggedRef","startXRef","startWidthRef","isInitialMountRef","history","useHistory","sidebarSide","useEffect","current","currentLink","findLast","_ref3","handleRailMouseDown","useCallback","clientX","wrapper","querySelector","dataset","resizing","body","cursor","userSelect","handleRailClick","undefined","onMouseMove","dx","rtl","newWidth","Math","max","MIN_SIDEBAR_WIDTH","min","MAX_SIDEBAR_WIDTH","widthRem","setProperty","onMouseUp","rtlUp","finalWidth","round","addEventListener","removeEventListener","handleGoBack","configureNavLink","getActiveConfigurePageLink","activeLink","useMemo","link","isSelectedNavLinkVisible","SidebarComponent","collapsible","SidebarHeader","SidebarTrigger","title","organization","name","SidebarContent","ConfigureView","SidebarRail","onClickCapture","onMouseDown"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -3,9 +3,9 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
|
3
3
|
import { useShallow } from 'zustand/shallow';
|
|
4
4
|
import { useState, useEffect, createElement } from 'react';
|
|
5
5
|
import { Button } from '@bigbinary/neeto-atoms';
|
|
6
|
+
import { p as purify } from '../purify.es-_duHfPgC.js';
|
|
6
7
|
import { useLocalStorage } from '@bigbinary/neeto-commons-frontend/v2/react-utils';
|
|
7
8
|
import { useErrorDisplayStore } from '@bigbinary/neeto-commons-frontend/v2/react-utils/useDisplayErrorPage';
|
|
8
|
-
import EditorContent from '@bigbinary/neeto-editor/v2/EditorContent';
|
|
9
9
|
import { pluck } from 'ramda';
|
|
10
10
|
import { Trans } from 'react-i18next';
|
|
11
11
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
@@ -20,7 +20,6 @@ import { noop } from '@bigbinary/neeto-cist';
|
|
|
20
20
|
import axios from 'axios';
|
|
21
21
|
import { BASE_API_V1_URL } from '@bigbinary/neeto-commons-frontend/v2/constants';
|
|
22
22
|
import { dayjs } from '@bigbinary/neeto-commons-frontend/v2/utils';
|
|
23
|
-
import { substituteVariables } from '@bigbinary/neeto-editor/v2/utils';
|
|
24
23
|
import '../createLucideIcon--oLqczpc.js';
|
|
25
24
|
|
|
26
25
|
var QUERY_KEYS = {
|
|
@@ -44,6 +43,10 @@ var RIBBON_KIND_CONFIG = {
|
|
|
44
43
|
role: "alert"
|
|
45
44
|
}
|
|
46
45
|
};
|
|
46
|
+
var VARIABLE_REGEX = /<span[^>]*data-variable[^>]*>\s*{{\s*([\w.]+)\s*}}\s*<\/span>|{{\s*([\w.]+)\s*}}/g;
|
|
47
|
+
var SANITIZE_OPTIONS = {
|
|
48
|
+
ADD_ATTR: ["target"]
|
|
49
|
+
};
|
|
47
50
|
|
|
48
51
|
var _excluded = ["kind", "onDismiss", "children", "className"];
|
|
49
52
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -142,21 +145,25 @@ var dayTimeFormatter = function dayTimeFormatter(timestamp) {
|
|
|
142
145
|
dayjs.utc(timestamp).local().format(DATE_TIME_FORMAT)
|
|
143
146
|
);
|
|
144
147
|
};
|
|
148
|
+
var substituteVariables = function substituteVariables(message, variables) {
|
|
149
|
+
return message.replace(VARIABLE_REGEX, function (match, chipKey, bareKey) {
|
|
150
|
+
var _variables;
|
|
151
|
+
return (_variables = variables[chipKey !== null && chipKey !== void 0 ? chipKey : bareKey]) !== null && _variables !== void 0 ? _variables : match;
|
|
152
|
+
});
|
|
153
|
+
};
|
|
145
154
|
var formatMessageContent = function formatMessageContent(_ref) {
|
|
146
155
|
var message = _ref.message,
|
|
147
156
|
startsAt = _ref.startsAt,
|
|
148
157
|
endsAt = _ref.endsAt;
|
|
149
|
-
return substituteVariables(message,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}, {
|
|
154
|
-
label: "ends_at",
|
|
155
|
-
key: "ends_at",
|
|
156
|
-
value: dayTimeFormatter(endsAt)
|
|
157
|
-
}]);
|
|
158
|
+
return substituteVariables(message, {
|
|
159
|
+
starts_at: dayTimeFormatter(startsAt),
|
|
160
|
+
ends_at: dayTimeFormatter(endsAt)
|
|
161
|
+
});
|
|
158
162
|
};
|
|
159
163
|
|
|
164
|
+
var sanitize = function sanitize(html) {
|
|
165
|
+
return purify.sanitize(html, SANITIZE_OPTIONS);
|
|
166
|
+
};
|
|
160
167
|
var StickyRibbonsContainer = function StickyRibbonsContainer() {
|
|
161
168
|
var _data$stickyRibbons;
|
|
162
169
|
var _useState = useState(false),
|
|
@@ -218,12 +225,15 @@ var StickyRibbonsContainer = function StickyRibbonsContainer() {
|
|
|
218
225
|
onDismiss: function onDismiss() {
|
|
219
226
|
return handleDismiss(id);
|
|
220
227
|
}
|
|
221
|
-
}, /*#__PURE__*/jsx(
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
228
|
+
}, /*#__PURE__*/jsx("div", {
|
|
229
|
+
className: "neeto-editor-content neeto-editor-size--small",
|
|
230
|
+
dangerouslySetInnerHTML: {
|
|
231
|
+
__html: sanitize(formatMessageContent({
|
|
232
|
+
message: message,
|
|
233
|
+
startsAt: startsAt,
|
|
234
|
+
endsAt: endsAt
|
|
235
|
+
}))
|
|
236
|
+
}
|
|
227
237
|
}));
|
|
228
238
|
})]
|
|
229
239
|
});
|