@ndla/ui 20.0.2 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/LearningPaths/LearningPathInformation.js +21 -3
- package/es/LearningPaths/LearningPathMenu.js +8 -5
- package/es/LearningPaths/LearningPathMenuAsideCopyright.js +17 -4
- package/es/LearningPaths/LearningPathMenuIntro.js +19 -8
- package/es/MyNdla/Resource/Folder.js +7 -6
- package/es/Resource/BlockResource.js +6 -5
- package/es/Resource/ListResource.js +7 -6
- package/es/ResourceGroup/ResourceGroup.js +3 -3
- package/es/ResourceGroup/ResourceItem.js +12 -12
- package/es/ResourceGroup/ResourceList.js +2 -2
- package/es/TopicMenu/TopicMenuButton.js +4 -2
- package/es/TreeStructure/FolderItem.js +72 -51
- package/es/TreeStructure/FolderItems.js +33 -61
- package/es/TreeStructure/FolderNameInput.js +14 -13
- package/es/TreeStructure/TreeStructure.js +80 -96
- package/es/TreeStructure/helperFunctions.js +4 -73
- package/es/TreeStructure/{TreeStructure.types.js → types.js} +0 -0
- package/es/locale/messages-en.js +6 -1
- package/es/locale/messages-nb.js +6 -1
- package/es/locale/messages-nn.js +6 -1
- package/es/locale/messages-se.js +6 -1
- package/es/locale/messages-sma.js +6 -1
- package/lib/LearningPaths/LearningPathInformation.js +19 -2
- package/lib/LearningPaths/LearningPathMenu.d.ts +2 -1
- package/lib/LearningPaths/LearningPathMenu.js +8 -5
- package/lib/LearningPaths/LearningPathMenuAsideCopyright.js +16 -3
- package/lib/LearningPaths/LearningPathMenuIntro.d.ts +3 -1
- package/lib/LearningPaths/LearningPathMenuIntro.js +19 -8
- package/lib/MyNdla/Resource/Folder.js +7 -6
- package/lib/Resource/BlockResource.js +6 -5
- package/lib/Resource/ListResource.js +7 -6
- package/lib/ResourceGroup/ResourceGroup.d.ts +1 -1
- package/lib/ResourceGroup/ResourceGroup.js +3 -3
- package/lib/ResourceGroup/ResourceItem.d.ts +1 -1
- package/lib/ResourceGroup/ResourceItem.js +12 -12
- package/lib/ResourceGroup/ResourceList.d.ts +1 -1
- package/lib/ResourceGroup/ResourceList.js +2 -2
- package/lib/TopicMenu/TopicMenuButton.js +3 -1
- package/lib/TreeStructure/FolderItem.d.ts +6 -20
- package/lib/TreeStructure/FolderItem.js +74 -51
- package/lib/TreeStructure/FolderItems.d.ts +11 -2
- package/lib/TreeStructure/FolderItems.js +33 -61
- package/lib/TreeStructure/FolderNameInput.js +14 -13
- package/lib/TreeStructure/TreeStructure.d.ts +12 -2
- package/lib/TreeStructure/TreeStructure.js +78 -94
- package/lib/TreeStructure/helperFunctions.d.ts +2 -4
- package/lib/TreeStructure/helperFunctions.js +5 -80
- package/lib/TreeStructure/index.d.ts +2 -1
- package/lib/TreeStructure/types.d.ts +32 -0
- package/lib/TreeStructure/{TreeStructure.types.js → types.js} +0 -0
- package/lib/index.d.ts +1 -1
- package/lib/locale/messages-en.d.ts +6 -1
- package/lib/locale/messages-en.js +6 -1
- package/lib/locale/messages-nb.d.ts +6 -1
- package/lib/locale/messages-nb.js +6 -1
- package/lib/locale/messages-nn.d.ts +6 -1
- package/lib/locale/messages-nn.js +6 -1
- package/lib/locale/messages-se.d.ts +6 -1
- package/lib/locale/messages-se.js +6 -1
- package/lib/locale/messages-sma.d.ts +6 -1
- package/lib/locale/messages-sma.js +6 -1
- package/package.json +15 -14
- package/src/LearningPaths/LearningPathInformation.tsx +27 -12
- package/src/LearningPaths/LearningPathMenu.tsx +9 -1
- package/src/LearningPaths/LearningPathMenuAsideCopyright.tsx +22 -20
- package/src/LearningPaths/LearningPathMenuIntro.tsx +15 -2
- package/src/MyNdla/Resource/Folder.tsx +1 -1
- package/src/Resource/BlockResource.tsx +1 -1
- package/src/Resource/ListResource.tsx +1 -1
- package/src/ResourceGroup/ResourceGroup.tsx +1 -1
- package/src/ResourceGroup/ResourceItem.tsx +2 -2
- package/src/ResourceGroup/ResourceList.tsx +1 -1
- package/src/TopicMenu/TopicMenuButton.jsx +5 -1
- package/src/TreeStructure/FolderItem.tsx +59 -67
- package/src/TreeStructure/FolderItems.tsx +30 -50
- package/src/TreeStructure/FolderNameInput.tsx +6 -11
- package/src/TreeStructure/TreeStructure.tsx +73 -71
- package/src/TreeStructure/helperFunctions.ts +3 -37
- package/src/TreeStructure/index.ts +2 -1
- package/src/TreeStructure/types.ts +37 -0
- package/src/index.ts +1 -1
- package/src/locale/messages-en.ts +6 -1
- package/src/locale/messages-nb.ts +7 -1
- package/src/locale/messages-nn.ts +6 -1
- package/src/locale/messages-se.ts +7 -1
- package/src/locale/messages-sma.ts +7 -1
- package/lib/TreeStructure/TreeStructure.types.d.ts +0 -61
- package/src/TreeStructure/TreeStructure.types.ts +0 -71
|
@@ -35,14 +35,6 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
|
|
|
35
35
|
|
|
36
36
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
37
37
|
|
|
38
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
39
|
-
|
|
40
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
41
|
-
|
|
42
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
43
|
-
|
|
44
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
45
|
-
|
|
46
38
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
47
39
|
|
|
48
40
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -60,67 +52,76 @@ exports.MAX_LEVEL_FOR_FOLDERS = MAX_LEVEL_FOR_FOLDERS;
|
|
|
60
52
|
var StyledLabel = (0, _styledBase["default"])("label", {
|
|
61
53
|
target: "e1dg1gdn0",
|
|
62
54
|
label: "StyledLabel"
|
|
63
|
-
})("font-weight:", _core.fonts.weight.semibold, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
55
|
+
})("font-weight:", _core.fonts.weight.semibold, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVTdHJ1Y3R1cmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCZ0MiLCJmaWxlIjoiVHJlZVN0cnVjdHVyZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMi1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQWRkQnV0dG9uIH0gZnJvbSAnQG5kbGEvYnV0dG9uJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BuZGxhL3Rvb2x0aXAnO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IHNwYWNpbmcsIGZvbnRzIH0gZnJvbSAnQG5kbGEvY29yZSc7XG5pbXBvcnQgeyB1bmlxIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IElGb2xkZXIgfSBmcm9tICdAbmRsYS90eXBlcy1sZWFybmluZ3BhdGgtYXBpJztcbmltcG9ydCBUcmVlU3RydWN0dXJlU3R5bGVkV3JhcHBlciBmcm9tICcuL1RyZWVTdHJ1Y3R1cmVXcmFwcGVyJztcbmltcG9ydCBGb2xkZXJJdGVtcyBmcm9tICcuL0ZvbGRlckl0ZW1zJztcbmltcG9ydCB7IGZsYXR0ZW5Gb2xkZXJzIH0gZnJvbSAnLi9oZWxwZXJGdW5jdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uVHJlZVN0cnVjdHVyZVByb3BzLCBGb2xkZXJUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBNQVhfTEVWRUxfRk9SX0ZPTERFUlMgPSA0O1xuXG5jb25zdCBTdHlsZWRMYWJlbCA9IHN0eWxlZC5sYWJlbGBcbiAgZm9udC13ZWlnaHQ6ICR7Zm9udHMud2VpZ2h0LnNlbWlib2xkfTtcbmA7XG5cbmNvbnN0IEFkZEZvbGRlcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tdG9wOiAke3NwYWNpbmcueHNtYWxsfTtcbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZVN0cnVjdHVyZVByb3BzIGV4dGVuZHMgQ29tbW9uVHJlZVN0cnVjdHVyZVByb3BzIHtcbiAgZGVmYXVsdE9wZW5Gb2xkZXJzPzogc3RyaW5nW107XG4gIGZvbGRlcnM6IEZvbGRlclR5cGVbXTtcbiAgZWRpdGFibGU/OiBib29sZWFuO1xuICBmcmFtZWQ/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgbWF4aW11bUxldmVsc09mRm9sZGVyc0FsbG93ZWQ/OiBudW1iZXI7XG4gIG9uTmV3Rm9sZGVyPzogKG5hbWU6IHN0cmluZywgcGFyZW50SWQ6IHN0cmluZykgPT4gUHJvbWlzZTxJRm9sZGVyPjtcbn1cblxuY29uc3QgVHJlZVN0cnVjdHVyZSA9ICh7XG4gIGRlZmF1bHRPcGVuRm9sZGVycyxcbiAgZWRpdGFibGUsXG4gIG1lbnVJdGVtcyxcbiAgZm9sZGVycyxcbiAgZnJhbWVkLFxuICBsYWJlbCxcbiAgbG9hZGluZyxcbiAgbWF4aW11bUxldmVsc09mRm9sZGVyc0FsbG93ZWQgPSBNQVhfTEVWRUxfRk9SX0ZPTERFUlMsXG4gIG9uTmV3Rm9sZGVyLFxuICBvblNlbGVjdEZvbGRlcixcbiAgb3Blbk9uRm9sZGVyQ2xpY2ssXG59OiBUcmVlU3RydWN0dXJlUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGRlZmF1bHRTZWxlY3RlZEZvbGRlcklkID0gZGVmYXVsdE9wZW5Gb2xkZXJzICYmIGRlZmF1bHRPcGVuRm9sZGVyc1tkZWZhdWx0T3BlbkZvbGRlcnMubGVuZ3RoIC0gMV07XG5cbiAgY29uc3QgW29wZW5Gb2xkZXJzLCBzZXRPcGVuRm9sZGVyc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oZGVmYXVsdE9wZW5Gb2xkZXJzIHx8IFtdKTtcblxuICBjb25zdCBbbmV3Rm9sZGVyUGFyZW50SWQsIHNldE5ld0ZvbGRlclBhcmVudElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgY29uc3QgW2ZvY3VzZWRJZCwgc2V0Rm9jdXNlZElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgY29uc3QgW3NlbGVjdGVkRm9sZGVyLCBzZXRTZWxlY3RlZEZvbGRlcl0gPSB1c2VTdGF0ZTxGb2xkZXJUeXBlIHwgdW5kZWZpbmVkPigpO1xuXG4gIGNvbnN0IGZsYXR0ZW5lZEZvbGRlcnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5Gb2xkZXJzKGZvbGRlcnMsIG9wZW5Gb2xkZXJzKSwgW2ZvbGRlcnMsIG9wZW5Gb2xkZXJzXSk7XG4gIGNvbnN0IHZpc2libGVGb2xkZXJJZHMgPSBmbGF0dGVuZWRGb2xkZXJzLm1hcCgoZm9sZGVyKSA9PiBmb2xkZXIuaWQpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRPcGVuRm9sZGVycykge1xuICAgICAgc2V0T3BlbkZvbGRlcnMoKHByZXYpID0+IHtcbiAgICAgICAgcmV0dXJuIHVuaXEoZGVmYXVsdE9wZW5Gb2xkZXJzLmNvbmNhdChwcmV2KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtkZWZhdWx0T3BlbkZvbGRlcnNdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VsZWN0ZWRGb2xkZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGZsYXR0ZW5Gb2xkZXJzKGZvbGRlcnMpLmZpbmQoKGZvbGRlcikgPT4gZm9sZGVyLmlkID09PSBkZWZhdWx0U2VsZWN0ZWRGb2xkZXJJZCk7XG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIoc2VsZWN0ZWQpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtkZWZhdWx0U2VsZWN0ZWRGb2xkZXJJZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2FkaW5nKSB7XG4gICAgICBzZXROZXdGb2xkZXJQYXJlbnRJZCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW2xvYWRpbmddKTtcblxuICBjb25zdCBvbkNsb3NlRm9sZGVyID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBjbG9zZWRGb2xkZXIgPSBmbGF0dGVuZWRGb2xkZXJzLmZpbmQoKGZvbGRlcikgPT4gZm9sZGVyLmlkID09PSBpZCk7XG5cbiAgICBpZiAoY2xvc2VkRm9sZGVyKSB7XG4gICAgICBjb25zdCBzdWJGb2xkZXJzID0gY2xvc2VkRm9sZGVyLnN1YmZvbGRlcnMgJiYgZmxhdHRlbkZvbGRlcnMoY2xvc2VkRm9sZGVyLnN1YmZvbGRlcnMpO1xuICAgICAgaWYgKHN1YkZvbGRlcnMuc29tZSgoZm9sZGVyKSA9PiBmb2xkZXIuaWQgPT09IHNlbGVjdGVkRm9sZGVyPy5pZCkpIHtcbiAgICAgICAgaWYgKG9uU2VsZWN0Rm9sZGVyKSB7XG4gICAgICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIoY2xvc2VkRm9sZGVyKTtcbiAgICAgICAgICBvblNlbGVjdEZvbGRlcihjbG9zZWRGb2xkZXIuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHNldEZvY3VzZWRJZChjbG9zZWRGb2xkZXIuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICBzZXRPcGVuRm9sZGVycyhvcGVuRm9sZGVycy5maWx0ZXIoKGZvbGRlcklkKSA9PiBmb2xkZXJJZCAhPT0gaWQpKTtcbiAgfTtcblxuICBjb25zdCBvbk9wZW5Gb2xkZXIgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgIHNldE9wZW5Gb2xkZXJzKHVuaXEob3BlbkZvbGRlcnMuY29uY2F0KGlkKSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZU5ld0ZvbGRlciA9IChuYW1lOiBzdHJpbmcsIHBhcmVudElkOiBzdHJpbmcpID0+IHtcbiAgICBvbk5ld0ZvbGRlcj8uKG5hbWUsIHBhcmVudElkKS50aGVuKChuZXdGb2xkZXIpID0+IHtcbiAgICAgIGlmIChuZXdGb2xkZXIpIHtcbiAgICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIobmV3Rm9sZGVyKTtcbiAgICAgICAgc2V0Rm9jdXNlZElkKG5ld0ZvbGRlci5pZCk7XG4gICAgICAgIHNldE9wZW5Gb2xkZXJzKHVuaXEob3BlbkZvbGRlcnMuY29uY2F0KHBhcmVudElkKSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2FuY2VsTmV3Rm9sZGVyID0gKCkgPT4ge1xuICAgIHNldE5ld0ZvbGRlclBhcmVudElkKHVuZGVmaW5lZCk7XG4gIH07XG5cbiAgY29uc3QgY2FuQWRkRm9sZGVyID1cbiAgICBlZGl0YWJsZSAmJiBzZWxlY3RlZEZvbGRlciAmJiBzZWxlY3RlZEZvbGRlcj8uYnJlYWRjcnVtYnMubGVuZ3RoIDwgKG1heGltdW1MZXZlbHNPZkZvbGRlcnNBbGxvd2VkIHx8IDEpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHtsYWJlbCAmJiA8U3R5bGVkTGFiZWw+e2xhYmVsfTwvU3R5bGVkTGFiZWw+fVxuICAgICAgPFRyZWVTdHJ1Y3R1cmVTdHlsZWRXcmFwcGVyIGFyaWEtbGFiZWw9XCJNZW51IHRyZWVcIiByb2xlPVwidHJlZVwiIGZyYW1lZD17ZnJhbWVkfT5cbiAgICAgICAgPEZvbGRlckl0ZW1zXG4gICAgICAgICAgZWRpdGFibGU9e2VkaXRhYmxlfVxuICAgICAgICAgIGZvY3VzZWRGb2xkZXJJZD17Zm9jdXNlZElkfVxuICAgICAgICAgIG1lbnVJdGVtcz17bWVudUl0ZW1zfVxuICAgICAgICAgIGZvbGRlcnM9e2ZvbGRlcnN9XG4gICAgICAgICAgbGV2ZWw9ezF9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBzZWxlY3RlZEZvbGRlcj17c2VsZWN0ZWRGb2xkZXJ9XG4gICAgICAgICAgbWF4aW11bUxldmVsc09mRm9sZGVyc0FsbG93ZWQ9e21heGltdW1MZXZlbHNPZkZvbGRlcnNBbGxvd2VkfVxuICAgICAgICAgIG5ld0ZvbGRlclBhcmVudElkPXtuZXdGb2xkZXJQYXJlbnRJZH1cbiAgICAgICAgICBvbkNhbmNlbE5ld0ZvbGRlcj17b25DYW5jZWxOZXdGb2xkZXJ9XG4gICAgICAgICAgb25DbG9zZUZvbGRlcj17b25DbG9zZUZvbGRlcn1cbiAgICAgICAgICBvbk9wZW5Gb2xkZXI9e29uT3BlbkZvbGRlcn1cbiAgICAgICAgICBvblNhdmVOZXdGb2xkZXI9e29uU2F2ZU5ld0ZvbGRlcn1cbiAgICAgICAgICBvblNlbGVjdEZvbGRlcj17b25TZWxlY3RGb2xkZXJ9XG4gICAgICAgICAgb3BlbkZvbGRlcnM9e29wZW5Gb2xkZXJzfVxuICAgICAgICAgIG9wZW5PbkZvbGRlckNsaWNrPXtvcGVuT25Gb2xkZXJDbGlja31cbiAgICAgICAgICBzZXRGb2N1c2VkSWQ9e3NldEZvY3VzZWRJZH1cbiAgICAgICAgICBzZXRTZWxlY3RlZEZvbGRlcj17c2V0U2VsZWN0ZWRGb2xkZXJ9XG4gICAgICAgICAgdmlzaWJsZUZvbGRlcnM9e3Zpc2libGVGb2xkZXJJZHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RyZWVTdHJ1Y3R1cmVTdHlsZWRXcmFwcGVyPlxuICAgICAge2VkaXRhYmxlICYmIChcbiAgICAgICAgPEFkZEZvbGRlcldyYXBwZXI+XG4gICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgIHRvb2x0aXA9e1xuICAgICAgICAgICAgICBjYW5BZGRGb2xkZXJcbiAgICAgICAgICAgICAgICA/IHQoJ215TmRsYS5uZXdGb2xkZXJVbmRlcicsIHtcbiAgICAgICAgICAgICAgICAgICAgZm9sZGVyTmFtZTogc2VsZWN0ZWRGb2xkZXI/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogdCgndHJlZVN0cnVjdHVyZS5tYXhGb2xkZXJzQWxyZWFkeUFkZGVkJylcbiAgICAgICAgICAgIH0+XG4gICAgICAgICAgICA8QWRkQnV0dG9uXG4gICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuQWRkRm9sZGVyfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdteU5kbGEubmV3Rm9sZGVyJyl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE5ld0ZvbGRlclBhcmVudElkKHNlbGVjdGVkRm9sZGVyPy5pZCl9PlxuICAgICAgICAgICAgICB7dCgnbXlOZGxhLm5ld0ZvbGRlcicpfVxuICAgICAgICAgICAgPC9BZGRCdXR0b24+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L0FkZEZvbGRlcldyYXBwZXI+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVHJlZVN0cnVjdHVyZTtcbiJdfQ== */"));
|
|
64
56
|
var AddFolderWrapper = (0, _styledBase["default"])("div", {
|
|
65
57
|
target: "e1dg1gdn1",
|
|
66
58
|
label: "AddFolderWrapper"
|
|
67
|
-
})("display:flex;margin-top:", _core.spacing.xsmall, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
59
|
+
})("display:flex;margin-top:", _core.spacing.xsmall, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVTdHJ1Y3R1cmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJCbUMiLCJmaWxlIjoiVHJlZVN0cnVjdHVyZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMi1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQWRkQnV0dG9uIH0gZnJvbSAnQG5kbGEvYnV0dG9uJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BuZGxhL3Rvb2x0aXAnO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IHNwYWNpbmcsIGZvbnRzIH0gZnJvbSAnQG5kbGEvY29yZSc7XG5pbXBvcnQgeyB1bmlxIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IElGb2xkZXIgfSBmcm9tICdAbmRsYS90eXBlcy1sZWFybmluZ3BhdGgtYXBpJztcbmltcG9ydCBUcmVlU3RydWN0dXJlU3R5bGVkV3JhcHBlciBmcm9tICcuL1RyZWVTdHJ1Y3R1cmVXcmFwcGVyJztcbmltcG9ydCBGb2xkZXJJdGVtcyBmcm9tICcuL0ZvbGRlckl0ZW1zJztcbmltcG9ydCB7IGZsYXR0ZW5Gb2xkZXJzIH0gZnJvbSAnLi9oZWxwZXJGdW5jdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uVHJlZVN0cnVjdHVyZVByb3BzLCBGb2xkZXJUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBNQVhfTEVWRUxfRk9SX0ZPTERFUlMgPSA0O1xuXG5jb25zdCBTdHlsZWRMYWJlbCA9IHN0eWxlZC5sYWJlbGBcbiAgZm9udC13ZWlnaHQ6ICR7Zm9udHMud2VpZ2h0LnNlbWlib2xkfTtcbmA7XG5cbmNvbnN0IEFkZEZvbGRlcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tdG9wOiAke3NwYWNpbmcueHNtYWxsfTtcbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZVN0cnVjdHVyZVByb3BzIGV4dGVuZHMgQ29tbW9uVHJlZVN0cnVjdHVyZVByb3BzIHtcbiAgZGVmYXVsdE9wZW5Gb2xkZXJzPzogc3RyaW5nW107XG4gIGZvbGRlcnM6IEZvbGRlclR5cGVbXTtcbiAgZWRpdGFibGU/OiBib29sZWFuO1xuICBmcmFtZWQ/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgbWF4aW11bUxldmVsc09mRm9sZGVyc0FsbG93ZWQ/OiBudW1iZXI7XG4gIG9uTmV3Rm9sZGVyPzogKG5hbWU6IHN0cmluZywgcGFyZW50SWQ6IHN0cmluZykgPT4gUHJvbWlzZTxJRm9sZGVyPjtcbn1cblxuY29uc3QgVHJlZVN0cnVjdHVyZSA9ICh7XG4gIGRlZmF1bHRPcGVuRm9sZGVycyxcbiAgZWRpdGFibGUsXG4gIG1lbnVJdGVtcyxcbiAgZm9sZGVycyxcbiAgZnJhbWVkLFxuICBsYWJlbCxcbiAgbG9hZGluZyxcbiAgbWF4aW11bUxldmVsc09mRm9sZGVyc0FsbG93ZWQgPSBNQVhfTEVWRUxfRk9SX0ZPTERFUlMsXG4gIG9uTmV3Rm9sZGVyLFxuICBvblNlbGVjdEZvbGRlcixcbiAgb3Blbk9uRm9sZGVyQ2xpY2ssXG59OiBUcmVlU3RydWN0dXJlUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGRlZmF1bHRTZWxlY3RlZEZvbGRlcklkID0gZGVmYXVsdE9wZW5Gb2xkZXJzICYmIGRlZmF1bHRPcGVuRm9sZGVyc1tkZWZhdWx0T3BlbkZvbGRlcnMubGVuZ3RoIC0gMV07XG5cbiAgY29uc3QgW29wZW5Gb2xkZXJzLCBzZXRPcGVuRm9sZGVyc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oZGVmYXVsdE9wZW5Gb2xkZXJzIHx8IFtdKTtcblxuICBjb25zdCBbbmV3Rm9sZGVyUGFyZW50SWQsIHNldE5ld0ZvbGRlclBhcmVudElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgY29uc3QgW2ZvY3VzZWRJZCwgc2V0Rm9jdXNlZElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgY29uc3QgW3NlbGVjdGVkRm9sZGVyLCBzZXRTZWxlY3RlZEZvbGRlcl0gPSB1c2VTdGF0ZTxGb2xkZXJUeXBlIHwgdW5kZWZpbmVkPigpO1xuXG4gIGNvbnN0IGZsYXR0ZW5lZEZvbGRlcnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5Gb2xkZXJzKGZvbGRlcnMsIG9wZW5Gb2xkZXJzKSwgW2ZvbGRlcnMsIG9wZW5Gb2xkZXJzXSk7XG4gIGNvbnN0IHZpc2libGVGb2xkZXJJZHMgPSBmbGF0dGVuZWRGb2xkZXJzLm1hcCgoZm9sZGVyKSA9PiBmb2xkZXIuaWQpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRPcGVuRm9sZGVycykge1xuICAgICAgc2V0T3BlbkZvbGRlcnMoKHByZXYpID0+IHtcbiAgICAgICAgcmV0dXJuIHVuaXEoZGVmYXVsdE9wZW5Gb2xkZXJzLmNvbmNhdChwcmV2KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtkZWZhdWx0T3BlbkZvbGRlcnNdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VsZWN0ZWRGb2xkZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGZsYXR0ZW5Gb2xkZXJzKGZvbGRlcnMpLmZpbmQoKGZvbGRlcikgPT4gZm9sZGVyLmlkID09PSBkZWZhdWx0U2VsZWN0ZWRGb2xkZXJJZCk7XG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIoc2VsZWN0ZWQpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtkZWZhdWx0U2VsZWN0ZWRGb2xkZXJJZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2FkaW5nKSB7XG4gICAgICBzZXROZXdGb2xkZXJQYXJlbnRJZCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW2xvYWRpbmddKTtcblxuICBjb25zdCBvbkNsb3NlRm9sZGVyID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBjbG9zZWRGb2xkZXIgPSBmbGF0dGVuZWRGb2xkZXJzLmZpbmQoKGZvbGRlcikgPT4gZm9sZGVyLmlkID09PSBpZCk7XG5cbiAgICBpZiAoY2xvc2VkRm9sZGVyKSB7XG4gICAgICBjb25zdCBzdWJGb2xkZXJzID0gY2xvc2VkRm9sZGVyLnN1YmZvbGRlcnMgJiYgZmxhdHRlbkZvbGRlcnMoY2xvc2VkRm9sZGVyLnN1YmZvbGRlcnMpO1xuICAgICAgaWYgKHN1YkZvbGRlcnMuc29tZSgoZm9sZGVyKSA9PiBmb2xkZXIuaWQgPT09IHNlbGVjdGVkRm9sZGVyPy5pZCkpIHtcbiAgICAgICAgaWYgKG9uU2VsZWN0Rm9sZGVyKSB7XG4gICAgICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIoY2xvc2VkRm9sZGVyKTtcbiAgICAgICAgICBvblNlbGVjdEZvbGRlcihjbG9zZWRGb2xkZXIuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHNldEZvY3VzZWRJZChjbG9zZWRGb2xkZXIuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICBzZXRPcGVuRm9sZGVycyhvcGVuRm9sZGVycy5maWx0ZXIoKGZvbGRlcklkKSA9PiBmb2xkZXJJZCAhPT0gaWQpKTtcbiAgfTtcblxuICBjb25zdCBvbk9wZW5Gb2xkZXIgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgIHNldE9wZW5Gb2xkZXJzKHVuaXEob3BlbkZvbGRlcnMuY29uY2F0KGlkKSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZU5ld0ZvbGRlciA9IChuYW1lOiBzdHJpbmcsIHBhcmVudElkOiBzdHJpbmcpID0+IHtcbiAgICBvbk5ld0ZvbGRlcj8uKG5hbWUsIHBhcmVudElkKS50aGVuKChuZXdGb2xkZXIpID0+IHtcbiAgICAgIGlmIChuZXdGb2xkZXIpIHtcbiAgICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIobmV3Rm9sZGVyKTtcbiAgICAgICAgc2V0Rm9jdXNlZElkKG5ld0ZvbGRlci5pZCk7XG4gICAgICAgIHNldE9wZW5Gb2xkZXJzKHVuaXEob3BlbkZvbGRlcnMuY29uY2F0KHBhcmVudElkKSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2FuY2VsTmV3Rm9sZGVyID0gKCkgPT4ge1xuICAgIHNldE5ld0ZvbGRlclBhcmVudElkKHVuZGVmaW5lZCk7XG4gIH07XG5cbiAgY29uc3QgY2FuQWRkRm9sZGVyID1cbiAgICBlZGl0YWJsZSAmJiBzZWxlY3RlZEZvbGRlciAmJiBzZWxlY3RlZEZvbGRlcj8uYnJlYWRjcnVtYnMubGVuZ3RoIDwgKG1heGltdW1MZXZlbHNPZkZvbGRlcnNBbGxvd2VkIHx8IDEpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHtsYWJlbCAmJiA8U3R5bGVkTGFiZWw+e2xhYmVsfTwvU3R5bGVkTGFiZWw+fVxuICAgICAgPFRyZWVTdHJ1Y3R1cmVTdHlsZWRXcmFwcGVyIGFyaWEtbGFiZWw9XCJNZW51IHRyZWVcIiByb2xlPVwidHJlZVwiIGZyYW1lZD17ZnJhbWVkfT5cbiAgICAgICAgPEZvbGRlckl0ZW1zXG4gICAgICAgICAgZWRpdGFibGU9e2VkaXRhYmxlfVxuICAgICAgICAgIGZvY3VzZWRGb2xkZXJJZD17Zm9jdXNlZElkfVxuICAgICAgICAgIG1lbnVJdGVtcz17bWVudUl0ZW1zfVxuICAgICAgICAgIGZvbGRlcnM9e2ZvbGRlcnN9XG4gICAgICAgICAgbGV2ZWw9ezF9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBzZWxlY3RlZEZvbGRlcj17c2VsZWN0ZWRGb2xkZXJ9XG4gICAgICAgICAgbWF4aW11bUxldmVsc09mRm9sZGVyc0FsbG93ZWQ9e21heGltdW1MZXZlbHNPZkZvbGRlcnNBbGxvd2VkfVxuICAgICAgICAgIG5ld0ZvbGRlclBhcmVudElkPXtuZXdGb2xkZXJQYXJlbnRJZH1cbiAgICAgICAgICBvbkNhbmNlbE5ld0ZvbGRlcj17b25DYW5jZWxOZXdGb2xkZXJ9XG4gICAgICAgICAgb25DbG9zZUZvbGRlcj17b25DbG9zZUZvbGRlcn1cbiAgICAgICAgICBvbk9wZW5Gb2xkZXI9e29uT3BlbkZvbGRlcn1cbiAgICAgICAgICBvblNhdmVOZXdGb2xkZXI9e29uU2F2ZU5ld0ZvbGRlcn1cbiAgICAgICAgICBvblNlbGVjdEZvbGRlcj17b25TZWxlY3RGb2xkZXJ9XG4gICAgICAgICAgb3BlbkZvbGRlcnM9e29wZW5Gb2xkZXJzfVxuICAgICAgICAgIG9wZW5PbkZvbGRlckNsaWNrPXtvcGVuT25Gb2xkZXJDbGlja31cbiAgICAgICAgICBzZXRGb2N1c2VkSWQ9e3NldEZvY3VzZWRJZH1cbiAgICAgICAgICBzZXRTZWxlY3RlZEZvbGRlcj17c2V0U2VsZWN0ZWRGb2xkZXJ9XG4gICAgICAgICAgdmlzaWJsZUZvbGRlcnM9e3Zpc2libGVGb2xkZXJJZHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RyZWVTdHJ1Y3R1cmVTdHlsZWRXcmFwcGVyPlxuICAgICAge2VkaXRhYmxlICYmIChcbiAgICAgICAgPEFkZEZvbGRlcldyYXBwZXI+XG4gICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgIHRvb2x0aXA9e1xuICAgICAgICAgICAgICBjYW5BZGRGb2xkZXJcbiAgICAgICAgICAgICAgICA/IHQoJ215TmRsYS5uZXdGb2xkZXJVbmRlcicsIHtcbiAgICAgICAgICAgICAgICAgICAgZm9sZGVyTmFtZTogc2VsZWN0ZWRGb2xkZXI/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogdCgndHJlZVN0cnVjdHVyZS5tYXhGb2xkZXJzQWxyZWFkeUFkZGVkJylcbiAgICAgICAgICAgIH0+XG4gICAgICAgICAgICA8QWRkQnV0dG9uXG4gICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuQWRkRm9sZGVyfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdteU5kbGEubmV3Rm9sZGVyJyl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE5ld0ZvbGRlclBhcmVudElkKHNlbGVjdGVkRm9sZGVyPy5pZCl9PlxuICAgICAgICAgICAgICB7dCgnbXlOZGxhLm5ld0ZvbGRlcicpfVxuICAgICAgICAgICAgPC9BZGRCdXR0b24+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L0FkZEZvbGRlcldyYXBwZXI+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVHJlZVN0cnVjdHVyZTtcbiJdfQ== */"));
|
|
68
60
|
|
|
69
61
|
var TreeStructure = function TreeStructure(_ref) {
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
var folders = _ref.folders,
|
|
73
|
-
label = _ref.label,
|
|
62
|
+
var defaultOpenFolders = _ref.defaultOpenFolders,
|
|
74
63
|
editable = _ref.editable,
|
|
64
|
+
menuItems = _ref.menuItems,
|
|
65
|
+
folders = _ref.folders,
|
|
66
|
+
framed = _ref.framed,
|
|
67
|
+
label = _ref.label,
|
|
75
68
|
loading = _ref.loading,
|
|
69
|
+
_ref$maximumLevelsOfF = _ref.maximumLevelsOfFoldersAllowed,
|
|
70
|
+
maximumLevelsOfFoldersAllowed = _ref$maximumLevelsOfF === void 0 ? MAX_LEVEL_FOR_FOLDERS : _ref$maximumLevelsOfF,
|
|
76
71
|
onNewFolder = _ref.onNewFolder,
|
|
77
72
|
onSelectFolder = _ref.onSelectFolder,
|
|
78
|
-
openOnFolderClick = _ref.openOnFolderClick
|
|
79
|
-
framed = _ref.framed,
|
|
80
|
-
folderIdMarkedByDefault = _ref.folderIdMarkedByDefault,
|
|
81
|
-
defaultOpenFolders = _ref.defaultOpenFolders,
|
|
82
|
-
folderChild = _ref.folderChild,
|
|
83
|
-
_ref$maximumLevelsOfF = _ref.maximumLevelsOfFoldersAllowed,
|
|
84
|
-
maximumLevelsOfFoldersAllowed = _ref$maximumLevelsOfF === void 0 ? MAX_LEVEL_FOR_FOLDERS : _ref$maximumLevelsOfF;
|
|
73
|
+
openOnFolderClick = _ref.openOnFolderClick;
|
|
85
74
|
|
|
86
75
|
var _useTranslation = (0, _reactI18next.useTranslation)(),
|
|
87
76
|
t = _useTranslation.t;
|
|
88
77
|
|
|
89
|
-
var
|
|
78
|
+
var defaultSelectedFolderId = defaultOpenFolders && defaultOpenFolders[defaultOpenFolders.length - 1];
|
|
79
|
+
|
|
80
|
+
var _useState = (0, _react.useState)(defaultOpenFolders || []),
|
|
90
81
|
_useState2 = _slicedToArray(_useState, 2),
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
openFolders = _useState2[0],
|
|
83
|
+
setOpenFolders = _useState2[1];
|
|
93
84
|
|
|
94
|
-
var _useState3 = (0, _react.useState)(
|
|
85
|
+
var _useState3 = (0, _react.useState)(),
|
|
95
86
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
96
|
-
|
|
97
|
-
|
|
87
|
+
newFolderParentId = _useState4[0],
|
|
88
|
+
setNewFolderParentId = _useState4[1];
|
|
98
89
|
|
|
99
90
|
var _useState5 = (0, _react.useState)(),
|
|
100
91
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
101
|
-
|
|
102
|
-
|
|
92
|
+
focusedId = _useState6[0],
|
|
93
|
+
setFocusedId = _useState6[1];
|
|
103
94
|
|
|
104
|
-
var _useState7 = (0, _react.useState)(
|
|
95
|
+
var _useState7 = (0, _react.useState)(),
|
|
105
96
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
var
|
|
110
|
-
|
|
111
|
-
var rootLevelId = 'treestructure-root';
|
|
112
|
-
var visibleFolders = (0, _react.useMemo)(function () {
|
|
113
|
-
return (0, _helperFunctions.flattenFolders)(folders, openFolders).map(function (folder) {
|
|
114
|
-
return folder.id;
|
|
115
|
-
});
|
|
97
|
+
selectedFolder = _useState8[0],
|
|
98
|
+
setSelectedFolder = _useState8[1];
|
|
99
|
+
|
|
100
|
+
var flattenedFolders = (0, _react.useMemo)(function () {
|
|
101
|
+
return (0, _helperFunctions.flattenFolders)(folders, openFolders);
|
|
116
102
|
}, [folders, openFolders]);
|
|
103
|
+
var visibleFolderIds = flattenedFolders.map(function (folder) {
|
|
104
|
+
return folder.id;
|
|
105
|
+
});
|
|
117
106
|
(0, _react.useEffect)(function () {
|
|
118
107
|
if (defaultOpenFolders) {
|
|
119
108
|
setOpenFolders(function (prev) {
|
|
120
|
-
return (0, _lodash.uniq)(
|
|
109
|
+
return (0, _lodash.uniq)(defaultOpenFolders.concat(prev));
|
|
121
110
|
});
|
|
122
111
|
}
|
|
123
112
|
}, [defaultOpenFolders]);
|
|
113
|
+
(0, _react.useEffect)(function () {
|
|
114
|
+
if (defaultSelectedFolderId !== undefined) {
|
|
115
|
+
var selected = (0, _helperFunctions.flattenFolders)(folders).find(function (folder) {
|
|
116
|
+
return folder.id === defaultSelectedFolderId;
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
if (selected) {
|
|
120
|
+
setSelectedFolder(selected);
|
|
121
|
+
}
|
|
122
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
123
|
+
|
|
124
|
+
}, [defaultSelectedFolderId]);
|
|
124
125
|
(0, _react.useEffect)(function () {
|
|
125
126
|
if (!loading) {
|
|
126
127
|
setNewFolderParentId(undefined);
|
|
@@ -128,27 +129,27 @@ var TreeStructure = function TreeStructure(_ref) {
|
|
|
128
129
|
}, [loading]);
|
|
129
130
|
|
|
130
131
|
var onCloseFolder = function onCloseFolder(id) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
var
|
|
137
|
-
return markedFolderPath[_index] === folderId;
|
|
138
|
-
});
|
|
132
|
+
var closedFolder = flattenedFolders.find(function (folder) {
|
|
133
|
+
return folder.id === id;
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
if (closedFolder) {
|
|
137
|
+
var subFolders = closedFolder.subfolders && (0, _helperFunctions.flattenFolders)(closedFolder.subfolders);
|
|
139
138
|
|
|
140
|
-
if (
|
|
139
|
+
if (subFolders.some(function (folder) {
|
|
140
|
+
return folder.id === (selectedFolder === null || selectedFolder === void 0 ? void 0 : selectedFolder.id);
|
|
141
|
+
})) {
|
|
141
142
|
if (onSelectFolder) {
|
|
142
|
-
|
|
143
|
-
onSelectFolder(
|
|
144
|
-
} else {
|
|
145
|
-
setFocusedFolderId(closingFolderPath[closingFolderPath.length - 1]);
|
|
143
|
+
setSelectedFolder(closedFolder);
|
|
144
|
+
onSelectFolder(closedFolder.id);
|
|
146
145
|
}
|
|
146
|
+
|
|
147
|
+
setFocusedId(closedFolder.id);
|
|
147
148
|
}
|
|
148
149
|
}
|
|
149
150
|
|
|
150
|
-
setOpenFolders(openFolders.filter(function (
|
|
151
|
-
return
|
|
151
|
+
setOpenFolders(openFolders.filter(function (folderId) {
|
|
152
|
+
return folderId !== id;
|
|
152
153
|
}));
|
|
153
154
|
};
|
|
154
155
|
|
|
@@ -156,15 +157,11 @@ var TreeStructure = function TreeStructure(_ref) {
|
|
|
156
157
|
setOpenFolders((0, _lodash.uniq)(openFolders.concat(id)));
|
|
157
158
|
};
|
|
158
159
|
|
|
159
|
-
var onCreateNewFolder = function onCreateNewFolder(parentId) {
|
|
160
|
-
setNewFolderParentId(parentId);
|
|
161
|
-
};
|
|
162
|
-
|
|
163
160
|
var onSaveNewFolder = function onSaveNewFolder(name, parentId) {
|
|
164
|
-
onNewFolder(name, parentId).then(function (
|
|
165
|
-
if (
|
|
166
|
-
|
|
167
|
-
|
|
161
|
+
onNewFolder === null || onNewFolder === void 0 ? void 0 : onNewFolder(name, parentId).then(function (newFolder) {
|
|
162
|
+
if (newFolder) {
|
|
163
|
+
setSelectedFolder(newFolder);
|
|
164
|
+
setFocusedId(newFolder.id);
|
|
168
165
|
setOpenFolders((0, _lodash.uniq)(openFolders.concat(parentId)));
|
|
169
166
|
}
|
|
170
167
|
});
|
|
@@ -174,53 +171,40 @@ var TreeStructure = function TreeStructure(_ref) {
|
|
|
174
171
|
setNewFolderParentId(undefined);
|
|
175
172
|
};
|
|
176
173
|
|
|
177
|
-
var
|
|
178
|
-
|
|
179
|
-
setFocusedFolderId(id);
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
var paths = (0, _helperFunctions.getPathOfFolder)(folders, markedFolderId || '');
|
|
183
|
-
var canAddFolder = editable && paths.length < (maximumLevelsOfFoldersAllowed || 1);
|
|
184
|
-
return (0, _core2.jsx)("div", {
|
|
185
|
-
ref: treestructureRef
|
|
186
|
-
}, label && (0, _core2.jsx)(StyledLabel, {
|
|
187
|
-
htmlFor: rootLevelId
|
|
188
|
-
}, label), (0, _core2.jsx)(_TreeStructureWrapper["default"], {
|
|
189
|
-
ref: wrapperRef,
|
|
190
|
-
id: rootLevelId,
|
|
174
|
+
var canAddFolder = editable && selectedFolder && (selectedFolder === null || selectedFolder === void 0 ? void 0 : selectedFolder.breadcrumbs.length) < (maximumLevelsOfFoldersAllowed || 1);
|
|
175
|
+
return (0, _core2.jsx)("div", null, label && (0, _core2.jsx)(StyledLabel, null, label), (0, _core2.jsx)(_TreeStructureWrapper["default"], {
|
|
191
176
|
"aria-label": "Menu tree",
|
|
192
177
|
role: "tree",
|
|
193
178
|
framed: framed
|
|
194
179
|
}, (0, _core2.jsx)(_FolderItems["default"], {
|
|
195
|
-
onSelectFolder: onSelectFolder,
|
|
196
|
-
level: 1,
|
|
197
|
-
folders: folders,
|
|
198
180
|
editable: editable,
|
|
199
|
-
|
|
200
|
-
|
|
181
|
+
focusedFolderId: focusedId,
|
|
182
|
+
menuItems: menuItems,
|
|
183
|
+
folders: folders,
|
|
184
|
+
level: 1,
|
|
185
|
+
loading: loading,
|
|
186
|
+
selectedFolder: selectedFolder,
|
|
187
|
+
maximumLevelsOfFoldersAllowed: maximumLevelsOfFoldersAllowed,
|
|
201
188
|
newFolderParentId: newFolderParentId,
|
|
202
|
-
onCreateNewFolder: onCreateNewFolder,
|
|
203
189
|
onCancelNewFolder: onCancelNewFolder,
|
|
190
|
+
onCloseFolder: onCloseFolder,
|
|
191
|
+
onOpenFolder: onOpenFolder,
|
|
204
192
|
onSaveNewFolder: onSaveNewFolder,
|
|
205
|
-
|
|
193
|
+
onSelectFolder: onSelectFolder,
|
|
206
194
|
openFolders: openFolders,
|
|
207
|
-
markedFolderId: markedFolderId,
|
|
208
|
-
onMarkFolder: onMarkFolder,
|
|
209
195
|
openOnFolderClick: openOnFolderClick,
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
folderChild: folderChild,
|
|
214
|
-
maximumLevelsOfFoldersAllowed: maximumLevelsOfFoldersAllowed
|
|
196
|
+
setFocusedId: setFocusedId,
|
|
197
|
+
setSelectedFolder: setSelectedFolder,
|
|
198
|
+
visibleFolders: visibleFolderIds
|
|
215
199
|
})), editable && (0, _core2.jsx)(AddFolderWrapper, null, (0, _core2.jsx)(_tooltip["default"], {
|
|
216
200
|
tooltip: canAddFolder ? t('myNdla.newFolderUnder', {
|
|
217
|
-
folderName:
|
|
201
|
+
folderName: selectedFolder === null || selectedFolder === void 0 ? void 0 : selectedFolder.name
|
|
218
202
|
}) : t('treeStructure.maxFoldersAlreadyAdded')
|
|
219
203
|
}, (0, _core2.jsx)(_button.AddButton, {
|
|
220
204
|
disabled: !canAddFolder,
|
|
221
205
|
"aria-label": t('myNdla.newFolder'),
|
|
222
206
|
onClick: function onClick() {
|
|
223
|
-
setNewFolderParentId(
|
|
207
|
+
return setNewFolderParentId(selectedFolder === null || selectedFolder === void 0 ? void 0 : selectedFolder.id);
|
|
224
208
|
}
|
|
225
209
|
}, t('myNdla.newFolder')))));
|
|
226
210
|
};
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const getFolderName: (data: FolderStructureProps[], findId: string | undefined) => string | undefined;
|
|
4
|
-
export declare const flattenFolders: (folders: FolderStructureProps[], openFolders?: string[] | undefined) => FolderStructureProps[];
|
|
1
|
+
import { FolderType } from './types';
|
|
2
|
+
export declare const flattenFolders: (folders: FolderType[], openFolders?: string[] | undefined) => FolderType[];
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.flattenFolders =
|
|
6
|
+
exports.flattenFolders = void 0;
|
|
7
7
|
|
|
8
8
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
9
9
|
|
|
@@ -15,86 +15,11 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
15
15
|
|
|
16
16
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
17
17
|
|
|
18
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
19
|
-
|
|
20
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
21
|
-
|
|
22
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
23
|
-
|
|
24
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
25
|
-
|
|
26
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
27
|
-
|
|
28
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
29
|
-
|
|
30
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
31
|
-
|
|
32
|
-
var getPathOfFolder = function getPathOfFolder(data, findId) {
|
|
33
|
-
var paths = function paths(folders, path) {
|
|
34
|
-
var _iterator = _createForOfIteratorHelper(folders),
|
|
35
|
-
_step;
|
|
36
|
-
|
|
37
|
-
try {
|
|
38
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
39
|
-
var _step$value = _step.value,
|
|
40
|
-
id = _step$value.id,
|
|
41
|
-
subfolders = _step$value.subfolders;
|
|
42
|
-
|
|
43
|
-
if (id === findId) {
|
|
44
|
-
return [].concat(_toConsumableArray(path), [id]);
|
|
45
|
-
} else if (subfolders === null || subfolders === void 0 ? void 0 : subfolders.length) {
|
|
46
|
-
return paths(subfolders, [].concat(_toConsumableArray(path), [id]));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
} catch (err) {
|
|
50
|
-
_iterator.e(err);
|
|
51
|
-
} finally {
|
|
52
|
-
_iterator.f();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return [];
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
return paths(data, []);
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
exports.getPathOfFolder = getPathOfFolder;
|
|
62
|
-
|
|
63
|
-
var getFolderName = function getFolderName(data, findId) {
|
|
64
|
-
if (!findId) {
|
|
65
|
-
return undefined;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
var folderName;
|
|
69
|
-
|
|
70
|
-
var paths = function paths(dataChildren) {
|
|
71
|
-
dataChildren.some(function (_ref, _index) {
|
|
72
|
-
var id = _ref.id,
|
|
73
|
-
name = _ref.name,
|
|
74
|
-
subfolders = _ref.subfolders;
|
|
75
|
-
|
|
76
|
-
if (id === findId) {
|
|
77
|
-
folderName = name;
|
|
78
|
-
return true;
|
|
79
|
-
} else if (subfolders === null || subfolders === void 0 ? void 0 : subfolders.length) {
|
|
80
|
-
return paths(subfolders);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return false;
|
|
84
|
-
});
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
paths(data);
|
|
88
|
-
return folderName;
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
exports.getFolderName = getFolderName;
|
|
92
|
-
|
|
93
18
|
var flattenFolders = function flattenFolders(folders, openFolders) {
|
|
94
|
-
return folders.reduce(function (acc,
|
|
95
|
-
var subfolders =
|
|
96
|
-
id =
|
|
97
|
-
rest = _objectWithoutProperties(
|
|
19
|
+
return folders.reduce(function (acc, _ref) {
|
|
20
|
+
var subfolders = _ref.subfolders,
|
|
21
|
+
id = _ref.id,
|
|
22
|
+
rest = _objectWithoutProperties(_ref, ["subfolders", "id"]);
|
|
98
23
|
|
|
99
24
|
if (!subfolders || openFolders && !openFolders.includes(id)) {
|
|
100
25
|
return acc.concat(_objectSpread({
|
|
@@ -6,5 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
import TreeStructure from './TreeStructure';
|
|
9
|
-
export type {
|
|
9
|
+
export type { FolderType, TreeStructureMenuProps } from './types';
|
|
10
|
+
export type { TreeStructureProps } from './TreeStructure';
|
|
10
11
|
export { TreeStructure };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2022-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
import { MouseEvent, ReactNode } from 'react';
|
|
9
|
+
import { IFolder } from '@ndla/types-learningpath-api';
|
|
10
|
+
import { MenuItemProps } from '@ndla/button/src';
|
|
11
|
+
export interface FolderType extends IFolder {
|
|
12
|
+
icon?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export interface TreeStructureMenuProps extends Omit<MenuItemProps, 'onClick'> {
|
|
15
|
+
onClick: (e: MouseEvent<HTMLDivElement> | undefined, folder: FolderType) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface CommonTreeStructureProps {
|
|
18
|
+
loading?: boolean;
|
|
19
|
+
onSelectFolder?: (id: string) => void;
|
|
20
|
+
openOnFolderClick?: boolean;
|
|
21
|
+
menuItems?: TreeStructureMenuProps[];
|
|
22
|
+
}
|
|
23
|
+
export interface CommonFolderItemsProps extends CommonTreeStructureProps {
|
|
24
|
+
focusedFolderId?: string;
|
|
25
|
+
level: number;
|
|
26
|
+
selectedFolder?: FolderType;
|
|
27
|
+
onCloseFolder: (id: string) => void;
|
|
28
|
+
onOpenFolder: (id: string) => void;
|
|
29
|
+
setFocusedId: (id: string) => void;
|
|
30
|
+
setSelectedFolder: (id: FolderType) => void;
|
|
31
|
+
visibleFolders: string[];
|
|
32
|
+
}
|
|
File without changes
|
package/lib/index.d.ts
CHANGED
|
@@ -88,4 +88,4 @@ export type { SnackBarItem } from './SnackBar';
|
|
|
88
88
|
export { SnackBar } from './SnackBar';
|
|
89
89
|
export { InfoBlock } from './InfoBlock';
|
|
90
90
|
export { TreeStructure } from './TreeStructure';
|
|
91
|
-
export type {
|
|
91
|
+
export type { FolderType, TreeStructureProps, TreeStructureMenuProps } from './TreeStructure';
|
|
@@ -989,7 +989,12 @@ var messages = _objectSpread(_objectSpread({
|
|
|
989
989
|
ask: 'Ask us in the chat'
|
|
990
990
|
},
|
|
991
991
|
wishToDelete: 'Do you wish to delete your account?',
|
|
992
|
-
terms:
|
|
992
|
+
terms: {
|
|
993
|
+
terms: 'Terms of use',
|
|
994
|
+
term1: 'Do not write personal or sensitive information in text fields.',
|
|
995
|
+
term2: 'Do not write offensive statements in text fields.',
|
|
996
|
+
term3: 'NDLA reserves the right to update or remove resources if they are not up to date.'
|
|
997
|
+
},
|
|
993
998
|
feide: 'We have retrieved this information from Feide',
|
|
994
999
|
newFavourite: 'Recently favourited',
|
|
995
1000
|
storageInfo: {
|
|
@@ -989,7 +989,12 @@ var messages = _objectSpread(_objectSpread({
|
|
|
989
989
|
ask: 'Spør oss i chatten'
|
|
990
990
|
},
|
|
991
991
|
wishToDelete: 'Ønsker du ikke ha brukerprofil hos oss lengre?',
|
|
992
|
-
terms:
|
|
992
|
+
terms: {
|
|
993
|
+
terms: 'Vilkår for bruk',
|
|
994
|
+
term1: 'Ikke skriv personsensitiv informasjon eller persondata i tekstfelt.',
|
|
995
|
+
term2: 'Ikke skriv noe støtende i tekstfelt.',
|
|
996
|
+
term3: 'NDLA forbeholder seg retten til å oppdatere eller eventuelt slette ressurser dersom disse blir utdatert.'
|
|
997
|
+
},
|
|
993
998
|
newFavourite: 'Nylig lagt til',
|
|
994
999
|
feide: 'Dette henter vi om deg fra Feide',
|
|
995
1000
|
storageInfo: {
|
|
@@ -989,7 +989,12 @@ var messages = _objectSpread(_objectSpread({
|
|
|
989
989
|
ask: 'Spør oss i chatten'
|
|
990
990
|
},
|
|
991
991
|
wishToDelete: 'Ønsker du ikke ha brukerprofil hos oss lengre?',
|
|
992
|
-
terms:
|
|
992
|
+
terms: {
|
|
993
|
+
terms: 'Vilkår for bruk',
|
|
994
|
+
term1: 'Ikkje skriv personsensitiv informasjon eller persondata i tekstfelt.',
|
|
995
|
+
term2: 'Ikkje skriv noko støytande i tekstfelt.',
|
|
996
|
+
term3: 'NDLA atterhald seg retten til å oppdatere eller eventuelt slette ressursar dersom disse blir utdatert.'
|
|
997
|
+
},
|
|
993
998
|
newFavourite: 'Nylig lagt til',
|
|
994
999
|
feide: 'Dette henter vi om deg fra Feide',
|
|
995
1000
|
storageInfo: {
|
|
@@ -989,7 +989,12 @@ var messages = _objectSpread(_objectSpread({
|
|
|
989
989
|
ask: 'Spør oss i chatten'
|
|
990
990
|
},
|
|
991
991
|
wishToDelete: 'Ønsker du ikke ha brukerprofil hos oss lengre?',
|
|
992
|
-
terms:
|
|
992
|
+
terms: {
|
|
993
|
+
terms: 'Vilkår for bruk',
|
|
994
|
+
term1: 'Ikke skriv personsensitiv informasjon eller persondata i tekstfelt.',
|
|
995
|
+
term2: 'Ikke skriv noe støtende i tekstfelt.',
|
|
996
|
+
term3: 'NDLA forbeholder seg retten til å oppdatere eller eventuelt slette ressurser dersom disse blir utdatert.'
|
|
997
|
+
},
|
|
993
998
|
newFavourite: 'Nylig lagt til',
|
|
994
999
|
feide: 'Dette henter vi om deg fra Feide',
|
|
995
1000
|
storageInfo: {
|
|
@@ -989,7 +989,12 @@ var messages = _objectSpread(_objectSpread({
|
|
|
989
989
|
ask: 'Spør oss i chatten'
|
|
990
990
|
},
|
|
991
991
|
wishToDelete: 'Ønsker du ikke ha brukerprofil hos oss lengre?',
|
|
992
|
-
terms:
|
|
992
|
+
terms: {
|
|
993
|
+
terms: 'Vilkår for bruk',
|
|
994
|
+
term1: 'Ikke skriv personsensitiv informasjon eller persondata i tekstfelt.',
|
|
995
|
+
term2: 'Ikke skriv noe støtende i tekstfelt.',
|
|
996
|
+
term3: 'NDLA forbeholder seg retten til å oppdatere eller eventuelt slette ressurser dersom disse blir utdatert.'
|
|
997
|
+
},
|
|
993
998
|
newFavourite: 'Nylig lagt til',
|
|
994
999
|
feide: 'Dette henter vi om deg fra Feide',
|
|
995
1000
|
storageInfo: {
|