{"version":3,"file":"712910e4ae263e8edc4e6bd5.js?3.6.14.7428b935c.1723600572441","mappings":"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","sources":["webpack://mono-repo/./packages/core-asset-custom-thumbnail/src/controller.ts","webpack://mono-repo/./packages/core-asset-expiration/src/controller.ts","webpack://mono-repo/./packages/core-asset-gallery/src/controller.ts","webpack://mono-repo/./packages/core-asset-next/src/controller.ts","webpack://mono-repo/./packages/core-asset-project/src/controller.ts","webpack://mono-repo/./packages/core-asset-repurpose/src/controller.ts","webpack://mono-repo/./packages/core-category-next/src/controller.ts","webpack://mono-repo/./packages/core-search-rules/src/controller.ts","webpack://mono-repo/./packages/core-search-saved/src/controller.ts","webpack://mono-repo/./packages/core-search-visual/src/controller.ts"],"sourcesContent":["import {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport AssetModel from '@netx/core-asset/models/asset';\nimport {type IAsset} from '@netx/core-asset-next/schema';\nimport _ from 'underscore';\n\nimport {CUSTOM_THUMBNAIL_EVENT, CUSTOM_THUMBNAIL_BASE_EVENT} from './actions';\n\ndispatcher.once(`${CUSTOM_THUMBNAIL_BASE_EVENT}:init`, () => {\n\tdispatcher.on(CUSTOM_THUMBNAIL_EVENT.SELECT, (asset: IAsset) =>\n\t\tdispatcher.trigger(\n\t\t\t'upload:asset:customThumbnail:select',\n\t\t\tnew AssetModel(asset),\n\t\t),\n\t);\n\n\tdispatcher.trigger(`${CUSTOM_THUMBNAIL_BASE_EVENT}:extend`);\n\tdispatcher.trigger(`${CUSTOM_THUMBNAIL_BASE_EVENT}:initialized`);\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(`${CUSTOM_THUMBNAIL_BASE_EVENT}:initialized`, () =>\n\t\t\t\tresolve(),\n\t\t\t);\n\t\t\tdispatcher.trigger(`${CUSTOM_THUMBNAIL_BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n","import {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport {expireAsset} from './api';\nimport AssetModel from '@netx/core-asset/models/asset';\nimport ConfirmView from '@netx/core-app/services/confirmation/views/confirm';\nimport {\n\tASSET_EXPIRATION_CONFIRMATIONS,\n\tASSET_EXPIRATION_SUBMIT_LABELS,\n} from './locales';\nimport {userInputToExpirationTime, assetExpirationToDateString} from './utils';\n\nimport {ASSET_EXPIRATION_EVENT, BASE_EVENT} from './actions';\n\ndispatcher.once(`${BASE_EVENT}:init`, () => {\n\tdispatcher.on(\n\t\tASSET_EXPIRATION_EVENT.EXPIRE,\n\t\tasync (id: number, expirationDate: string) => {\n\t\t\tawait expireAsset({\n\t\t\t\tid,\n\t\t\t\texpirationDate: userInputToExpirationTime(expirationDate),\n\t\t\t});\n\t\t\tdispatcher.trigger(\n\t\t\t\t`${ASSET_EXPIRATION_EVENT.EXPIRE}:success`,\n\t\t\t\tid,\n\t\t\t\texpirationDate,\n\t\t\t);\n\t\t},\n\t);\n\n\tdispatcher.on(\n\t\t`${ASSET_EXPIRATION_EVENT.EXPIRE}:success`,\n\t\t(id: number, expirationDate: number) => {\n\t\t\tdispatcher.trigger(\n\t\t\t\t`asset:expire:success`,\n\t\t\t\tnew AssetModel({assetId: id}),\n\t\t\t\tassetExpirationToDateString(expirationDate),\n\t\t\t);\n\t\t},\n\t);\n\n\tdispatcher.on(ASSET_EXPIRATION_EVENT.UNEXPIRE, (id: number) => {\n\t\tnew ConfirmView({\n\t\t\teventStr: ASSET_EXPIRATION_EVENT.UNEXPIRE,\n\t\t\targs: [id],\n\t\t\tmessage: ASSET_EXPIRATION_CONFIRMATIONS.UNEXPIRE,\n\t\t\tconfirmLabel: ASSET_EXPIRATION_SUBMIT_LABELS.UNEXPIRE,\n\t\t}).render();\n\t});\n\n\tdispatcher.on(\n\t\t`${ASSET_EXPIRATION_EVENT.UNEXPIRE}:confirmed`,\n\t\tasync (id: number) => {\n\t\t\tawait expireAsset({id, expirationDate: 0});\n\t\t\tdispatcher.trigger(`${ASSET_EXPIRATION_EVENT.UNEXPIRE}:success`, id, 0);\n\t\t},\n\t);\n\n\tdispatcher.on(`${ASSET_EXPIRATION_EVENT.UNEXPIRE}:success`, (id: number) => {\n\t\tdispatcher.trigger(\n\t\t\t`asset:unexpire:success`,\n\t\t\tnew AssetModel({assetId: id}),\n\t\t\t0,\n\t\t);\n\t});\n\n\tdispatcher.trigger(`${BASE_EVENT}:extend`);\n\tdispatcher.trigger(`${BASE_EVENT}:initialized`);\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(`${BASE_EVENT}:initialized`, () => resolve());\n\t\t\tdispatcher.trigger(`${BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n","import Netx from '@netx/core/bootstrap';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport {appRouter} from '@netx/core-next/instance/router';\nimport {type IAsset} from '@netx/core-asset-next/schema';\nimport AssetsCollection from '@netx/core-asset/collections/assets';\n\nimport {convertRulesToCollection} from '@netx/core-search-rules/utils/convertRulesToCollection';\nimport type {SearchRuleConditions} from '@netx/core-search-rules/types';\nimport {SearchFacetFilterMode} from '@netx/core-search-facets/constants';\nimport type {SearchFacetSelection} from '@netx/core-search-facets/types';\nimport {viewStore} from '@netx/core-app-next/store/backboneViewStore';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {\n\tASSET_GALLERY_DISPATCHER_BASE_EVENT,\n\tASSET_GALLERY_DISPATCHER_EVENT,\n} from './actions';\n\nimport {AssetGalleryContainer} from '@netx/core-asset-gallery/containers/AssetGallery';\nimport {currentAsset} from '@netx/core-asset/collections/singleton/currentAsset';\nimport {assetCursor} from '@netx/core-asset/collections/singleton/assetCursor';\n\nimport {AssetGalleryPref} from './constants';\n\nconst defaults = {\n\tattributeSetSelectionDefault: ['all'],\n\tsortFieldPrefKey: AssetGalleryPref.SORT_FIELD,\n\tsortOrderPrefKey: AssetGalleryPref.SORT_ORDER,\n};\n\ndispatcher.once(`${ASSET_GALLERY_DISPATCHER_BASE_EVENT}:init`, () => {\n\tdispatcher.on(\n\t\tASSET_GALLERY_DISPATCHER_EVENT.SHOW,\n\t\t(viewOptions: {conditions: SearchRuleConditions; page?: number}) => {\n\t\t\tviewStore.registerReactComponent(\n\t\t\t\t{\n\t\t\t\t\tComponent: AssetGalleryContainer,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...defaults,\n\t\t\t\t\t\tconditions: viewOptions.conditions,\n\t\t\t\t\t\tpage: viewOptions.page || 1,\n\t\t\t\t\t},\n\t\t\t\t\tshowActions: [ASSET_GALLERY_DISPATCHER_EVENT.SHOW],\n\t\t\t\t\tid: 'AssetGallery',\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t);\n\t\t},\n\t);\n\n\tdispatcher.on(\n\t\tASSET_GALLERY_DISPATCHER_EVENT.ADD_TO_CART,\n\t\t(\n\t\t\tconditions: SearchRuleConditions,\n\t\t\tselectedFacets: SearchFacetSelection[],\n\t\t\tfacetFilterMode: SearchFacetFilterMode,\n\t\t) => {\n\t\t\tconst selection = convertRulesToCollection(conditions);\n\t\t\tlet _selectedFacets = selectedFacets;\n\t\t\t// TODO: clean this shit up\n\t\t\t(selection as any).searchFacets = {\n\t\t\t\tfilterMode: facetFilterMode,\n\t\t\t\tselectedValues: () => _selectedFacets,\n\t\t\t\tturnOff: () => (_selectedFacets = []),\n\t\t\t\tturnOn: () => (_selectedFacets = selectedFacets),\n\t\t\t\ttrigger: () => {},\n\t\t\t\tlistenTo: () => {},\n\t\t\t\ton: () => {},\n\t\t\t\toff: () => {},\n\t\t\t\tstopListening: () => {},\n\t\t\t\tset: () => {},\n\t\t\t\treset: () => {},\n\t\t\t};\n\t\t\tdispatcher.trigger('cart:addAll', selection);\n\t\t},\n\t);\n\n\tdispatcher.on(\n\t\tASSET_GALLERY_DISPATCHER_EVENT.SHOW_DETAIL,\n\t\t(\n\t\t\tasset: IAsset,\n\t\t\tassets: IAsset[],\n\t\t\tconditions: SearchRuleConditions,\n\t\t\tselectedFacets: SearchFacetSelection[],\n\t\t\tfacetFilterMode: SearchFacetFilterMode,\n\t\t\tpage: number,\n\t\t) => {\n\t\t\t// This is basically all the logic from theme detail mixed in with caching the search to the cursor\n\t\t\tconst tab = getPreference('asset.detail.tabPreference');\n\t\t\tconst currentId = assetCursor.length ? currentAsset.id : 0;\n\t\t\tconst selection = convertRulesToCollection(conditions);\n\n\t\t\tlet _selectedFacets = selectedFacets;\n\t\t\t// TODO: clean this shit up\n\t\t\t(selection as any).searchFacets = {\n\t\t\t\tfilterMode: facetFilterMode,\n\t\t\t\tselectedValues: () => _selectedFacets,\n\t\t\t\tturnOff: () => (_selectedFacets = []),\n\t\t\t\tturnOn: () => (_selectedFacets = selectedFacets),\n\t\t\t\ttrigger: () => {},\n\t\t\t\tlistenTo: () => {},\n\t\t\t\ton: () => {},\n\t\t\t\toff: () => {},\n\t\t\t\tstopListening: () => {},\n\t\t\t\tset: () => {},\n\t\t\t\treset: () => {},\n\t\t\t};\n\n\t\t\tconst assetsCollection = new AssetsCollection(\n\t\t\t\tassets.slice(0, 200).filter((asset) => asset != null),\n\t\t\t\t{\n\t\t\t\t\tselection,\n\t\t\t\t\tuseFacetedSearch: true,\n\t\t\t\t},\n\t\t\t);\n\t\t\t// assetsCollection.useFacetedSearch(true);\n\t\t\tassetsCollection.curPage = page;\n\t\t\tassetsCollection.setStartPosition();\n\t\t\tassetCursor.cacheFetch(assetsCollection);\n\n\t\t\tappRouter.navigate(`asset/${asset.assetId}`, false);\n\t\t\tappRouter.history.unshift(`asset/${asset.assetId}`);\n\n\t\t\tdispatcher.trigger('asset:detail:show', {\n\t\t\t\tmodel: currentAsset,\n\t\t\t\tcollection: assetCursor,\n\t\t\t\ttab: tab,\n\t\t\t\trouteMatch: new RegExp(/^asset\\/(\\S+)/),\n\t\t\t});\n\n\t\t\t// Better test: Have we just routed to this asset from elsewhere?\n\t\t\t// (TODO: make this test a method on Netx.Router, and backport to core.\n\t\t\tif (\n\t\t\t\t// if current asset doesn't match, or\n\t\t\t\tasset.assetId != currentId ||\n\t\t\t\t// if we just loaded the app, or\n\t\t\t\t!appRouter.history[0] ||\n\t\t\t\t// if we're routing from anywhere but this asset\n\t\t\t\t(!appRouter.history[0].match(\n\t\t\t\t\tnew RegExp('^asset/' + asset.assetId + '$'),\n\t\t\t\t) &&\n\t\t\t\t\t!appRouter.history[0].match(\n\t\t\t\t\t\tnew RegExp('^asset/' + asset.assetId + '/'),\n\t\t\t\t\t))\n\t\t\t) {\n\t\t\t\tdispatcher.once('asset:cursor:goto:at', function () {\n\t\t\t\t\t// load all asset data when current asset updates\n\t\t\t\t\ttab && dispatcher.trigger('asset:detail:' + tab);\n\t\t\t\t});\n\t\t\t\t// update current asset\n\t\t\t\tdispatcher.trigger('asset:cursor:goto', asset.assetId);\n\t\t\t} else {\n\t\t\t\t// load all asset data for this asset.\n\t\t\t\ttab && dispatcher.trigger('asset:detail:' + tab);\n\t\t\t}\n\t\t},\n\t);\n\n\tdispatcher.trigger(`${ASSET_GALLERY_DISPATCHER_BASE_EVENT}:extend`);\n\tdispatcher.trigger(`${ASSET_GALLERY_DISPATCHER_BASE_EVENT}:initialized`);\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(\n\t\t\t\t`${ASSET_GALLERY_DISPATCHER_BASE_EVENT}:initialized`,\n\t\t\t\t() => resolve(),\n\t\t\t);\n\t\t\tdispatcher.trigger(`${ASSET_GALLERY_DISPATCHER_BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n","import Netx from '@netx/core/bootstrap';\nimport {i18n} from '@netx/core-next/locales';\nimport {appRouter} from '@netx/core-next/instance/router';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport BatchJobModel from '@netx/core-app/models/batchJob';\nimport AssetModel from '@netx/core-asset/models/asset';\nimport {type IAsset} from '@netx/core-asset-next/schema';\nimport {ASSET_EVENT, ASSET_BASE_EVENT} from './actions';\nimport {AssetMessage} from './locales';\n\nimport ConfirmView from '@netx/core-app/services/confirmation/views/confirm';\nimport {DownloadOptionType, downloadOptionDefaults} from '@netx/core-asset-set';\n// @ts-ignore\nimport DownloadOptionsCollection from '@netx/core-share/collections/downloadOptions';\n\ndispatcher.once(`${ASSET_BASE_EVENT}:init`, () => {\n\tdispatcher.on(ASSET_EVENT.CHECKIN, (asset: IAsset) => {\n\t\tconst model = new AssetModel(asset);\n\t\tdispatcher.trigger('asset:checkin', model);\n\t});\n\n\tdispatcher.on(ASSET_EVENT.CHECKOUT, (asset: IAsset) => {\n\t\tconst model = new AssetModel(asset);\n\t\tdispatcher.trigger('asset:checkout', model);\n\t});\n\n\tdispatcher.on(ASSET_EVENT.DELETE, (asset: IAsset) => {\n\t\tnew ConfirmView({\n\t\t\teventStr: ASSET_EVENT.DELETE,\n\t\t\targs: [asset],\n\t\t\tmessage: AssetMessage.CONFIRM_DELETE,\n\t\t\tconfirmLabel: i18n.t('i18n.delete'),\n\t\t}).render();\n\t});\n\n\tdispatcher.on(`${ASSET_EVENT.DELETE}:confirmed`, (asset: IAsset) => {\n\t\tconst assetModel = new AssetModel(asset);\n\t\tassetModel\n\t\t\t.destroy({wait: true})\n\t\t\t.then(() => {\n\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t'asset:deleted',\n\t\t\t\t\tassetModel.id,\n\t\t\t\t\tassetModel.attributes,\n\t\t\t\t);\n\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t`asset:deleted:${assetModel.id}`,\n\t\t\t\t\tassetModel.attributes,\n\t\t\t\t);\n\t\t\t\tdispatcher.trigger(ASSET_EVENT.DELETE_SUCCESS, assetModel);\n\t\t\t})\n\t\t\t.catch((ex: any) =>\n\t\t\t\tdispatcher.trigger(ASSET_EVENT.DELETE_ERROR, ex, assetModel),\n\t\t\t);\n\t});\n\n\tdispatcher.on(\n\t\tASSET_EVENT.DELETE_ERROR,\n\t\t(error: Error, assetModel: AssetModel) =>\n\t\t\tdispatcher.trigger('app:alert', error, i18n.t('i18n.error')),\n\t);\n\n\tdispatcher.on(\n\t\tASSET_EVENT.DELETE_SUCCESS,\n\t\t(assetModel: AssetModel, batchJob: BatchJobModel) => {\n\t\t\t// Re-fetch current cart if the asset was in it\n\t\t\t// TODO: the cart can listen for this...\n\t\t\tassetModel.get('inCurrentCart') && (Netx as any).cart.current.fetch();\n\n\t\t\t// TODO: eventually, asset detail can listen for this\n\t\t\t// DAM-15713 - on an asset that does not exist\n\t\t\tif (window.location.hash.match(`#asset/${assetModel.id}`)) {\n\t\t\t\tappRouter.exitRoute(new RegExp(`asset\\/${assetModel.id}.*`));\n\t\t\t}\n\t\t},\n\t);\n\n\tdispatcher.on(ASSET_EVENT.LOCK, (asset: IAsset) => {\n\t\tconst model = new AssetModel(asset);\n\t\tdispatcher.trigger('asset:lock', model);\n\t});\n\n\tdispatcher.on(ASSET_EVENT.UNLOCK, (asset: IAsset) => {\n\t\tconst model = new AssetModel(asset);\n\t\tdispatcher.trigger('asset:unlock', model);\n\t});\n\n\tdispatcher.on(ASSET_EVENT.REIMPORT, (asset: IAsset) => {\n\t\tconst model = new AssetModel(asset);\n\t\tdispatcher.trigger('asset:reimport', model);\n\t});\n\n\tdispatcher.on(ASSET_EVENT.RESYNC, (asset: IAsset) => {\n\t\tconst model = new AssetModel(asset);\n\t\tmodel\n\t\t\t.resync()\n\t\t\t.then((batchJob) => {\n\t\t\t\tdispatcher.trigger(`${ASSET_EVENT.RESYNC}:success`, model, batchJob);\n\n\t\t\t\tbatchJob.completed.then(\n\t\t\t\t\t(batchJob) => {\n\t\t\t\t\t\tdispatcher.trigger(`${ASSET_EVENT.RESYNC}:complete`, model);\n\t\t\t\t\t\tdispatcher.trigger(`${ASSET_BASE_EVENT}:resynced`, model.id);\n\t\t\t\t\t},\n\t\t\t\t\t(err, batchJob) =>\n\t\t\t\t\t\tdispatcher.trigger(`${ASSET_EVENT.RESYNC}:error`, err, model),\n\t\t\t\t);\n\t\t\t})\n\t\t\t.catch((ex) =>\n\t\t\t\tdispatcher.trigger(`${ASSET_EVENT.RESYNC}:error`, ex, model),\n\t\t\t);\n\t});\n\n\tdispatcher.on(`${ASSET_EVENT.RESYNC}:complete`, (assetModel: AssetModel) => {\n\t\tdispatcher.trigger('notification', {\n\t\t\tmodule: 'asset',\n\t\t\tids: [assetModel.id],\n\t\t\ttitle: i18n.t('i18n.assetUpdated'),\n\t\t\tdescription: i18n.t('i18n.resyncedAsset', {id: assetModel.id}),\n\t\t\ttype: 'success',\n\t\t});\n\t});\n\n\tdispatcher.on(\n\t\t`${ASSET_EVENT.RESYNC}:error`,\n\t\t(error: Error, assetModel: AssetModel) =>\n\t\t\tdispatcher.trigger('app:alert', error, i18n.t('i18n.error')),\n\t);\n\n\tdispatcher.on(\n\t\t`${ASSET_EVENT.RESYNC}:success`,\n\t\t(assetModel: AssetModel, batchJob: BatchJobModel) => {\n\t\t\tdispatcher.trigger('notification', {\n\t\t\t\tmodule: 'asset',\n\t\t\t\tids: [assetModel.id],\n\t\t\t\ttitle: i18n.t('i18n.assetUpdating'),\n\t\t\t\tdescription: i18n.t('i18n.resyncingAsset', {id: assetModel.id}),\n\t\t\t\ttype: 'info',\n\t\t\t\tprogressTask: {\n\t\t\t\t\tuuid: batchJob.id,\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t);\n\n\t/**\n\t * This is a holdover for react until we can rework all this stuff\n\t */\n\n\tdispatcher.on(ASSET_EVENT.MENU, (asset: IAsset) => {\n\t\tconst model = new AssetModel(asset);\n\t\tdispatcher.trigger('share:menu', model);\n\t});\n\tdispatcher.on(ASSET_EVENT.SHARE_LINK, (asset: IAsset) =>\n\t\tdispatcher.trigger(\n\t\t\t`share:assetSet:token`,\n\t\t\tnew AssetModel(asset).toAssetSet(),\n\t\t),\n\t);\n\tdispatcher.on(\n\t\tASSET_EVENT.SHARE_PUBLISH,\n\t\t(asset: IAsset, mediaServiceName: string) => {\n\t\t\tconst mediaService = Netx.share.mediaServices.find({\n\t\t\t\tname: mediaServiceName,\n\t\t\t});\n\t\t\tif (!mediaService?.get('authenticated')) return;\n\t\t\tdispatcher.trigger(\n\t\t\t\t`share:submit:confirmed`,\n\t\t\t\t{\n\t\t\t\t\t[mediaService.id]: true,\n\t\t\t\t},\n\t\t\t\tNetx.ShareWays.mediaService,\n\t\t\t\tnew AssetModel(asset).toAssetSet(),\n\t\t\t);\n\t\t},\n\t);\n\tdispatcher.on(ASSET_EVENT.SHARE_PUBLISH_BRIGHTCOVE, (asset: IAsset) => {\n\t\tdispatcher.trigger(ASSET_EVENT.SHARE_PUBLISH, asset, 'Brightcove');\n\t});\n\tdispatcher.on(ASSET_EVENT.SHARE_PUBLISH_YOUTUBE, (asset: IAsset) => {\n\t\tdispatcher.trigger(ASSET_EVENT.SHARE_PUBLISH, asset, 'YouTube');\n\t});\n\tdispatcher.on(ASSET_EVENT.SHARE_EMBED_LINK, (asset: IAsset) =>\n\t\tdispatcher.trigger(`share:token:embed`, new AssetModel(asset).toAssetSet()),\n\t);\n\n\tdispatcher.on(ASSET_EVENT.CREATE_PDF, (asset: IAsset) => {\n\t\tconst model = new AssetModel(asset);\n\t\tdispatcher.trigger(`share:asset:createPDF`, model);\n\t});\n\tdispatcher.on(ASSET_EVENT.CREATE_PDF_SHARE_LINK, (asset: IAsset) => {\n\t\tconst assetSet = new AssetModel(asset).toAssetSet();\n\t\tassetSet.downloadOptions = new DownloadOptionsCollection([\n\t\t\t{\n\t\t\t\t...downloadOptionDefaults,\n\t\t\t\ttype: DownloadOptionType.CONTACT_SHEET,\n\t\t\t},\n\t\t]);\n\t\tdispatcher.trigger(`share:assetSet:token:withOptions`, assetSet);\n\t});\n\tdispatcher.on(ASSET_EVENT.CREATE_PDF_DOWNLOAD, (asset: IAsset) => {\n\t\tconst assetSet = new AssetModel(asset).toAssetSet();\n\t\tassetSet.downloadOptions = new DownloadOptionsCollection([\n\t\t\t{\n\t\t\t\t...downloadOptionDefaults,\n\t\t\t\ttype: DownloadOptionType.CONTACT_SHEET,\n\t\t\t},\n\t\t]);\n\t\tdispatcher.trigger(`share:assetSet:download:start`, assetSet);\n\t});\n\n\tdispatcher.on(ASSET_EVENT.DOWNLOAD, (assetId: number) => {\n\t\tdispatcher.trigger(`share:asset:download`, assetId);\n\t});\n\n\tdispatcher.trigger(`${ASSET_BASE_EVENT}:extend`);\n\tdispatcher.trigger(`${ASSET_BASE_EVENT}:initialized`);\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(`${ASSET_BASE_EVENT}:initialized`, () => resolve());\n\t\t\tdispatcher.trigger(`${ASSET_BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n","import {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport AssetModel from '@netx/core-asset/models/asset';\nimport {type IAsset} from '@netx/core-asset-next/schema';\nimport {ASSET_PROJECT_EVENT, ASSET_PROJECT_BASE_EVENT} from './actions';\n\ndispatcher.once(`${ASSET_PROJECT_BASE_EVENT}:init`, () => {\n\tdispatcher.on(ASSET_PROJECT_EVENT.PROJECT, (asset: IAsset) => {\n\t\tdispatcher.trigger('project:asset', new AssetModel(asset));\n\t});\n\n\tdispatcher.on(ASSET_PROJECT_EVENT.ADD_TO_PROJECT, (asset: IAsset) => {\n\t\tdispatcher.trigger('project:add:asset', new AssetModel(asset));\n\t});\n\n\tdispatcher.on(ASSET_PROJECT_EVENT.CREATE_PROJECT, (asset: IAsset) => {\n\t\tdispatcher.trigger('project:new:from:asset', new AssetModel(asset));\n\t});\n\n\tdispatcher.trigger(`${ASSET_PROJECT_BASE_EVENT}:extend`);\n\tdispatcher.trigger(`${ASSET_PROJECT_BASE_EVENT}:initialized`);\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(`${ASSET_PROJECT_BASE_EVENT}:initialized`, () =>\n\t\t\t\tresolve(),\n\t\t\t);\n\t\t\tdispatcher.trigger(`${ASSET_PROJECT_BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n","import Netx from '@netx/core/bootstrap';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport _ from 'underscore';\n\nimport {type IAsset} from '@netx/core-asset-next/schema';\nimport {isMobile} from '@netx/core/utils';\nimport AssetImagePresetsCollection from '@netx/core-asset/collections/assetImagePresets';\nimport AssetVideoPresetsCollection from '@netx/core-asset/collections/assetVideoPresets';\nimport AssetModel from '@netx/core-asset/models/asset';\nimport AssetSetModel from '@netx/core-asset/models/assetSet';\nimport {types as assetSetTypes} from '@netx/core-asset/properties/assetSets';\nimport {getGeneralAssetFileType} from '@netx/core-asset/utils';\nimport {currentCart} from '@netx/core-cart/singletons/currentCart';\nimport {getPreference, currentUserMeetsUserLevel} from '@netx/core-user/utils';\nimport {REPURPOSE_EVENT, REPURPOSE_BASE_EVENT} from './actions';\nimport {modalViews} from '@netx/core-app/singletons/modalViews';\n\ndispatcher.once(`${REPURPOSE_BASE_EVENT}:init`, () => {\n\tconst presets = ((Netx.asset = Netx.asset || {}).presets = {\n\t\taudio: null,\n\t\tdocument: null,\n\t\timage: new AssetImagePresetsCollection([]),\n\t\tvideo: new AssetVideoPresetsCollection([]),\n\t});\n\n\t// fetch the DAM-wide list of asset repurposing processes\n\tconst bootstrap = [presets.image.fetch(), presets.video.fetch()];\n\n\tdispatcher.on(\n\t\t`${REPURPOSE_BASE_EVENT}:batch:show`,\n\t\tfunction (viewOptions) {\n\t\t\timport(\n\t\t\t\t/* webpackChunkName: \"view-assetBatchRepurpose\" */ '@netx/core-asset/views/assetBatchRepurposeView'\n\t\t\t).then((View) => {\n\t\t\t\tmodalViews.add({\n\t\t\t\t\tviewClass: View.default as any,\n\t\t\t\t\tshowAction: ['asset:repurpose:batch:show'],\n\t\t\t\t\tviewOptions: viewOptions,\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\twindow,\n\t);\n\n\tdispatcher.on(REPURPOSE_EVENT.REPURPOSE_ASSET, (asset: IAsset) => {\n\t\tconst assetModel = new AssetModel(asset);\n\n\t\tconst manualUserLevel =\n\t\t\tparseInt(getPreference('sys.minUserLevelForManualRepurpose') || '') || 0;\n\t\tconst canManuallyRepurpose = currentUserMeetsUserLevel(manualUserLevel);\n\n\t\tconst repurposableTypes = ['video', 'audio', 'image'];\n\t\tconst type = getGeneralAssetFileType(asset.fileFormatFamily, true);\n\n\t\tif (type == null || !repurposableTypes.includes(type)) {\n\t\t\tdispatcher.trigger(\n\t\t\t\t`${REPURPOSE_BASE_EVENT}:error`,\n\t\t\t\tnew Error(i18n.t('i18n.repurposeInvalidAssetType')),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (canManuallyRepurpose) {\n\t\t\tswitch (type) {\n\t\t\t\tcase 'audio':\n\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t`${REPURPOSE_BASE_EVENT}:audio`,\n\t\t\t\t\t\tnew AssetModel(asset),\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\tcase 'image':\n\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t`${REPURPOSE_BASE_EVENT}:image`,\n\t\t\t\t\t\tnew AssetModel(asset),\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If we have gotten her then we are just doing a general repurpose\n\t\t// Emulate inpection object (cartAssets collection)\n\t\t(assetModel as any).inspection = {\n\t\t\t[`${type}AssetIds`]: asset.assetId,\n\t\t\t[`${type}Count`]: 1,\n\t\t};\n\n\t\tconst options: {\n\t\t\tmodel: AssetModel;\n\t\t\tmanualProcesses?: any[];\n\t\t\tpresets: typeof presets;\n\t\t} = {\n\t\t\tmodel: assetModel,\n\t\t\tpresets,\n\t\t};\n\n\t\t// Get manual processes\n\t\tassetModel.getProcessListForUser({duplicateQueryPolicy: 'abort'}).then(\n\t\t\tfunction (processes) {\n\t\t\t\tlet assetSet;\n\t\t\t\t// Success\n\t\t\t\tif (processes === null || (!processes.length && type != 'audio')) {\n\t\t\t\t\t// Creating an assetSet consiting just of the asset since share:assetSet:menu requires an assetSet\n\t\t\t\t\t// This used to display the assetRepurposeView but we are moving away from that and using the download and share workflows for all presetProcess repurposes\n\t\t\t\t\tassetSet = new AssetSetModel({\n\t\t\t\t\t\ttype: assetSetTypes.asset,\n\t\t\t\t\t\tids: [asset.assetId],\n\t\t\t\t\t});\n\t\t\t\t\tdispatcher.trigger('share:assetSet:menu', assetSet, undefined, {\n\t\t\t\t\t\tcontext: 'presetProcess',\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// set processes - regardless\n\t\t\t\toptions.manualProcesses = processes;\n\n\t\t\t\t// make view\n\t\t\t\tassetSet = new AssetSetModel({\n\t\t\t\t\ttype: assetSetTypes.asset,\n\t\t\t\t\tids: [asset.assetId],\n\t\t\t\t});\n\n\t\t\t\tdispatcher.trigger('share:assetSet:menu', assetSet, undefined, {\n\t\t\t\t\tcontext: 'presetProcess',\n\t\t\t\t});\n\t\t\t},\n\t\t\t(err) => dispatcher.trigger(`${REPURPOSE_BASE_EVENT}:error`, err),\n\t\t);\n\t});\n\n\tdispatcher.on(REPURPOSE_EVENT.REPURPOSE_SELECTION, async () => {\n\t\tconst manualUserLevel =\n\t\t\tparseInt(getPreference('sys.minUserLevelForManualRepurpose') || '') || 0;\n\t\tconst canManuallyRepurpose = currentUserMeetsUserLevel(manualUserLevel);\n\n\t\t// @ts-ignore\n\t\tawait currentCart.inspect();\n\n\t\t// If only one type of item in this collection, we can skip the Batch part & go straight to asset:repurpose:selected.\n\t\t// TODO: make an 'assetInspection' model, with methods for this stuff ...\n\t\tconst counts = _.pick(\n\t\t\tcurrentCart.inspection,\n\t\t\t(v, k) => k.match(/Count$/) && v > 0,\n\t\t);\n\t\tconst countKeys = _.keys(counts);\n\t\tconst countKeysLength = countKeys.length;\n\n\t\tif (\n\t\t\tcountKeysLength === 0 ||\n\t\t\t(countKeysLength === 1 && countKeys[0] === 'documentCount') ||\n\t\t\t(countKeysLength === 2 &&\n\t\t\t\tcountKeys.every(\n\t\t\t\t\t(key) => key === 'documentCount' || key === 'otherAssetCount',\n\t\t\t\t))\n\t\t) {\n\t\t\treturn dispatcher.trigger(\n\t\t\t\t'cart:repurpose:error',\n\t\t\t\tnew Error(i18n.t('i18n.noneOfTheAssetsInYourCartCanBeRepurposed')),\n\t\t\t\ti18n.t('i18n.error'),\n\t\t\t);\n\t\t}\n\n\t\tif (countKeysLength === 1) {\n\t\t\tconst type = countKeys[0]?.match(/(^.*)Count$/)?.[1];\n\t\t\t// now type should be 'image', 'video', 'audio' or 'otherAsset'\n\t\t\tif (_.contains(['image', 'video', 'audio'], type)) {\n\t\t\t\tcurrentCart.length === 1\n\t\t\t\t\t? dispatcher.trigger(\n\t\t\t\t\t\t\tREPURPOSE_EVENT.REPURPOSE_ASSET,\n\t\t\t\t\t\t\tcurrentCart.at(0).attributes,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t )\n\t\t\t\t\t: dispatcher.trigger(\n\t\t\t\t\t\t\t'share:assetSet:menu',\n\t\t\t\t\t\t\tnew AssetSetModel({\n\t\t\t\t\t\t\t\ttype: assetSetTypes.cart,\n\t\t\t\t\t\t\t\tids: [0],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontext: 'presetProcess',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tcurrentCart.inspection.otherAssetCount > 0 ||\n\t\t\tcurrentCart.inspection.documentCount > 0\n\t\t) {\n\t\t\tconst assetCount = currentCart.assetCount?.() || 0;\n\t\t\tdispatcher.trigger('app:confirm', {\n\t\t\t\tmessage: i18n.t('i18n.assetsNotAvailableForRepurposing', {\n\t\t\t\t\ttotal: assetCount,\n\t\t\t\t\tbadCount:\n\t\t\t\t\t\tcurrentCart.inspection.otherAssetCount +\n\t\t\t\t\t\tcurrentCart.inspection.documentCount,\n\t\t\t\t\tcount:\n\t\t\t\t\t\tassetCount -\n\t\t\t\t\t\t(currentCart.inspection.otherAssetCount +\n\t\t\t\t\t\t\tcurrentCart.inspection.documentCount),\n\t\t\t\t}),\n\t\t\t\tyesLabel: i18n.t('i18n.continue'),\n\t\t\t\tnoLabel: i18n.t('i18n.cancel'),\n\t\t\t\teventStr: REPURPOSE_EVENT.REPURPOSE_SELECTION,\n\t\t\t\targs: [],\n\t\t\t});\n\t\t} else {\n\t\t\tdispatcher.trigger(`${REPURPOSE_EVENT.REPURPOSE_SELECTION}:confirmed`);\n\t\t}\n\t});\n\n\tdispatcher.on(`${REPURPOSE_EVENT.REPURPOSE_SELECTION}:confirmed`, () => {\n\t\tdispatcher.trigger(`${REPURPOSE_BASE_EVENT}:batch:show`, {\n\t\t\tpresets,\n\t\t\tcollection: currentCart,\n\t\t});\n\t});\n\n\tdispatcher.on(\n\t\t`${REPURPOSE_EVENT.REPURPOSE_SELECTION}:type`,\n\t\t(collection: typeof currentCart, type) => {\n\t\t\tconst manualUserLevel =\n\t\t\t\tparseInt(getPreference('sys.minUserLevelForManualRepurpose') || '') ||\n\t\t\t\t0;\n\t\t\tconst canManuallyRepurpose = currentUserMeetsUserLevel(manualUserLevel);\n\n\t\t\t// our currently supported asset types\n\t\t\tconst supported = ['audio', 'image', 'video'];\n\t\t\t// // check support for supplied asset type\n\t\t\tif (!supported.includes(type)) {\n\t\t\t\tconsole.warn(type, 'repurpose not currently supported');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// asset ids concerned\n\t\t\tconst ids = collection.inspection[type + 'AssetIds'];\n\n\t\t\t// only one item to repurpose\n\t\t\tif (ids.length < 2 && canManuallyRepurpose) {\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase 'image':\n\t\t\t\t\tcase 'audio':\n\t\t\t\t\t\tcollection\n\t\t\t\t\t\t\t.get(ids[0])\n\t\t\t\t\t\t\t.getProcessListForUser()\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\t(processes) => {\n\t\t\t\t\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t\t\t\t\ttype === 'image'\n\t\t\t\t\t\t\t\t\t\t\t? REPURPOSE_EVENT.REPURPOSE_IMAGE\n\t\t\t\t\t\t\t\t\t\t\t: REPURPOSE_EVENT.REPURPOSE_AUDIO,\n\t\t\t\t\t\t\t\t\t\tcollection.get(ids[0]),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t(err) =>\n\t\t\t\t\t\t\t\t\tdispatcher.trigger(`${REPURPOSE_BASE_EVENT}:error`, err),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'video':\n\t\t\t\t\t\t// creating an assetSet consiting just of the video so that the correct download options will be displayed.\n\t\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t\t'share:assetSet:menu',\n\t\t\t\t\t\t\tnew AssetSetModel({\n\t\t\t\t\t\t\t\ttype: assetSetTypes.asset,\n\t\t\t\t\t\t\t\tids: collection.inspection.videoAssetIds,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontext: 'presetProcess',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch (type) {\n\t\t\t\t// no presets supported for audio YET\n\t\t\t\tcase 'audio':\n\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t'app:alert',\n\t\t\t\t\t\ti18n.t('i18n.batchAudioReurposeUnavailable'),\n\t\t\t\t\t\ti18n.t('i18n.info'),\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\tcase 'image':\n\t\t\t\tcase 'video':\n\t\t\t\t\t// must have image presets\n\t\t\t\t\tif (type === 'image' && !presets.image.length) {\n\t\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t\t`${REPURPOSE_BASE_EVENT}:error`,\n\t\t\t\t\t\t\ti18n.t('i18n.batchImageRepurposeNoPresets'),\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// must have video presets\n\t\t\t\t\tif (type === 'video' && !presets.video.length) {\n\t\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t\t`${REPURPOSE_BASE_EVENT}:error`,\n\t\t\t\t\t\t\ti18n.t('i18n.batchVideoRepurposeNoPresets'),\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// creating an assetSet consiting just of the images or videos so that the correct download options will be displayed.\n\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t'share:assetSet:menu',\n\t\t\t\t\t\tnew AssetSetModel({\n\t\t\t\t\t\t\ttype: assetSetTypes.assetSet,\n\t\t\t\t\t\t\tids: collection.inspection[`${type}AssetIds`],\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontext: 'presetProcess',\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t}\n\t\t},\n\t);\n\n\tdispatcher.on(REPURPOSE_EVENT.REPURPOSE_AUDIO, (assetModel: AssetModel) => {\n\t\tconst manualUserLevel =\n\t\t\tparseInt(getPreference('sys.minUserLevelForManualRepurpose') || '') || 0;\n\t\t// DAM-13617, DAM-15373\n\t\tconst canManuallyRepurpose =\n\t\t\t!isMobile() && currentUserMeetsUserLevel(manualUserLevel);\n\n\t\tif (!canManuallyRepurpose) {\n\t\t\tdispatcher.trigger(\n\t\t\t\t`${REPURPOSE_BASE_EVENT}:error`,\n\t\t\t\tnew Error(i18n.t('i18n.manualRepurposeNotAvailable')),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\t// load module\n\t\tdispatcher.trigger('netx:load:module:audioeditor', {\n\t\t\terror(err: any) {\n\t\t\t\t// TODO: deal with error\n\t\t\t\tconsole.warn(err);\n\t\t\t},\n\t\t\tinitialized() {\n\t\t\t\t// TODO: fix to have route in audio editor\n\t\t\t\tdispatcher.trigger('audioEditor:repurpose', assetModel);\n\t\t\t},\n\t\t});\n\t});\n\n\tdispatcher.on(REPURPOSE_EVENT.REPURPOSE_IMAGE, (assetModel: AssetModel) => {\n\t\tconst manualUserLevel =\n\t\t\tparseInt(getPreference('sys.minUserLevelForManualRepurpose') || '') || 0;\n\t\t// DAM-13617, DAM-15373\n\t\tconst canManuallyRepurpose =\n\t\t\t!isMobile() && currentUserMeetsUserLevel(manualUserLevel);\n\n\t\tif (!canManuallyRepurpose) {\n\t\t\tdispatcher.trigger(\n\t\t\t\t`${REPURPOSE_BASE_EVENT}:error`,\n\t\t\t\tnew Error(i18n.t('i18n.manualRepurposeNotAvailable')),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\t// Load module\n\t\tdispatcher.trigger('netx:load:module:imageeditor', {\n\t\t\terror: (err: any) => {\n\t\t\t\t// TODO: deal with error\n\t\t\t\tconsole.warn(err);\n\t\t\t},\n\t\t\tinitialized: function () {\n\t\t\t\tdispatcher.trigger('imageEditor:repurpose', assetModel);\n\t\t\t},\n\t\t});\n\t});\n\n\tdispatcher.on(`${REPURPOSE_BASE_EVENT}:confirmed`, (data, thing) => {\n\t\tconst preset = data.preset.attributes;\n\t\t// Unfortunately, video preset processes are stored in XML and do not have an ID\n\t\tdispatcher.trigger(\n\t\t\t'share:assetSet:repurpose:preset',\n\t\t\tthing.toAssetSet(),\n\t\t\tdata.type === 'video' ? preset.name : preset.id,\n\t\t\tdata.type,\n\t\t);\n\t\tdispatcher.trigger(\n\t\t\t`${REPURPOSE_BASE_EVENT}:success`,\n\t\t\tthing,\n\t\t\tpreset,\n\t\t\tdata.type,\n\t\t);\n\t});\n\n\tdispatcher.on(\n\t\t`${REPURPOSE_BASE_EVENT}:error`,\n\t\t(error) => dispatcher.trigger('app:alert', error, i18n.t('i18n.error')),\n\t\twindow,\n\t);\n\n\tdispatcher.on(\n\t\t`${REPURPOSE_BASE_EVENT}:success`,\n\t\tfunction () {\n\t\t\tdispatcher.trigger('notification', {\n\t\t\t\tmodule: 'asset',\n\t\t\t\ttitle: i18n.t('i18n.assetUpdated'),\n\t\t\t\tdescription: i18n.t('i18n.repurposeSuccessful'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t},\n\t\twindow,\n\t);\n\n\tPromise.all(bootstrap).then(() => {\n\t\tdispatcher.trigger(`${REPURPOSE_BASE_EVENT}:extend`);\n\t\tdispatcher.trigger(`${REPURPOSE_BASE_EVENT}:initialized`);\n\t});\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(`${REPURPOSE_BASE_EVENT}:initialized`, () => resolve());\n\t\t\tdispatcher.trigger(`${REPURPOSE_BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n","import {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport {type IAsset} from '@netx/core-asset-next/schema';\nimport CategoryModel from '@netx/core-category/models/category';\nimport {type ICategory} from '@netx/core-category-next/schema';\nimport {CATEGORY_EVENT, CATEGORY_BASE_EVENT} from './actions';\nimport {CategorizeAssetsAction} from './constants';\nimport {DownloadOptionType, downloadOptionDefaults} from '@netx/core-asset-set';\n// @ts-ignore\nimport DownloadOptionsCollection from '@netx/core-share/collections/downloadOptions';\n\ndispatcher.once(`${CATEGORY_BASE_EVENT}:init`, () => {\n\t/**\n\t * This is a holdover for react until we can reqork share\n\t * We take the `Category` and convert it over to an `CategoryModel`\n\t * and then pass along to the original event\n\t */\n\tdispatcher.on(CATEGORY_EVENT.ADD, (category?: ICategory) => {\n\t\tconst model = category && new CategoryModel(category);\n\t\tdispatcher.trigger(`category:add`, model);\n\t});\n\n\t/**\n\t * This is a holdover for react until we can reqork share\n\t * We take the `Category` and convert it over to an `CategoryModel`\n\t * and then pass along to the original event\n\t */\n\tdispatcher.on(CATEGORY_EVENT.DELETE, (category: ICategory) => {\n\t\tconst model = new CategoryModel(category);\n\t\tdispatcher.trigger(`category:delete`, model);\n\t});\n\n\t/**\n\t * This is a holdover for react until we can reqork share\n\t * We take the `Asset` and convert it over to an `AssetModel`\n\t * and then pass along to the original event\n\t */\n\tdispatcher.on(CATEGORY_EVENT.EDIT, (category: ICategory) => {\n\t\tconst model = new CategoryModel(category);\n\t\tdispatcher.trigger(`category:edit`, model);\n\t});\n\n\t/**\n\t * This is a holdover for react until we can reqork share\n\t * We take the `Asset` and convert it over to an `AssetModel`\n\t * and then pass along to the original event\n\t */\n\tdispatcher.on(CATEGORY_EVENT.IMPORT, (categoryId: number) => {\n\t\tdispatcher.trigger(`category:import`, categoryId);\n\t});\n\n\t/**\n\t * This is a holdover for react until we can reqork share\n\t * We take the `Asset` and convert it over to an `AssetModel`\n\t * and then pass along to the original event\n\t */\n\tdispatcher.on(CATEGORY_EVENT.SEARCH_ALL_ASSETS, (categoryId: number) => {\n\t\tdispatcher.trigger(`category:search:listAll`, categoryId);\n\t});\n\n\tdispatcher.on(\n\t\tCATEGORY_EVENT.ORGANIZE_ASSETS,\n\t\t(\n\t\t\taction: CategorizeAssetsAction,\n\t\t\tasset: IAsset,\n\t\t\ttoCategoryId: number,\n\t\t\tfromCategoryId: number,\n\t\t) => {\n\t\t\taction === CategorizeAssetsAction.ADD\n\t\t\t\t? asset.inCurrentCart\n\t\t\t\t\t? dispatcher.trigger('cart:add:assets:to:category:confirmed', {\n\t\t\t\t\t\t\tcategoryId: toCategoryId,\n\t\t\t\t\t })\n\t\t\t\t\t: dispatcher.trigger(\n\t\t\t\t\t\t\t'asset:category:add:confirmed',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcategoryId: toCategoryId,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tasset,\n\t\t\t\t\t )\n\t\t\t\t: asset.inCurrentCart\n\t\t\t\t? dispatcher.trigger('cart:move:assets:to:category:confirmed', {\n\t\t\t\t\t\tcategoryId: toCategoryId,\n\t\t\t\t })\n\t\t\t\t: dispatcher.trigger(\n\t\t\t\t\t\t'asset:category:move',\n\t\t\t\t\t\tasset,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\ttoCategoryId,\n\t\t\t\t );\n\t\t},\n\t);\n\n\t/**\n\t * This is a holdover for react until we can reqork share\n\t * We take the `Asset` and convert it over to an `AssetModel`\n\t * and then pass along to the original event\n\t */\n\tdispatcher.on(CATEGORY_EVENT.CREATE_PDF, (category: ICategory) => {\n\t\tconst model = new CategoryModel(category);\n\t\tdispatcher.trigger(`share:category:createPDF`, model);\n\t});\n\tdispatcher.on(CATEGORY_EVENT.CREATE_PDF_SHARE_LINK, (category: ICategory) => {\n\t\tconst assetSet = new CategoryModel(category).toAssetSet();\n\t\tassetSet.downloadOptions = new DownloadOptionsCollection([\n\t\t\t{\n\t\t\t\t...downloadOptionDefaults,\n\t\t\t\ttype: DownloadOptionType.CONTACT_SHEET,\n\t\t\t},\n\t\t]);\n\t\tdispatcher.trigger(`share:assetSet:token:withOptions`, assetSet);\n\t});\n\tdispatcher.on(CATEGORY_EVENT.CREATE_PDF_DOWNLOAD, (category: ICategory) => {\n\t\tconst assetSet = new CategoryModel(category).toAssetSet();\n\t\tassetSet.downloadOptions = new DownloadOptionsCollection([\n\t\t\t{\n\t\t\t\t...downloadOptionDefaults,\n\t\t\t\ttype: DownloadOptionType.CONTACT_SHEET,\n\t\t\t},\n\t\t]);\n\t\tdispatcher.trigger(`share:assetSet:download:start`, assetSet);\n\t});\n\n\t/**\n\t * This is a holdover for react until we can reqork share\n\t * We take the `Asset` and convert it over to an `AssetModel`\n\t * and then pass along to the original event\n\t */\n\tdispatcher.on(CATEGORY_EVENT.MENU, (category: ICategory) => {\n\t\tconst model = new CategoryModel(category);\n\t\tdispatcher.trigger(`share:category:menu`, model);\n\t});\n\n\tdispatcher.on(CATEGORY_EVENT.SHARE_LINK, (category: ICategory) =>\n\t\tdispatcher.trigger(\n\t\t\t`share:assetSet:token`,\n\t\t\tnew CategoryModel(category).toAssetSet(),\n\t\t),\n\t);\n\n\t/**\n\t * This is a holdover for react until we can reqork share\n\t * We take the `Asset` and convert it over to an `AssetModel`\n\t * and then pass along to the original event\n\t */\n\tdispatcher.on(CATEGORY_EVENT.DOWNLOAD, (category: ICategory) => {\n\t\tdispatcher.trigger(`share:category:download`, category.categoryid);\n\t});\n\n\tdispatcher.trigger(`${CATEGORY_BASE_EVENT}:extend`);\n\tdispatcher.trigger(`${CATEGORY_BASE_EVENT}:initialized`);\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(`${CATEGORY_BASE_EVENT}:initialized`, () => resolve());\n\t\t\tdispatcher.trigger(`${CATEGORY_BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n","import {appRouter} from '@netx/core-next/instance/router';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport _ from 'underscore';\nimport {modalManagerStore} from '@netx/core-components/ModalManager';\nimport {SearchMatchCriteria} from '@netx/core-search-rules/constants';\nimport type {SearchRule} from '@netx/core-search-rules/rules/types';\nimport {convertToRules} from '@netx/core-search-rules/utils/convertToRules';\nimport {encodeBase64Rules} from '@netx/core-search-rules/utils/encodeBase64Rules';\nimport {getUserSort} from '@netx/core-search-rules/utils/getUserSort';\nimport {SEARCH_RULES_EVENT, SEARCH_RULES_BASE_EVENT} from './actions';\nimport {SearchRulesEditorDialogContainer} from './components/SearchRulesEditor';\n\ntype SearchCriteria = {\n\trules: SearchRule[];\n\tmatchCriteria?: SearchMatchCriteria;\n};\n\nexport type SearchEditorViewOptions = {\n\tsearchCriteria?: SearchCriteria;\n\tsearchId?: number;\n};\n\ndispatcher.once(`${SEARCH_RULES_BASE_EVENT}:init`, () => {\n\tappRouter.on(`route:search:rules:edit`, () => {\n\t\tdispatcher.trigger(SEARCH_RULES_EVENT.EDIT_SEARCH);\n\t});\n\n\tlet routeRemoved = false;\n\n\tconst routeListener = (newRoute: string, previousRoute: string) => {\n\t\trouteRemoved = true;\n\t\tmodalManagerStore.hide('EditSearch');\n\t};\n\n\tdispatcher.on(\n\t\t`${SEARCH_RULES_EVENT.EDIT_SEARCH}:show`,\n\t\t(viewOptions: SearchEditorViewOptions) => {\n\t\t\tdispatcher.off('routed', routeListener);\n\n\t\t\trouteRemoved = false;\n\n\t\t\tconst {searchCriteria, searchId} = viewOptions;\n\n\t\t\tmodalManagerStore.show('EditSearch', SearchRulesEditorDialogContainer, {\n\t\t\t\tsearchId,\n\t\t\t\trules: searchCriteria?.rules,\n\t\t\t\tmatchCriteria: searchCriteria?.matchCriteria,\n\t\t\t\tonClose: () => {\n\t\t\t\t\tdispatcher.off('route', routeListener);\n\t\t\t\t\tif (!routeRemoved && (viewOptions as any).isRouted) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!(viewOptions as any).routeMatch ||\n\t\t\t\t\t\t\twindow.location.hash === `#${(viewOptions as any).routeMatch}`\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tappRouter.back();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonSubmit: ({\n\t\t\t\t\trules,\n\t\t\t\t\tmatchCriteria = SearchMatchCriteria.AND,\n\t\t\t\t}: {\n\t\t\t\t\trules: SearchRule[];\n\t\t\t\t\tmatchCriteria: SearchMatchCriteria;\n\t\t\t\t}) => {\n\t\t\t\t\tconst rulesObject = convertToRules(...rules);\n\t\t\t\t\tconst encodedRules = encodeBase64Rules({\n\t\t\t\t\t\t...rulesObject,\n\t\t\t\t\t\t...getUserSort(),\n\t\t\t\t\t\tmatchCriteria,\n\t\t\t\t\t});\n\t\t\t\t\t// editView!.open = false;\n\t\t\t\t\t// editView!.render();\n\t\t\t\t\tappRouter.navigate(`search/advanced/${encodedRules}`, true);\n\t\t\t\t\t// TODO: firing this off for reset listeners in constitutents stuff\n\t\t\t\t\t// when that gets switched over to react/contexts we can kill this event altogether\n\t\t\t\t\tdispatcher.trigger('search:advanced:submit');\n\t\t\t\t\tmodalManagerStore.hide('EditSearch');\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t_.defer(() => {\n\t\t\t\t// remove if route changes\n\t\t\t\tdispatcher.once('routed', routeListener);\n\t\t\t});\n\t\t},\n\t);\n\n\tdispatcher.on(\n\t\tSEARCH_RULES_EVENT.EDIT_SEARCH,\n\t\t(opts: SearchEditorViewOptions) =>\n\t\t\tdispatcher.trigger(`${SEARCH_RULES_EVENT.EDIT_SEARCH}:show`, opts),\n\t);\n\n\tdispatcher\n\t\t.trigger(`${SEARCH_RULES_BASE_EVENT}:extend`)\n\t\t.trigger(`${SEARCH_RULES_BASE_EVENT}:initialized`);\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(`${SEARCH_RULES_BASE_EVENT}:initialized`, () =>\n\t\t\t\tresolve(),\n\t\t\t);\n\t\t\tdispatcher.trigger(`${SEARCH_RULES_BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n","import {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport SearchAssetsCollecion from '@netx/core-search/collections/searchAssets';\nimport SavedSearchModel from '@netx/core-search/models/savedSearch';\nimport {SearchCriteria} from '@netx/core-search-rules';\nimport {convertRulesToCollection} from '@netx/core-search-rules/utils/convertRulesToCollection';\nimport {SEARCH_SAVED_EVENT, SEARCH_SAVED_BASE_EVENT} from './actions';\nimport type {SavedSearch} from './types';\nimport {SEARCH_RULES_EVENT} from '@netx/core-search-rules/actions';\nimport {DownloadOptionType, downloadOptionDefaults} from '@netx/core-asset-set';\n// @ts-ignore\nimport DownloadOptionsCollection from '@netx/core-share/collections/downloadOptions';\nimport {TEAM_ACCESS_EVENT} from '@netx/core-team-access/actions';\nimport {SharedResourceName} from '@netx/core-shared-resource/schema';\n\ndispatcher.once(`${SEARCH_SAVED_BASE_EVENT}:init`, () => {\n\tdispatcher.on(SEARCH_SAVED_EVENT.CREATE, (criteria: SearchCriteria) => {\n\t\tconst collection = new SearchAssetsCollecion([]);\n\t\tcollection.selection = convertRulesToCollection(criteria);\n\t\tdispatcher.trigger('search:save', collection);\n\t});\n\n\tdispatcher.on(SEARCH_SAVED_EVENT.DELETE, (savedSearch: SavedSearch) => {\n\t\tconst model = new SavedSearchModel(savedSearch);\n\t\tdispatcher.trigger(`search:saved:delete`, model);\n\t});\n\n\tdispatcher.on(SEARCH_SAVED_EVENT.DOWNLOAD, (savedSearch: SavedSearch) => {\n\t\tdispatcher.trigger(`share:search:download`, savedSearch.id);\n\t});\n\n\tdispatcher.on(SEARCH_SAVED_EVENT.CREATE_PDF, (savedSearch: SavedSearch) => {\n\t\tconst model = new SavedSearchModel(savedSearch);\n\t\tdispatcher.trigger(`share:search:gallery:createPDF`, model);\n\t});\n\tdispatcher.on(\n\t\tSEARCH_SAVED_EVENT.CREATE_PDF_SHARE_LINK,\n\t\t(savedSearch: SavedSearch) => {\n\t\t\tconst assetSet = new SavedSearchModel(savedSearch).toAssetSet();\n\t\t\tassetSet.downloadOptions = new DownloadOptionsCollection([\n\t\t\t\t{\n\t\t\t\t\t...downloadOptionDefaults,\n\t\t\t\t\ttype: DownloadOptionType.CONTACT_SHEET,\n\t\t\t\t},\n\t\t\t]);\n\t\t\tdispatcher.trigger(`share:assetSet:token:withOptions`, assetSet);\n\t\t},\n\t);\n\tdispatcher.on(\n\t\tSEARCH_SAVED_EVENT.CREATE_PDF_DOWNLOAD,\n\t\t(savedSearch: SavedSearch) => {\n\t\t\tconst assetSet = new SavedSearchModel(savedSearch).toAssetSet();\n\t\t\tassetSet.downloadOptions = new DownloadOptionsCollection([\n\t\t\t\t{\n\t\t\t\t\t...downloadOptionDefaults,\n\t\t\t\t\ttype: DownloadOptionType.CONTACT_SHEET,\n\t\t\t\t},\n\t\t\t]);\n\t\t\tdispatcher.trigger(`share:assetSet:download:start`, assetSet);\n\t\t},\n\t);\n\n\tdispatcher.on(SEARCH_SAVED_EVENT.RENAME, (savedSearch: SavedSearch) => {\n\t\tconst model = new SavedSearchModel(savedSearch);\n\t\tdispatcher.trigger(`search:saved:rename`, model);\n\t});\n\n\tdispatcher.on(SEARCH_SAVED_EVENT.MENU, (savedSearch: SavedSearch) => {\n\t\tconst model = new SavedSearchModel(savedSearch);\n\t\tdispatcher.trigger(`share:menu`, model);\n\t});\n\n\tdispatcher.on(SEARCH_SAVED_EVENT.SHARE_LINK, (savedSearch: SavedSearch) =>\n\t\tdispatcher.trigger(\n\t\t\t`share:assetSet:token`,\n\t\t\tnew SavedSearchModel(savedSearch).toAssetSet(),\n\t\t),\n\t);\n\n\tdispatcher.on(\n\t\tSEARCH_SAVED_EVENT.SHARE_TEAM_ACCESS,\n\t\t(savedSearch: SavedSearch) =>\n\t\t\tdispatcher.trigger(\n\t\t\t\tTEAM_ACCESS_EVENT.MANAGE,\n\t\t\t\tsavedSearch,\n\t\t\t\tSharedResourceName.SAVED_SEARCH,\n\t\t\t),\n\t);\n\n\tdispatcher.on(\n\t\tSEARCH_SAVED_EVENT.TOGGLE_FAVORITE,\n\t\t(savedSearch: SavedSearch) => {\n\t\t\tconst model = new SavedSearchModel(savedSearch);\n\t\t\tdispatcher.trigger(`share:sharedResource:toggle:favorite`, model);\n\t\t},\n\t);\n\n\tdispatcher.on(SEARCH_SAVED_EVENT.VIEW, (savedSearch: SavedSearch) => {\n\t\tdispatcher.trigger(SEARCH_RULES_EVENT.EDIT_SEARCH, {\n\t\t\tsearchId: savedSearch.id,\n\t\t});\n\t});\n\n\tdispatcher.trigger(`${SEARCH_SAVED_BASE_EVENT}:extend`);\n\tdispatcher.trigger(`${SEARCH_SAVED_BASE_EVENT}:initialized`);\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(`${SEARCH_SAVED_BASE_EVENT}:initialized`, () =>\n\t\t\t\tresolve(),\n\t\t\t);\n\t\t\tdispatcher.trigger(`${SEARCH_SAVED_BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n","import {appRouter} from '@netx/core-next/instance/router';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport {searchCriteriaCache} from '@netx/core-search/cache';\nimport {SearchMatchCriteria} from '@netx/core-search-rules';\nimport {createVisualRule} from '@netx/core-search-rules/rules/visual/visualRule';\nimport {VisualType} from '@netx/core-search-rules/rules/visual/constants';\nimport {convertToRules} from '@netx/core-search-rules/utils/convertToRules';\nimport {SEARCH_VISUAL_EVENT, SEARCH_VISUAL_BASE_EVENT} from './actions';\n\nimport {\n\tsearchModuleStore,\n\tSearchMode,\n} from '@netx/core-search-next/moduleStore';\n\ndispatcher.once(`${SEARCH_VISUAL_BASE_EVENT}:init`, () => {\n\tdispatcher.on(SEARCH_VISUAL_EVENT.ASSET, (assetId: number, page: string) => {\n\t\tconst pageNo = parseInt(page) || 1;\n\t\tsearchModuleStore.setMode(SearchMode.VISUAL_ASSET);\n\n\t\t// Make sure the route is reflected\n\t\tappRouter.navigate(`search/visual/asset/${assetId}/page/${pageNo}`, false);\n\n\t\tconst searchRule = createVisualRule({\n\t\t\ttype: VisualType.ASSET,\n\t\t\tassetId,\n\t\t});\n\n\t\tsearchCriteriaCache.update([searchRule], SearchMatchCriteria.AND);\n\n\t\tdispatcher.trigger('asset:gallery:show', {\n\t\t\tconditions: convertToRules(searchRule),\n\t\t\tpage: pageNo,\n\t\t});\n\t});\n\n\tdispatcher.on(SEARCH_VISUAL_EVENT.COLOR, (color: string, page: string) => {\n\t\tsearchModuleStore.setMode(SearchMode.VISUAL_COLOR);\n\n\t\tconst searchRule = createVisualRule({\n\t\t\ttype: VisualType.COLOR,\n\t\t\tcolor,\n\t\t});\n\n\t\tsearchCriteriaCache.update([searchRule], SearchMatchCriteria.AND);\n\n\t\tdispatcher.trigger('asset:gallery:show', {\n\t\t\tconditions: convertToRules(searchRule),\n\t\t\tpage: parseInt(page) || 1,\n\t\t});\n\t});\n\n\tdispatcher.trigger(`${SEARCH_VISUAL_BASE_EVENT}:extend`);\n\tdispatcher.trigger(`${SEARCH_VISUAL_BASE_EVENT}:initialized`);\n});\n\nexport default {\n\tinitialize() {\n\t\treturn new Promise((resolve) => {\n\t\t\tdispatcher.once(`${SEARCH_VISUAL_BASE_EVENT}:initialized`, () =>\n\t\t\t\tresolve(),\n\t\t\t);\n\t\t\tdispatcher.trigger(`${SEARCH_VISUAL_BASE_EVENT}:init`);\n\t\t});\n\t},\n};\n"],"names":["dispatcher","CUSTOM_THUMBNAIL_BASE_EVENT","CUSTOM_THUMBNAIL_EVENT","asset","AssetModel","initialize","Promise","resolve","BASE_EVENT","ASSET_EXPIRATION_EVENT","async","id","expirationDate","expireAsset","userInputToExpirationTime","assetId","assetExpirationToDateString","ConfirmView","eventStr","args","message","ASSET_EXPIRATION_CONFIRMATIONS","confirmLabel","ASSET_EXPIRATION_SUBMIT_LABELS","render","defaults","attributeSetSelectionDefault","sortFieldPrefKey","AssetGalleryPref","sortOrderPrefKey","ASSET_GALLERY_DISPATCHER_BASE_EVENT","ASSET_GALLERY_DISPATCHER_EVENT","viewOptions","viewStore","Component","AssetGalleryContainer","props","_objectSpread","conditions","page","showActions","selectedFacets","facetFilterMode","selection","convertRulesToCollection","_selectedFacets","searchFacets","filterMode","selectedValues","turnOff","turnOn","trigger","listenTo","on","off","stopListening","set","reset","assets","tab","getPreference","currentId","assetCursor","currentAsset","assetsCollection","AssetsCollection","slice","filter","useFacetedSearch","curPage","setStartPosition","appRouter","model","collection","routeMatch","RegExp","ASSET_BASE_EVENT","ASSET_EVENT","AssetMessage","i18n","assetModel","destroy","wait","then","attributes","catch","ex","error","batchJob","get","Netx","window","location","hash","match","resync","completed","err","module","ids","title","description","type","progressTask","uuid","toAssetSet","mediaServiceName","mediaService","name","assetSet","downloadOptions","DownloadOptionsCollection","downloadOptionDefaults","DownloadOptionType","ASSET_PROJECT_BASE_EVENT","ASSET_PROJECT_EVENT","REPURPOSE_BASE_EVENT","presets","audio","document","image","AssetImagePresetsCollection","video","AssetVideoPresetsCollection","bootstrap","fetch","View","modalViews","viewClass","default","showAction","REPURPOSE_EVENT","manualUserLevel","parseInt","canManuallyRepurpose","currentUserMeetsUserLevel","getGeneralAssetFileType","fileFormatFamily","includes","Error","t","inspection","options","getProcessListForUser","duplicateQueryPolicy","processes","length","AssetSetModel","assetSetTypes","undefined","context","manualProcesses","currentCart","counts","_","v","k","countKeys","countKeysLength","every","key","_countKeys$","_countKeys$$match","_currentCart$assetCou","assetCount","call","total","badCount","count","yesLabel","noLabel","console","warn","videoAssetIds","isMobile","initialized","data","thing","preset","all","CATEGORY_BASE_EVENT","CATEGORY_EVENT","category","CategoryModel","categoryId","action","toCategoryId","fromCategoryId","CategorizeAssetsAction","inCurrentCart","categoryid","SEARCH_RULES_BASE_EVENT","SEARCH_RULES_EVENT","routeRemoved","routeListener","newRoute","previousRoute","modalManagerStore","searchCriteria","searchId","SearchRulesEditorDialogContainer","rules","matchCriteria","onClose","isRouted","onSubmit","SearchMatchCriteria","rulesObject","convertToRules","encodedRules","encodeBase64Rules","getUserSort","opts","SEARCH_SAVED_BASE_EVENT","SEARCH_SAVED_EVENT","criteria","SearchAssetsCollecion","savedSearch","SavedSearchModel","TEAM_ACCESS_EVENT","SharedResourceName","SEARCH_VISUAL_BASE_EVENT","SEARCH_VISUAL_EVENT","pageNo","searchModuleStore","SearchMode","searchRule","createVisualRule","VisualType","searchCriteriaCache","color"],"sourceRoot":""}