@alfresco/aca-shared 8.1.0-34198623639 → 8.1.0-34207320192
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/fesm2022/alfresco-aca-shared-rules.mjs +99 -9
- package/fesm2022/alfresco-aca-shared-rules.mjs.map +1 -1
- package/fesm2022/alfresco-aca-shared-store.mjs +15 -1
- package/fesm2022/alfresco-aca-shared-store.mjs.map +1 -1
- package/fesm2022/alfresco-aca-shared.mjs +63 -53
- package/fesm2022/alfresco-aca-shared.mjs.map +1 -1
- package/index.d.ts +3 -1
- package/package.json +1 -1
- package/rules/index.d.ts +46 -3
- package/store/index.d.ts +13 -1
|
@@ -268,7 +268,14 @@ function canRemoveFavorite(context) {
|
|
|
268
268
|
* Checks if user can share selected file.
|
|
269
269
|
* JSON ref: `app.selection.file.canShare`
|
|
270
270
|
*/
|
|
271
|
-
const canShareFile = (context) => [
|
|
271
|
+
const canShareFile = (context) => [
|
|
272
|
+
context.selection.file,
|
|
273
|
+
!isTrashcan(context),
|
|
274
|
+
hasQuickShareEnabled(context),
|
|
275
|
+
!isShared(context),
|
|
276
|
+
!isNodeLink(context),
|
|
277
|
+
!isLockedOrWorkingCopy(context)
|
|
278
|
+
].every(Boolean);
|
|
272
279
|
/**
|
|
273
280
|
* Checks if user can perform "Join" or "Cancel Join Request" on a library.
|
|
274
281
|
* JSON ref: `canToggleJoinLibrary`
|
|
@@ -340,7 +347,7 @@ function canCreateFolder(context) {
|
|
|
340
347
|
* JSON ref: `app.selection.canDownload`
|
|
341
348
|
*/
|
|
342
349
|
function canDownloadSelection(context) {
|
|
343
|
-
if (isNodeLink(context)) {
|
|
350
|
+
if (context.selection.nodes.some((node) => isLockedOrWorkingCopy(context, node)) || isNodeLink(context)) {
|
|
344
351
|
return false;
|
|
345
352
|
}
|
|
346
353
|
return context.selection.nodes.every((node) => node.entry && (node.entry.isFile || node.entry.isFolder || !!node.entry.nodeId));
|
|
@@ -431,13 +438,48 @@ function hasLockedFiles(context) {
|
|
|
431
438
|
const isWriteLocked = (context) => !!(context?.selection?.file?.entry?.properties?.['cm:lockType'] === 'WRITE_LOCK' ||
|
|
432
439
|
context?.selection?.file?.entry?.properties?.['cm:lockType'] === 'READ_ONLY_LOCK');
|
|
433
440
|
/**
|
|
434
|
-
* Checks if
|
|
435
|
-
*
|
|
441
|
+
* Checks if a node is locked or a working copy. Accepts an optional node argument
|
|
442
|
+
* so it can be evaluated per-row (e.g. for badges), falling back to context.selection.first.
|
|
443
|
+
* JSON ref: `app.selection.isLockedOrWorkingCopy`
|
|
444
|
+
*
|
|
445
|
+
* Covers:
|
|
446
|
+
* - `entry.isLocked` — any server-reported lock
|
|
447
|
+
* - `cm:lockType` property — present when locked via the Lock action
|
|
448
|
+
* - `cm:workingcopy` aspect — the working copy created on checkout
|
|
449
|
+
* - `cm:checkedOut` aspect — the original file while its working copy exists
|
|
450
|
+
*
|
|
451
|
+
* @param context Rule execution context
|
|
452
|
+
* @param node Optional node to evaluate; defaults to context.selection.first
|
|
453
|
+
*/
|
|
454
|
+
function isLockedOrWorkingCopy(context, node) {
|
|
455
|
+
const entry = (node ?? context?.selection?.first)?.entry;
|
|
456
|
+
if (!entry) {
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
if (!entry.isFile && !entry.nodeId) {
|
|
460
|
+
return false;
|
|
461
|
+
}
|
|
462
|
+
return (entry.isLocked === true ||
|
|
463
|
+
!!entry.properties?.['cm:lockType'] ||
|
|
464
|
+
(entry.aspectNames ?? []).includes('cm:workingcopy') ||
|
|
465
|
+
(entry.aspectNames ?? []).includes('cm:checkedOut'));
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Checks if the current user owns the lock on the selected file.
|
|
469
|
+
* Handles both regular write/read-only locks (`cm:lockOwner`) and
|
|
470
|
+
* working copies (`cm:workingCopyOwner`), which have no `cm:lockType` themselves.
|
|
436
471
|
* JSON ref: `app.selection.file.isLockOwner`
|
|
437
472
|
*/
|
|
438
|
-
const isUserWriteLockOwner = (context) =>
|
|
439
|
-
context.selection.file?.entry
|
|
440
|
-
|
|
473
|
+
const isUserWriteLockOwner = (context) => {
|
|
474
|
+
const entry = context.selection.file?.entry;
|
|
475
|
+
if (!entry) {
|
|
476
|
+
return false;
|
|
477
|
+
}
|
|
478
|
+
if (entry.aspectNames?.includes('cm:workingcopy')) {
|
|
479
|
+
return entry.properties?.['cm:workingCopyOwner']?.id === context.profile.id;
|
|
480
|
+
}
|
|
481
|
+
return isWriteLocked(context) && !!entry.properties?.['cm:lockOwner'] && entry.properties['cm:lockOwner'].id === context.profile.id;
|
|
482
|
+
};
|
|
441
483
|
/**
|
|
442
484
|
* Checks if user can lock selected file.
|
|
443
485
|
* JSON ref: `app.selection.file.canLock`
|
|
@@ -475,6 +517,9 @@ function canUploadVersion(context) {
|
|
|
475
517
|
* @param context Rule execution context
|
|
476
518
|
*/
|
|
477
519
|
const canPrintFile = (context) => {
|
|
520
|
+
if (isLockedOrWorkingCopy(context)) {
|
|
521
|
+
return false;
|
|
522
|
+
}
|
|
478
523
|
const nodeEntry = context.selection.file.entry;
|
|
479
524
|
if (!nodeEntry?.content?.mimeType) {
|
|
480
525
|
return false;
|
|
@@ -496,13 +541,14 @@ const canToggleSharedLink = (context) => [canShareFile(context), isShared(contex
|
|
|
496
541
|
* @param context Rule execution context
|
|
497
542
|
*/
|
|
498
543
|
const canEditAspects = (context) => [
|
|
544
|
+
!isWorkingCopy(context),
|
|
499
545
|
!isMultiselection(context),
|
|
500
546
|
canUpdateSelectedNode(context),
|
|
501
547
|
!isWriteLocked(context),
|
|
502
548
|
!isTrashcan(context),
|
|
503
549
|
isMajorVersionAvailable(context, '7')
|
|
504
550
|
].every(Boolean);
|
|
505
|
-
const canToggleFileLock = (context) =>
|
|
551
|
+
const canToggleFileLock = (context) => canCheckout(context) || canCancelCheckout(context);
|
|
506
552
|
/**
|
|
507
553
|
* @deprecated Uses workarounds for for recent files and search api issues.
|
|
508
554
|
* Checks if user can toggle **Favorite** state for a node.
|
|
@@ -540,6 +586,9 @@ function canOpenWithOffice(context) {
|
|
|
540
586
|
if (isNodeLink(context)) {
|
|
541
587
|
return false;
|
|
542
588
|
}
|
|
589
|
+
if (isWorkingCopy(context)) {
|
|
590
|
+
return false;
|
|
591
|
+
}
|
|
543
592
|
if (context.navigation?.url?.startsWith('/trashcan')) {
|
|
544
593
|
return false;
|
|
545
594
|
}
|
|
@@ -662,6 +711,47 @@ const isCheckedOut = (context) => {
|
|
|
662
711
|
}
|
|
663
712
|
return false;
|
|
664
713
|
};
|
|
714
|
+
/**
|
|
715
|
+
* Checks if the selected node is a working copy (has cm:workingcopy aspect).
|
|
716
|
+
* JSON ref: `app.selection.isWorkingCopy`
|
|
717
|
+
*
|
|
718
|
+
* @param context Rule execution context
|
|
719
|
+
*/
|
|
720
|
+
const isWorkingCopy = (context) => {
|
|
721
|
+
if (!context.selection?.isEmpty) {
|
|
722
|
+
return (context.selection.first?.entry?.aspectNames ?? []).includes('cm:workingcopy');
|
|
723
|
+
}
|
|
724
|
+
return false;
|
|
725
|
+
};
|
|
726
|
+
/**
|
|
727
|
+
* Checks if the selected file node can be checked out.
|
|
728
|
+
* Returns true for cm:content (or subtype) file nodes that are not already
|
|
729
|
+
* checked out, not locked, not a working copy, and where the user has update permission.
|
|
730
|
+
* Blocks folders, node links, trashcan items, and special system nodes (no update permission).
|
|
731
|
+
* JSON ref: `app.selection.canCheckout`
|
|
732
|
+
*
|
|
733
|
+
* @param context Rule execution context
|
|
734
|
+
*/
|
|
735
|
+
const canCheckout = (context) => hasFileSelected(context) &&
|
|
736
|
+
!isTrashcan(context) &&
|
|
737
|
+
!isNodeLink(context) &&
|
|
738
|
+
canUpdateSelectedNode(context) &&
|
|
739
|
+
!isLockedOrWorkingCopy(context);
|
|
740
|
+
/**
|
|
741
|
+
* Checks if checkout can be cancelled for the selected node.
|
|
742
|
+
* Returns true when a checked-out original or working copy is selected
|
|
743
|
+
* and the user is the lock owner or has delete permission.
|
|
744
|
+
* JSON ref: `app.selection.canCancelCheckout`
|
|
745
|
+
*
|
|
746
|
+
* @param context Rule execution context
|
|
747
|
+
*/
|
|
748
|
+
const canCancelCheckout = (context) => {
|
|
749
|
+
return (hasFileSelected(context) &&
|
|
750
|
+
!isTrashcan(context) &&
|
|
751
|
+
!isNodeLink(context) &&
|
|
752
|
+
isLockedOrWorkingCopy(context) &&
|
|
753
|
+
(context.permissions.check(context.selection.file?.entry, ['delete']) || isUserWriteLockOwner(context)));
|
|
754
|
+
};
|
|
665
755
|
/**
|
|
666
756
|
* Checks if any of the selected nodes is a link node (app:filelink or app:folderlink).
|
|
667
757
|
* JSON ref: `app.selection.isNodeLink`
|
|
@@ -706,5 +796,5 @@ const isKnowledgeDiscoveryUrlPresent = (context) => !!context.appConfig.get('kno
|
|
|
706
796
|
* Generated bundle index. Do not edit.
|
|
707
797
|
*/
|
|
708
798
|
|
|
709
|
-
export { areCategoriesEnabled, areTagsEnabled, canAddFavorite, canCreateFolder, canDeleteSelection, canDownloadSelection, canEditAspects, canEditFolder, canLockFile, canOpenWithOffice, canPrintFile, canRemoveFavorite, canShareFile, canShowLogout, canToggleFavorite, canToggleFileLock, canToggleJoinLibrary, canToggleSharedLink, canUnlockFile, canUpdateSelectedFolder, canUpdateSelectedNode, canUploadVersion, createVersionRule, getFileExtension, hasFileSelected, hasFolderSelected, hasLibraryRole, hasLibrarySelected, hasLockedFiles, hasQuickShareEnabled, hasSelection, isAdmin, isBulkActionsAvailable, isCheckedOut, isContentServiceEnabled, isDetails, isFavorites, isKnowledgeDiscoveryUrlPresent, isLibraries, isLibraryContent, isLibraryManager, isMajorVersionAvailable, isMultiselection, isNodeInfoAvailable, isNodeLink, isPersonalFiles, isPreferencesApiAvailable, isPreview, isPrivateLibrary, isRecentFiles, isRepositoryView, isSSOEnabled, isSearchResults, isShared, isSharedFiles, isSmartFolder, isTrashcan, isUserWriteLockOwner, isVersionableFile, isWriteLocked, supportedExtensions };
|
|
799
|
+
export { areCategoriesEnabled, areTagsEnabled, canAddFavorite, canCancelCheckout, canCheckout, canCreateFolder, canDeleteSelection, canDownloadSelection, canEditAspects, canEditFolder, canLockFile, canOpenWithOffice, canPrintFile, canRemoveFavorite, canShareFile, canShowLogout, canToggleFavorite, canToggleFileLock, canToggleJoinLibrary, canToggleSharedLink, canUnlockFile, canUpdateSelectedFolder, canUpdateSelectedNode, canUploadVersion, createVersionRule, getFileExtension, hasFileSelected, hasFolderSelected, hasLibraryRole, hasLibrarySelected, hasLockedFiles, hasQuickShareEnabled, hasSelection, isAdmin, isBulkActionsAvailable, isCheckedOut, isContentServiceEnabled, isDetails, isFavorites, isKnowledgeDiscoveryUrlPresent, isLibraries, isLibraryContent, isLibraryManager, isLockedOrWorkingCopy, isMajorVersionAvailable, isMultiselection, isNodeInfoAvailable, isNodeLink, isPersonalFiles, isPreferencesApiAvailable, isPreview, isPrivateLibrary, isRecentFiles, isRepositoryView, isSSOEnabled, isSearchResults, isShared, isSharedFiles, isSmartFolder, isTrashcan, isUserWriteLockOwner, isVersionableFile, isWorkingCopy, isWriteLocked, supportedExtensions };
|
|
710
800
|
//# sourceMappingURL=alfresco-aca-shared-rules.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alfresco-aca-shared-rules.mjs","sources":["../../../../projects/aca-shared/rules/src/navigation.rules.ts","../../../../projects/aca-shared/rules/src/repository.rules.ts","../../../../projects/aca-shared/rules/src/user.rules.ts","../../../../projects/aca-shared/rules/src/app.rules.ts","../../../../projects/aca-shared/rules/src/public-api.ts","../../../../projects/aca-shared/rules/src/alfresco-aca-shared-rules.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { RuleContext } from '@alfresco/adf-extensions';\n\n/**\n * Checks if a Preview route is activated.\n * JSON ref: `app.navigation.isPreview`\n */\nexport function isPreview(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url && (url.includes('/preview/') || url.includes('viewer:view') || url.includes('/view/'));\n}\n\n/**\n * Checks if a **Favorites** route is activated.\n * JSON ref: `app.navigation.isFavorites`\n */\nexport function isFavorites(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/favorites') && !isPreview(context);\n}\n\n/**\n * Checks if a **Shared Files** route is activated.\n * JSON ref: `app.navigation.isSharedFiles`\n */\nexport function isSharedFiles(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/shared') && !isPreview(context);\n}\n\n/**\n * Checks if a **Trashcan** route is activated.\n * JSON ref: `app.navigation.isTrashcan`\n */\nexport function isTrashcan(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/trashcan');\n}\n\n/**\n * Checks if a **Personal Files** route is activated.\n * JSON ref: `app.navigation.isPersonalFiles`\n */\nexport function isPersonalFiles(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/personal-files');\n}\n\n/**\n * Checks if a **Repository View** route is activated.\n * JSON ref: `app.navigation.isRepositoryView`\n */\nexport function isRepositoryView(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/repository');\n}\n\n/**\n * Checks if a **Library Files** or **Library Search Result** route is activated.\n * JSON ref: `app.navigation.isLibraryFiles`\n */\nexport function isLibraries(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.endsWith('/libraries') || url?.startsWith('/search-libraries');\n}\n\nexport function isLibraryContent(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.endsWith('/libraries') || url?.includes('/libraries/') || url?.startsWith('/search-libraries');\n}\n\nexport function isDetails(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.includes('/details');\n}\n\n/**\n * Checks if a **Recent Files** route is activated.\n * JSON ref: `app.navigation.isRecentFiles`\n */\nexport function isRecentFiles(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/recent-files');\n}\n\n/**\n * Checks if a **Search Results** route is activated.\n * JSON ref: `app.navigation.isSearchResults`\n */\nexport function isSearchResults(\n context: RuleContext\n // ...args: RuleParameter[]\n): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/search');\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { RuleContext } from '@alfresco/adf-extensions';\n\n/**\n * Checks if the quick share repository option is enabled or not.\n * JSON ref: `repository.isQuickShareEnabled`\n */\nexport const hasQuickShareEnabled = (context: RuleContext): boolean => context.repository.status.isQuickShareEnabled;\n\nexport function isMajorVersionAvailable(context: RuleContext, versionNumber: string): boolean {\n const majorVersion = context.repository.version?.major ? parseInt(context.repository.version.major, 10) : 0;\n return majorVersion >= parseInt(versionNumber, 10);\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { RuleContext } from '@alfresco/adf-extensions';\n\n/**\n * Checks if user is admin.\n * JSON ref: `user.isAdmin`\n */\nexport const isAdmin = (context: RuleContext): boolean => context.profile.isAdmin;\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { RuleContext } from '@alfresco/adf-extensions';\nimport * as navigation from './navigation.rules';\nimport * as repository from './repository.rules';\nimport { isAdmin } from './user.rules';\n\n/* cspell:disable */\nexport const supportedExtensions = {\n doc: 'ms-word',\n docx: 'ms-word',\n docm: 'ms-word',\n dot: 'ms-word',\n dotx: 'ms-word',\n dotm: 'ms-word',\n rtf: 'ms-word',\n xls: 'ms-excel',\n xlsx: 'ms-excel',\n xlsb: 'ms-excel',\n xlsm: 'ms-excel',\n xlt: 'ms-excel',\n xltx: 'ms-excel',\n xltm: 'ms-excel',\n xlam: 'ms-excel',\n ppt: 'ms-powerpoint',\n pptx: 'ms-powerpoint',\n pot: 'ms-powerpoint',\n potx: 'ms-powerpoint',\n potm: 'ms-powerpoint',\n pptm: 'ms-powerpoint',\n pps: 'ms-powerpoint',\n ppsx: 'ms-powerpoint',\n ppam: 'ms-powerpoint',\n ppsm: 'ms-powerpoint',\n sldx: 'ms-powerpoint',\n sldm: 'ms-powerpoint',\n vsd: 'ms-visio',\n vss: 'ms-visio',\n vst: 'ms-visio',\n vsdx: 'ms-visio',\n vsdm: 'ms-visio',\n vssx: 'ms-visio',\n vssm: 'ms-visio',\n vstx: 'ms-visio',\n vstm: 'ms-visio'\n};\n\n/* cspell:enable */\n\nexport function getFileExtension(fileName: string): string | null {\n if (fileName) {\n const match = fileName.toLowerCase().match(/\\.([^\\./\\?\\#]+)($|\\?|\\#)/);\n\n return match ? match[1] : null;\n }\n\n return null;\n}\n\nexport interface AcaRuleContext extends RuleContext {\n withCredentials: boolean;\n appConfig: AppConfigService;\n}\n\n/**\n * Checks if the content plugin is enabled.\n * JSON ref: `app.isContentServiceEnabled`\n */\nexport const isContentServiceEnabled = (context: AcaRuleContext): boolean => {\n const flag = context.appConfig.get<boolean | string>('plugins.contentService');\n return flag === true || flag === 'true';\n};\n\n/**\n * Checks if user can mark selected nodes as **Favorite**.\n * JSON ref: `app.selection.canAddFavorite`\n */\nexport function canAddFavorite(context: RuleContext): boolean {\n if (navigation.isFavorites(context) || navigation.isLibraries(context) || navigation.isTrashcan(context)) {\n return false;\n }\n return context.selection.nodes.some((node) => !node.entry.isFavorite);\n}\n\n/**\n * Checks if user can un-mark selected nodes as **Favorite**.\n * JSON ref: `app.selection.canRemoveFavorite`\n */\nexport function canRemoveFavorite(context: RuleContext): boolean {\n if (navigation.isFavorites(context)) {\n return true;\n }\n return context.selection.nodes.every((node) => node.entry.isFavorite);\n}\n\n/**\n * Checks if user can share selected file.\n * JSON ref: `app.selection.file.canShare`\n */\nexport const canShareFile = (context: RuleContext): boolean =>\n [context.selection.file, !navigation.isTrashcan(context), repository.hasQuickShareEnabled(context), !isShared(context), !isNodeLink(context)].every(\n Boolean\n );\n\n/**\n * Checks if user can perform \"Join\" or \"Cancel Join Request\" on a library.\n * JSON ref: `canToggleJoinLibrary`\n */\nexport const canToggleJoinLibrary = (context: RuleContext): boolean =>\n !isPrivateLibrary(context) || [isPrivateLibrary(context), isAdmin(context)].every(Boolean);\n\n/**\n * Checks if user can edit the selected folder.\n * JSON ref: `canEditFolder`\n *\n * @param context Rule execution context\n */\nexport const canEditFolder = (context: RuleContext): boolean => [canUpdateSelectedFolder(context), !navigation.isTrashcan(context)].every(Boolean);\n\n/**\n * Checks if the selected file is already shared.\n * JSON ref: `app.selection.file.isShared`\n */\nexport function isShared(context: RuleContext): boolean {\n if (navigation.isSharedFiles(context) && context.selection.file) {\n return true;\n }\n\n if (!navigation.isTrashcan(context) && hasSelection(context) && context.selection.file) {\n return !!context.selection.file.entry?.properties?.['qshare:sharedId'];\n }\n\n return false;\n}\n\n/**\n * Checks if user can delete selected nodes.\n * JSON ref: `app.selection.canDelete`\n */\nexport function canDeleteSelection(context: RuleContext): boolean {\n if (hasLockedFiles(context)) {\n return false;\n }\n\n // temp workaround for Favorites api\n if (navigation.isFavorites(context)) {\n return true;\n }\n\n if (navigation.isPreview(context)) {\n return context.permissions.check(context.selection.nodes, ['delete']);\n }\n\n // workaround for Shared Files\n if (navigation.isSharedFiles(context)) {\n return context.permissions.check(context.selection.nodes, ['delete'], {\n target: 'allowableOperationsOnTarget'\n });\n }\n\n return context.permissions.check(context.selection.nodes, ['delete']);\n}\n\n/**\n * Checks if user selected anything.\n * JSON ref: `app.selection.notEmpty`\n */\nexport const hasSelection = (context: RuleContext): boolean => !context.selection.isEmpty;\n\n/**\n * Checks if user can create a new folder with current path.\n * JSON ref: `app.navigation.folder.canCreate`\n */\nexport function canCreateFolder(context: AcaRuleContext): boolean {\n if (navigation.isPersonalFiles(context) || navigation.isLibraryContent(context) || navigation.isRepositoryView(context)) {\n const { currentFolder } = context.navigation;\n\n if (currentFolder) {\n return context.permissions.check(currentFolder, ['create']);\n }\n }\n return false;\n}\n\n/**\n * Checks if user can download selected nodes (either files or folders).\n * JSON ref: `app.selection.canDownload`\n */\nexport function canDownloadSelection(context: RuleContext): boolean {\n if (isNodeLink(context)) {\n return false;\n }\n return context.selection.nodes.every((node: any) => node.entry && (node.entry.isFile || node.entry.isFolder || !!node.entry.nodeId));\n}\n\n/**\n * Checks if user has selected a folder.\n * JSON ref: `app.selection.folder`\n */\nexport const hasFolderSelected = (context: RuleContext): boolean => !!context.selection.folder;\n\n/**\n * Checks if user has selected a library (site).\n * JSON ref: `app.selection.library`\n */\nexport const hasLibrarySelected = (context: RuleContext): boolean => !!context.selection.library;\n\n/**\n * Checks if user has selected a **private** library (site)\n * JSON ref: `app.selection.isPrivateLibrary`\n */\nexport function isPrivateLibrary(context: RuleContext): boolean {\n return context.selection.library?.entry?.visibility === 'PRIVATE';\n}\n\n/**\n * Checks if the selected library has a **role** property defined.\n * JSON ref: `app.selection.hasLibraryRole`\n */\nexport function hasLibraryRole(context: RuleContext): boolean {\n const library = context.selection.library;\n return library ? !!library.entry?.role : false;\n}\n\n/**\n * Checks if user has selected a file.\n * JSON ref: `app.selection.file`\n */\nexport const hasFileSelected = (context: RuleContext): boolean => !!context?.selection?.file;\n\n/**\n * Checks if user can update the first selected node.\n * JSON ref: `app.selection.first.canUpdate`\n */\nexport function canUpdateSelectedNode(context: RuleContext): boolean {\n if (context.selection && hasSelection(context)) {\n const node = context.selection.first;\n\n if (node?.entry.isFile && hasLockedFiles(context)) {\n return false;\n }\n\n return context.permissions.check(node, ['update']);\n }\n return false;\n}\n\nexport function isMultiselection(context: RuleContext): boolean {\n let isMultiNodeSelected = false;\n if (context.selection && hasSelection(context)) {\n isMultiNodeSelected = context.selection.count > 1;\n }\n return isMultiNodeSelected;\n}\n\n/**\n * Checks if user can update the first selected folder.\n * JSON ref: `app.selection.folder.canUpdate`\n */\nexport function canUpdateSelectedFolder(context: RuleContext): boolean {\n const { folder } = context.selection;\n if (folder) {\n return (\n // workaround for Favorites Api\n navigation.isFavorites(context) || context.permissions.check(folder.entry, ['update'])\n );\n }\n return false;\n}\n\n/**\n * Checks if user has selected a **locked** file node.\n * JSON ref: `app.selection.file.isLocked`\n */\nexport function hasLockedFiles(context: RuleContext): boolean {\n if (context?.selection?.nodes) {\n return context.selection.nodes.some((node) => {\n if (!node.entry.isFile) {\n return false;\n }\n\n return node.entry.isLocked || node.entry.properties?.['cm:lockType'] === 'READ_ONLY_LOCK';\n });\n }\n\n return false;\n}\n\n/**\n * Checks if the selected file has **write** or **read-only** locks specified.\n * JSON ref: `app.selection.file.isLocked`\n */\nexport const isWriteLocked = (context: RuleContext): boolean =>\n !!(\n context?.selection?.file?.entry?.properties?.['cm:lockType'] === 'WRITE_LOCK' ||\n context?.selection?.file?.entry?.properties?.['cm:lockType'] === 'READ_ONLY_LOCK'\n );\n\n/**\n * Checks if the selected file has **write** or **read-only** locks specified,\n * and that current user is the owner of the lock.\n * JSON ref: `app.selection.file.isLockOwner`\n */\nexport const isUserWriteLockOwner = (context: RuleContext): boolean =>\n isWriteLocked(context) &&\n context.selection.file?.entry.properties['cm:lockOwner'] &&\n context.selection.file?.entry.properties['cm:lockOwner'].id === context.profile.id;\n\n/**\n * Checks if user can lock selected file.\n * JSON ref: `app.selection.file.canLock`\n */\nexport const canLockFile = (context: RuleContext): boolean => !isWriteLocked(context) && canUpdateSelectedNode(context);\n\n/**\n * Checks if user can unlock selected file.\n * JSON ref: `app.selection.file.canUnlock`\n */\nexport function canUnlockFile(context: RuleContext): boolean {\n const { file } = context.selection;\n return isWriteLocked(context) && (context.permissions.check(file?.entry, ['delete']) || isUserWriteLockOwner(context));\n}\n\n/**\n * Checks if user can upload a new version of the file.\n * JSON ref: `app.selection.file.canUploadVersion`\n */\nexport function canUploadVersion(context: RuleContext): boolean {\n if (isNodeLink(context)) {\n return false;\n }\n\n if (navigation.isFavorites(context) || navigation.isSharedFiles(context)) {\n return hasFileSelected(context);\n }\n\n return [\n hasFileSelected(context),\n !navigation.isTrashcan(context),\n isWriteLocked(context) ? isUserWriteLockOwner(context) : canUpdateSelectedNode(context)\n ].every(Boolean);\n}\n\n/**\n * Checks if user can print the file.\n * JSON ref: `canPrintFile`\n *\n * @param context Rule execution context\n */\nexport const canPrintFile = (context: RuleContext): boolean => {\n const nodeEntry = context.selection.file.entry;\n if (!nodeEntry?.content?.mimeType) {\n return false;\n }\n const mediaMimeTypes = ['video/mp4', 'video/webm', 'video/ogg', 'audio/mpeg', 'audio/mp3', 'audio/ogg', 'audio/wav'];\n return !mediaMimeTypes.includes(nodeEntry.content.mimeType);\n};\n\n/**\n * Checks if user can toggle shared link mode.\n * JSON ref: `canToggleSharedLink`\n *\n * @param context Rule execution context\n */\nexport const canToggleSharedLink = (context: RuleContext): boolean => [canShareFile(context), isShared(context)].some(Boolean);\n\n/**\n * Checks if user can edit aspects for the selected node.\n * JSON ref: `canEditAspects`\n *\n * @param context Rule execution context\n */\nexport const canEditAspects = (context: RuleContext): boolean =>\n [\n !isMultiselection(context),\n canUpdateSelectedNode(context),\n !isWriteLocked(context),\n !navigation.isTrashcan(context),\n repository.isMajorVersionAvailable(context, '7')\n ].every(Boolean);\n\nexport const canToggleFileLock = (context: RuleContext): boolean =>\n !isNodeLink(context) && [canLockFile(context) || canUnlockFile(context)].some(Boolean);\n\n/**\n * @deprecated Uses workarounds for for recent files and search api issues.\n * Checks if user can toggle **Favorite** state for a node.\n * @param context Rule execution context\n */\nexport const canToggleFavorite = (context: RuleContext): boolean =>\n [\n [canAddFavorite(context), canRemoveFavorite(context)].some(Boolean),\n [navigation.isRecentFiles(context), navigation.isSharedFiles(context), navigation.isSearchResults(context), navigation.isFavorites(context)].some(\n Boolean\n )\n ].every(Boolean);\n\n/**\n * Checks if application should render logout option.\n * JSON ref: `canShowLogout`\n *\n * @param context Rule execution context\n */\nexport const canShowLogout = (context: AcaRuleContext): boolean => !context.withCredentials;\n\n/**\n * Checks if user is library manager\n * JSON ref: `isLibraryManager`\n *\n * @param context Rule execution context\n */\nexport const isLibraryManager = (context: RuleContext): boolean => context.selection.library?.entry.role === 'SiteManager' || isAdmin(context);\n\n/**\n * Checks if the file can be opened with MS Office\n * JSON ref: `aos.canOpenWithOffice`\n *\n * @param context Rule execution context\n */\nexport function canOpenWithOffice(context: AcaRuleContext): boolean {\n const flag = `${context.appConfig.get<boolean | string>('plugins.aosPlugin', false)}`;\n\n if (flag !== 'true') {\n return false;\n }\n\n if (isNodeLink(context)) {\n return false;\n }\n\n if (context.navigation?.url?.startsWith('/trashcan')) {\n return false;\n }\n\n if (!context?.selection) {\n return false;\n }\n\n const { file } = context.selection;\n\n if (!file?.entry) {\n return false;\n }\n\n const extension = getFileExtension(file.entry.name);\n if (!extension || !supportedExtensions[extension]) {\n return false;\n }\n\n if (!file.entry.properties) {\n return false;\n }\n\n if (file.entry.isLocked) {\n return false;\n }\n\n if (file.entry.properties['cm:lockType'] === 'WRITE_LOCK' || file.entry.properties['cm:lockType'] === 'READ_ONLY_LOCK') {\n return false;\n }\n\n const lockOwner = file.entry.properties['cm:lockOwner'];\n if (lockOwner && lockOwner.id !== context.profile.id) {\n return false;\n }\n\n // workaround for Shared files\n if (context.navigation?.url?.startsWith('/shared')) {\n // eslint-disable-next-line no-prototype-builtins\n if (file.entry.hasOwnProperty('allowableOperationsOnTarget')) {\n return context.permissions.check(file, ['update'], {\n target: 'allowableOperationsOnTarget'\n });\n }\n }\n\n return context.permissions.check(file, ['update']);\n}\n\n/**\n * Checks if user savedSearches are supported by current ACS version.\n * JSON ref: `isPreferencesApiAvailable`\n */\nexport const isPreferencesApiAvailable = createVersionRule('25.1.0');\n\n/**\n * Checks if node info modal is supported by current ACS version.\n * JSON ref: `isNodeInfoAvailable`\n */\nexport const isNodeInfoAvailable = createVersionRule('23.4.0');\n\n/**\n * Checks if bulk update feature for legal holds is supported by current ACS version.\n * JSON ref: `isBulkActionsAvailable`\n */\nexport const isBulkActionsAvailable = createVersionRule('23.3.0');\n\n/**\n * Partially applies minimal version of a feature against a core compatibility evaluation.\n * @param minimalVersion The minimal version to check against.\n */\nexport function createVersionRule(minimalVersion: string): (context: RuleContext) => boolean {\n return (context: RuleContext): boolean => {\n const acsVersion = context.repository.version?.display?.split(' ')[0];\n return isVersionCompatible(acsVersion, minimalVersion);\n };\n}\n\n/**\n * Checks if the selected file has the `cm:versionable` aspect.\n * JSON ref: `app.selection.file.isVersionable`\n *\n * @param context Rule execution context\n */\nexport const isVersionableFile = (context: RuleContext): boolean => {\n const file = context?.selection?.file;\n if (!file?.entry) {\n return false;\n }\n return (file.entry.aspectNames ?? []).includes('cm:versionable');\n};\n\nfunction isVersionCompatible(currentVersion: string, minimalVersion: string): boolean {\n if (!currentVersion || !minimalVersion) {\n return false;\n }\n\n const currentParts = currentVersion.split('.').map(Number);\n const minimalParts = minimalVersion.split('.').map(Number);\n const maxLength = Math.max(currentParts.length, minimalParts.length);\n\n for (let i = 0; i < maxLength; i++) {\n const currentSegment = currentParts[i] ?? 0;\n const minimalSegment = minimalParts[i] ?? 0;\n\n if (currentSegment > minimalSegment) {\n return true;\n }\n\n if (currentSegment < minimalSegment) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isSmartFolder(context: RuleContext): boolean {\n if (!context.selection?.isEmpty) {\n const node = context.selection.first;\n if (!node?.entry.isFolder) {\n return false;\n }\n const nodeAspects = node.entry?.aspectNames ?? [];\n return nodeAspects.includes('smf:customConfigSmartFolder') || nodeAspects.includes('smf:systemConfigSmartFolder');\n }\n return false;\n}\n\nexport const areTagsEnabled = (context: AcaRuleContext): boolean => context.appConfig.get('plugins.tagsEnabled', true);\n\nexport const areCategoriesEnabled = (context: AcaRuleContext): boolean => context.appConfig.get('plugins.categoriesEnabled', true);\n\nexport const isSSOEnabled = (context: AcaRuleContext): boolean => context.appConfig.get('authType') === 'OAUTH';\n\n/**\n * Checks if node contains checked out aspect.\n * JSON ref: `app.selection.isCheckedOut`\n *\n * @param context Rule execution context\n */\nexport const isCheckedOut = (context: RuleContext): boolean => {\n if (!context.selection?.isEmpty) {\n const nodeAspects = context.selection.first.entry?.aspectNames ?? [];\n return nodeAspects.includes('cm:checkedOut');\n }\n return false;\n};\n\n/**\n * Checks if any of the selected nodes is a link node (app:filelink or app:folderlink).\n * JSON ref: `app.selection.isNodeLink`\n *\n * @param context Rule execution context\n */\nexport const isNodeLink = (context: RuleContext): boolean =>\n !context.selection?.isEmpty &&\n context.selection.nodes.some((node) => node.entry?.nodeType === 'app:filelink' || node.entry?.nodeType === 'app:folderlink');\n\n/**\n * Checks if the Knowledge Discovery URL is configured.\n * JSON ref: `app.isKnowledgeDiscoveryUrlPresent`\n *\n * @param context Rule execution context\n */\nexport const isKnowledgeDiscoveryUrlPresent = (context: AcaRuleContext): boolean => !!context.appConfig.get<string>('knowledgeDiscoveryUrl', '');\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './app.rules';\nexport * from './navigation.rules';\nexport * from './repository.rules';\nexport * from './user.rules';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["navigation.isFavorites","navigation.isLibraries","navigation.isTrashcan","repository.hasQuickShareEnabled","navigation.isSharedFiles","navigation.isPreview","navigation.isPersonalFiles","navigation.isLibraryContent","navigation.isRepositoryView","repository.isMajorVersionAvailable","navigation.isRecentFiles","navigation.isSearchResults"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;;;AAGG;AACG,SAAU,SAAS,CAAC,OAAoB,EAAA;AAC5C,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;IAClC,OAAO,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpG;AAEA;;;AAGG;AACG,SAAU,WAAW,CAAC,OAAoB,EAAA;AAC9C,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;AAClC,IAAA,OAAO,GAAG,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAC7D;AAEA;;;AAGG;AACG,SAAU,aAAa,CAAC,OAAoB,EAAA;AAChD,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;AAClC,IAAA,OAAO,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAC1D;AAEA;;;AAGG;AACG,SAAU,UAAU,CAAC,OAAoB,EAAA;AAC7C,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;AAClC,IAAA,OAAO,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC;AACrC;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,OAAoB,EAAA;AAClD,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;AAClC,IAAA,OAAO,GAAG,EAAE,UAAU,CAAC,iBAAiB,CAAC;AAC3C;AAEA;;;AAGG;AACG,SAAU,gBAAgB,CAAC,OAAoB,EAAA;AACnD,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;AAClC,IAAA,OAAO,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC;AACvC;AAEA;;;AAGG;AACG,SAAU,WAAW,CAAC,OAAoB,EAAA;AAC9C,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;AAClC,IAAA,OAAO,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,UAAU,CAAC,mBAAmB,CAAC;AAC5E;AAEM,SAAU,gBAAgB,CAAC,OAAoB,EAAA;AACnD,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;IAClC,OAAO,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE,UAAU,CAAC,mBAAmB,CAAC;AAC5G;AAEM,SAAU,SAAS,CAAC,OAAoB,EAAA;AAC5C,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;AAClC,IAAA,OAAO,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC;AAClC;AAEA;;;AAGG;AACG,SAAU,aAAa,CAAC,OAAoB,EAAA;AAChD,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;AAClC,IAAA,OAAO,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC;AACzC;AAEA;;;AAGG;AACG,SAAU,eAAe,CAC7B;AACA;;AAEA,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU;AAClC,IAAA,OAAO,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC;AACnC;;ACtHA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;;;AAGG;AACI,MAAM,oBAAoB,GAAG,CAAC,OAAoB,KAAc,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;AAE3F,SAAU,uBAAuB,CAAC,OAAoB,EAAE,aAAqB,EAAA;AACjF,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC;IAC3G,OAAO,YAAY,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;AACpD;;ACnCA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;;;AAGG;AACI,MAAM,OAAO,GAAG,CAAC,OAAoB,KAAc,OAAO,CAAC,OAAO,CAAC;;AC9B1E;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAQH;AACO,MAAM,mBAAmB,GAAG;AACjC,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE;;AAGR;AAEM,SAAU,gBAAgB,CAAC,QAAgB,EAAA;IAC/C,IAAI,QAAQ,EAAE;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC;AAEtE,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAChC;AAEA,IAAA,OAAO,IAAI;AACb;AAOA;;;AAGG;AACI,MAAM,uBAAuB,GAAG,CAAC,OAAuB,KAAa;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAmB,wBAAwB,CAAC;AAC9E,IAAA,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM;AACzC;AAEA;;;AAGG;AACG,SAAU,cAAc,CAAC,OAAoB,EAAA;IACjD,IAAIA,WAAsB,CAAC,OAAO,CAAC,IAAIC,WAAsB,CAAC,OAAO,CAAC,IAAIC,UAAqB,CAAC,OAAO,CAAC,EAAE;AACxG,QAAA,OAAO,KAAK;IACd;IACA,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACvE;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAAC,OAAoB,EAAA;AACpD,IAAA,IAAIF,WAAsB,CAAC,OAAO,CAAC,EAAE;AACnC,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACvE;AAEA;;;AAGG;MACU,YAAY,GAAG,CAAC,OAAoB,KAC/C,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAACE,UAAqB,CAAC,OAAO,CAAC,EAAEC,oBAA+B,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CACjJ,OAAO;AAGX;;;AAGG;AACI,MAAM,oBAAoB,GAAG,CAAC,OAAoB,KACvD,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;AAE3F;;;;;AAKG;AACI,MAAM,aAAa,GAAG,CAAC,OAAoB,KAAc,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAACD,UAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;AAEjJ;;;AAGG;AACG,SAAU,QAAQ,CAAC,OAAoB,EAAA;AAC3C,IAAA,IAAIE,aAAwB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;AAC/D,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,CAACF,UAAqB,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;AACtF,QAAA,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CAAC;IACxE;AAEA,IAAA,OAAO,KAAK;AACd;AAEA;;;AAGG;AACG,SAAU,kBAAkB,CAAC,OAAoB,EAAA;AACrD,IAAA,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;AAC3B,QAAA,OAAO,KAAK;IACd;;AAGA,IAAA,IAAIF,WAAsB,CAAC,OAAO,CAAC,EAAE;AACnC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAIK,SAAoB,CAAC,OAAO,CAAC,EAAE;AACjC,QAAA,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;IACvE;;AAGA,IAAA,IAAID,aAAwB,CAAC,OAAO,CAAC,EAAE;AACrC,QAAA,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE;AACpE,YAAA,MAAM,EAAE;AACT,SAAA,CAAC;IACJ;AAEA,IAAA,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;AACvE;AAEA;;;AAGG;AACI,MAAM,YAAY,GAAG,CAAC,OAAoB,KAAc,CAAC,OAAO,CAAC,SAAS,CAAC;AAElF;;;AAGG;AACG,SAAU,eAAe,CAAC,OAAuB,EAAA;IACrD,IAAIE,eAA0B,CAAC,OAAO,CAAC,IAAIC,gBAA2B,CAAC,OAAO,CAAC,IAAIC,gBAA2B,CAAC,OAAO,CAAC,EAAE;AACvH,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,UAAU;QAE5C,IAAI,aAAa,EAAE;AACjB,YAAA,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC7D;IACF;AACA,IAAA,OAAO,KAAK;AACd;AAEA;;;AAGG;AACG,SAAU,oBAAoB,CAAC,OAAoB,EAAA;AACvD,IAAA,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtI;AAEA;;;AAGG;AACI,MAAM,iBAAiB,GAAG,CAAC,OAAoB,KAAc,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;AAExF;;;AAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,OAAoB,KAAc,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;AAEzF;;;AAGG;AACG,SAAU,gBAAgB,CAAC,OAAoB,EAAA;IACnD,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,KAAK,SAAS;AACnE;AAEA;;;AAGG;AACG,SAAU,cAAc,CAAC,OAAoB,EAAA;AACjD,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO;AACzC,IAAA,OAAO,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK;AAChD;AAEA;;;AAGG;AACI,MAAM,eAAe,GAAG,CAAC,OAAoB,KAAc,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE;AAExF;;;AAGG;AACG,SAAU,qBAAqB,CAAC,OAAoB,EAAA;IACxD,IAAI,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE;AAC9C,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK;QAEpC,IAAI,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;AACjD,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpD;AACA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,gBAAgB,CAAC,OAAoB,EAAA;IACnD,IAAI,mBAAmB,GAAG,KAAK;IAC/B,IAAI,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE;QAC9C,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC;IACnD;AACA,IAAA,OAAO,mBAAmB;AAC5B;AAEA;;;AAGG;AACG,SAAU,uBAAuB,CAAC,OAAoB,EAAA;AAC1D,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS;IACpC,IAAI,MAAM,EAAE;QACV;;QAEER,WAAsB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;IAE1F;AACA,IAAA,OAAO,KAAK;AACd;AAEA;;;AAGG;AACG,SAAU,cAAc,CAAC,OAAoB,EAAA;AACjD,IAAA,IAAI,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;QAC7B,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACtB,gBAAA,OAAO,KAAK;YACd;AAEA,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,gBAAgB;AAC3F,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,KAAK;AACd;AAEA;;;AAGG;AACI,MAAM,aAAa,GAAG,CAAC,OAAoB,KAChD,CAAC,EACC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,aAAa,CAAC,KAAK,YAAY;AAC7E,IAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,aAAa,CAAC,KAAK,gBAAgB;AAGrF;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,CAAC,OAAoB,KACvD,aAAa,CAAC,OAAO,CAAC;IACtB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;AACxD,IAAA,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC;AAElF;;;AAGG;AACI,MAAM,WAAW,GAAG,CAAC,OAAoB,KAAc,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,qBAAqB,CAAC,OAAO;AAEtH;;;AAGG;AACG,SAAU,aAAa,CAAC,OAAoB,EAAA;AAChD,IAAA,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS;IAClC,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACxH;AAEA;;;AAGG;AACG,SAAU,gBAAgB,CAAC,OAAoB,EAAA;AACnD,IAAA,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAIA,WAAsB,CAAC,OAAO,CAAC,IAAII,aAAwB,CAAC,OAAO,CAAC,EAAE;AACxE,QAAA,OAAO,eAAe,CAAC,OAAO,CAAC;IACjC;IAEA,OAAO;QACL,eAAe,CAAC,OAAO,CAAC;AACxB,QAAA,CAACF,UAAqB,CAAC,OAAO,CAAC;AAC/B,QAAA,aAAa,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,OAAO;AACvF,KAAA,CAAC,KAAK,CAAC,OAAO,CAAC;AAClB;AAEA;;;;;AAKG;AACI,MAAM,YAAY,GAAG,CAAC,OAAoB,KAAa;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;AAC9C,IAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE;AACjC,QAAA,OAAO,KAAK;IACd;AACA,IAAA,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;IACpH,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7D;AAEA;;;;;AAKG;AACI,MAAM,mBAAmB,GAAG,CAAC,OAAoB,KAAc,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;AAE7H;;;;;AAKG;MACU,cAAc,GAAG,CAAC,OAAoB,KACjD;IACE,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAC1B,qBAAqB,CAAC,OAAO,CAAC;IAC9B,CAAC,aAAa,CAAC,OAAO,CAAC;AACvB,IAAA,CAACA,UAAqB,CAAC,OAAO,CAAC;AAC/B,IAAAO,uBAAkC,CAAC,OAAO,EAAE,GAAG;AAChD,CAAA,CAAC,KAAK,CAAC,OAAO;AAEV,MAAM,iBAAiB,GAAG,CAAC,OAAoB,KACpD,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;AAEvF;;;;AAIG;MACU,iBAAiB,GAAG,CAAC,OAAoB,KACpD;AACE,IAAA,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AACnE,IAAA,CAACC,aAAwB,CAAC,OAAO,CAAC,EAAEN,aAAwB,CAAC,OAAO,CAAC,EAAEO,eAA0B,CAAC,OAAO,CAAC,EAAEX,WAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC/I,OAAO;AAEV,CAAA,CAAC,KAAK,CAAC,OAAO;AAEjB;;;;;AAKG;AACI,MAAM,aAAa,GAAG,CAAC,OAAuB,KAAc,CAAC,OAAO,CAAC;AAE5E;;;;;AAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,OAAoB,KAAc,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,OAAO;AAE7I;;;;;AAKG;AACG,SAAU,iBAAiB,CAAC,OAAuB,EAAA;AACvD,IAAA,MAAM,IAAI,GAAG,CAAA,EAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAmB,mBAAmB,EAAE,KAAK,CAAC,EAAE;AAErF,IAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE;AACpD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS;AAElC,IAAA,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAChB,QAAA,OAAO,KAAK;IACd;IAEA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACnD,IAAI,CAAC,SAAS,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE;AACjD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAC1B,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,gBAAgB,EAAE;AACtH,QAAA,OAAO,KAAK;IACd;IAEA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;AACvD,IAAA,IAAI,SAAS,IAAI,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE;AACpD,QAAA,OAAO,KAAK;IACd;;IAGA,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE;;QAElD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,6BAA6B,CAAC,EAAE;YAC5D,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;AACjD,gBAAA,MAAM,EAAE;AACT,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;AACpD;AAEA;;;AAGG;MACU,yBAAyB,GAAG,iBAAiB,CAAC,QAAQ;AAEnE;;;AAGG;MACU,mBAAmB,GAAG,iBAAiB,CAAC,QAAQ;AAE7D;;;AAGG;MACU,sBAAsB,GAAG,iBAAiB,CAAC,QAAQ;AAEhE;;;AAGG;AACG,SAAU,iBAAiB,CAAC,cAAsB,EAAA;IACtD,OAAO,CAAC,OAAoB,KAAa;AACvC,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,QAAA,OAAO,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC;AACxD,IAAA,CAAC;AACH;AAEA;;;;;AAKG;AACI,MAAM,iBAAiB,GAAG,CAAC,OAAoB,KAAa;AACjE,IAAA,MAAM,IAAI,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI;AACrC,IAAA,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAChB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AAClE;AAEA,SAAS,mBAAmB,CAAC,cAAsB,EAAE,cAAsB,EAAA;AACzE,IAAA,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE;AACtC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1D,IAAA,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1D,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;AAEpE,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;QAClC,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAE3C,QAAA,IAAI,cAAc,GAAG,cAAc,EAAE;AACnC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,cAAc,GAAG,cAAc,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;IACF;AAEA,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,aAAa,CAAC,OAAoB,EAAA;AAChD,IAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE;AAC/B,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK;AACpC,QAAA,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE;AACzB,YAAA,OAAO,KAAK;QACd;QACA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE;AACjD,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACnH;AACA,IAAA,OAAO,KAAK;AACd;AAEO,MAAM,cAAc,GAAG,CAAC,OAAuB,KAAc,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI;AAE9G,MAAM,oBAAoB,GAAG,CAAC,OAAuB,KAAc,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI;AAE1H,MAAM,YAAY,GAAG,CAAC,OAAuB,KAAc,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK;AAExG;;;;;AAKG;AACI,MAAM,YAAY,GAAG,CAAC,OAAoB,KAAa;AAC5D,IAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE;AAC/B,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE;AACpE,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC9C;AACA,IAAA,OAAO,KAAK;AACd;AAEA;;;;;AAKG;AACI,MAAM,UAAU,GAAG,CAAC,OAAoB,KAC7C,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO;AAC3B,IAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,gBAAgB;AAE7H;;;;;AAKG;MACU,8BAA8B,GAAG,CAAC,OAAuB,KAAc,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAS,uBAAuB,EAAE,EAAE;;AC1mB/I;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"alfresco-aca-shared-rules.mjs","sources":["../../../../projects/aca-shared/rules/src/navigation.rules.ts","../../../../projects/aca-shared/rules/src/repository.rules.ts","../../../../projects/aca-shared/rules/src/user.rules.ts","../../../../projects/aca-shared/rules/src/app.rules.ts","../../../../projects/aca-shared/rules/src/public-api.ts","../../../../projects/aca-shared/rules/src/alfresco-aca-shared-rules.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { RuleContext } from '@alfresco/adf-extensions';\n\n/**\n * Checks if a Preview route is activated.\n * JSON ref: `app.navigation.isPreview`\n */\nexport function isPreview(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url && (url.includes('/preview/') || url.includes('viewer:view') || url.includes('/view/'));\n}\n\n/**\n * Checks if a **Favorites** route is activated.\n * JSON ref: `app.navigation.isFavorites`\n */\nexport function isFavorites(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/favorites') && !isPreview(context);\n}\n\n/**\n * Checks if a **Shared Files** route is activated.\n * JSON ref: `app.navigation.isSharedFiles`\n */\nexport function isSharedFiles(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/shared') && !isPreview(context);\n}\n\n/**\n * Checks if a **Trashcan** route is activated.\n * JSON ref: `app.navigation.isTrashcan`\n */\nexport function isTrashcan(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/trashcan');\n}\n\n/**\n * Checks if a **Personal Files** route is activated.\n * JSON ref: `app.navigation.isPersonalFiles`\n */\nexport function isPersonalFiles(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/personal-files');\n}\n\n/**\n * Checks if a **Repository View** route is activated.\n * JSON ref: `app.navigation.isRepositoryView`\n */\nexport function isRepositoryView(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/repository');\n}\n\n/**\n * Checks if a **Library Files** or **Library Search Result** route is activated.\n * JSON ref: `app.navigation.isLibraryFiles`\n */\nexport function isLibraries(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.endsWith('/libraries') || url?.startsWith('/search-libraries');\n}\n\nexport function isLibraryContent(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.endsWith('/libraries') || url?.includes('/libraries/') || url?.startsWith('/search-libraries');\n}\n\nexport function isDetails(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.includes('/details');\n}\n\n/**\n * Checks if a **Recent Files** route is activated.\n * JSON ref: `app.navigation.isRecentFiles`\n */\nexport function isRecentFiles(context: RuleContext): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/recent-files');\n}\n\n/**\n * Checks if a **Search Results** route is activated.\n * JSON ref: `app.navigation.isSearchResults`\n */\nexport function isSearchResults(\n context: RuleContext\n // ...args: RuleParameter[]\n): boolean {\n const { url } = context.navigation;\n return url?.startsWith('/search');\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { RuleContext } from '@alfresco/adf-extensions';\n\n/**\n * Checks if the quick share repository option is enabled or not.\n * JSON ref: `repository.isQuickShareEnabled`\n */\nexport const hasQuickShareEnabled = (context: RuleContext): boolean => context.repository.status.isQuickShareEnabled;\n\nexport function isMajorVersionAvailable(context: RuleContext, versionNumber: string): boolean {\n const majorVersion = context.repository.version?.major ? parseInt(context.repository.version.major, 10) : 0;\n return majorVersion >= parseInt(versionNumber, 10);\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { RuleContext } from '@alfresco/adf-extensions';\n\n/**\n * Checks if user is admin.\n * JSON ref: `user.isAdmin`\n */\nexport const isAdmin = (context: RuleContext): boolean => context.profile.isAdmin;\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { RuleContext } from '@alfresco/adf-extensions';\nimport { NodeEntry, SharedLink } from '@alfresco/js-api';\nimport * as navigation from './navigation.rules';\nimport * as repository from './repository.rules';\nimport { isAdmin } from './user.rules';\n\n/* cspell:disable */\nexport const supportedExtensions = {\n doc: 'ms-word',\n docx: 'ms-word',\n docm: 'ms-word',\n dot: 'ms-word',\n dotx: 'ms-word',\n dotm: 'ms-word',\n rtf: 'ms-word',\n xls: 'ms-excel',\n xlsx: 'ms-excel',\n xlsb: 'ms-excel',\n xlsm: 'ms-excel',\n xlt: 'ms-excel',\n xltx: 'ms-excel',\n xltm: 'ms-excel',\n xlam: 'ms-excel',\n ppt: 'ms-powerpoint',\n pptx: 'ms-powerpoint',\n pot: 'ms-powerpoint',\n potx: 'ms-powerpoint',\n potm: 'ms-powerpoint',\n pptm: 'ms-powerpoint',\n pps: 'ms-powerpoint',\n ppsx: 'ms-powerpoint',\n ppam: 'ms-powerpoint',\n ppsm: 'ms-powerpoint',\n sldx: 'ms-powerpoint',\n sldm: 'ms-powerpoint',\n vsd: 'ms-visio',\n vss: 'ms-visio',\n vst: 'ms-visio',\n vsdx: 'ms-visio',\n vsdm: 'ms-visio',\n vssx: 'ms-visio',\n vssm: 'ms-visio',\n vstx: 'ms-visio',\n vstm: 'ms-visio'\n};\n\n/* cspell:enable */\n\nexport function getFileExtension(fileName: string): string | null {\n if (fileName) {\n const match = fileName.toLowerCase().match(/\\.([^\\./\\?\\#]+)($|\\?|\\#)/);\n\n return match ? match[1] : null;\n }\n\n return null;\n}\n\nexport interface AcaRuleContext extends RuleContext {\n withCredentials: boolean;\n appConfig: AppConfigService;\n}\n\n/**\n * Checks if the content plugin is enabled.\n * JSON ref: `app.isContentServiceEnabled`\n */\nexport const isContentServiceEnabled = (context: AcaRuleContext): boolean => {\n const flag = context.appConfig.get<boolean | string>('plugins.contentService');\n return flag === true || flag === 'true';\n};\n\n/**\n * Checks if user can mark selected nodes as **Favorite**.\n * JSON ref: `app.selection.canAddFavorite`\n */\nexport function canAddFavorite(context: RuleContext): boolean {\n if (navigation.isFavorites(context) || navigation.isLibraries(context) || navigation.isTrashcan(context)) {\n return false;\n }\n return context.selection.nodes.some((node) => !node.entry.isFavorite);\n}\n\n/**\n * Checks if user can un-mark selected nodes as **Favorite**.\n * JSON ref: `app.selection.canRemoveFavorite`\n */\nexport function canRemoveFavorite(context: RuleContext): boolean {\n if (navigation.isFavorites(context)) {\n return true;\n }\n return context.selection.nodes.every((node) => node.entry.isFavorite);\n}\n\n/**\n * Checks if user can share selected file.\n * JSON ref: `app.selection.file.canShare`\n */\nexport const canShareFile = (context: RuleContext): boolean =>\n [\n context.selection.file,\n !navigation.isTrashcan(context),\n repository.hasQuickShareEnabled(context),\n !isShared(context),\n !isNodeLink(context),\n !isLockedOrWorkingCopy(context)\n ].every(Boolean);\n\n/**\n * Checks if user can perform \"Join\" or \"Cancel Join Request\" on a library.\n * JSON ref: `canToggleJoinLibrary`\n */\nexport const canToggleJoinLibrary = (context: RuleContext): boolean =>\n !isPrivateLibrary(context) || [isPrivateLibrary(context), isAdmin(context)].every(Boolean);\n\n/**\n * Checks if user can edit the selected folder.\n * JSON ref: `canEditFolder`\n *\n * @param context Rule execution context\n */\nexport const canEditFolder = (context: RuleContext): boolean => [canUpdateSelectedFolder(context), !navigation.isTrashcan(context)].every(Boolean);\n\n/**\n * Checks if the selected file is already shared.\n * JSON ref: `app.selection.file.isShared`\n */\nexport function isShared(context: RuleContext): boolean {\n if (navigation.isSharedFiles(context) && context.selection.file) {\n return true;\n }\n\n if (!navigation.isTrashcan(context) && hasSelection(context) && context.selection.file) {\n return !!context.selection.file.entry?.properties?.['qshare:sharedId'];\n }\n\n return false;\n}\n\n/**\n * Checks if user can delete selected nodes.\n * JSON ref: `app.selection.canDelete`\n */\nexport function canDeleteSelection(context: RuleContext): boolean {\n if (hasLockedFiles(context)) {\n return false;\n }\n\n // temp workaround for Favorites api\n if (navigation.isFavorites(context)) {\n return true;\n }\n\n if (navigation.isPreview(context)) {\n return context.permissions.check(context.selection.nodes, ['delete']);\n }\n\n // workaround for Shared Files\n if (navigation.isSharedFiles(context)) {\n return context.permissions.check(context.selection.nodes, ['delete'], {\n target: 'allowableOperationsOnTarget'\n });\n }\n\n return context.permissions.check(context.selection.nodes, ['delete']);\n}\n\n/**\n * Checks if user selected anything.\n * JSON ref: `app.selection.notEmpty`\n */\nexport const hasSelection = (context: RuleContext): boolean => !context.selection.isEmpty;\n\n/**\n * Checks if user can create a new folder with current path.\n * JSON ref: `app.navigation.folder.canCreate`\n */\nexport function canCreateFolder(context: AcaRuleContext): boolean {\n if (navigation.isPersonalFiles(context) || navigation.isLibraryContent(context) || navigation.isRepositoryView(context)) {\n const { currentFolder } = context.navigation;\n\n if (currentFolder) {\n return context.permissions.check(currentFolder, ['create']);\n }\n }\n return false;\n}\n\n/**\n * Checks if user can download selected nodes (either files or folders).\n * JSON ref: `app.selection.canDownload`\n */\nexport function canDownloadSelection(context: RuleContext): boolean {\n if (context.selection.nodes.some((node) => isLockedOrWorkingCopy(context, node)) || isNodeLink(context)) {\n return false;\n }\n return context.selection.nodes.every((node: any) => node.entry && (node.entry.isFile || node.entry.isFolder || !!node.entry.nodeId));\n}\n\n/**\n * Checks if user has selected a folder.\n * JSON ref: `app.selection.folder`\n */\nexport const hasFolderSelected = (context: RuleContext): boolean => !!context.selection.folder;\n\n/**\n * Checks if user has selected a library (site).\n * JSON ref: `app.selection.library`\n */\nexport const hasLibrarySelected = (context: RuleContext): boolean => !!context.selection.library;\n\n/**\n * Checks if user has selected a **private** library (site)\n * JSON ref: `app.selection.isPrivateLibrary`\n */\nexport function isPrivateLibrary(context: RuleContext): boolean {\n return context.selection.library?.entry?.visibility === 'PRIVATE';\n}\n\n/**\n * Checks if the selected library has a **role** property defined.\n * JSON ref: `app.selection.hasLibraryRole`\n */\nexport function hasLibraryRole(context: RuleContext): boolean {\n const library = context.selection.library;\n return library ? !!library.entry?.role : false;\n}\n\n/**\n * Checks if user has selected a file.\n * JSON ref: `app.selection.file`\n */\nexport const hasFileSelected = (context: RuleContext): boolean => !!context?.selection?.file;\n\n/**\n * Checks if user can update the first selected node.\n * JSON ref: `app.selection.first.canUpdate`\n */\nexport function canUpdateSelectedNode(context: RuleContext): boolean {\n if (context.selection && hasSelection(context)) {\n const node = context.selection.first;\n\n if (node?.entry.isFile && hasLockedFiles(context)) {\n return false;\n }\n\n return context.permissions.check(node, ['update']);\n }\n return false;\n}\n\nexport function isMultiselection(context: RuleContext): boolean {\n let isMultiNodeSelected = false;\n if (context.selection && hasSelection(context)) {\n isMultiNodeSelected = context.selection.count > 1;\n }\n return isMultiNodeSelected;\n}\n\n/**\n * Checks if user can update the first selected folder.\n * JSON ref: `app.selection.folder.canUpdate`\n */\nexport function canUpdateSelectedFolder(context: RuleContext): boolean {\n const { folder } = context.selection;\n if (folder) {\n return (\n // workaround for Favorites Api\n navigation.isFavorites(context) || context.permissions.check(folder.entry, ['update'])\n );\n }\n return false;\n}\n\n/**\n * Checks if user has selected a **locked** file node.\n * JSON ref: `app.selection.file.isLocked`\n */\nexport function hasLockedFiles(context: RuleContext): boolean {\n if (context?.selection?.nodes) {\n return context.selection.nodes.some((node) => {\n if (!node.entry.isFile) {\n return false;\n }\n\n return node.entry.isLocked || node.entry.properties?.['cm:lockType'] === 'READ_ONLY_LOCK';\n });\n }\n\n return false;\n}\n\n/**\n * Checks if the selected file has **write** or **read-only** locks specified.\n * JSON ref: `app.selection.file.isLocked`\n */\nexport const isWriteLocked = (context: RuleContext): boolean =>\n !!(\n context?.selection?.file?.entry?.properties?.['cm:lockType'] === 'WRITE_LOCK' ||\n context?.selection?.file?.entry?.properties?.['cm:lockType'] === 'READ_ONLY_LOCK'\n );\n\n/**\n * Checks if a node is locked or a working copy. Accepts an optional node argument\n * so it can be evaluated per-row (e.g. for badges), falling back to context.selection.first.\n * JSON ref: `app.selection.isLockedOrWorkingCopy`\n *\n * Covers:\n * - `entry.isLocked` — any server-reported lock\n * - `cm:lockType` property — present when locked via the Lock action\n * - `cm:workingcopy` aspect — the working copy created on checkout\n * - `cm:checkedOut` aspect — the original file while its working copy exists\n *\n * @param context Rule execution context\n * @param node Optional node to evaluate; defaults to context.selection.first\n */\nexport function isLockedOrWorkingCopy(context: RuleContext, node?: NodeEntry): boolean {\n const entry = (node ?? context?.selection?.first)?.entry;\n if (!entry) {\n return false;\n }\n if (!entry.isFile && !(entry as SharedLink).nodeId) {\n return false;\n }\n return (\n entry.isLocked === true ||\n !!entry.properties?.['cm:lockType'] ||\n (entry.aspectNames ?? []).includes('cm:workingcopy') ||\n (entry.aspectNames ?? []).includes('cm:checkedOut')\n );\n}\n\n/**\n * Checks if the current user owns the lock on the selected file.\n * Handles both regular write/read-only locks (`cm:lockOwner`) and\n * working copies (`cm:workingCopyOwner`), which have no `cm:lockType` themselves.\n * JSON ref: `app.selection.file.isLockOwner`\n */\nexport const isUserWriteLockOwner = (context: RuleContext): boolean => {\n const entry = context.selection.file?.entry;\n if (!entry) {\n return false;\n }\n if (entry.aspectNames?.includes('cm:workingcopy')) {\n return entry.properties?.['cm:workingCopyOwner']?.id === context.profile.id;\n }\n return isWriteLocked(context) && !!entry.properties?.['cm:lockOwner'] && entry.properties['cm:lockOwner'].id === context.profile.id;\n};\n\n/**\n * Checks if user can lock selected file.\n * JSON ref: `app.selection.file.canLock`\n */\nexport const canLockFile = (context: RuleContext): boolean => !isWriteLocked(context) && canUpdateSelectedNode(context);\n\n/**\n * Checks if user can unlock selected file.\n * JSON ref: `app.selection.file.canUnlock`\n */\nexport function canUnlockFile(context: RuleContext): boolean {\n const { file } = context.selection;\n return isWriteLocked(context) && (context.permissions.check(file?.entry, ['delete']) || isUserWriteLockOwner(context));\n}\n\n/**\n * Checks if user can upload a new version of the file.\n * JSON ref: `app.selection.file.canUploadVersion`\n */\nexport function canUploadVersion(context: RuleContext): boolean {\n if (isNodeLink(context)) {\n return false;\n }\n\n if (navigation.isFavorites(context) || navigation.isSharedFiles(context)) {\n return hasFileSelected(context);\n }\n\n return [\n hasFileSelected(context),\n !navigation.isTrashcan(context),\n isWriteLocked(context) ? isUserWriteLockOwner(context) : canUpdateSelectedNode(context)\n ].every(Boolean);\n}\n\n/**\n * Checks if user can print the file.\n * JSON ref: `canPrintFile`\n *\n * @param context Rule execution context\n */\nexport const canPrintFile = (context: RuleContext): boolean => {\n if (isLockedOrWorkingCopy(context)) {\n return false;\n }\n const nodeEntry = context.selection.file.entry;\n if (!nodeEntry?.content?.mimeType) {\n return false;\n }\n const mediaMimeTypes = ['video/mp4', 'video/webm', 'video/ogg', 'audio/mpeg', 'audio/mp3', 'audio/ogg', 'audio/wav'];\n return !mediaMimeTypes.includes(nodeEntry.content.mimeType);\n};\n\n/**\n * Checks if user can toggle shared link mode.\n * JSON ref: `canToggleSharedLink`\n *\n * @param context Rule execution context\n */\nexport const canToggleSharedLink = (context: RuleContext): boolean => [canShareFile(context), isShared(context)].some(Boolean);\n\n/**\n * Checks if user can edit aspects for the selected node.\n * JSON ref: `canEditAspects`\n *\n * @param context Rule execution context\n */\nexport const canEditAspects = (context: RuleContext): boolean =>\n [\n !isWorkingCopy(context),\n !isMultiselection(context),\n canUpdateSelectedNode(context),\n !isWriteLocked(context),\n !navigation.isTrashcan(context),\n repository.isMajorVersionAvailable(context, '7')\n ].every(Boolean);\n\nexport const canToggleFileLock = (context: RuleContext): boolean => canCheckout(context) || canCancelCheckout(context);\n\n/**\n * @deprecated Uses workarounds for for recent files and search api issues.\n * Checks if user can toggle **Favorite** state for a node.\n * @param context Rule execution context\n */\nexport const canToggleFavorite = (context: RuleContext): boolean =>\n [\n [canAddFavorite(context), canRemoveFavorite(context)].some(Boolean),\n [navigation.isRecentFiles(context), navigation.isSharedFiles(context), navigation.isSearchResults(context), navigation.isFavorites(context)].some(\n Boolean\n )\n ].every(Boolean);\n\n/**\n * Checks if application should render logout option.\n * JSON ref: `canShowLogout`\n *\n * @param context Rule execution context\n */\nexport const canShowLogout = (context: AcaRuleContext): boolean => !context.withCredentials;\n\n/**\n * Checks if user is library manager\n * JSON ref: `isLibraryManager`\n *\n * @param context Rule execution context\n */\nexport const isLibraryManager = (context: RuleContext): boolean => context.selection.library?.entry.role === 'SiteManager' || isAdmin(context);\n\n/**\n * Checks if the file can be opened with MS Office\n * JSON ref: `aos.canOpenWithOffice`\n *\n * @param context Rule execution context\n */\nexport function canOpenWithOffice(context: AcaRuleContext): boolean {\n const flag = `${context.appConfig.get<boolean | string>('plugins.aosPlugin', false)}`;\n\n if (flag !== 'true') {\n return false;\n }\n\n if (isNodeLink(context)) {\n return false;\n }\n\n if (isWorkingCopy(context)) {\n return false;\n }\n\n if (context.navigation?.url?.startsWith('/trashcan')) {\n return false;\n }\n\n if (!context?.selection) {\n return false;\n }\n\n const { file } = context.selection;\n\n if (!file?.entry) {\n return false;\n }\n\n const extension = getFileExtension(file.entry.name);\n if (!extension || !supportedExtensions[extension]) {\n return false;\n }\n\n if (!file.entry.properties) {\n return false;\n }\n\n if (file.entry.isLocked) {\n return false;\n }\n\n if (file.entry.properties['cm:lockType'] === 'WRITE_LOCK' || file.entry.properties['cm:lockType'] === 'READ_ONLY_LOCK') {\n return false;\n }\n\n const lockOwner = file.entry.properties['cm:lockOwner'];\n if (lockOwner && lockOwner.id !== context.profile.id) {\n return false;\n }\n\n // workaround for Shared files\n if (context.navigation?.url?.startsWith('/shared')) {\n // eslint-disable-next-line no-prototype-builtins\n if (file.entry.hasOwnProperty('allowableOperationsOnTarget')) {\n return context.permissions.check(file, ['update'], {\n target: 'allowableOperationsOnTarget'\n });\n }\n }\n\n return context.permissions.check(file, ['update']);\n}\n\n/**\n * Checks if user savedSearches are supported by current ACS version.\n * JSON ref: `isPreferencesApiAvailable`\n */\nexport const isPreferencesApiAvailable = createVersionRule('25.1.0');\n\n/**\n * Checks if node info modal is supported by current ACS version.\n * JSON ref: `isNodeInfoAvailable`\n */\nexport const isNodeInfoAvailable = createVersionRule('23.4.0');\n\n/**\n * Checks if bulk update feature for legal holds is supported by current ACS version.\n * JSON ref: `isBulkActionsAvailable`\n */\nexport const isBulkActionsAvailable = createVersionRule('23.3.0');\n\n/**\n * Partially applies minimal version of a feature against a core compatibility evaluation.\n * @param minimalVersion The minimal version to check against.\n */\nexport function createVersionRule(minimalVersion: string): (context: RuleContext) => boolean {\n return (context: RuleContext): boolean => {\n const acsVersion = context.repository.version?.display?.split(' ')[0];\n return isVersionCompatible(acsVersion, minimalVersion);\n };\n}\n\n/**\n * Checks if the selected file has the `cm:versionable` aspect.\n * JSON ref: `app.selection.file.isVersionable`\n *\n * @param context Rule execution context\n */\nexport const isVersionableFile = (context: RuleContext): boolean => {\n const file = context?.selection?.file;\n if (!file?.entry) {\n return false;\n }\n return (file.entry.aspectNames ?? []).includes('cm:versionable');\n};\n\nfunction isVersionCompatible(currentVersion: string, minimalVersion: string): boolean {\n if (!currentVersion || !minimalVersion) {\n return false;\n }\n\n const currentParts = currentVersion.split('.').map(Number);\n const minimalParts = minimalVersion.split('.').map(Number);\n const maxLength = Math.max(currentParts.length, minimalParts.length);\n\n for (let i = 0; i < maxLength; i++) {\n const currentSegment = currentParts[i] ?? 0;\n const minimalSegment = minimalParts[i] ?? 0;\n\n if (currentSegment > minimalSegment) {\n return true;\n }\n\n if (currentSegment < minimalSegment) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isSmartFolder(context: RuleContext): boolean {\n if (!context.selection?.isEmpty) {\n const node = context.selection.first;\n if (!node?.entry.isFolder) {\n return false;\n }\n const nodeAspects = node.entry?.aspectNames ?? [];\n return nodeAspects.includes('smf:customConfigSmartFolder') || nodeAspects.includes('smf:systemConfigSmartFolder');\n }\n return false;\n}\n\nexport const areTagsEnabled = (context: AcaRuleContext): boolean => context.appConfig.get('plugins.tagsEnabled', true);\n\nexport const areCategoriesEnabled = (context: AcaRuleContext): boolean => context.appConfig.get('plugins.categoriesEnabled', true);\n\nexport const isSSOEnabled = (context: AcaRuleContext): boolean => context.appConfig.get('authType') === 'OAUTH';\n\n/**\n * Checks if node contains checked out aspect.\n * JSON ref: `app.selection.isCheckedOut`\n *\n * @param context Rule execution context\n */\nexport const isCheckedOut = (context: RuleContext): boolean => {\n if (!context.selection?.isEmpty) {\n const nodeAspects = context.selection.first.entry?.aspectNames ?? [];\n return nodeAspects.includes('cm:checkedOut');\n }\n return false;\n};\n\n/**\n * Checks if the selected node is a working copy (has cm:workingcopy aspect).\n * JSON ref: `app.selection.isWorkingCopy`\n *\n * @param context Rule execution context\n */\nexport const isWorkingCopy = (context: RuleContext): boolean => {\n if (!context.selection?.isEmpty) {\n return (context.selection.first?.entry?.aspectNames ?? []).includes('cm:workingcopy');\n }\n return false;\n};\n\n/**\n * Checks if the selected file node can be checked out.\n * Returns true for cm:content (or subtype) file nodes that are not already\n * checked out, not locked, not a working copy, and where the user has update permission.\n * Blocks folders, node links, trashcan items, and special system nodes (no update permission).\n * JSON ref: `app.selection.canCheckout`\n *\n * @param context Rule execution context\n */\nexport const canCheckout = (context: RuleContext): boolean =>\n hasFileSelected(context) &&\n !navigation.isTrashcan(context) &&\n !isNodeLink(context) &&\n canUpdateSelectedNode(context) &&\n !isLockedOrWorkingCopy(context);\n\n/**\n * Checks if checkout can be cancelled for the selected node.\n * Returns true when a checked-out original or working copy is selected\n * and the user is the lock owner or has delete permission.\n * JSON ref: `app.selection.canCancelCheckout`\n *\n * @param context Rule execution context\n */\nexport const canCancelCheckout = (context: RuleContext): boolean => {\n return (\n hasFileSelected(context) &&\n !navigation.isTrashcan(context) &&\n !isNodeLink(context) &&\n isLockedOrWorkingCopy(context) &&\n (context.permissions.check(context.selection.file?.entry, ['delete']) || isUserWriteLockOwner(context))\n );\n};\n\n/**\n * Checks if any of the selected nodes is a link node (app:filelink or app:folderlink).\n * JSON ref: `app.selection.isNodeLink`\n *\n * @param context Rule execution context\n */\nexport const isNodeLink = (context: RuleContext): boolean =>\n !context.selection?.isEmpty &&\n context.selection.nodes.some((node) => node.entry?.nodeType === 'app:filelink' || node.entry?.nodeType === 'app:folderlink');\n\n/**\n * Checks if the Knowledge Discovery URL is configured.\n * JSON ref: `app.isKnowledgeDiscoveryUrlPresent`\n *\n * @param context Rule execution context\n */\nexport const isKnowledgeDiscoveryUrlPresent = (context: AcaRuleContext): boolean => !!context.appConfig.get<string>('knowledgeDiscoveryUrl', '');\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './app.rules';\nexport * from './navigation.rules';\nexport * from './repository.rules';\nexport * from './user.rules';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["navigation.isFavorites","navigation.isLibraries","navigation.isTrashcan","repository.hasQuickShareEnabled","navigation.isSharedFiles","navigation.isPreview","navigation.isPersonalFiles","navigation.isLibraryContent","navigation.isRepositoryView","repository.isMajorVersionAvailable","navigation.isRecentFiles","navigation.isSearchResults"],"mappings":"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"}
|
|
@@ -356,6 +356,8 @@ var NodeActionTypes;
|
|
|
356
356
|
NodeActionTypes["ManageVersions"] = "MANAGE_VERSIONS";
|
|
357
357
|
NodeActionTypes["EditOffline"] = "EDIT_OFFLINE";
|
|
358
358
|
NodeActionTypes["UnlockForWriting"] = "UNLOCK_WRITE_LOCK";
|
|
359
|
+
NodeActionTypes["CheckoutNode"] = "CHECKOUT_NODE";
|
|
360
|
+
NodeActionTypes["CancelCheckoutNode"] = "CANCEL_CHECKOUT_NODE";
|
|
359
361
|
NodeActionTypes["AddFavorite"] = "ADD_FAVORITE";
|
|
360
362
|
NodeActionTypes["RemoveFavorite"] = "REMOVE_FAVORITE";
|
|
361
363
|
NodeActionTypes["ChangeAspects"] = "ASPECT_LIST";
|
|
@@ -487,6 +489,18 @@ class EditOfflineAction {
|
|
|
487
489
|
this.type = NodeActionTypes.EditOffline;
|
|
488
490
|
}
|
|
489
491
|
}
|
|
492
|
+
class CheckoutNodeAction {
|
|
493
|
+
constructor(payload) {
|
|
494
|
+
this.payload = payload;
|
|
495
|
+
this.type = NodeActionTypes.CheckoutNode;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
class CancelCheckoutNodeAction {
|
|
499
|
+
constructor(payload) {
|
|
500
|
+
this.payload = payload;
|
|
501
|
+
this.type = NodeActionTypes.CancelCheckoutNode;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
490
504
|
class UnlockWriteAction {
|
|
491
505
|
constructor(payload) {
|
|
492
506
|
this.payload = payload;
|
|
@@ -1269,5 +1283,5 @@ const INITIAL_APP_STATE = {
|
|
|
1269
1283
|
* Generated bundle index. Do not edit.
|
|
1270
1284
|
*/
|
|
1271
1285
|
|
|
1272
|
-
export { AddFavoriteAction, AppActionTypes, ClosePreviewAction, ContextMenu, ContextMenuActionTypes, CopyNodesAction, CreateFolderAction, CreateFromTemplate, CreateFromTemplateSuccess, CreateLibraryAction, CustomContextMenu, DeleteLibraryAction, DeleteNodesAction, DownloadNodesAction, EditFolderAction, EditOfflineAction, ExpandInfoDrawerAction, FileFromTemplate, FolderFromTemplate, FullscreenViewerAction, INITIAL_APP_STATE, LeaveLibraryAction, LibraryActionTypes, LinkNodesAction, LocateLinkedItemAction, ManageAspectsAction, ManagePermissionsAction, ManageRulesAction, ManageVersionsAction, MoveNodesAction, NavigateLibraryAction, NavigateRouteAction, NavigateToFolder, NavigateToParentFolder, NavigateToPreviousPage, NavigateUrlAction, NodeActionTypes, NodeInformationAction, PluginPreviewAction, PrintFileAction, PurgeDeletedNodesAction, RefreshPreviewAction, ReloadDocumentListAction, RemoveFavoriteAction, ResetSelectionAction, RestoreDeletedNodesAction, RouterActionTypes, RouterEffects, SET_INFO_DRAWER_METADATA_ASPECT, SearchAction, SearchActionTypes, SearchByTermAction, SearchOptionIds, SetCurrentFolderAction, SetCurrentNodeVersionAction, SetCurrentUrlAction, SetFileUploadingDialogAction, SetInfoDrawerMetadataAspectAction, SetInfoDrawerPreviewStateAction, SetInfoDrawerStateAction, SetRepositoryInfoAction, SetSearchItemsTotalCountAction, SetSelectedNodesAction, SetUserProfileAction, ShareNodeAction, ShowInfoDrawerPreviewAction, ShowLoaderAction, TemplateActionTypes, ToggleInfoDrawerAction, UndoDeleteNodesAction, UnlockWriteAction, UnshareNodesAction, UpdateLibraryAction, UploadActionTypes, UploadFileVersionAction, UploadFilesAction, UploadFolderAction, ViewFileAction, ViewNodeAction, ViewNodeVersionAction, ViewerActionTypes, getAppSelection, getCurrentACSVersion, getCurrentFolder, getCurrentVersion, getFileUploadingDialog, getNavigationState, getNodeContentSource, getRepositoryStatus, getRuleContext, getSearchItemsTotalCount, getSideNavState, getUserProfile, infoDrawerMetadataAspect, infoDrawerPreview, isAdmin, isInfoDrawerOpened, isQuickShareEnabled, selectApp, showLoaderSelector };
|
|
1286
|
+
export { AddFavoriteAction, AppActionTypes, CancelCheckoutNodeAction, CheckoutNodeAction, ClosePreviewAction, ContextMenu, ContextMenuActionTypes, CopyNodesAction, CreateFolderAction, CreateFromTemplate, CreateFromTemplateSuccess, CreateLibraryAction, CustomContextMenu, DeleteLibraryAction, DeleteNodesAction, DownloadNodesAction, EditFolderAction, EditOfflineAction, ExpandInfoDrawerAction, FileFromTemplate, FolderFromTemplate, FullscreenViewerAction, INITIAL_APP_STATE, LeaveLibraryAction, LibraryActionTypes, LinkNodesAction, LocateLinkedItemAction, ManageAspectsAction, ManagePermissionsAction, ManageRulesAction, ManageVersionsAction, MoveNodesAction, NavigateLibraryAction, NavigateRouteAction, NavigateToFolder, NavigateToParentFolder, NavigateToPreviousPage, NavigateUrlAction, NodeActionTypes, NodeInformationAction, PluginPreviewAction, PrintFileAction, PurgeDeletedNodesAction, RefreshPreviewAction, ReloadDocumentListAction, RemoveFavoriteAction, ResetSelectionAction, RestoreDeletedNodesAction, RouterActionTypes, RouterEffects, SET_INFO_DRAWER_METADATA_ASPECT, SearchAction, SearchActionTypes, SearchByTermAction, SearchOptionIds, SetCurrentFolderAction, SetCurrentNodeVersionAction, SetCurrentUrlAction, SetFileUploadingDialogAction, SetInfoDrawerMetadataAspectAction, SetInfoDrawerPreviewStateAction, SetInfoDrawerStateAction, SetRepositoryInfoAction, SetSearchItemsTotalCountAction, SetSelectedNodesAction, SetUserProfileAction, ShareNodeAction, ShowInfoDrawerPreviewAction, ShowLoaderAction, TemplateActionTypes, ToggleInfoDrawerAction, UndoDeleteNodesAction, UnlockWriteAction, UnshareNodesAction, UpdateLibraryAction, UploadActionTypes, UploadFileVersionAction, UploadFilesAction, UploadFolderAction, ViewFileAction, ViewNodeAction, ViewNodeVersionAction, ViewerActionTypes, getAppSelection, getCurrentACSVersion, getCurrentFolder, getCurrentVersion, getFileUploadingDialog, getNavigationState, getNodeContentSource, getRepositoryStatus, getRuleContext, getSearchItemsTotalCount, getSideNavState, getUserProfile, infoDrawerMetadataAspect, infoDrawerPreview, isAdmin, isInfoDrawerOpened, isQuickShareEnabled, selectApp, showLoaderSelector };
|
|
1273
1287
|
//# sourceMappingURL=alfresco-aca-shared-store.mjs.map
|