@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.
@@ -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) => [context.selection.file, !isTrashcan(context), hasQuickShareEnabled(context), !isShared(context), !isNodeLink(context)].every(Boolean);
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 the selected file has **write** or **read-only** locks specified,
435
- * and that current user is the owner of the lock.
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) => isWriteLocked(context) &&
439
- context.selection.file?.entry.properties['cm:lockOwner'] &&
440
- context.selection.file?.entry.properties['cm:lockOwner'].id === context.profile.id;
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) => !isNodeLink(context) && [canLockFile(context) || canUnlockFile(context)].some(Boolean);
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":"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"}
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