@arsedizioni/ars-utils 21.2.322 → 21.2.324

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.
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-clipper.common.mjs","sources":["../../../projects/ars-utils/clipper.common/common/messages.ts","../../../projects/ars-utils/clipper.common/common/definitions.ts","../../../projects/ars-utils/clipper.common/common/notes.ts","../../../projects/ars-utils/clipper.common/common/services/clipper.service.ts","../../../projects/ars-utils/clipper.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/clipper.common/common/common.module.ts","../../../projects/ars-utils/clipper.common/public_api.ts","../../../projects/ars-utils/clipper.common/arsedizioni-ars-utils-clipper.common.ts"],"sourcesContent":["export const ClipperMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n // Error\r\n ERROR: '§clipper-error',\r\n \r\n // Login\r\n LOGIN_CHANGED: '§clipper-login-changed',\r\n LOGIN_COMPLETED: '§clipper-login-completed',\r\n LOGOUT_COMPLETED: '§clipper-logout-completed',\r\n LOGIN_PENDING: '§clipper-login-pending',\r\n LOGIN_FAILED: '§clipper-login-failed',\r\n LOGOUT: '§clipper-logout',\r\n\r\n // Document\r\n DOCUMENT_READ: '$clipper-document-read',\r\n DOCUMENT_NAVIGATE: '$clipper-document-navigate',\r\n DOCUMENT_NAVIGATED: '$clipper-document-navigated',\r\n DOCUMENT_SELECTED: '$clipper-document-selected',\r\n DOCUMENT_SELECTED_INNER: '$clipper-document-selected_inner',\r\n\r\n // Settings\r\n SETTINGS_CHANGED: '$clipper-settings-changed',\r\n \r\n // Commands\r\n COMMAND_ARCHIVE_ADD: '$clipper-command-archive-add',\r\n COMMAND_CALENDAR_ADD: '$clipper-command-calendar-add',\r\n COMMAND_WORKING_OPEN: '$clipper-command-working-documents-open',\r\n COMMAND_WORKING_ADD: '$clipper-command-working-documents-add',\r\n COMMAND_NOTES_ADD: '$clipper-command-notes-add',\r\n COMMAND_NOTES_DELETE: '$clipper-command-notes-delete',\r\n COMMAND_NOTES_UPDATE: '$clipper-command-notes-update',\r\n COMMAND_SEARCH_RESTORED: '$clipper-command-search-restored',\r\n COMMAND_SEARCH_EXECUTED: '$clipper-command-search-executed',\r\n COMMAND_SEARCH_EMPTY_RESULT: '$clipper-command-search-empty-result',\r\n COMMAND_HISTORY_OPEN: '$clipper-command-history-open',\r\n COMMAND_DASHBOARD_UPDATED: '$clipper-command-dashboard-updated',\r\n \r\n\r\n // AI\r\n AI_CONCERN_ME: '$clipper-ai-concernme',\r\n AI_EXPLAIN: '$clipper-ai-explain',\r\n AI_COMMENT: '$clipper-ai-comment',\r\n AI_NEWS: '$clipper-ai-news',\r\n\r\n // Interop\r\n INTEROP_RS_NEW_LAW: '$clipper-interop-rs-new-law',\r\n INTEROP_RS_NEW_ACTIVITY: '$clipper-interop-rs-new-activity',\r\n INTEROP_RS_USAGE_REPORT: '$clipper-interop-rs-usage-report',\r\n\r\n // Updates\r\n UPDATE_RELOAD: '§update-reload',\r\n};\r\n","import { computed, Signal, signal } from '@angular/core';\r\nimport { Folder, LoginResult, NameValueItem, QueryModel, QueryResultModel } from '@arsedizioni/ars-utils/core';\r\nimport { SendToDialogResult } from '@arsedizioni/ars-utils/ui.application';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\nexport interface EditedEventArgs<T> {\r\n data: T;\r\n isNew?: boolean;\r\n}\r\n\r\nexport interface EditDialogData<T> {\r\n currentItem?: T;\r\n isEditable?: boolean;\r\n parentId?: number;\r\n}\r\n\r\n\r\nexport interface EditDialogCompleted<T> {\r\n data: T;\r\n dismissed?: boolean;\r\n isNew?: boolean;\r\n preview?: boolean;\r\n}\r\n\r\n\r\n\r\nexport enum ClipperServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1,\r\n Embedded = 1 << 2\r\n}\r\n\r\nexport enum ClipperRecurrenceType {\r\n Year = 1,\r\n Month = 2,\r\n Day = 3\r\n}\r\n\r\nexport const ClipperRecurrenceTypes: NameValueItem<ClipperRecurrenceType>[] = [\r\n { name: 'Anni', value: ClipperRecurrenceType.Year },\r\n { name: 'Mesi', value: ClipperRecurrenceType.Month },\r\n { name: 'Giorni', value: ClipperRecurrenceType.Day }\r\n]\r\n\r\nexport enum ClipperSelectionMode {\r\n None = 0,\r\n Single = 1,\r\n TwoOrMore = 2,\r\n Multi = 3\r\n}\r\n\r\n\r\n\r\nexport enum ClipperModuleGroup {\r\n Home = 0,\r\n NormativaVigente = 1,\r\n UltimeNovità = 2,\r\n ParApprofondire = 3,\r\n DGInfo = 4,\r\n Giurisprudenza = 5,\r\n Calendario = 11,\r\n Archivio = 12,\r\n Evolution = 201,\r\n Ars = 202,\r\n Ricerca = 99\r\n}\r\n\r\nexport enum ClipperModule {\r\n NormativaVigente = 4,\r\n News = 1,\r\n GazzetteBollettiniEFontiDiverse = 2,\r\n Giurisprudenza = 5,\r\n ModificheAbrogazioniERinvii = 3,\r\n ScadenzeESegnalazioni = 12,\r\n AllerteAlimentari = 8,\r\n Approfondimenti = 6,\r\n QuesitiECasiRisolti = 10,\r\n MetodiDiAnalisi = 11,\r\n DGInfo = 61,\r\n Ricerca = 99,\r\n GiurisprudenzaRecente = 18\r\n\r\n}\r\n\r\nexport enum ClipperModel {\r\n Unknown = 0,\r\n AggiornamentoNormativo = 2,\r\n News = 3,\r\n Articoli = 4,\r\n Juris = 5,\r\n Quesiti = 8,\r\n NormativaVigente = 9,\r\n Scadenze = 10,\r\n Coordinamento = 11,\r\n AllerteAlimentari = 13,\r\n MetodiDiAnalisi = 14,\r\n GiurisprudenzaRecente = 18,\r\n Segnalazioni = 20,\r\n UltimeNovità = 21\r\n}\r\n\r\nexport const ClipperModels: NameValueItem<number>[] = [\r\n { value: ClipperModel.AggiornamentoNormativo, name: \"Testi storici\" },\r\n { value: ClipperModel.News, name: 'News' },\r\n { value: ClipperModel.Articoli, name: 'Articoli' },\r\n { value: ClipperModel.Juris, name: 'Note a sentenza' },\r\n { value: ClipperModel.GiurisprudenzaRecente, name: 'Giurisprudenza' },\r\n { value: ClipperModel.Quesiti, name: 'Quesiti' },\r\n { value: ClipperModel.NormativaVigente, name: 'Normativa vigente' },\r\n { value: ClipperModel.Scadenze, name: 'Scadenze' },\r\n { value: ClipperModel.AllerteAlimentari, name: 'Allerte alimentari' },\r\n { value: ClipperModel.Coordinamento, name: 'Modifiche e abrogazioni' },\r\n]\r\n\r\nexport const ClipperModuleGroups: NameValueItem<number>[] = [\r\n { name: \"Ultime novità\", value: ClipperModuleGroup.Home },\r\n { name: \"Ricerca\", value: ClipperModuleGroup.Ricerca },\r\n { name: \"DG Info\", value: ClipperModuleGroup.DGInfo },\r\n { name: \"Calendario\", value: ClipperModuleGroup.Calendario },\r\n { name: \"Archivio\", value: ClipperModuleGroup.Archivio }\r\n];\r\n\r\nexport const ClipperModules: NameValueItem<number>[] = [\r\n { name: 'News, articoli di approfondimento e note a sentenza', shortName: 'Novità', value: ClipperModule.News },\r\n { name: 'Gazzette, Bollettini e fonti diverse', shortName: 'Gazzette, Bollettini e fonti diverse', value: ClipperModule.GazzetteBollettiniEFontiDiverse },\r\n { name: 'Giurisprudenza', shortName: 'Giurisprudenza', value: ClipperModule.Giurisprudenza },\r\n { name: 'Modifiche, abrogazioni e rinvii', shortName: 'Modifiche, abrogazioni e rinvii', value: ClipperModule.ModificheAbrogazioniERinvii },\r\n { name: 'Allerte alimentari', shortName: 'Allerte alimentari', value: ClipperModule.AllerteAlimentari },\r\n { name: 'Scadenze e segnalazioni', shortName: 'Scadenze e segnalazioni', value: ClipperModule.ScadenzeESegnalazioni },\r\n { name: 'Normativa vigente', shortName: 'Normativa vigente', value: ClipperModule.NormativaVigente },\r\n { name: 'Quesiti e casi risolti', shortName: 'Quesiti', value: ClipperModule.QuesitiECasiRisolti },\r\n]\r\n\r\nexport enum ClipperChannel {\r\n None = 0,\r\n LavoroEAmbiente = 1,\r\n SostanzeAlimentari = 2,\r\n MerciPericolose = 3,\r\n Energia = 4,\r\n DGInfo = 5\r\n}\r\n\r\nexport const ClipperChannels: NameValueItem<ClipperChannel>[] = [\r\n { value: ClipperChannel.LavoroEAmbiente, name: \"Lavoro e Ambiente\", header: \"LA\" },\r\n { value: ClipperChannel.SostanzeAlimentari, name: \"Sostanze Alimentari\", header: \"SA\" },\r\n { value: ClipperChannel.Energia, name: \"Energia\", header: \"E\" },\r\n { value: ClipperChannel.MerciPericolose, name: \"Merci Pericolose\", header: \"MP\" }\r\n]\r\n\r\nexport interface ClipperAvailableChannel extends NameValueItem<ClipperChannel> {\r\n active?: boolean;\r\n suspended?: boolean;\r\n}\r\n\r\nexport const ClipperRegions: NameValueItem<string>[] = [\r\n {\r\n value: '4RAB',\r\n name: 'Abruzzo',\r\n },\r\n {\r\n value: '4RBA',\r\n name: 'Basilicata',\r\n },\r\n {\r\n value: '4RCAL',\r\n name: 'Calabria',\r\n },\r\n {\r\n value: '4RCAM',\r\n name: 'Campania',\r\n },\r\n {\r\n value: '4REM',\r\n name: 'Emilia Romagna',\r\n },\r\n {\r\n value: '4RFVG',\r\n name: 'Friuli Venezia Giulia',\r\n },\r\n {\r\n value: '4RLA',\r\n name: 'Lazio',\r\n },\r\n {\r\n value: '4RLI',\r\n name: 'Liguria',\r\n },\r\n {\r\n value: '4RLO',\r\n name: 'Lombardia',\r\n },\r\n {\r\n value: '4RMA',\r\n name: 'Marche',\r\n },\r\n {\r\n value: '4RMO',\r\n name: 'Molise',\r\n },\r\n {\r\n value: '4RPI',\r\n name: 'Piemonte',\r\n },\r\n {\r\n value: '4RPU',\r\n name: 'Puglia',\r\n },\r\n {\r\n value: '4RSA',\r\n name: 'Sardegna',\r\n },\r\n {\r\n value: '4RSI',\r\n name: 'Sicilia',\r\n },\r\n {\r\n value: '4RTO',\r\n name: 'Toscana',\r\n },\r\n {\r\n value: '4RTAA',\r\n name: 'Trentino Alto Adige',\r\n },\r\n {\r\n value: '4RUM',\r\n name: 'Umbria',\r\n },\r\n {\r\n value: '4RVA',\r\n name: \"Valle D'Aosta\",\r\n },\r\n {\r\n value: '4RVE',\r\n name: 'Veneto',\r\n },\r\n {\r\n value: '4PAT',\r\n name: 'Prov. Aut. Trento',\r\n },\r\n {\r\n value: '4PAB',\r\n name: 'Prov. Aut. Bolzano',\r\n }\r\n]\r\n\r\nexport interface SectorInfo extends NameValueItem<string> {\r\n\r\n group?: string;\r\n channels?: string;\r\n sectorId?: string;\r\n}\r\n\r\nexport const ClipperSectors: SectorInfo[] = [\r\n {\r\n value: 'LC',\r\n name: 'Legislazione comunitaria',\r\n shortName: 'Comunitaria',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'LN',\r\n name: 'Legislazione nazionale',\r\n shortName: 'Nazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n\r\n {\r\n value: 'LR',\r\n name: 'Legislazione regionale',\r\n shortName: 'Regionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RAB',\r\n name: ' Abruzzo',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4PAB',\r\n name: ' Prov. Aut. Bolzano',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RBA',\r\n name: ' Basilicata',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RCAL',\r\n name: ' Calabria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RCAM',\r\n name: ' Campania',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4REM',\r\n name: ' Emilia Romagna',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RFVG',\r\n name: ' Friuli Venezia Giulia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLA',\r\n name: ' Lazio',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLI',\r\n name: ' Liguria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLO',\r\n name: ' Lombardia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RMA',\r\n name: ' Marche',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RMO',\r\n name: ' Molise',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RPI',\r\n name: ' Piemonte',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RPU',\r\n name: ' Puglia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RSA',\r\n name: ' Sardegna',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RSI',\r\n name: ' Sicilia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RTO',\r\n name: ' Toscana',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RTAA',\r\n name: ' Trentino Alto Adige',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4PAT',\r\n name: ' Prov. Aut. Trento',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RUM',\r\n name: ' Umbria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RVA',\r\n name: \" Valle D'Aosta\",\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RVE',\r\n name: ' Veneto',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'GC',\r\n name: 'Giurisprudenza comunitaria',\r\n shortName: 'Giur. comunitaria',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'GN',\r\n name: 'Giurisprudenza nazionale',\r\n shortName: 'Giur. nazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'TN',\r\n name: 'Normativa tecnica',\r\n shortName: 'Tecnica',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n /* {\r\n value: 'TI',\r\n name: 'Normativa tecnica internazionale',\r\n shortName: 'Tecnica internaz.',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },*/\r\n {\r\n value: 'NI',\r\n name: 'Normativa internazionale',\r\n shortName: 'Internazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n /* {\r\n value: 'SN',\r\n name: 'Documentazione scientifica',\r\n shortName: 'Scientifica',\r\n group: 'S',\r\n channels: '|SA|',\r\n } */\r\n]\r\n\r\nexport const ClipperSectorTypes: NameValueItem<string>[] =\r\n [\r\n { parentValue: \"LN\", value: \"10\", name: \"Circolare Ministeriale\" },\r\n { parentValue: \"LN\", value: \"100\", name: \"Rettifica (naz.)\" },\r\n { parentValue: \"LR\", value: \"102\", name: \"Rettifica (reg.)\" },\r\n { parentValue: \"NI\", value: \"104\", name: \"Regolamento UNECE\" },\r\n { parentValue: \"SN\", value: \"105\", name: \"Documento\" },\r\n { parentValue: \"TN\", value: \"106\", name: \"Direttiva (Enti e Istituti)\" },\r\n { parentValue: \"TI\", value: \"107\", name: \"Normativa Tecnica Internazionale\" },\r\n { parentValue: \"LR\", value: \"11\", name: \"Circolare Pres. Giunta Reg\" },\r\n { parentValue: \"LC\", value: \"111\", name: \"Decisione (CEE)\" },\r\n { parentValue: \"LC\", value: \"112\", name: \"Decisione (CE)\" },\r\n { parentValue: \"LC\", value: \"113\", name: \"Decisione (UE)\" },\r\n { parentValue: \"LC\", value: \"114\", name: \"Decisione delegata (UE)\" },\r\n { parentValue: \"LC\", value: \"115\", name: \"Decisione di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"116\", name: \"Regolamento (CEE)\" },\r\n { parentValue: \"LC\", value: \"117\", name: \"Regolamento (CE)\" },\r\n { parentValue: \"LC\", value: \"118\", name: \"Regolamento (UE)\" },\r\n { parentValue: \"LC\", value: \"119\", name: \"Regolamento delegato (UE)\" },\r\n { parentValue: \"LR\", value: \"12\", name: \"Direttiva (reg.)\" },\r\n { parentValue: \"LC\", value: \"120\", name: \"Regolamento di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"121\", name: \"Direttiva (CEE)\" },\r\n { parentValue: \"LC\", value: \"122\", name: \"Direttiva (CE)\" },\r\n { parentValue: \"LC\", value: \"123\", name: \"Direttiva (UE)\" },\r\n { parentValue: \"LC\", value: \"124\", name: \"Direttiva delegata (UE)\" },\r\n { parentValue: \"LC\", value: \"125\", name: \"Direttiva di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"126\", name: \"Comunicazione (CE)\" },\r\n { parentValue: \"LC\", value: \"127\", name: \"Comunicazione (UE)\" },\r\n { parentValue: \"LC\", value: \"128\", name: \"Raccomandazione (CEE)\" },\r\n { parentValue: \"LC\", value: \"129\", name: \"Raccomandazione (CE)\" },\r\n { parentValue: \"LN\", value: \"13\", name: \"Comunicato (naz.)\" },\r\n { parentValue: \"LC\", value: \"130\", name: \"Raccomandazione (UE)\" },\r\n { parentValue: \"LC\", value: \"131\", name: \"Posizione Comune (CE)\" },\r\n { parentValue: \"LC\", value: \"132\", name: \"Posizione Comune (UE)\" },\r\n { parentValue: \"LC\", value: \"133\", name: \"Risoluzione\" },\r\n { parentValue: \"LC\", value: \"134\", name: \"Trattato\" },\r\n { parentValue: \"LC\", value: \"135\", name: \"Rettifica\" },\r\n { parentValue: \"LC\", value: \"138\", name: \"Parere\" },\r\n { parentValue: \"LC\", value: \"139\", name: \"Accordi (CE)\" },\r\n { parentValue: \"NI\", value: \"14\", name: \"Convenzione Internazionale\" },\r\n { parentValue: \"LC\", value: \"140\", name: \"Atti diversi (CE/UE)\" },\r\n { parentValue: \"GC\", value: \"141\", name: \"Sentenza (CE)\" },\r\n { parentValue: \"GC\", value: \"142\", name: \"Sentenza (UE)\" },\r\n { parentValue: \"GC\", value: \"143\", name: \"Ordinanza (CE)\" },\r\n { parentValue: \"GC\", value: \"144\", name: \"Ordinanza (UE)\" },\r\n { parentValue: \"LC\", value: \"145\", name: \"Direttiva (Euratom)\" },\r\n { parentValue: \"LC\", value: \"146\", name: \"Decisione (Euratom)\" },\r\n { parentValue: \"LC\", value: \"147\", name: \"Regolamento (Euratom)\" },\r\n { parentValue: \"LC\", value: \"148\", name: \"Raccomandazione (Euratom)\" },\r\n { parentValue: \"LN\", value: \"15\", name: \"Costituzione della Repubblica\" },\r\n { parentValue: \"LN\", value: \"16\", name: \"Linee guida (naz.)\" },\r\n { parentValue: \"LN\", value: \"17\", name: \"Circolare Commissariale\" },\r\n { parentValue: \"LN\", value: \"18\", name: \"Decreto Commissariale\" },\r\n { parentValue: \"LR\", value: \"19\", name: \"Decreto dell'Assessore Regionale\" },\r\n { parentValue: \"TN\", value: \"20\", name: \"Comunicato (Enti ed Istituti)\" },\r\n { parentValue: \"LN\", value: \"21\", name: \"Decreto Capo Provv. Stato\" },\r\n { parentValue: \"LN\", value: \"22\", name: \"Decreto Pres. Cons. Ministri\" },\r\n { parentValue: \"LR\", value: \"23\", name: \"Decreto Pres. Giunta Reg.\" },\r\n { parentValue: \"LR\", value: \"24\", name: \"Decreto Pres. Giunta Prov.\" },\r\n { parentValue: \"LN\", value: \"25\", name: \"Decreto Presidente Repubblica\" },\r\n { parentValue: \"LN\", value: \"26\", name: \"Documento di consultazione\" },\r\n { parentValue: \"LN\", value: \"27\", name: \"Decreto Legge\" },\r\n { parentValue: \"LN\", value: \"28\", name: \"Decreto Legge Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"29\", name: \"D.Lgs. Capo Provv. Stato\" },\r\n { parentValue: \"LN\", value: \"3\", name: \"Direttiva (naz.)\" },\r\n { parentValue: \"LN\", value: \"30\", name: \"D.Lgs. Governo\" },\r\n { parentValue: \"LR\", value: \"31\", name: \"Delib. Consiglio Prov.\" },\r\n { parentValue: \"LN\", value: \"32\", name: \"D.Lgs. Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"33\", name: \"Decreto Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"34\", name: \"Decreto Ministeriale\" },\r\n { parentValue: \"LN\", value: \"35\", name: \"Deliberazione (naz.)\" },\r\n { parentValue: \"LR\", value: \"36\", name: \"Delib. Consiglio Reg.\" },\r\n { parentValue: \"LR\", value: \"37\", name: \"Delib. Giunta Prov.\" },\r\n { parentValue: \"LR\", value: \"38\", name: \"Delib. Giunta Reg.\" },\r\n { parentValue: \"LN\", value: \"4\", name: \"Accordo\" },\r\n { parentValue: \"TN\", value: \"40\", name: \"Delibera (Enti ed Istituti)\" },\r\n { parentValue: \"GN\", value: \"41\", name: \"Decreto Penale\" },\r\n { parentValue: \"LN\", value: \"42\", name: \"Lettera Circolare (Comitati)\" },\r\n { parentValue: \"LN\", value: \"43\", name: \"Lettera Circolare Ministeriale\" },\r\n { parentValue: \"TN\", value: \"44\", name: \"Circolare (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"45\", name: \"Istruzione Tecnica\" },\r\n { parentValue: \"LR\", value: \"46\", name: \"Circolare dell'Assessore Regionale\" },\r\n { parentValue: \"LN\", value: \"47\", name: \"Determinazione (naz.)\" },\r\n { parentValue: \"LN\", value: \"48\", name: \"Legge\" },\r\n { parentValue: \"LR\", value: \"49\", name: \"Legge Prov. Aut.\" },\r\n { parentValue: \"LR\", value: \"5\", name: \"Decreto Assessore Prov.\" },\r\n { parentValue: \"LR\", value: \"50\", name: \"Legge Regionale\" },\r\n { parentValue: \"LR\", value: \"51\", name: \"Linee guida (reg.)\" },\r\n { parentValue: \"TN\", value: \"52\", name: \"Regolamento (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"53\", name: \"Fascicolo (Enti ed Istituti)\" },\r\n { parentValue: \"GN\", value: \"54\", name: \"Ordinanza\" },\r\n { parentValue: \"LR\", value: \"55\", name: \"Ordinanza Pres. Reg.\" },\r\n { parentValue: \"LN\", value: \"56\", name: \"Nota Ministeriale\" },\r\n { parentValue: \"LN\", value: \"57\", name: \"Ordinanza Ministeriale\" },\r\n { parentValue: \"LN\", value: \"58\", name: \"Circolare (Comitati)\" },\r\n { parentValue: \"TN\", value: \"59\", name: \"Lettera Circolare (Enti ed Istituti)\" },\r\n { parentValue: \"NI\", value: \"6\", name: \"Accordo Multilaterale\" },\r\n { parentValue: \"TN\", value: \"60\", name: \"Decreto (Enti ed Istituti)\" },\r\n { parentValue: \"LN\", value: \"61\", name: \"Decreto del Capo del Governo\" },\r\n { parentValue: \"GN\", value: \"62\", name: \"Ricorso\" },\r\n { parentValue: \"GN\", value: \"63\", name: \"Decisione\" },\r\n { parentValue: \"LR\", value: \"65\", name: \"Regolamento Regionale\" },\r\n { parentValue: \"LN\", value: \"66\", name: \"Regio Decreto\" },\r\n { parentValue: \"LN\", value: \"67\", name: \"Regio Decreto Legge\" },\r\n { parentValue: \"LN\", value: \"68\", name: \"Regio Decreto Legislativo\" },\r\n { parentValue: \"LR\", value: \"69\", name: \"Altri documenti (reg.)\" },\r\n { parentValue: \"LR\", value: \"70\", name: \"Comunicato (reg.)\" },\r\n { parentValue: \"LN\", value: \"71\", name: \"Statuto delle Regioni Ordinarie\" },\r\n { parentValue: \"GN\", value: \"72\", name: \"Sentenza\" },\r\n { parentValue: \"TN\", value: \"73\", name: \"Altri documenti (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"74\", name: \"Prassi di riferimento\" },\r\n { parentValue: \"LN\", value: \"75\", name: \"Altri documenti (naz.)\" },\r\n { parentValue: \"LN\", value: \"76\", name: \"Provvedimento (naz.)\" },\r\n { parentValue: \"TN\", value: \"77\", name: \"Pubblicazione (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"79\", name: \"Linee guida (Enti ed Istituti)\" },\r\n { parentValue: \"LR\", value: \"80\", name: \"Decreto del Dirigente (reg.)\" },\r\n { parentValue: \"LR\", value: \"81\", name: \"Determinazione del Dirigente (reg.)\" },\r\n { parentValue: \"LN\", value: \"82\", name: \"Ordinanza Pres. Cons. Ministri\" },\r\n { parentValue: \"LR\", value: \"83\", name: \"Circolare (reg.)\" },\r\n { parentValue: \"TN\", value: \"84\", name: \"Istruzione Operativa (Enti e Istituti)\" },\r\n { parentValue: \"LR\", value: \"85\", name: \"Provvedimento (reg.)\" },\r\n { parentValue: \"TN\", value: \"86\", name: \"Quaderno\" },\r\n { parentValue: \"LR\", value: \"9\", name: \"Ordinanza Pres. Prov.\" },\r\n { parentValue: \"LN\", value: \"91\", name: \"Ordinanza Commissariale\" },\r\n { parentValue: \"LN\", value: \"93\", name: \"Risoluzione (naz.)\" },\r\n { parentValue: \"TN\", value: \"94\", name: \"Nota (Enti e Istituti)\" },\r\n { parentValue: \"TN\", value: \"97\", name: \"Opuscolo Tecnico\" },\r\n { parentValue: \"TN\", value: \"98\", name: \"Norma Tecnica\" },\r\n { parentValue: \"NI\", value: \"99\", name: \"Norma Tecnica Internaz.\" }\r\n ]\r\n\r\nexport const ClipperAuthors: SectorInfo[] = [\r\n {\r\n value: \"1CAM\",\r\n sectorId: undefined,\r\n name: \"Camera dei Deputati\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MA\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAE\",\r\n sectorId: undefined,\r\n name: \"Ministero degli Affari Esteri\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Agricoltura e delle Foreste\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAP\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Attività Produttive\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MARP\",\r\n sectorId: undefined,\r\n name: \"Ministero per gli Affari Regionali e per i Problemi Istituzionali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MASAF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Agricoltura, della Sovranità Alimentare e delle Foreste\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MASE\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Sicurezza Energetica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MATT\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Tutela del Territorio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MATTM\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Tutela del Territorio e del Mare\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAU\",\r\n sectorId: undefined,\r\n name: \"Ministero del Aree Urbane\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MBAC\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Beni e delle Attività Culturali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MBCA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Beni Culturali e Ambientali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MC\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Comunicazioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCE\",\r\n sectorId: undefined,\r\n name: \"Ministero del Commercio con l'Estero\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCI\",\r\n sectorId: undefined,\r\n name: \"Ministero del Commercio Internazionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCPC\",\r\n sectorId: undefined,\r\n name: \"Ministero per il Coordinamento delle Politiche Comunitarie\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCRU\",\r\n sectorId: undefined,\r\n name: \"Ministero della Ricerca Universitaria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCU\",\r\n sectorId: undefined,\r\n name: \"Ministero della Cultura\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MDIF\",\r\n sectorId: undefined,\r\n name: \"Ministero della Difesa\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MEF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Economia e delle Finanze\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Finanze\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MFP\",\r\n sectorId: undefined,\r\n name: \"Ministero della Funzione Pubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MG\",\r\n sectorId: undefined,\r\n name: \"Ministero della Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MGG\",\r\n sectorId: undefined,\r\n name: \"Ministero di Grazia e Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MI\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Interno\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MICA\",\r\n sectorId: undefined,\r\n name: \"Ministero per l'Industria, il Commercio e l'Artigianato\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIME\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Istruzione e del Merito\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIMI\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Imprese e del Made in Italy\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIMS\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture e della Mobilità Sostenibili\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MINF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MISM\",\r\n sectorId: undefined,\r\n name: \"Ministero per l'Intervento Straordinario nel Mezzogiorno\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture e dei Trasporti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIUR\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Istruzione, Università e Ricerca\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLP\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Lavori Pubblici\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLPO\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro e Politiche Sociali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLPS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro e Previdenza Sociale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLSPS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro, della Salute e delle Politiche Sociali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MMM\",\r\n sectorId: undefined,\r\n name: \"Ministero della Marina Mercantile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole, Alimentari e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAAFT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole Alimentari e Forestali e del Turismo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPC\",\r\n sectorId: undefined,\r\n name: \"Ministero per il Coordinamento della Protezione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPI\",\r\n sectorId: undefined,\r\n name: \"Ministero della Pubblica Istruzione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Poste e Telecomunicazioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MRAAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Risorse Agricole, Alimentari e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MRP\",\r\n sectorId: undefined,\r\n name: \"Ministero per i Rapporti Parlamentari\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MS\",\r\n sectorId: undefined,\r\n name: \"Ministero della Sanità\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MSA\",\r\n sectorId: undefined,\r\n name: \"Ministero della Salute\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MSE\",\r\n sectorId: undefined,\r\n name: \"Ministero dello Sviluppo Economico\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MT\",\r\n sectorId: undefined,\r\n name: \"Ministero del Tesoro\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTAC\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti e dell'Aviazione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTE\",\r\n sectorId: undefined,\r\n name: \"Ministero della Transizione Ecologica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTNA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti e della Navigazione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTRA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Turismo e dello Spettacolo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTU\",\r\n sectorId: undefined,\r\n name: \"Ministero del Turismo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MURS\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Universitá e della Ricerca Scientifica e Tecnica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1PCM\",\r\n sectorId: undefined,\r\n name: \"Presidente del Consiglio dei Ministri\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1PR\",\r\n sectorId: undefined,\r\n name: \"Presidente della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1SEN\",\r\n sectorId: undefined,\r\n name: \"Senato della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AEEG\",\r\n sectorId: undefined,\r\n name: \"Autorità per l'Energia Elettrica e il Gas\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AEEGSI\",\r\n sectorId: undefined,\r\n name: \"Autorità Energia Elettrica e Gas e Sistema Idrico\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2ARERA\",\r\n sectorId: undefined,\r\n name: \"Autorità di Regolazione per Energia, Reti e Ambiente\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2ARIR\",\r\n sectorId: undefined,\r\n name: \"Autorità di Vigilanza sulle Risorse Idriche e sui Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AVCP\",\r\n sectorId: undefined,\r\n name: \"Autorità per la Vigilanza sui Contratti Pubblici di Lavori, Servizi e Forniture\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AVLP\",\r\n sectorId: undefined,\r\n name: \"Autorità per la Vigilanza sui Lavori Pubblici\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CAGA\",\r\n sectorId: undefined,\r\n name: \"Comitato Naz. Albo Naz. Gestori Ambientali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CAN\",\r\n sectorId: undefined,\r\n name: \"Comitato per le Aree Naturali protette.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDEA\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per l'Emergenza Ambientale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDMN\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per la Sicurezza dei Materiali Nucleari\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDRA\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per l'Emergenza Rifiuti e la Tutela delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIAB\",\r\n sectorId: undefined,\r\n name: \"Comitato Istituzionale Autorità di Bacino\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CICP\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale Coordinamento Politica Economica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIP\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale Prezzi\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIPE\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Programmazione Economica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIPESS\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Programmazione Economica e lo Sviluppo Sostenibile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIR\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per i Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CITA\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Tutela delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CSR\",\r\n sectorId: undefined,\r\n name: \"Conferenza Permanente Rapporti Stato e Regioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CSSR\",\r\n sectorId: undefined,\r\n name: \"Comitato Naz. Albo Imprese Esercenti Servizi Smaltimento Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CUN\",\r\n sectorId: undefined,\r\n name: \"Conferenza Unificata\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2GPDP\",\r\n sectorId: undefined,\r\n name: \"Garante per la Protezione dei Dati Personali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CCEE\",\r\n sectorId: \"LC\",\r\n name: \"Commissario CEE/CE\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CDR\",\r\n sectorId: \"LC\",\r\n name: \"Comitato delle Regioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CEDM\",\r\n sectorId: \"LC\",\r\n name: \"Corte Europea per i Diritti dell'Uomo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CES\",\r\n sectorId: \"LC\",\r\n name: \"Comitato Economico e Sociale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CJCE\",\r\n sectorId: \"LC\",\r\n name: \"Corte di Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CJCO\",\r\n sectorId: \"LC\",\r\n name: \"Corte dei Conti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3COMM\",\r\n sectorId: \"LC\",\r\n name: \"Commissione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CONS\",\r\n sectorId: \"LC\",\r\n name: \"Consiglio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CONSUE\",\r\n sectorId: \"LC\",\r\n name: \"Parlamento e Consiglio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CWJ\",\r\n sectorId: \"LC\",\r\n name: \"Corte Internazionale di Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3EFTA\",\r\n sectorId: \"LC\",\r\n name: \"EFTA - Associaz. Europea di Libero Scambio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3OTIF\",\r\n sectorId: \"LC\",\r\n name: \"OTIF - Intergov. Org. for International Carriage by Rail\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3PAE\",\r\n sectorId: \"LC\",\r\n name: \"Parlamento\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3T1CE\",\r\n sectorId: \"LC\",\r\n name: \"Tribunale di Primo Grado\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3UNECE\",\r\n sectorId: \"LC\",\r\n name: \"UNECE - United Nations Economic Commission for Europe\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4PAB\",\r\n sectorId: \"LR\",\r\n name: \"Prov. Autonoma di Bolzano\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4PAT\",\r\n sectorId: \"LR\",\r\n name: \"Prov. Autonoma di Trento\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RAB\",\r\n sectorId: \"LR\",\r\n name: \"Regione Abruzzo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RBA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Basilicata\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RCAL\",\r\n sectorId: \"LR\",\r\n name: \"Regione Calabria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RCAM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Campania\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4REM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Emilia Romagna\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RFVG\",\r\n sectorId: \"LR\",\r\n name: \"Regione Friuli Venezia Giulia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Lazio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Liguria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Lombardia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RMA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Marche\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RMO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Molise\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RPI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Piemonte\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RPU\",\r\n sectorId: \"LR\",\r\n name: \"Regione Puglia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RSA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Sardegna\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RSI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Sicilia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RTAA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Trentino Alto Adige\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RTO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Toscana\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RUM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Umbria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RVA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Valle D'Aosta\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RVE\",\r\n sectorId: \"LR\",\r\n name: \"Regione Veneto\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CA\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CAS\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Assise\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CASA\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Assise d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CC\",\r\n sectorId: \"GN\",\r\n name: \"Corte Costituzionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CCC\",\r\n sectorId: \"GN\",\r\n name: \"Corte di Cassazione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CCP\",\r\n sectorId: \"GN\",\r\n name: \"Corte di Cassazione Penale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CDC\",\r\n sectorId: \"GN\",\r\n name: \"Corte dei Conti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CDS\",\r\n sectorId: \"GN\",\r\n name: \"Consiglio di Stato\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CGAS\",\r\n sectorId: \"GN\",\r\n name: \"Cons. di Giustizia Amm.va della Sicilia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CTP\",\r\n sectorId: \"GN\",\r\n name: \"Commissione Tributaria Provinciale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CTR\",\r\n sectorId: \"GN\",\r\n name: \"Commissione Tributaria Regionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5GDP\",\r\n sectorId: \"GN\",\r\n name: \"Giudice di Pace\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5P\",\r\n sectorId: \"GN\",\r\n name: \"Pretura\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5PCA\",\r\n sectorId: \"GN\",\r\n name: \"Procura Generale Corte d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5PR\",\r\n sectorId: \"GN\",\r\n name: \"Procura della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5T\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TAR\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Amministrativo Regionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TGA\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Regionale acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TSA\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Superiore delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CAC\",\r\n sectorId: \"TN\",\r\n name: \"Codex Alimentarius Commission\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CEI\",\r\n sectorId: \"TN\",\r\n name: \"C.E.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CNR\",\r\n sectorId: \"TN\",\r\n name: \"C.N.R.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ENPI\",\r\n sectorId: \"TN\",\r\n name: \"E.N.P.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6INAI\",\r\n sectorId: \"TN\",\r\n name: \"I.N.A.I.L.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6INPS\",\r\n sectorId: \"TN\",\r\n name: \"I.N.P.S.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISO\",\r\n sectorId: \"NI\",\r\n name: \"I.S.O.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISPS\",\r\n sectorId: \"TN\",\r\n name: \"I.S.P.E.S.L.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISS\",\r\n sectorId: \"TN\",\r\n name: \"I.S.S. - Istituto Superiore di Sanità\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6NSF\",\r\n sectorId: \"TN\",\r\n name: \"NSF International\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6UNI\",\r\n sectorId: \"TN\",\r\n name: \"U.N.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6USDA\",\r\n sectorId: \"TN\",\r\n name: \"USDA - United States Department of Agriculture\",\r\n channels: undefined\r\n }\r\n]\r\n\r\nexport const ClipperSources: NameValueItem<string>[] = [\r\n {\r\n value: 'ACCML',\r\n name: 'Accordi Multilaterali',\r\n },\r\n {\r\n value: 'AEEG',\r\n name: \"Sito Autorità per l'Energia Elettrica, il Gas e il Sistema Idrico\",\r\n },\r\n {\r\n value: 'ARERA',\r\n name: 'Sito Autorità di Regolazione per Energia, Reti e Ambiente',\r\n },\r\n {\r\n value: 'BUR',\r\n name: 'Bollettino Uff. Regione',\r\n },\r\n {\r\n value: 'BUS',\r\n name: 'Suppl. speciale al Bollettino Uff.',\r\n },\r\n {\r\n value: 'BUSO',\r\n name: 'Suppl. ordin. al Bollettino Uff.',\r\n },\r\n {\r\n value: 'BUSS',\r\n name: 'Suppl. straord. al Bollettino Uff.',\r\n },\r\n {\r\n value: 'GU',\r\n name: 'Gazzetta Ufficiale Italiana',\r\n },\r\n {\r\n value: 'GUCC',\r\n name: 'Gazz. Uff. Corte Costituzionale',\r\n },\r\n {\r\n value: 'GUCE',\r\n name: 'Gazzetta ufficiale delle Comunità europee',\r\n },\r\n {\r\n value: 'GUES',\r\n name: 'Gazz. Uff. Ediz. Speciale',\r\n },\r\n {\r\n value: 'GURS',\r\n name: 'Gazz. Uff. Regione Sicilia',\r\n },\r\n {\r\n value: 'GUS',\r\n name: 'Gazz. Uff. Serie Speciale',\r\n },\r\n {\r\n value: 'GUSO',\r\n name: 'Suppl. ordin. alla Gazzetta Ufficiale',\r\n },\r\n {\r\n value: 'GUSS',\r\n name: 'Suppl. straord. alla Gazzetta Ufficiale',\r\n },\r\n {\r\n value: 'GUUE',\r\n name: 'Gazzetta ufficiale dell’Unione europea',\r\n },\r\n {\r\n value: 'MAC',\r\n name: 'Massimario Civile',\r\n },\r\n {\r\n value: 'MAP',\r\n name: 'Massimario Penale',\r\n },\r\n {\r\n value: 'NONE',\r\n name: 'Fonti diverse',\r\n }\r\n]\r\n\r\n\r\nexport interface ClipperSettingsInfo {\r\n lastUpdated?: Date;\r\n enableNotifications: boolean;\r\n channels?: ClipperChannelSettings[];\r\n bulletinTaxonomy?: string;\r\n bulletinOrigin?: number;\r\n enableBulletinFilter: boolean;\r\n}\r\n\r\nexport class ClipperUpdateChannelsStateParams {\r\n activeChannels: ClipperChannel[] = [];\r\n}\r\n\r\nexport interface ClipperChannelSettingsItem<T> {\r\n name: string;\r\n value: T;\r\n checked: boolean;\r\n}\r\n\r\nexport class ClipperChannelSettings {\r\n channelId?: ClipperChannel;\r\n channelName?: string;\r\n isEnabled?: boolean = false;\r\n isSuspended?: boolean = false;\r\n isActive?: boolean = false;\r\n sectors: ClipperChannelSettingsItem<string>[] = [];\r\n regions: ClipperChannelSettingsItem<string>[] = [];\r\n\r\n /**\r\n * Returns `true` when the channel is active and at least one of the given sector codes\r\n * matches a sector assigned to this channel.\r\n * @param values - Array of sector code strings to test against.\r\n */\r\n hasAnyOfSectors(values: string[]): boolean {\r\n if (this.isEnabled !== true || this.isActive !== true) return false;\r\n return values.some(v => this.sectors.some(s => s.value === v));\r\n }\r\n\r\n /**\r\n * Returns `true` when the channel is active and at least one of the given region codes\r\n * matches a region assigned to this channel.\r\n * @param values - Array of region code strings to test against.\r\n */\r\n hasAnyOfRegions(values: string[]): boolean {\r\n if (this.isEnabled !== true || this.isActive !== true) return false;\r\n return values.some(v => this.regions.some(r => r.value === v));\r\n }\r\n\r\n}\r\n\r\nexport interface ClipperUserChannelInfo {\r\n channel: ClipperChannel;\r\n channelName?: string;\r\n expiringDate: string;\r\n isTrial?: boolean;\r\n isDisabled: boolean;\r\n isSuspended: boolean;\r\n isDvd: boolean;\r\n isActive: boolean;\r\n documentsViewable?: number;\r\n documentsViewed?: number;\r\n settings?: ClipperChannelSettings;\r\n}\r\n\r\nexport interface ClipperUserInfo {\r\n userId: number;\r\n customerId?: number;\r\n companyName: string;\r\n displayName: string;\r\n firstName: string;\r\n email: string;\r\n oauth?: boolean;\r\n sessionId?: string;\r\n scope: number;\r\n isAuthenticated: boolean;\r\n isTemporary: boolean;\r\n hasTrial: boolean;\r\n hasTeam: boolean;\r\n hasSharedNotes: boolean;\r\n hasSharedArchive: boolean;\r\n hasSharedCalendar: boolean;\r\n hasAI: boolean;\r\n hasAIAssistant: boolean;\r\n hasAIEditor: boolean;\r\n channels: ClipperUserChannelInfo[];\r\n firstChannelTrial: ClipperUserChannelInfo;\r\n trialInfo?: ClipperUserTrialInfo;\r\n}\r\n\r\nexport interface ClipperLoginResult extends LoginResult<ClipperUserInfo> {\r\n settings?: ClipperChannelSettings[];\r\n}\r\n\r\nexport interface ClipperLoginInfo {\r\n context?: ClipperUserInfo;\r\n complianceContext?: any;\r\n channels?: ClipperChannelSettings[];\r\n oauth?: LoginOAuthType;\r\n remember?: boolean;\r\n}\r\n\r\nexport enum ClipperQueryDocumentFlags {\r\n None = 0,\r\n TitleOnly = 1,\r\n AbrogatedOnly = 1 << 1,\r\n NotAbrogatedOnly = 1 << 2,\r\n CommentedOnly = 1 << 3,\r\n UseSemanticSearch = 1 << 5,\r\n NotRead = 1 << 6,\r\n ExcludeUserFilters = 1 << 7\r\n}\r\n\r\nexport class ClipperSearchParams {\r\n version: number = 6;\r\n searchId?: number;\r\n searchName?: string;\r\n text?: string;\r\n title?: string;\r\n titleOnly?: boolean = false;\r\n showUnreadDocumentsOnly?: boolean = false;\r\n showCommentedDocumentsOnly?: boolean = false;\r\n showNotAbrogatedDocumentsOnly?: boolean = false;\r\n number?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n year?: number;\r\n sourceNumber?: string;\r\n source?: string;\r\n sourceFromDate?: Date;\r\n sourceToDate?: Date;\r\n sourceYear?: number;\r\n sector?: string;\r\n sectors?: SectorInfo[];\r\n topic?: string;\r\n topics?: NameValueItem<string>[];\r\n taxonomy?: string;\r\n taxonomies?: NameValueItem<string>[];\r\n taxonomyPath?: string;\r\n taxonomyNode?: string;\r\n type?: string;\r\n types?: NameValueItem<string>[];\r\n tag?: string;\r\n tags?: NameValueItem<string>[];\r\n author?: string;\r\n authors?: NameValueItem<string>[];\r\n changeReason?: number;\r\n changedNumber?: string;\r\n changedYear?: number;\r\n changedTitle?: string;\r\n changedId?: string;\r\n modifierId?: string;\r\n modifierNumber?: string;\r\n modifierYear?: number;\r\n modifierTitle?: string;\r\n model?: ClipperModel;\r\n models?: ClipperModel[];\r\n module?: ClipperModule;\r\n modules?: NameValueItem<ClipperModule>[];\r\n mode?: ClipperQueryReferencesMode;\r\n channels?: NameValueItem<ClipperChannel>[] = [...ClipperChannels];\r\n count?: number = 15;\r\n id?: string;\r\n anchor?: string;\r\n excludeTextReferences?: boolean = false;\r\n excludeNotesReferences?: boolean = false;\r\n useModifierInfo?: boolean = false;\r\n returnModifierInfo?: boolean = false;\r\n flags?: ClipperQueryDocumentFlags;\r\n first?: number = 0;\r\n sortMode?: number;\r\n}\r\n\r\nexport interface ClipperReferencesSearchParams {\r\n documentId: string;\r\n year?: number;\r\n sector?: string;\r\n author?: string;\r\n anchor?: string;\r\n model?: string;\r\n mode?: ClipperQueryReferencesMode;\r\n excludeTextReferences?: boolean;\r\n excludeNotesReferences?: boolean;\r\n useModifierInfo?: boolean;\r\n returnModifierInfo?: boolean;\r\n count?: number;\r\n first?: number;\r\n}\r\n\r\nexport enum ClipperDocumentContainer {\r\n None = 0,\r\n LavoroEAmbiente = 1,\r\n SostanzeAlimentari = 2,\r\n OrangeProject = 4,\r\n Energia = 8,\r\n DGInfo = 0x10,\r\n DLGS231 = 0x20,\r\n All = 0x3F\r\n}\r\n\r\nexport const ClipperDocumentChangeReasons: NameValueItem<number>[] = [\r\n { name: 'Abrogazione', value: 1 },\r\n { name: 'Annullamento', value: 5 },\r\n { name: 'Modifica', value: 2 },\r\n { name: 'Sostiuzione', value: 3 },\r\n { name: 'Segnalazione', value: 6 },\r\n { name: 'Rettifica', value: 7 },\r\n]\r\n\r\nexport interface ClipperDocumentAnchorInfo {\r\n documentId?: string;\r\n type?: number;\r\n typeDescription?: string;\r\n text?: string;\r\n title?: string;\r\n description?: string;\r\n uri: string;\r\n ordinal?: string;\r\n score?: number;\r\n chunk?: number;\r\n veryRelevant?: boolean;\r\n value?: string;\r\n level?: number;\r\n}\r\n\r\nexport interface ClipperDocumentRelevantChunkHit {\r\n id?: number;\r\n score: string;\r\n text: string;\r\n index?: number;\r\n uri?: string;\r\n}\r\n\r\nexport interface ClipperDocumentRelevants {\r\n items: ClipperDocumentAnchorInfo[];\r\n hits: number;\r\n hit: number;\r\n chunks: number;\r\n}\r\n\r\nexport interface ClipperDocumentNoteTracking {\r\n id: string;\r\n userMailId: number;\r\n email?: string;\r\n sentDate: Date;\r\n openDate?: Date;\r\n}\r\n\r\nexport interface ClipperDocumentNote {\r\n id?: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n documentId?: string;\r\n documentTitle?: string;\r\n color?: string;\r\n name?: string;\r\n note?: string;\r\n trackings?: ClipperDocumentNoteTracking[];\r\n trackingsCount?: number;\r\n trackingsOpenedCount?: number;\r\n expiringDate?: Date; \r\n isExpired?: boolean;\r\n isTroubled?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n created?: Date;\r\n}\r\n\r\nexport interface ClipperNotesSearchParams extends QueryModel {\r\n documentId?: string;\r\n teamId?: string;\r\n teamTitle?: string;\r\n color?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n state?: number;\r\n}\r\n\r\nexport interface ClipperNotesSearchResult extends QueryResultModel<ClipperDocumentNote> {\r\n teams: NameValueItem<string>[];\r\n}\r\n\r\nexport interface ClipperDocumentInfo {\r\n id?: string;\r\n documentId?: string;\r\n documentCode?: string;\r\n model?: number;\r\n modelName?: string;\r\n module?: number;\r\n moduleName?: string;\r\n channelName?: string;\r\n group?: string;\r\n title2?: string;\r\n title1?: string;\r\n tags?: string;\r\n topics?: string;\r\n number?: string;\r\n date?: Date;\r\n description?: string;\r\n publishingDate?: Date;\r\n pictureId?: string;\r\n sourceNumber?: string;\r\n sourceDate?: Date;\r\n source?: string;\r\n sector?: string;\r\n origin?: string;\r\n originDescription?: string;\r\n author?: string;\r\n anchors?: ClipperDocumentAnchorInfo[];\r\n notes?: ClipperDocumentNote[];\r\n chunks?: ClipperDocumentAnchorInfo[];\r\n chunksList?: string;\r\n taxonomy?: string;\r\n taxonomyPath?: string;\r\n info?: string;\r\n isRead?: boolean;\r\n isExportable?: boolean;\r\n isCommented?: boolean;\r\n isJuris?: boolean;\r\n isOver?: boolean;\r\n isTrial?: boolean;\r\n isNew?: boolean;\r\n isExpired?: boolean;\r\n isExpiring?: boolean;\r\n isMenuOpen?: boolean;\r\n applicableFromDate?: Date;\r\n validityState?: number;\r\n validFromDate?: Date;\r\n validUntilDate?: Date;\r\n validityDescription?: string;\r\n validityInfo?: string;\r\n expiringDate?: Date;\r\n expiringDescription?: string;\r\n expiringInfo?: string;\r\n popularity?: number;\r\n part?: number;\r\n primaryId?: string;\r\n primaryDescription?: string;\r\n primaryModel?: number;\r\n hasPrimary?: boolean;\r\n secondaryId?: string;\r\n bag?: any;\r\n lastUpdate?: string;\r\n\r\n}\r\n\r\nexport class ClipperSearchResult {\r\n days?: string;\r\n interval?: string;\r\n items?: ClipperDocumentInfo[];\r\n facets?: ClipperSearchFacetsSnapshot = new ClipperSearchFacetsSnapshot();\r\n tags?: NameValueItem<string>[];\r\n total?: number;\r\n terms?: string[];\r\n searchInfo?: any;\r\n searchParams?: ClipperSearchParams = new ClipperSearchParams();\r\n snapshotMode?: ClipperQueryReferencesMode;\r\n}\r\n\r\nexport interface ClipperSearchFacet {\r\n type: number;\r\n typeName: string;\r\n title: string;\r\n value: string;\r\n count: number;\r\n}\r\n\r\nexport interface ClipperSearchFacetGroup {\r\n name: string;\r\n selectedValue?: string;\r\n selectedValueDescription?: string;\r\n values: ClipperSearchFacet[];\r\n index: number;\r\n}\r\n\r\nexport interface ClipperSearchFacetsResult {\r\n interval?: string;\r\n facets?: ClipperSearchFacet[][];\r\n total?: number;\r\n}\r\n\r\n\r\nexport class ClipperSearchFacetsSnapshot {\r\n groups: ClipperSearchFacetGroup[] = [];\r\n usedGroups: ClipperSearchFacetGroup[] = [];\r\n hasFacets: boolean = false;\r\n hasMoreFacets: boolean = false;\r\n hasTooManyResults: boolean = false;\r\n sector?: string;\r\n author?: string;\r\n anchor?: string;\r\n type?: string;\r\n reason?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n interval?: string;\r\n}\r\n\r\nexport interface ClipperSearchCalendarSnapshotMonth {\r\n days: number[];\r\n monthShortName: string;\r\n monthName: string;\r\n month: number;\r\n year: number;\r\n total: number;\r\n expired: number;\r\n expiring: number;\r\n}\r\n\r\nexport class ClipperSearchCalendarSnapshotResult {\r\n months?: ClipperSearchCalendarSnapshotMonth[];\r\n}\r\n\r\n\r\n\r\nexport enum ClipperSort {\r\n Default = 0,\r\n Relevance = 1,\r\n DateAsc = 2,\r\n DateDesc = 3,\r\n SourceDateAsc = 7,\r\n SourceDateDesc = 8,\r\n Popularity = 5\r\n}\r\n\r\nexport enum ClipperQueryReferencesMode {\r\n ReferencesIn = 1,\r\n ReferencesOut = 2,\r\n ChangesIn = 3,\r\n ChangesOut = 5,\r\n Juris = 4\r\n}\r\n\r\nexport enum ClipperFacet {\r\n Sector = 1,\r\n Year = 2,\r\n DocumentType = 3,\r\n Topic = 4,\r\n Article = 5,\r\n Author = 6,\r\n Reason = 95\r\n}\r\n\r\nexport interface ClipperOTPInfo {\r\n code: string;\r\n canPreview?: boolean;\r\n canEmbed?: boolean;\r\n}\r\n\r\nexport enum ClipperExportDocumentsFormat {\r\n Deafault = 1,\r\n iCalendar = 2\r\n}\r\n\r\nexport interface ClipperExportDocumentsParams {\r\n query: ClipperSearchParams;\r\n ids: string[];\r\n format?: ClipperExportDocumentsFormat;\r\n}\r\n\r\nexport interface ClipperSendDocumentsByEmailParams extends SendToDialogResult {\r\n ids?: string[];\r\n isCalendar?: boolean;\r\n public?: string;\r\n userNoteId?: number;\r\n}\r\n\r\n\r\nexport interface ClipperNotifyDocumentNoteParams extends SendToDialogResult {\r\n userNoteId?: number;\r\n notifyIfNotOpen?: boolean;\r\n resend?: boolean;\r\n}\r\n\r\nexport interface ClipperDocumentStructure {\r\n id: string;\r\n title: string;\r\n items?: ClipperDocumentAnchorInfo[];\r\n}\r\n\r\n\r\nexport interface ClipperSearchFilter {\r\n container: ClipperDocumentContainer;\r\n models: number[];\r\n sectors: string[];\r\n regions: string[];\r\n notifications: number[];\r\n isEnabled: boolean;\r\n isActive: boolean;\r\n}\r\nexport interface ClipperTaxonomyParams {\r\n countItems: boolean;\r\n model: ClipperModel;\r\n userFilters?: ClipperSearchFilter[];\r\n}\r\n\r\nexport interface ClipperUserSearch {\r\n id?: number;\r\n userId?: number;\r\n name?: string;\r\n module?: ClipperModule;\r\n data?: string;\r\n}\r\n\r\nexport interface ClipperUserWorkingDocument {\r\n userId?: number;\r\n documentId?: string;\r\n documentDescriptor?: string;\r\n title1?: string;\r\n title2?: string;\r\n timestamp?: string;\r\n}\r\n\r\nexport interface ClipperDeleteWorkingDocumentsParams {\r\n documentIds: string[];\r\n deleteAll: boolean;\r\n}\r\n\r\n\r\nexport interface ClipperUserLink {\r\n id?: number;\r\n userId: number;\r\n userName?: string;\r\n key: string;\r\n}\r\n\r\nexport interface ClipperUserTrialInfo {\r\n channelName: string;\r\n expiringDate: Date;\r\n remainingDocuments: number;\r\n}\r\n\r\nexport interface ClipperArsEventInfo {\r\n id: number;\r\n location?: string;\r\n title?: string;\r\n pictureId?: string;\r\n date?: string;\r\n endDate?: string;\r\n startTime?: string;\r\n endTime?: string;\r\n hours?: number;\r\n days?: number;\r\n dateIntervalDescription?: string;\r\n durationDescription?: string;\r\n group?: string;\r\n address?: string;\r\n city?: string;\r\n isOver?: boolean;\r\n}\r\n\r\n\r\n\r\nexport interface ClipperSearchArsEventsParams {\r\n group?: string;\r\n group1?: string;\r\n collectGroups?: boolean;\r\n collectBundles?: boolean;\r\n fromDate?: string;\r\n untilDate?: string;\r\n text?: string;\r\n sortBy?: string;\r\n count: number\r\n}\r\n\r\nexport interface ClipperSearchArsEventsResult {\r\n interval?: string;\r\n items?: ClipperArsEventInfo[];\r\n total?: number;\r\n}\r\n\r\nexport interface ClipperDocumentUpdateStateParams {\r\n documentIds: string[];\r\n isRead: boolean;\r\n}\r\n\r\nexport interface ClipperDashboardModelItem {\r\n id: ClipperModel;\r\n newItems: number;\r\n unreadItems: number;\r\n}\r\n\r\nexport interface ClipperDashboardItem {\r\n id: ClipperModule;\r\n models: ClipperDashboardModelItem[];\r\n newItems: number;\r\n unreadItems: number;\r\n lastUpdated?: string;\r\n}\r\n\r\nexport interface ClipperDashboardResult {\r\n items?: ClipperDashboardItem[];\r\n isTrial?: boolean;\r\n expiredDeadlines?: number;\r\n expiringDeadlines?: number;\r\n documentUpdates?: number;\r\n channels?: ClipperChannelSettings[];\r\n}\r\n\r\nexport class ClipperDashboard {\r\n items = signal<ClipperDashboardItem[]>([]);\r\n isTrial?: boolean = false;\r\n expiredDeadlines?: number;\r\n expiringDeadlines?: number;\r\n documentUpdates?: number;\r\n unreadItems: Signal<[ClipperModule, number][]> = computed(() => {\r\n const states: [ClipperModule, number][] = [];\r\n states.push([ClipperModule.News, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.News)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.GazzetteBollettiniEFontiDiverse, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.GazzetteBollettiniEFontiDiverse)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.Giurisprudenza, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.Giurisprudenza)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.ModificheAbrogazioniERinvii, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.ModificheAbrogazioniERinvii)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.AllerteAlimentari, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.AllerteAlimentari)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.Approfondimenti, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.Approfondimenti)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.QuesitiECasiRisolti, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.QuesitiECasiRisolti)?.unreadItems ?? 0]);\r\n return states;\r\n });\r\n unreadItemsByModel: Signal<[ClipperModel, number][]> = computed(() => {\r\n const states: [ClipperModel, number][] = [];\r\n this.items().forEach(item => {\r\n if (item.models) {\r\n item.models.forEach(itemModel => {\r\n states.push([itemModel.id, itemModel.unreadItems]);\r\n });\r\n } else {\r\n if (item.id == ClipperModule.News) {\r\n states.push([ClipperModel.News, item.unreadItems]);\r\n } else if (item.id == ClipperModule.GazzetteBollettiniEFontiDiverse) {\r\n states.push([ClipperModel.AggiornamentoNormativo, item.unreadItems]);\r\n } else if (item.id == ClipperModule.QuesitiECasiRisolti) {\r\n states.push([ClipperModel.Quesiti, item.unreadItems]);\r\n } else if (item.id == ClipperModule.AllerteAlimentari) {\r\n states.push([ClipperModel.AllerteAlimentari, item.unreadItems]);\r\n } else if (item.id == ClipperModule.Approfondimenti) {\r\n states.push([ClipperModel.Articoli, item.unreadItems]);\r\n } else if (item.id == ClipperModule.ModificheAbrogazioniERinvii) {\r\n states.push([ClipperModel.Coordinamento, item.unreadItems]);\r\n } else if (item.id == ClipperModule.Giurisprudenza) {\r\n states.push([ClipperModel.Juris, item.unreadItems]);\r\n }\r\n }\r\n })\r\n return states;\r\n });\r\n\r\n /**\r\n * Increments (or decrements) the unread item counter for the given module or model.\r\n * Triggers a signal update so computed values and templates react to the change.\r\n * @param module - The `ClipperModule` whose counter should be adjusted.\r\n * @param model - Optional `ClipperModel` for sub-module granularity.\r\n * @param increment - Amount to add (use a negative value to decrement).\r\n */\r\n updateUnreadItems(module: ClipperModule, model: ClipperModel | undefined, increment: number): void {\r\n if (model) {\r\n for (const item of this.items()) {\r\n const itemModel = item.models?.find(x => x.id === model);\r\n if (itemModel) {\r\n itemModel.unreadItems += increment;\r\n break;\r\n }\r\n }\r\n }\r\n const item = this.items().find((x: ClipperDashboardItem) => x.id === module);\r\n if (item) {\r\n item.unreadItems += increment;\r\n }\r\n this.items.update(values => [...values]);\r\n }\r\n\r\n /**\r\n * Returns the unread-item count for the given module, or for a specific model within it.\r\n * @param module - The `ClipperModule` to query.\r\n * @param model - Optional `ClipperModel` for sub-module granularity.\r\n * @returns Number of unread items, or `0` when none are found.\r\n */\r\n getUnreadItems(module: ClipperModule, model?: ClipperModel): number {\r\n if (model) {\r\n return this.unreadItemsByModel().find((x: [ClipperModel, number]) => x[0] === model)?.[1] ?? 0;\r\n }\r\n return this.unreadItems().find((x: [ClipperModule, number]) => x[0] === module)?.[1] ?? 0;\r\n }\r\n\r\n /**\r\n * Returns the sum of unread items across all tracked modules.\r\n * @returns Total unread-item count.\r\n */\r\n getTotalUnreadItems(): number {\r\n return this.unreadItems().reduce((acc, item) => acc + item[1], 0);\r\n }\r\n}\r\n\r\nexport interface ClipperDayItem {\r\n day: string;\r\n label: string;\r\n items: ClipperDayGroup[];\r\n count: number;\r\n}\r\n\r\nexport interface ClipperDayGroup {\r\n model: ClipperModel;\r\n label: string;\r\n items: ClipperDocumentInfo[];\r\n}\r\n\r\nexport interface ClipperLastDaysResult {\r\n items: ClipperDayItem[];\r\n}\r\n\r\n\r\nexport class ClipperTeamMemberInfo {\r\n id: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n name?: string;\r\n email?: string;\r\n isAdmin?: boolean;\r\n isDisabled?: boolean;\r\n hasPermission55?: boolean;\r\n hasPermission56?: boolean;\r\n hasPermission57?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n}\r\n\r\nexport enum ClipperTeamProduct {\r\n SharedArchive = 1004676,\r\n SharedCalendar = 1004683,\r\n SharedNotes = 1013721\r\n}\r\n\r\nexport enum ClipperTeamProductPermission {\r\n SharedNotes = 55,\r\n SharedArchive = 56,\r\n SharedCalendar = 57\r\n}\r\n\r\nexport interface ClipperTeamProductInfo {\r\n permissionId: ClipperTeamProductPermission;\r\n name: string;\r\n maxMembers: number;\r\n usedMembers: number;\r\n}\r\n\r\nexport interface ClipperTeamMembersSearchResult {\r\n teamId?: string;\r\n teamTitle?: string;\r\n total?: number;\r\n customerId?: number;\r\n canEdit?: boolean;\r\n products?: ClipperTeamProductInfo[];\r\n items?: ClipperTeamMemberInfo[];\r\n}\r\n\r\nexport interface ClipperTeamsSearchParams {\r\n teamId?: string;\r\n permissionId?: number;\r\n productId?: number;\r\n adminsOnly?: boolean;\r\n activeMembersOnly?: boolean;\r\n includeRSTeams?: boolean;\r\n}\r\n\r\nexport interface ClipperTeamsSearchResult {\r\n total: number;\r\n items: NameValueItem<string>[];\r\n}\r\n\r\nexport class ClipperTeamInfo {\r\n id?: string;\r\n customerId?: number;\r\n title?: string;\r\n isDisabled?: boolean;\r\n created?: string;\r\n lastModified?: string;\r\n}\r\n\r\n\r\nexport interface ClipperContactsSearchParams extends QueryModel {\r\n teamId?: string;\r\n name?: string;\r\n includeDisabled?: boolean;\r\n}\r\n\r\nexport interface ClipperContactInfo {\r\n id?: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n userId?: number;\r\n name?: string;\r\n emails?: string;\r\n disabled?: boolean;\r\n created?: Date;\r\n lastUpdated?: Date;\r\n}\r\n\r\nexport enum ClipperCalendarState {\r\n Open = 101,\r\n Expired = 102,\r\n Expiring = 103,\r\n Closed = 104\r\n}\r\n\r\nexport const ClipperCalendarStates: NameValueItem<ClipperCalendarState>[] = [\r\n { name: 'Aperte', value: ClipperCalendarState.Open },\r\n { name: 'Chiuse', value: ClipperCalendarState.Closed },\r\n { name: 'Scadute', value: ClipperCalendarState.Expired },\r\n { name: 'Imminenti', value: ClipperCalendarState.Expiring }\r\n]\r\n\r\n\r\nexport class ClipperCalendarSearchParams {\r\n id?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n teamId?: string;\r\n text?: string;\r\n month?: number;\r\n year?: number;\r\n sortDescending?: boolean;\r\n state?: ClipperCalendarState;\r\n recurrentOnly?: boolean;\r\n first?: number = 0;\r\n count?: number = 15\r\n}\r\n\r\nexport interface ClipperCalendarSearchResult {\r\n interval: string;\r\n items: ClipperDeadlineInfo[];\r\n days: number[];\r\n teams: NameValueItem<string>[];\r\n total: number;\r\n}\r\n\r\n\r\n\r\nexport interface ClipperDeadlineInfo {\r\n id?: string;\r\n companyId?: number;\r\n userId?: number;\r\n teamId: string;\r\n teamName?: string;\r\n group?: string;\r\n description?: string;\r\n documentTitle?: string;\r\n documentId?: string;\r\n documentNumber?: string;\r\n documentDate?: Date;\r\n emails?: string;\r\n expiringDate?: Date;\r\n expiredAlertSent?: boolean;\r\n expiringInfo?: string;\r\n expiringDescription?: string;\r\n nextExpiringDate?: Date;\r\n alarmDays?: number;\r\n alarmDate?: Date;\r\n alarmMemo?: string;\r\n alarmSent?: boolean;\r\n hasAlarm?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n isExpired?: boolean;\r\n isExpiring?: boolean;\r\n isClosed?: boolean;\r\n isClosable?: boolean;\r\n isPrivate?: boolean;\r\n isRecurrent?: boolean;\r\n recurrencePatternType?: ClipperRecurrenceType;\r\n recurrenceFrequency?: number;\r\n recurrenceEndOfMonth?: boolean;\r\n recurrenceNewId?: string;\r\n outlookAppointmentId?: string;\r\n created?: Date;\r\n lastModified?: Date;\r\n}\r\n\r\nexport interface ClipperCalendarSaveDeadlineParams {\r\n deadline: ClipperDeadlineInfo;\r\n teamIds?: string[];\r\n}\r\n\r\nexport enum ClipperCalendarCopyMode {\r\n Duplicate = 1,\r\n Move = 2\r\n}\r\n\r\nexport interface ClipperCalendarCopyDeadlinesParams {\r\n ids: string[];\r\n teamId: string;\r\n mode: ClipperCalendarCopyMode;\r\n}\r\n\r\nexport enum ClipperArchiveFileType {\r\n None = 0,\r\n Procedure = 1,\r\n OperatingInstructions = 2,\r\n TechnicalReport = 3,\r\n AdministrativeDocument = 4,\r\n Document = 5,\r\n OtherApplicableRules = 6,\r\n Other = 7,\r\n File = 101,\r\n Image = 102\r\n}\r\n\r\nexport const ClipperArchiveFileTypes: NameValueItem<ClipperArchiveFileType>[] = [\r\n { name: 'File', value: ClipperArchiveFileType.File },\r\n { name: 'Immagine', value: ClipperArchiveFileType.Image },\r\n { name: 'Procedura', value: ClipperArchiveFileType.Procedure },\r\n { name: 'Istruzioni operative', value: ClipperArchiveFileType.OperatingInstructions },\r\n { name: 'Relazione tecnica', value: ClipperArchiveFileType.TechnicalReport },\r\n { name: 'Documento iter amministrativo', value: ClipperArchiveFileType.AdministrativeDocument },\r\n { name: 'Documento aziendale', value: ClipperArchiveFileType.Document },\r\n { name: 'Altre norme applicabili', value: ClipperArchiveFileType.OtherApplicableRules },\r\n { name: 'Altro', value: ClipperArchiveFileType.Other }\r\n]\r\n\r\n\r\nexport enum ClipperArchiveFileStorageType {\r\n ArsCloud = 2,\r\n OtherCloud = 3\r\n}\r\nexport const ClipperArchiveFileStorageTypes: NameValueItem<ClipperArchiveFileStorageType>[] = [\r\n { name: 'ARS Cloud', value: ClipperArchiveFileStorageType.ArsCloud },\r\n { name: 'Altro cloud', value: ClipperArchiveFileStorageType.OtherCloud }\r\n]\r\n\r\n\r\nexport interface ClipperArchiveFileInfo {\r\n id?: string;\r\n parentFolderId?: string;\r\n isFolder?: boolean;\r\n folderId?: string;\r\n folderName?: string;\r\n folderItemsCount?: number;\r\n teamId: string;\r\n teamName?: string;\r\n topicId?: string;\r\n topicPath?: string;\r\n topicName?: string;\r\n topics?: string[];\r\n tags?: string;\r\n isPrivate?: boolean;\r\n isFile?: boolean;\r\n fileName?: string;\r\n storageType?: ClipperArchiveFileStorageType;\r\n isBinary?: boolean;\r\n binaryId?: number;\r\n binaryFilePath?: string;\r\n isPermalink?: boolean;\r\n fileType?: ClipperArchiveFileType;\r\n file?: any;\r\n notes?: string;\r\n position?: number;\r\n documentIds?: string;\r\n documentLastChangedBy?: string;\r\n documentLastChangedById?: string;\r\n documentLastChangedReasonDescription?: string;\r\n documentLastChanged?: Date;\r\n documentUpdateState?: number;\r\n isDocumentChanged?: boolean;\r\n canPreview?: boolean;\r\n canEmbed?: boolean;\r\n channelName?: string;\r\n model?: ClipperModel;\r\n modelName?: string;\r\n title1?: string;\r\n title2?: string;\r\n date?: Date;\r\n number?: string;\r\n origin?: string;\r\n originDescription?: string;\r\n documentId?: string;\r\n documentCode?: string;\r\n isDocument?: boolean;\r\n isRead?: boolean;\r\n isJuris?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n validityState?: number;\r\n validUntilDate?: Date;\r\n expiringDate?: Date;\r\n expiringInfo?: string;\r\n uniqueId: string;\r\n}\r\n\r\n\r\nexport interface ClipperArchiveFolderTree extends Folder {\r\n subFolders: ClipperArchiveFolderTree[];\r\n}\r\n\r\n\r\nexport class ClipperArchiveFoldersSearchParams {\r\n teamId?: string;\r\n privateOnly?: boolean;\r\n}\r\n\r\nexport interface ClipperArchiveFoldersSearchResult {\r\n name: string;\r\n teams: NameValueItem<string>[];\r\n files: ClipperArchiveFileInfo[];\r\n subFolders: ClipperArchiveFolderTree[];\r\n\r\n}\r\n\r\n\r\nexport class ClipperArchiveFilesSearchParams {\r\n teamId?: string;\r\n folderId?: string;\r\n folderName?: string;\r\n fileType?: ClipperArchiveFileType;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n topicPath?: string;\r\n topicId?: string;\r\n topicName?: string;\r\n titlesOnly?: boolean;\r\n text?: string;\r\n documentNumber?: string;\r\n documentYear?: number;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface ClipperArchiveFilesSearchResult {\r\n items: ClipperArchiveFileInfo[];\r\n folderName?: string;\r\n total: number;\r\n}\r\n\r\nexport interface ClipperArchiveFoldersImportParams {\r\n teamId: string;\r\n destFolderId?: string;\r\n sourcePath?: string;\r\n sourceFileName?: string;\r\n file?: any;\r\n overwrite?: boolean;\r\n version?: number;\r\n}\r\n\r\nexport enum ClipperArchiveCopyMode {\r\n Duplicate = 1,\r\n Move = 2\r\n}\r\n\r\nexport interface ClipperArchiveFilesCopyParams {\r\n destTeamId: string;\r\n destFolderId?: string;\r\n files?: ClipperArchiveFileInfo[];\r\n mode?: ClipperArchiveCopyMode;\r\n}\r\n\r\nexport interface ClipperArchiveFilesDeleteParams {\r\n sourceFolderId?: string;\r\n destFolderId?: string;\r\n files?: ClipperArchiveFileInfo[];\r\n}\r\n\r\n\r\nexport class ClipperUtils {\r\n\r\n /**\r\n * Returns `true` when the given model corresponds to a readable document type\r\n * (i.e., can be opened in the document viewer).\r\n * @param model - The `ClipperModel` to test.\r\n */\r\n static isClipperModelReadable(model: ClipperModel): boolean {\r\n return model !== ClipperModel.Unknown &&\r\n model !== ClipperModel.NormativaVigente &&\r\n model !== ClipperModel.Scadenze &&\r\n model !== ClipperModel.Segnalazioni\r\n }\r\n\r\n /**\r\n * Returns the `ClipperModule` that owns the given document, derived from its model type.\r\n * @param item - The document info object to inspect.\r\n * @returns The matching `ClipperModule`, or `undefined` when the model has no direct module mapping.\r\n */\r\n static getClipperModuleFromModel(item: ClipperDocumentInfo): ClipperModule | undefined {\r\n switch (item.model) {\r\n case ClipperModel.AllerteAlimentari: return ClipperModule.AllerteAlimentari;\r\n case ClipperModel.News: return ClipperModule.News;\r\n case ClipperModel.Articoli:\r\n case ClipperModel.Juris: return ClipperModule.Approfondimenti;\r\n case ClipperModel.Quesiti: return ClipperModule.QuesitiECasiRisolti;\r\n case ClipperModel.Coordinamento: return ClipperModule.ModificheAbrogazioniERinvii;\r\n case ClipperModel.GiurisprudenzaRecente: return ClipperModule.Giurisprudenza;\r\n case ClipperModel.NormativaVigente: return ClipperModule.NormativaVigente;\r\n case ClipperModel.Segnalazioni:\r\n case ClipperModel.Scadenze: return ClipperModule.ScadenzeESegnalazioni;\r\n case ClipperModel.AggiornamentoNormativo: return ClipperModule.GazzetteBollettiniEFontiDiverse;\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n /**\r\n * Returns the display name for the given `ClipperModuleGroup`.\r\n * @param value - The module group enum value to look up.\r\n * @returns The group display name, or an empty string when not found.\r\n */\r\n static getClipperModuleGroupName(value: ClipperModuleGroup): string {\r\n return ClipperModuleGroups.find(n => n.value === value)?.name ?? '';\r\n }\r\n\r\n /**\r\n * Returns the list of `ClipperModule` items belonging to the given module group.\r\n * @param value - The module group to filter by.\r\n * @returns Array of matching `NameValueItem` entries.\r\n */\r\n static getClipperModuleGroupItems(value: ClipperModuleGroup): NameValueItem<ClipperModule>[] {\r\n return ClipperModules.filter(n => n.parentValue === value);\r\n }\r\n\r\n /**\r\n * Tests a set of modules against the currently selected modules in the search filter.\r\n * @param modules - The modules to test.\r\n * @param currentModules - The currently selected modules to check against.\r\n * @param mode - Matching strategy:\r\n * `1` = all and only the specified modules (exact set),\r\n * `2` = all specified modules must be present,\r\n * `3` = at least one specified module must be present.\r\n * @returns `true` when the condition defined by `mode` is satisfied.\r\n */\r\n private static checkModules(\r\n modules: ClipperModule[],\r\n currentModules: NameValueItem<ClipperModule>[],\r\n mode: number = 1\r\n ): boolean {\r\n let ok = false;\r\n if (mode === 1) {\r\n // All and only the elements specified\r\n for (const current of currentModules) {\r\n ok = modules.findIndex(x => x === current.value) !== -1;\r\n if (!ok) break;\r\n }\r\n ok = ok && modules.length >= currentModules.length;\r\n } else if (mode === 2) {\r\n // All the elements specified\r\n for (const mod of modules) {\r\n ok = currentModules.findIndex(x => x.value === mod) !== -1;\r\n if (!ok) break;\r\n }\r\n } else if (mode === 3) {\r\n // Any of the specified elements\r\n for (const mod of modules) {\r\n ok = currentModules.findIndex(x => x.value === mod) !== -1;\r\n if (ok) break;\r\n }\r\n }\r\n return ok;\r\n }\r\n\r\n /**\r\n * Returns the sort options available for the given module selection.\r\n * Includes the relevance option only when the query contains free text.\r\n * @param modules - Currently selected modules (used to determine which date axes are available).\r\n * @param params - Current search params (checked for free-text content).\r\n * @returns Array of applicable `NameValueItem<ClipperSort>` sort options.\r\n */\r\n static getClipperAvailableSortOptions(\r\n modules?: NameValueItem<ClipperModule>[],\r\n params?: ClipperSearchParams): NameValueItem<ClipperSort>[] {\r\n const options: NameValueItem<ClipperSort>[] = [\r\n { name: \"Data decrescente\", value: ClipperSort.DateDesc },\r\n { name: \"Data crescente\", value: ClipperSort.DateAsc },\r\n { name: \"Data fonte decrescente\", value: ClipperSort.SourceDateDesc },\r\n { name: \"Data fonte crescente\", value: ClipperSort.SourceDateAsc },\r\n { name: \"Rilevanza\", value: ClipperSort.Relevance },\r\n //{ name: \"Popolarità\", value: ClipperSort.Popularity },\r\n ];\r\n const sortOptions: NameValueItem<ClipperSort>[] = []\r\n if (params && ClipperSearchUtils.isTextQuery(params)) {\r\n sortOptions.push(options[4]);\r\n }\r\n if (modules && modules.length > 0) {\r\n if (this.checkModules([ClipperModule.GazzetteBollettiniEFontiDiverse], modules, 1)) {\r\n sortOptions.push(options[2]);\r\n sortOptions.push(options[3]);\r\n } else if (this.checkModules([ClipperModule.NormativaVigente], modules, 1) ||\r\n this.checkModules([ClipperModule.Giurisprudenza], modules, 1)) {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n } else {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n }\r\n } else {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n }\r\n return sortOptions;\r\n }\r\n\r\n}\r\n\r\nexport class ClipperSearchUtils {\r\n\r\n /**\r\n * Resets all filter fields of a `ClipperSearchParams` instance to their default (empty) values.\r\n * @param params - The search-params object to clear.\r\n */\r\n static clear(params: ClipperSearchParams): void {\r\n params.sector = undefined;\r\n params.sectors = undefined;\r\n params.author = undefined;\r\n params.authors = undefined;\r\n params.topic = undefined;\r\n params.topics = undefined;\r\n params.taxonomy = undefined;\r\n params.taxonomies = undefined;\r\n params.taxonomyPath = undefined;\r\n params.taxonomyNode = undefined;\r\n params.number = undefined;\r\n params.fromDate = undefined;\r\n params.toDate = undefined;\r\n params.year = undefined;\r\n params.sourceNumber = undefined;\r\n params.source = undefined;\r\n params.sourceFromDate = undefined;\r\n params.sourceToDate = undefined;\r\n params.sourceYear = undefined;\r\n params.tags = undefined;\r\n params.text = undefined;\r\n params.titleOnly = false;\r\n params.type = undefined;\r\n params.types = undefined;\r\n params.showUnreadDocumentsOnly = false;\r\n params.showCommentedDocumentsOnly = false;\r\n params.showNotAbrogatedDocumentsOnly = false;\r\n if (!params.channels || params.channels.length === 0) {\r\n params.channels = [...ClipperChannels];\r\n }\r\n params.changeReason = undefined;\r\n params.changedNumber = undefined;\r\n params.changedYear = undefined;\r\n params.changedTitle = undefined;\r\n params.changedId = undefined;\r\n params.modifierId = undefined;\r\n params.modifierNumber = undefined;\r\n params.modifierYear = undefined;\r\n params.modifierTitle = undefined;\r\n params.model = undefined;\r\n params.models = undefined;\r\n params.module = undefined;\r\n params.modules = undefined;\r\n }\r\n\r\n\r\n /**\r\n * Returns the list of `ClipperModel` values that correspond to the given modules.\r\n * @param modules - The selected modules to map to their underlying data models.\r\n * @returns Array of `ClipperModel` values matching the provided modules.\r\n */\r\n static getModulesModels(modules?: NameValueItem<ClipperModule>[]): ClipperModel[] {\r\n const models: ClipperModel[] = [];\r\n if (modules && modules.length > 0) {\r\n modules.forEach(module => {\r\n switch (module.value) {\r\n case ClipperModule.ScadenzeESegnalazioni:\r\n [ClipperModel.Scadenze, ClipperModel.Segnalazioni].forEach(x => models.push(x));\r\n break;\r\n case ClipperModule.QuesitiECasiRisolti:\r\n models.push(ClipperModel.Quesiti);\r\n break;\r\n case ClipperModule.News:\r\n models.push(ClipperModel.News);\r\n break;\r\n case ClipperModule.Approfondimenti:\r\n models.push(ClipperModel.Articoli);\r\n break;\r\n case ClipperModule.AllerteAlimentari:\r\n models.push(ClipperModel.AllerteAlimentari);\r\n break;\r\n case ClipperModule.GazzetteBollettiniEFontiDiverse:\r\n models.push(ClipperModel.AggiornamentoNormativo);\r\n break;\r\n case ClipperModule.GiurisprudenzaRecente:\r\n models.push(ClipperModel.GiurisprudenzaRecente);\r\n break;\r\n case ClipperModule.NormativaVigente:\r\n models.push(ClipperModel.NormativaVigente);\r\n break;\r\n case ClipperModule.ModificheAbrogazioniERinvii:\r\n models.push(ClipperModel.Coordinamento);\r\n break;\r\n case ClipperModule.Giurisprudenza:\r\n models.push(ClipperModel.Juris);\r\n break;\r\n }\r\n });\r\n }\r\n return models;\r\n }\r\n\r\n /**\r\n * Returns `true` when the search params contain a non-empty free-text query.\r\n * @param params - The search params to inspect.\r\n */\r\n static isTextQuery(params: ClipperSearchParams): boolean {\r\n return params.text != null && params.text.length > 0;\r\n }\r\n\r\n /**\r\n * Wraps `q` in quotes (if not already quoted) and appends it to `queries`.\r\n * @param q - A single search term to process.\r\n * @param queries - The accumulated query string to append to.\r\n * @returns The updated `queries` string.\r\n */\r\n private static concatTextQuery(q: string, queries: string): string {\r\n if (q && q.length > 1) {\r\n if ((q[0] === '+' || q[0] === '-') && q[1] !== '\"') {\r\n q = q[0] + '\"' + q.substring(1) + '\"';\r\n } else if (q[0] !== '\"') {\r\n q = \"\\\"\" + q + \"\\\"\";\r\n }\r\n queries += q + \" \";\r\n }\r\n return queries;\r\n }\r\n\r\n /**\r\n * Normalises a comma-separated search string by wrapping each term in quotes.\r\n * @param text - The raw search input to normalise.\r\n * @returns The normalised query string, or `undefined` when `text` is empty.\r\n */\r\n static normalizeTextQuery(text: string): string | undefined {\r\n if (!text || text.length === 0) return undefined;\r\n let q: string = '';\r\n let queries: string = '';\r\n for (let i = 0; i < text.length; i++) {\r\n if (text[i] === ',') {\r\n queries = this.concatTextQuery(q.trim(), queries);\r\n q = '';\r\n }\r\n else q += text[i];\r\n }\r\n queries = this.concatTextQuery(q.trim(), queries);\r\n return queries;\r\n }\r\n\r\n /**\r\n * Wraps the entire query in double quotes when it contains no boolean operators\r\n * (`\"`, `+`, or ` -`), making it an exact-phrase search.\r\n * @param text - The query string to normalise.\r\n * @returns The normalised query string.\r\n */\r\n static normalizeTextQuery2(text: string): string {\r\n if (!text) return text;\r\n // Add quotes only if there are no quoted elements, no '+', and no ' -'\r\n if (!text.includes('\"') && !text.includes('+') && !text.includes(' -')) {\r\n return '\"' + text + '\"';\r\n }\r\n return text;\r\n }\r\n\r\n\r\n /**\r\n * Maps a letter rank (`A`, `B`, or any other) to a numeric relevance threshold.\r\n * @param value - The single-character rank string.\r\n * @returns `0.751` for `'A'`, `0.71` for `'B'`, `0.51` for anything else.\r\n */\r\n static getRankFromChar(value: string): number {\r\n switch (value.toUpperCase()) {\r\n case 'A': return 0.751;\r\n case 'B': return 0.71;\r\n default:\r\n return 0.51;\r\n }\r\n }\r\n}","import { NameValueItem } from \"@arsedizioni/ars-utils/core\";\r\n\r\nexport const NotesColors: NameValueItem<string>[] = \r\n[{ name: \"Verde\", value: \"#2E8B74\" },\r\n { name: \"Viola\", value: \"#9B59B6\" },\r\n { name: \"Giallo\", value: \"#E8A838\" },\r\n { name: \"Ciano\", value: \"#17A8BA\" },\r\n { name: \"Arancione\", value: \"#FD7E14\" },\r\n { name: \"Magenta\", value: \"#E91E8C\" },\r\n { name: \"Grigio\", value: \"#6C757D\" },\r\n { name: \"Indaco\", value: \"#5B6EBF\" }\r\n];\r\n","import { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';\r\nimport { DestroyRef, Injectable, Signal, computed, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ApiResult, BroadcastService,\r\n Folder,\r\n FolderTree,\r\n NameValueItem, QueryResultModel, SystemUtils,\r\n UpdateResultModel\r\n} from '@arsedizioni/ars-utils/core';\r\nimport { DialogService, RecoverPasswordDialogResult, ResetPasswordDialogResult } from '@arsedizioni/ars-utils/ui';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\nimport { EMPTY, of, throwError } from 'rxjs';\r\nimport { catchError, finalize, map } from 'rxjs/operators';\r\nimport { ClipperServiceFlags, ClipperDashboard, ClipperDashboardResult, ClipperDocumentInfo, ClipperDocumentStructure, ClipperDocumentUpdateStateParams, ClipperExportDocumentsParams, ClipperLoginInfo, ClipperLoginResult, ClipperModule, ClipperOTPInfo, ClipperSearchArsEventsParams, ClipperSearchArsEventsResult, ClipperQueryReferencesMode, ClipperReferencesSearchParams, ClipperSearchFacetsResult, ClipperSearchParams, ClipperSearchResult, ClipperSendDocumentsByEmailParams, ClipperTaxonomyParams, ClipperUserSearch, ClipperUserWorkingDocument, ClipperCalendarSearchParams, ClipperCalendarSearchResult, ClipperSearchCalendarSnapshotResult, ClipperCalendarCopyDeadlinesParams, ClipperDeadlineInfo, ClipperCalendarSaveDeadlineParams, ClipperArchiveFoldersSearchParams, ClipperArchiveFoldersSearchResult, ClipperArchiveFileInfo, ClipperArchiveFoldersImportParams, ClipperArchiveFilesSearchResult, ClipperArchiveFilesDeleteParams, ClipperArchiveFilesCopyParams, ClipperArchiveFilesSearchParams, ClipperModel, ClipperChannel, ClipperChannels, ClipperLastDaysResult, ClipperAvailableChannel, ClipperChannelSettings, ClipperUpdateChannelsStateParams, ClipperUserTrialInfo, ClipperUserLink, ClipperTeamInfo, ClipperTeamsSearchParams, ClipperTeamsSearchResult, ClipperTeamMembersSearchResult, ClipperTeamMemberInfo, ClipperContactsSearchParams, ClipperContactInfo, ClipperDocumentNote, ClipperNotesSearchParams, ClipperNotifyDocumentNoteParams, ClipperDocumentNoteTracking, ClipperNotesSearchResult, ClipperSettingsInfo } from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\n\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ClipperService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private readonly dialogService = inject(DialogService);\r\n private broadcastInitialized = false;\r\n private _appUri?: string;\r\n get appUri(): string | undefined {\r\n return this._appUri;\r\n }\r\n private _serviceUri: string = '';\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n private _flags: ClipperServiceFlags = ClipperServiceFlags.None;\r\n get flags(): ClipperServiceFlags {\r\n return this._flags;\r\n }\r\n private _loginInfo?: ClipperLoginInfo;\r\n get loginInfo(): ClipperLoginInfo | undefined {\r\n if (!this._loginInfo) {\r\n const loginInfo = localStorage.getItem('clipper_context');\r\n if (loginInfo) {\r\n try {\r\n this._loginInfo = JSON.parse(loginInfo) as ClipperLoginInfo;\r\n } catch { }\r\n }\r\n }\r\n return this._loginInfo;\r\n }\r\n public readonly loggedIn = signal<boolean>(sessionStorage.getItem(\"clipper_oauth_token\") !== null);\r\n public readonly loggingIn = signal<boolean>(false);\r\n public readonly snapshot = signal<ClipperSearchResult | undefined>(undefined);\r\n public readonly supportsRS = signal<boolean>(false);\r\n public readonly referencesSnapshot = signal<ClipperSearchResult | undefined>(undefined);\r\n public readonly dashboard: ClipperDashboard = new ClipperDashboard();\r\n public readonly bag = signal<ClipperDocumentInfo[]>([]);\r\n public readonly bagTotal: Signal<number> = computed(() => this.bag().length);\r\n public readonly visible = signal<boolean>(false);\r\n private _teams: NameValueItem<string>[] = [];\r\n get teams(): NameValueItem<string>[] {\r\n return this._teams;\r\n }\r\n public readonly availableChannels = signal<ClipperAvailableChannel[]>([]);\r\n\r\n public readonly activeChannels: Signal<ClipperAvailableChannel[]> = computed(() => {\r\n return this.availableChannels()?.filter(x => !x.suspended && !x.disabled && x.active === true);\r\n });\r\n public readonly allowTags = signal<boolean>(false);\r\n public readonly pendingNotes = signal<number|undefined>(undefined);\r\n\r\n /**\r\n * Initialises the service with the API base URI, optional app URI, and feature flags.\r\n * @param serviceUri - The base URI of the Clipper REST API.\r\n * @param appUri - Optional URI of the Clipper web application (used to build document links).\r\n * @param flags - Feature flags that control service behaviour. Defaults to `ClipperServiceFlags.None`.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n appUri?: string,\r\n flags: ClipperServiceFlags = ClipperServiceFlags.None,\r\n ) {\r\n\r\n // Create unique client and machine id\r\n if (!sessionStorage.getItem('clipper_client_id')) {\r\n sessionStorage.setItem('clipper_client_id',\r\n (flags && ClipperServiceFlags.Embedded) > 0\r\n ? 'embedded'\r\n : SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._appUri = appUri;\r\n this._flags = flags;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastInitialized) {\r\n this.broadcastInitialized = true;\r\n this.broadcastService.getMessage()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(message => {\r\n if (message.id === ClipperMessages.LOGIN_CHANGED) {\r\n this.login(\r\n undefined,\r\n undefined,\r\n true,\r\n message.data?.oauth ?? undefined,\r\n message.data?.oauthAccessToken ?? undefined).subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.error(\r\n \"Le credenziali di accesso sono cambiate o non sono più valide. Esegui un nuovo accesso.\",\r\n undefined,\r\n \"Errore di Clipper\");\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_FAILED);\r\n } else {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Connesso a Clipper', 1500, 'power');\r\n }\r\n // Load bag\r\n this.loadBag();\r\n }\r\n },\r\n error: () => { console.error(\"Clipper non disponibile.\") } // Avoid unwanted errors on client\r\n });\r\n } else if (message.id === ClipperMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.logout().subscribe(r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.dialogService.error(\"<p>\" + r.message + \"</p><br><br><hr><p class='small'><i>Per eliminare la configurazione di Clipper accedere a:<br><b>menu > personalizza > collegamenti</b></i></p>\", undefined, \"Errore di Clipper\");\r\n }\r\n } else {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Disconnesso da Clipper', 1500, 'power_off');\r\n }\r\n // Empty bag\r\n this.bag.set([]);\r\n }\r\n });\r\n } else {\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n if (this.loggedIn()) {\r\n // Auto login\r\n this.loggingIn.set(false);\r\n // Initialize channels\r\n this.initializeChannels();\r\n // Notify \r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_COMPLETED);\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Ping\r\n */\r\n ping() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/ping?nocache=' + SystemUtils.generateUUID()\r\n )\r\n .pipe(catchError(() => { return EMPTY }))\r\n .subscribe();\r\n }\r\n\r\n\r\n\r\n /**\r\n * Persists the current login context to `localStorage`.\r\n */\r\n storeContext(): void {\r\n localStorage.setItem('clipper_context', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n /**\r\n * Updates the stored login context with the values from a fresh login result.\r\n * @param result - The login result containing the new user context and channel settings.\r\n */\r\n updateContext(result: ClipperLoginResult): void {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n this._loginInfo.context = result.context;\r\n this._loginInfo.channels = result.settings;\r\n this.storeContext();\r\n }\r\n\r\n /**\r\n * Attempts an automatic login using the credentials currently stored in session storage.\r\n * @param onSuccess - Optional callback invoked with the login result value on success.\r\n */\r\n autoLogin(onSuccess?: (value?: any) => void) {\r\n this.login(undefined, undefined, true)\r\n .pipe(finalize(() => this.dialogService.clearBusy()))\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message, undefined, \"Errore in Clipper\");\r\n } else {\r\n if (!r.value.requiresMfa) {\r\n this.dialogService.toast('Connesso a Clipper', 1500, 'power');\r\n }\r\n if (onSuccess) {\r\n onSuccess(r.value);\r\n }\r\n }\r\n },\r\n error: () => { this.dialogService.error(\"Clipper non disponibile.\") }\r\n });\r\n }\r\n\r\n /**\r\n * Performs an automatic logout and clears the stored session.\r\n * @param onSuccess - Optional callback invoked after a successful logout.\r\n */\r\n autoLogout(onSuccess?: () => void) {\r\n this.logout()\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.dialogService.error(r.message, undefined, \"Errore in Clipper\");\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_CHANGED);\r\n } else {\r\n this.dialogService.toast('Disconnesso da Clipper', 1500, 'power_off');\r\n }\r\n },\r\n error: () => { },\r\n complete: () => {\r\n this.dialogService.clearBusy();\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Authenticates the user against the Clipper API, supporting both credential-based and\r\n * OAuth2 login flows.\r\n * @param email - The user's email address (credential login only).\r\n * @param password - The user's password (credential login only).\r\n * @param remember - When `true`, the session is remembered across browser restarts.\r\n * @param oauth - The OAuth2 provider type, when authenticating via SSO.\r\n * @param oauthAccessToken - The OAuth2 bearer token. Defaults to the value stored in session storage.\r\n */\r\n login(email?: string,\r\n password?: string,\r\n remember?: boolean,\r\n oauth?: LoginOAuthType,\r\n oauthAccessToken: string | undefined = sessionStorage.getItem(\"clipper_oauth_token\") ?? undefined) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperLoginResult>>(\r\n this._serviceUri + '/login2',\r\n {\r\n user: oauth ? null : email,\r\n password: oauth ? null : password,\r\n remember: remember,\r\n oauth: oauth\r\n },\r\n {\r\n headers:\r\n !oauth || !oauthAccessToken\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", 'Bearer ' + oauthAccessToken)\r\n })\r\n .pipe(\r\n catchError(err => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<ClipperLoginResult>) => {\r\n if (r.success) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n this._loginInfo.oauth = oauth;\r\n this._loginInfo.remember = remember;\r\n if (!oauth && r.value.requiresMfa) {\r\n // Notify login is pending\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_PENDING);\r\n } else {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Finalises the login flow by updating the stored context, setting the logged-in signal,\r\n * initialising channels, and broadcasting `LOGIN_COMPLETED`.\r\n * @param result - The login result returned by the API.\r\n */\r\n private completeLogin(result: ClipperLoginResult): void {\r\n // Update context info \r\n this.updateContext(result);\r\n this.loggedIn.set(!result.context?.isTemporary);\r\n this.loggingIn.set(false);\r\n // Initialize channels\r\n this.initializeChannels();\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_COMPLETED);\r\n }\r\n /**\r\n * Submits the MFA confirmation code to complete a two-factor login flow.\r\n * @param code - The one-time confirmation code provided to the user.\r\n */\r\n confirmIdentity(code: string) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperLoginResult>>(\r\n this._serviceUri + '/login/confirm/' + code,\r\n {},\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<ClipperLoginResult>) => {\r\n if (r.success) {\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Logs the user out and clears the current session.\r\n * @param forget - When `true`, all stored user credentials are also removed.\r\n */\r\n logout(forget: boolean = false) {\r\n return this.httpClient.post<any>(this._serviceUri + '/logout/?forget=' + forget, {})\r\n .pipe(\r\n finalize(() => {\r\n this.clear(true);\r\n // Clean up\r\n localStorage.removeItem('clipper_context');\r\n }),\r\n catchError((_e) => {\r\n return of([]);\r\n }));\r\n }\r\n /**\r\n * Resets the login state, clears the stored login info, and broadcasts `LOGOUT_COMPLETED`.\r\n */\r\n reset(): void {\r\n // Clear login info\r\n this._loginInfo = undefined;\r\n // Logged out\r\n this.loggedIn.set(false);\r\n // Reset channels\r\n this.availableChannels.set([]);\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGOUT_COMPLETED);\r\n }\r\n /**\r\n * Clears all session-storage authentication keys and resets the login state.\r\n * @param clearOAuthToken - When `true`, the OAuth bearer token is also removed.\r\n */\r\n clear(clearOAuthToken: boolean = false): void {\r\n // Clear local storage\r\n sessionStorage.removeItem('clipper_auth');\r\n sessionStorage.removeItem('clipper_oauth');\r\n if (clearOAuthToken) {\r\n sessionStorage.removeItem('clipper_oauth_token');\r\n }\r\n\r\n // Reset login\r\n this.reset();\r\n }\r\n /**\r\n * Applies a new dashboard result: updates channel settings, dashboard counters, and\r\n * re-initialises the available-channels signal.\r\n * @param value - The dashboard result containing updated channel and counter data.\r\n */\r\n setChannelsState(value: ClipperDashboardResult): void {\r\n // Update channels\r\n if (this._loginInfo) {\r\n this._loginInfo.channels = value.channels ?? [];\r\n }\r\n // Update dashboard\r\n this.dashboard.documentUpdates = value.documentUpdates;\r\n this.dashboard.expiredDeadlines = value.expiredDeadlines;\r\n this.dashboard.expiringDeadlines = value.expiringDeadlines;\r\n this.dashboard.isTrial = value.isTrial;\r\n this.dashboard.items.set(value.items ?? []);\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n this.storeContext();\r\n this.initializeChannels();\r\n }\r\n\r\n /**\r\n * Replaces the stored channel settings and re-initialises the available-channels signal.\r\n * @param channels - The new channel settings to store and activate.\r\n */\r\n setChannels(channels: ClipperChannelSettings[]): void {\r\n if (this._loginInfo) {\r\n this._loginInfo.channels = channels;\r\n this.storeContext();\r\n this.initializeChannels();\r\n }\r\n }\r\n\r\n /**\r\n * Rebuilds the `availableChannels` signal from the current login context.\r\n */\r\n private initializeChannels(): void {\r\n if (this.loginInfo) {\r\n const channels: ClipperAvailableChannel[] = [];\r\n this.loginInfo.channels?.forEach(n => {\r\n const channelSubscription = this.loginInfo?.context?.channels?.find(x => x.channel === n.channelId);\r\n n.isSuspended = channelSubscription?.isSuspended === true;\r\n const channel = ClipperChannels.find(x => x.value === n.channelId) as ClipperAvailableChannel;\r\n if (channel) {\r\n channel.disabled = !n.isActive\r\n channel.suspended = n.isSuspended === true;\r\n channel.active = n.isActive === true && n.isEnabled === true;\r\n channels.push(channel);\r\n }\r\n });\r\n this.availableChannels.set(channels);\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the active state of available channels based on the supplied selection list.\r\n * @param values - The selected channel items; channels absent from this list are deactivated.\r\n */\r\n updateChannels(values: NameValueItem<ClipperChannel>[]): void {\r\n this.availableChannels().forEach(channel => {\r\n if (!channel.disabled) {\r\n channel.active = values?.findIndex(x => x.value === channel.value) !== -1;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Requests a new one-time password for the given repository.\r\n * @param id - The repository ID for which the OTP should be generated.\r\n */\r\n newOTP(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperOTPInfo>>(\r\n this._serviceUri + '/otp/new/?id=' + id,\r\n );\r\n }\r\n\r\n /**\r\n * Load Ars events calendar\r\n */\r\n events(params: ClipperSearchArsEventsParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchArsEventsResult>>(\r\n this._serviceUri + '/ars/events',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Query documents\r\n */\r\n query(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Get facets for a query\r\n */\r\n queryFacets(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this._serviceUri + '/documents/facets',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Update document state\r\n */\r\n updateState(params: ClipperDocumentUpdateStateParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/documents/state/update',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Export a document in pdf format\r\n */\r\n exportPdf(id: string) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/documents/export/' + id,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Export document list (query or selected items) or export deadlines as ics\r\n */\r\n export(params: ClipperExportDocumentsParams) {\r\n return this.httpClient.post(\r\n this._serviceUri + '/documents/export',\r\n params,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Send documents link by email\r\n */\r\n sendTo(params: ClipperSendDocumentsByEmailParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/documents/send',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Sends an email notification about a document note update to the specified recipients.\r\n * @param params - The notification parameters including recipients and note details.\r\n */\r\n notifyNoteTo(params: ClipperNotifyDocumentNoteParams) {\r\n return this.httpClient.post<ApiResult<UpdateResultModel<ClipperDocumentNoteTracking>>>(\r\n this._serviceUri + '/documents/notes/notify',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Display a page the full document report\r\n */\r\n report(id: string) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/documents/report/' + id,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Get document comment\r\n */\r\n comment(id: string) {\r\n return this.httpClient.get<ApiResult<string>>(\r\n this._serviceUri + '/documents/comment/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Get document info\r\n */\r\n info(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentInfo>>(\r\n this._serviceUri + '/documents/info/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Get document structure\r\n */\r\n index(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentStructure>>(\r\n this._serviceUri + '/documents/structure/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Get document last update\r\n */\r\n metadata(id: string) {\r\n return this.httpClient.get<ApiResult<{ item1?: string; item2?: ClipperDocumentNote[] }>>(\r\n this._serviceUri + '/documents/metadata/' + id\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Query document references\r\n */\r\n references(params: ClipperReferencesSearchParams) {\r\n let mode = params.mode;\r\n if (!mode) mode = ClipperQueryReferencesMode.ReferencesIn;\r\n switch (mode) {\r\n case ClipperQueryReferencesMode.ReferencesIn:\r\n case ClipperQueryReferencesMode.ReferencesOut:\r\n params.mode = mode;\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents/references',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.ChangesIn:\r\n case ClipperQueryReferencesMode.ChangesOut:\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents/changes',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.Juris:\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents/juris',\r\n params\r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Get facets for a document references\r\n */\r\n referencesFacets(params: ClipperReferencesSearchParams) {\r\n let mode = params.mode ?? ClipperQueryReferencesMode.ReferencesIn;\r\n switch (mode) {\r\n case ClipperQueryReferencesMode.ReferencesIn:\r\n case ClipperQueryReferencesMode.ReferencesOut:\r\n params.mode = mode;\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this._serviceUri + '/documents/references/facets',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.ChangesIn:\r\n case ClipperQueryReferencesMode.ChangesOut:\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this._serviceUri + '/documents/changes/facets',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.Juris:\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this._serviceUri + '/documents/juris/facets',\r\n params\r\n );\r\n default: return null;\r\n }\r\n }\r\n\r\n /**\r\n * Wrap document rendering to allow token refresh\r\n */\r\n preRender() {\r\n return this.httpClient.get<ApiResult<boolean>>(\r\n this._serviceUri + '/documents/pre-render?nocache=' + SystemUtils.generateUUID()\r\n );\r\n }\r\n\r\n /**\r\n * Get document juris articles\r\n */\r\n jurisArticles(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents/juris/articles',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Get deadlines snapshot based on the deadlines\r\n */\r\n deadlinesSnapshot(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchCalendarSnapshotResult>>(\r\n this._serviceUri + '/documents/calendar/snapshot',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Retrieve the taxonomy\r\n */\r\n getTaxonomy(params?: ClipperTaxonomyParams) {\r\n return this.httpClient.post<ApiResult<FolderTree>>(\r\n this._serviceUri + '/taxonomy',\r\n params ?? { model: 0, countItems: false }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve topics\r\n */\r\n getTopics() {\r\n return this.httpClient.get<ApiResult<NameValueItem<string>[]>>(\r\n this._serviceUri + '/topics'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve topics as tree\r\n */\r\n getTopicsAsTree() {\r\n return this.httpClient.get<ApiResult<FolderTree>>(\r\n this._serviceUri + '/topics2'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve tags\r\n */\r\n getTags() {\r\n return this.httpClient.get<ApiResult<NameValueItem<string>[]>>(\r\n this._serviceUri + '/tags'\r\n );\r\n }\r\n\r\n\r\n ///\r\n // DASHBOARD\r\n ///\r\n /**\r\n * Retrieve current dashboard\r\n */\r\n loadDashboard() {\r\n return this.httpClient\r\n .post<ApiResult<ClipperDashboardResult>>(\r\n this._serviceUri + '/account/dashboard',\r\n { refreshing: true }\r\n ).subscribe((r: ApiResult<ClipperDashboardResult>) => {\r\n if (r.success) {\r\n this.dashboard.documentUpdates = r.value.documentUpdates;\r\n this.dashboard.expiredDeadlines = r.value.expiredDeadlines;\r\n this.dashboard.expiringDeadlines = r.value.expiringDeadlines;\r\n this.dashboard.isTrial = r.value.isTrial;\r\n this.dashboard.items.set(r.value.items ?? []);\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves documents updated in the last 15 days for the given search parameters.\r\n * @param params - The search parameters to filter results.\r\n */\r\n last15Days(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperLastDaysResult>>(\r\n this._serviceUri + '/account/last-15-days',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Adjusts the unread-item counter for the given module and broadcasts a dashboard update.\r\n * @param module - The Clipper module whose counter should be adjusted.\r\n * @param model - Optional document model to further scope the counter update.\r\n * @param increment - The signed increment to apply (use negative values to decrement).\r\n */\r\n updateUnreadItems(module: ClipperModule, model?: ClipperModel, increment?: number): void {\r\n increment ??= 0;\r\n if (increment !== 0) {\r\n this.dashboard.updateUnreadItems(module, model, increment);\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n }\r\n\r\n\r\n ///\r\n // BAG - WORKING DOCUMENTS\r\n ///\r\n\r\n /**\r\n * Load working documents\r\n */\r\n loadBag() {\r\n return this.httpClient\r\n .get<ApiResult<ClipperUserWorkingDocument[]>>(\r\n this.serviceUri + '/documents/working'\r\n )\r\n .subscribe(\r\n r => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n if (r.value) {\r\n const items: ClipperDocumentInfo[] = [];\r\n r.value.forEach(n => {\r\n if (n.documentDescriptor) {\r\n const documentInfo = JSON.parse(n.documentDescriptor);\r\n if (documentInfo) {\r\n if (!n.documentId) {\r\n n.documentId = documentInfo.DocumentId || documentInfo.Id;\r\n }\r\n n.title1 = documentInfo.Title1 ?? documentInfo.Title2;\r\n n.title2 = documentInfo.Title1 ? documentInfo.Title2 : undefined;\r\n }\r\n n.documentDescriptor = undefined;\r\n items.push(n);\r\n }\r\n });\r\n this.bag.set(items);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adds one or more documents to the working documents bag.\r\n * @param documentIds - The IDs of the documents to add.\r\n */\r\n addToBag(documentIds: string[]) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperUserWorkingDocument[]>>(\r\n this.serviceUri + '/documents/working/add',\r\n { documentIds: documentIds }\r\n )\r\n .subscribe((r: ApiResult<ClipperUserWorkingDocument[]>) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n if (r.value) {\r\n const newItems: ClipperDocumentInfo[] = [];\r\n r.value.forEach(n => {\r\n if (n.documentDescriptor) {\r\n const documentInfo = JSON.parse(n.documentDescriptor);\r\n if (documentInfo) {\r\n n.documentId = documentInfo.DocumentId || documentInfo.Id;\r\n n.title1 = documentInfo.Title1 ?? documentInfo.Title2;\r\n n.title2 = documentInfo.Title1 ? documentInfo.Title2 : null;\r\n }\r\n n.documentDescriptor = undefined;\r\n newItems.push(n);\r\n }\r\n });\r\n if (newItems.length > 0) {\r\n this.bag.update((values: any) => [...values, ...newItems]);\r\n }\r\n this.dialogService.toast('Operazione completata con successo.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Removes a document from the working documents bag.\r\n * @param documentId - The ID of the document to remove.\r\n */\r\n removeFromBag(documentId: string) {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.serviceUri + '/documents/working/delete',\r\n { documentIds: [documentId] }\r\n )\r\n .subscribe((r: ApiResult<number>) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n const p = this.bag().findIndex((n: any) => n.documentId === documentId);\r\n if (p !== -1) {\r\n this.bag.update((values: any) => {\r\n values.splice(p, 1);\r\n return [...values];\r\n });\r\n this.dialogService.toast('Operazione completata con successo.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear all working documents\r\n */\r\n clearBag() {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.serviceUri + '/documents/working/delete',\r\n { deleteAll: true }\r\n )\r\n .subscribe((r: ApiResult<number>) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n this.bag.set([]);\r\n this.dialogService.toast('Operazione completata con successo.');\r\n }\r\n });\r\n }\r\n\r\n ///\r\n // WORKING SEARCHES\r\n ///\r\n\r\n /**\r\n * Retrieves the saved searches for the given module.\r\n * @param module - The Clipper module whose saved searches to load.\r\n */\r\n loadSearches(module: ClipperModule) {\r\n return this.httpClient\r\n .get<ApiResult<ClipperUserSearch[]>>(\r\n this.serviceUri + '/documents/searches/?module=' + module\r\n )\r\n }\r\n\r\n /**\r\n * Persists a user search configuration on the server.\r\n * @param params - The search configuration to save.\r\n */\r\n saveSearch(params: ClipperUserSearch) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperUserSearch>>(\r\n this.serviceUri + '/documents/searches/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes a saved search by its ID.\r\n * @param id - The ID of the saved search to remove.\r\n */\r\n deleteSearch(id: number) {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.serviceUri + '/documents/searches/delete',\r\n { id: id }\r\n );\r\n }\r\n\r\n\r\n\r\n ///\r\n // CALENDAR\r\n ///\r\n /**\r\n * Query calendar\r\n */\r\n queryCalendar(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperCalendarSearchResult>>(\r\n this._serviceUri + '/calendar',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperCalendarSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this._teams = r.value.teams;\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get the calendar snapshot\r\n */\r\n calendarSnapshot(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchCalendarSnapshotResult>>(\r\n this._serviceUri + '/calendar/snapshot',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes one or more calendar deadlines by ID.\r\n * @param ids - The IDs of the deadlines to delete.\r\n */\r\n deleteCalendarDeadlines(ids: string[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/calendar/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Copies one or more calendar deadlines using the given parameters.\r\n * @param params - The copy operation parameters.\r\n */\r\n copyCalendarDeadlines(params: ClipperCalendarCopyDeadlinesParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/calendar/copy',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Marks the given calendar deadline as closed.\r\n * @param id - The ID of the deadline to close.\r\n */\r\n closeCalendarDeadline(id: string) {\r\n return this.httpClient.post<ApiResult<ClipperDeadlineInfo>>(\r\n this._serviceUri + '/calendar/close',\r\n { id: id }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a calendar deadline.\r\n * @param params - The deadline data to save.\r\n */\r\n saveCalendarDeadline(params: ClipperCalendarSaveDeadlineParams) {\r\n return this.httpClient.post<ApiResult<ClipperDeadlineInfo[]>>(\r\n this._serviceUri + '/calendar/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves a single calendar deadline by its ID.\r\n * @param id - The ID of the deadline to retrieve.\r\n */\r\n getCalendarDeadline(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDeadlineInfo>>(\r\n this._serviceUri + '/calendar/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Exports the selected deadlines in iCalendar (.ics) format.\r\n * @param ids - The IDs of the deadlines to export.\r\n */\r\n exportCalendarDeadlines(ids: string[]) {\r\n return this.httpClient.post(\r\n this._serviceUri + '/calendar/export',\r\n { ids: ids },\r\n {\r\n responseType: 'blob'\r\n }\r\n );\r\n }\r\n\r\n ///\r\n // ARCHIVE\r\n ///\r\n /**\r\n * Retrieves all archive folders matching the given search parameters.\r\n * @param params - The folder search parameters.\r\n */\r\n getArchiveFolders(params: ClipperArchiveFoldersSearchParams) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperArchiveFoldersSearchResult>>(\r\n this._serviceUri + '/archive/folders',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperArchiveFoldersSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this._teams = r.value.teams;\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates an archive folder.\r\n * @param params - The folder data to save.\r\n */\r\n saveArchiveFolder(params: Folder) {\r\n return this.httpClient.post<ApiResult<Folder>>(\r\n this._serviceUri + '/archive/folders/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Exports archive folders as a downloadable file.\r\n * @param id - The folder ID to export, or `undefined` to export all folders.\r\n * @param teamId - The optional team ID. Defaults to `undefined` (personal workspace).\r\n */\r\n exportArchiveFolders(id?: string, teamId?: string) {\r\n let url = this._serviceUri + '/archive/export/?';\r\n if (id) {\r\n url += 'id=' + id;\r\n }\r\n if (teamId) {\r\n if (id) {\r\n url += '&';\r\n }\r\n url += 'team=' + teamId;\r\n }\r\n return this.httpClient.get(\r\n url,\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/octet-stram'\r\n }),\r\n responseType: 'blob'\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Uploads and imports archive folders from a file.\r\n * @param params - The import parameters including the source file and destination folder.\r\n */\r\n importArchiveFolders(params: ClipperArchiveFoldersImportParams) {\r\n // Prepare form\r\n const formData = new FormData();\r\n formData.append(params.file.name, params.file);\r\n formData.append('sourceFileName', params.file.name);\r\n formData.append('overwrite', params.overwrite === true ? \"true\" : \"false\");\r\n if (params.destFolderId) {\r\n formData.append('destFolderId', params.destFolderId);\r\n }\r\n if (params.teamId) {\r\n formData.append('teamId', params.teamId);\r\n }\r\n // Create request\r\n return this.httpClient.request(\r\n new HttpRequest(\r\n 'POST',\r\n this._serviceUri + '/archive/import/',\r\n formData,\r\n { reportProgress: true }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves archive files and folders matching the given search parameters.\r\n * @param params - The archive files search parameters.\r\n */\r\n queryArchiveItems(params: ClipperArchiveFilesSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperArchiveFilesSearchResult>>(\r\n this._serviceUri + '/archive/files',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes one or more archive files or folders.\r\n * @param params - The delete operation parameters.\r\n */\r\n deleteArchiveItems(params: ClipperArchiveFilesDeleteParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/archive/files/delete',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Copies archive files or folders to a destination folder.\r\n * @param params - The copy operation parameters.\r\n */\r\n copyArchiveItems(params: ClipperArchiveFilesCopyParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/archive/files/copy',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Uploads and saves an archive file using multipart form data.\r\n * @param params - The file metadata and binary content to save.\r\n */\r\n saveArchiveFile(params: ClipperArchiveFileInfo) {\r\n // Prepare form\r\n const formData = new FormData();\r\n if (params.file) formData.append(params.file.file.name, params.file.file);\r\n if (params.id) formData.append('id', params.id);\r\n if (params.folderId) {\r\n formData.append('folderId', params.folderId);\r\n }\r\n if (params.topicId && params.topicPath) {\r\n formData.append('topicId', params.topicId);\r\n formData.append('topicPath', params.topicPath);\r\n }\r\n if (params.title1) formData.append('title1', params.title1);\r\n if (params.title2) formData.append('title2', params.title2);\r\n if (params.origin) formData.append('origin', params.origin);\r\n if (params.originDescription) {\r\n formData.append('originDescription', params.originDescription);\r\n }\r\n if (params.documentId) formData.append('documentId', params.documentId);\r\n if (params.documentIds) formData.append('documentIds', params.documentIds);\r\n if (params.binaryId) formData.append('binaryId', params.binaryId?.toString());\r\n if (params.tags) formData.append('tags', params.tags);\r\n if (params.notes) formData.append('notes', params.notes);\r\n if (params.fileName) formData.append('fileName', params.fileName);\r\n if (params.fileType) formData.append('fileType', (params.fileType as number).toString());\r\n if (params.storageType) formData.append('storageType', (params.storageType as number).toString());\r\n if (params.model) formData.append('model', (params.model as number).toString());\r\n\r\n // Create request\r\n return this.httpClient.request(\r\n new HttpRequest(\r\n 'POST',\r\n this._serviceUri + '/archive/files/save',\r\n formData,\r\n { reportProgress: true }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the metadata for a single archive file.\r\n * @param id - The ID of the archive file to retrieve.\r\n */\r\n getArchiveFile(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperArchiveFileInfo>>(\r\n this._serviceUri + '/archive/files/' + id);\r\n }\r\n\r\n /**\r\n * Downloads the binary content of an archive file.\r\n * @param id - The binary ID of the file to download.\r\n * @param otp - An optional one-time password for authenticated downloads.\r\n */\r\n downloadArchiveFile(id: number, otp?: string) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/archive/files/download/?id=' + id + '&otp=' + (otp ?? ''),\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n ///\r\n // ACCOUNT AND SETTINGS\r\n ///\r\n\r\n\r\n /**\r\n * Resets the user's password using the provided parameters.\r\n * @param params - The new password and confirmation data.\r\n */\r\n resetPassword(params: ResetPasswordDialogResult) {\r\n return this.httpClient.post<ApiResult<ResetPasswordDialogResult>>(\r\n this._serviceUri + '/account/password/reset',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Initiates a password recovery flow by sending a reset link to the user's email.\r\n * @param params - The password recovery request data.\r\n */\r\n recoverPassword(params: RecoverPasswordDialogResult) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/password/recover',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Gets the current user account settings \r\n */\r\n getSettings() {\r\n return this.httpClient.get<ApiResult<ClipperSettingsInfo>>(\r\n this._serviceUri + '/account/settings'\r\n );\r\n }\r\n\r\n /**\r\n * Updates user account settings and applies any channel configuration changes.\r\n * @param params - A map of settings key-value pairs to update.\r\n */\r\n updateSettings(params: any) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/settings/update',\r\n params\r\n ).pipe(\r\n map(r => {\r\n if (r.success) {\r\n if (params.channels) {\r\n this.setChannels(params.channels);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Saves updated channel activation states to the server and applies the new dashboard result.\r\n * @param params - The channel state update parameters.\r\n */\r\n updateChannelsState(params: ClipperUpdateChannelsStateParams) {\r\n return this.httpClient.post<ApiResult<ClipperDashboardResult>>(\r\n this._serviceUri + '/account/settings/channels/update',\r\n params\r\n ).pipe(\r\n map(r => {\r\n if (r.success) {\r\n this.setChannelsState(r.value);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n ///\r\n // TRIAL \r\n ///\r\n\r\n /**\r\n * Get trial info\r\n */\r\n private getTrialInfo() {\r\n return this.httpClient.get<ApiResult<ClipperUserTrialInfo>>(\r\n this._serviceUri + '/account/trial'\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the trial status from the server and updates the stored login context.\r\n */\r\n updateTrialInfo(): void {\r\n if (!this._loginInfo || this._loginInfo?.context?.hasTrial === false)\r\n return; // Not supported\r\n this.getTrialInfo().subscribe((r: ApiResult<ClipperUserTrialInfo>) => {\r\n if (r.success) {\r\n if (this._loginInfo?.context) {\r\n if (r.value) {\r\n this._loginInfo.context.hasTrial = true;\r\n this._loginInfo.context.trialInfo = r.value;\r\n } else {\r\n this._loginInfo.context.hasTrial = false;\r\n this._loginInfo.context.trialInfo = undefined;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ///\r\n // LINKS\r\n ///\r\n\r\n /**\r\n * Creates or updates a user link record.\r\n * @param item - The user link data to save.\r\n */\r\n saveLink(item: ClipperUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Deletes a user link record.\r\n * @param item - The user link to remove.\r\n */\r\n deleteLink(item: ClipperUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/delete',\r\n item\r\n );\r\n }\r\n\r\n ///\r\n // TEAMS\r\n ///\r\n\r\n /**\r\n * Renames the current user's team.\r\n * @param newName - The new display name for the team.\r\n */\r\n renameTeam(newName: string) {\r\n return this.httpClient.post<ApiResult<ClipperTeamInfo>>(\r\n this._serviceUri + '/account/teams/update',\r\n { title: newName }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the list of teams available to the current user.\r\n * @param params - The teams search parameters.\r\n */\r\n getTeams(params: ClipperTeamsSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperTeamsSearchResult>>(\r\n this._serviceUri + '/account/teams',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperTeamsSearchResult>) => {\r\n // Store teams\r\n if (!params.adminsOnly) {\r\n this._teams = r.value.items;\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the members of a team matching the given search parameters.\r\n * @param params - The team members search parameters.\r\n */\r\n getTeamMembers(params: ClipperTeamsSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperTeamMembersSearchResult>>(\r\n this._serviceUri + '/account/teams/members',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Removes the specified members from the team.\r\n * @param teamId - The ID of the team. \r\n * @param ids - The numeric IDs of the team members to remove.\r\n */\r\n deleteTeamMembers(teamId: string, ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/account/teams/members/delete',\r\n { teamId: teamId, ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a team member record.\r\n * @param item - The team member data to save.\r\n */\r\n saveTeamMember(item: ClipperTeamMemberInfo) {\r\n return this.httpClient.post<ApiResult<ClipperTeamMemberInfo>>(\r\n this._serviceUri + '/account/teams/members/save',\r\n item\r\n );\r\n }\r\n\r\n\r\n ///\r\n // CONTACTS\r\n ///\r\n\r\n\r\n /**\r\n * Retrieves contacts matching the given search parameters.\r\n * @param params - The contacts search parameters.\r\n */\r\n queryContacts(params: ClipperContactsSearchParams) {\r\n return this.httpClient.post<ApiResult<QueryResultModel<ClipperContactInfo>>>(\r\n this._serviceUri + '/account/contacts',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Deletes the specified contacts.\r\n * @param ids - The numeric IDs of the contacts to remove.\r\n */\r\n deleteContacts(ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/account/contacts/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a contact record.\r\n * @param item - The contact data to save.\r\n */\r\n saveContact(item: ClipperContactInfo) {\r\n return this.httpClient.post<ApiResult<ClipperContactInfo>>(\r\n this._serviceUri + '/account/contacts/save',\r\n item\r\n );\r\n }\r\n\r\n\r\n ///\r\n // NOTES\r\n ///\r\n\r\n\r\n /**\r\n * Retrieves document notes matching the given search parameters.\r\n * @param params - The notes search parameters.\r\n */\r\n queryNotes(params: ClipperNotesSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperNotesSearchResult>>(\r\n this._serviceUri + '/account/notes',\r\n params\r\n ).pipe(\r\n map((r: ApiResult<ClipperNotesSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this._teams = r.value.teams;\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Deletes the specified document notes.\r\n * @param ids - The numeric IDs of the notes to remove.\r\n */\r\n deleteNotes(ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/account/notes/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a document note.\r\n * @param item - The note data to save.\r\n */\r\n saveNote(item: ClipperDocumentNote) {\r\n return this.httpClient.post<ApiResult<ClipperDocumentNote>>(\r\n this._serviceUri + '/account/notes/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the tracking history for the given document note.\r\n * @param id - The numeric ID of the note whose tracking records to retrieve.\r\n */\r\n getNoteTrackings(id: number) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentNoteTracking[]>>(\r\n this._serviceUri + '/account/notes/trackings/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the count of troubled tracking notifications for document notes, \r\n * which can be used to display an unread counter in the UI.\r\n */\r\n countNotesTrackingsTroubled() {\r\n return this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/account/notes/trackings/troubled'\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BroadcastService, ErrorInfo } from '@arsedizioni/ars-utils/core';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { ClipperServiceFlags } from '../definitions';\r\nimport { ClipperService } from '../services/clipper.service';\r\nimport { ClipperMessages } from '../messages';\r\n\r\n/** Minimum milliseconds between consecutive error broadcasts (debounce guard). */\r\nconst ERROR_DEBOUNCE_MS = 5000;\r\n\r\n/**\r\n * HTTP interceptor that attaches Clipper authentication headers to every request\r\n * targeting the Clipper service, and broadcasts user-friendly error messages\r\n * when the server returns an error response.\r\n */\r\n@Injectable()\r\nexport class ClipperAuthInterceptor implements HttpInterceptor {\r\n private readonly clipperService = inject(ClipperService);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private lastErrorTime = -1;\r\n\r\n /**\r\n * Intercepts every outgoing HTTP request.\r\n * When the request targets the Clipper service URI, attaches credentials and\r\n * a client-ID header, then pipes the response through an error handler.\r\n * @param request - The outgoing HTTP request.\r\n * @param next - The next handler in the interceptor chain.\r\n * @returns An observable of the HTTP event stream.\r\n */\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (!request.url.startsWith(this.clipperService.serviceUri)) {\r\n return next.handle(request);\r\n }\r\n\r\n const authenticatedRequest = request.clone({\r\n withCredentials: true,\r\n setHeaders: {\r\n 'ngsw-bypass': 'ngsw-bypass',\r\n 'X-Client-Id': sessionStorage.getItem('clipper_client_id') ?? ''\r\n }\r\n });\r\n\r\n return next.handle(authenticatedRequest).pipe(\r\n catchError((error: unknown) => {\r\n this.handleError(error);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Processes an HTTP error, broadcasting a user-friendly message when appropriate.\r\n * Errors are debounced: only one message is sent per `ERROR_DEBOUNCE_MS` window.\r\n * @param error - The raw error value thrown by the HTTP layer.\r\n */\r\n private handleError(error: unknown): void {\r\n if (!(error instanceof HttpErrorResponse)) return;\r\n if (!error.url?.startsWith(this.clipperService.serviceUri)) return;\r\n\r\n const errorStatus = error.status;\r\n const shouldNotify =\r\n (errorStatus > 0 && errorStatus < 500) ||\r\n (this.clipperService.flags & ClipperServiceFlags.NotifySystemErrors) > 0;\r\n\r\n if (!shouldNotify) return;\r\n\r\n const now = Date.now();\r\n if (now - this.lastErrorTime <= ERROR_DEBOUNCE_MS) return;\r\n this.lastErrorTime = now;\r\n\r\n let message: string;\r\n switch (errorStatus) {\r\n case 0:\r\n message = \"In questo momento Clipper non è disponibile. Riprova tra qualche minuto.\";\r\n break;\r\n case 403:\r\n message = \"Non hai i permessi necessari per eseguire l'operazione richiesta.\";\r\n break;\r\n default:\r\n message = (\r\n (error.error as Record<string, string> | null)?.['message'] ??\r\n error.message ??\r\n \"Impossibile eseguire l'operazione richiesta.\"\r\n ).replaceAll('\\r\\n', '</p><p>');\r\n break;\r\n }\r\n\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.ERROR,\r\n {\r\n invalidateSession: errorStatus === 405 || errorStatus === 410,\r\n message,\r\n title: \"Errore in Clipper\",\r\n errorStatus,\r\n service: this.clipperService.serviceUri\r\n } as ErrorInfo\r\n );\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class ArsClipperCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './notes';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/clipper.service';\r\n\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\n\r\nexport * from './common/common.module';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-clipper.common.mjs","sources":["../../../projects/ars-utils/clipper.common/common/messages.ts","../../../projects/ars-utils/clipper.common/common/definitions.ts","../../../projects/ars-utils/clipper.common/common/notes.ts","../../../projects/ars-utils/clipper.common/common/services/clipper.service.ts","../../../projects/ars-utils/clipper.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/clipper.common/common/common.module.ts","../../../projects/ars-utils/clipper.common/public_api.ts","../../../projects/ars-utils/clipper.common/arsedizioni-ars-utils-clipper.common.ts"],"sourcesContent":["export const ClipperMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n // Error\r\n ERROR: '§clipper-error',\r\n \r\n // Login\r\n LOGIN_CHANGED: '§clipper-login-changed',\r\n LOGIN_COMPLETED: '§clipper-login-completed',\r\n LOGOUT_COMPLETED: '§clipper-logout-completed',\r\n LOGIN_PENDING: '§clipper-login-pending',\r\n LOGIN_FAILED: '§clipper-login-failed',\r\n LOGOUT: '§clipper-logout',\r\n\r\n // Document\r\n DOCUMENT_READ: '$clipper-document-read',\r\n DOCUMENT_NAVIGATE: '$clipper-document-navigate',\r\n DOCUMENT_NAVIGATED: '$clipper-document-navigated',\r\n DOCUMENT_SELECTED: '$clipper-document-selected',\r\n DOCUMENT_SELECTED_INNER: '$clipper-document-selected_inner',\r\n\r\n // Settings\r\n SETTINGS_CHANGED: '$clipper-settings-changed',\r\n \r\n // Commands\r\n COMMAND_ARCHIVE_ADD: '$clipper-command-archive-add',\r\n COMMAND_CALENDAR_ADD: '$clipper-command-calendar-add',\r\n COMMAND_WORKING_OPEN: '$clipper-command-working-documents-open',\r\n COMMAND_WORKING_ADD: '$clipper-command-working-documents-add',\r\n COMMAND_NOTES_ADD: '$clipper-command-notes-add',\r\n COMMAND_NOTES_DELETE: '$clipper-command-notes-delete',\r\n COMMAND_NOTES_UPDATE: '$clipper-command-notes-update',\r\n COMMAND_SEARCH_RESTORED: '$clipper-command-search-restored',\r\n COMMAND_SEARCH_EXECUTED: '$clipper-command-search-executed',\r\n COMMAND_SEARCH_EMPTY_RESULT: '$clipper-command-search-empty-result',\r\n COMMAND_HISTORY_OPEN: '$clipper-command-history-open',\r\n COMMAND_DASHBOARD_UPDATED: '$clipper-command-dashboard-updated',\r\n \r\n\r\n // AI\r\n AI_CONCERN_ME: '$clipper-ai-concernme',\r\n AI_EXPLAIN: '$clipper-ai-explain',\r\n AI_COMMENT: '$clipper-ai-comment',\r\n AI_NEWS: '$clipper-ai-news',\r\n\r\n // Interop\r\n INTEROP_RS_NEW_LAW: '$clipper-interop-rs-new-law',\r\n INTEROP_RS_NEW_ACTIVITY: '$clipper-interop-rs-new-activity',\r\n INTEROP_RS_USAGE_REPORT: '$clipper-interop-rs-usage-report',\r\n\r\n // Updates\r\n UPDATE_RELOAD: '§update-reload',\r\n};\r\n","import { computed, Signal, signal } from '@angular/core';\r\nimport { Folder, LoginResult, NameValueItem, QueryModel, QueryResultModel } from '@arsedizioni/ars-utils/core';\r\nimport { SendToDialogResult } from '@arsedizioni/ars-utils/ui.application';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\nexport interface EditedEventArgs<T> {\r\n data: T;\r\n isNew?: boolean;\r\n}\r\n\r\nexport interface EditDialogData<T> {\r\n currentItem?: T;\r\n isEditable?: boolean;\r\n parentId?: number;\r\n}\r\n\r\n\r\nexport interface EditDialogCompleted<T> {\r\n data: T;\r\n dismissed?: boolean;\r\n isNew?: boolean;\r\n preview?: boolean;\r\n}\r\n\r\n\r\n\r\nexport enum ClipperServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1,\r\n Embedded = 1 << 2\r\n}\r\n\r\nexport enum ClipperRecurrenceType {\r\n Year = 1,\r\n Month = 2,\r\n Day = 3\r\n}\r\n\r\nexport const ClipperRecurrenceTypes: NameValueItem<ClipperRecurrenceType>[] = [\r\n { name: 'Anni', value: ClipperRecurrenceType.Year },\r\n { name: 'Mesi', value: ClipperRecurrenceType.Month },\r\n { name: 'Giorni', value: ClipperRecurrenceType.Day }\r\n]\r\n\r\nexport enum ClipperSelectionMode {\r\n None = 0,\r\n Single = 1,\r\n TwoOrMore = 2,\r\n Multi = 3\r\n}\r\n\r\n\r\n\r\nexport enum ClipperModuleGroup {\r\n Home = 0,\r\n NormativaVigente = 1,\r\n UltimeNovità = 2,\r\n ParApprofondire = 3,\r\n DGInfo = 4,\r\n Giurisprudenza = 5,\r\n Calendario = 11,\r\n Archivio = 12,\r\n Evolution = 201,\r\n Ars = 202,\r\n Ricerca = 99\r\n}\r\n\r\nexport enum ClipperModule {\r\n NormativaVigente = 4,\r\n News = 1,\r\n GazzetteBollettiniEFontiDiverse = 2,\r\n Giurisprudenza = 5,\r\n ModificheAbrogazioniERinvii = 3,\r\n ScadenzeESegnalazioni = 12,\r\n AllerteAlimentari = 8,\r\n Approfondimenti = 6,\r\n QuesitiECasiRisolti = 10,\r\n MetodiDiAnalisi = 11,\r\n DGInfo = 61,\r\n Ricerca = 99,\r\n GiurisprudenzaRecente = 18\r\n\r\n}\r\n\r\nexport enum ClipperModel {\r\n Unknown = 0,\r\n AggiornamentoNormativo = 2,\r\n News = 3,\r\n Articoli = 4,\r\n Juris = 5,\r\n Quesiti = 8,\r\n NormativaVigente = 9,\r\n Scadenze = 10,\r\n Coordinamento = 11,\r\n AllerteAlimentari = 13,\r\n MetodiDiAnalisi = 14,\r\n GiurisprudenzaRecente = 18,\r\n Segnalazioni = 20,\r\n UltimeNovità = 21\r\n}\r\n\r\nexport const ClipperModels: NameValueItem<number>[] = [\r\n { value: ClipperModel.AggiornamentoNormativo, name: \"Testi storici\" },\r\n { value: ClipperModel.News, name: 'News' },\r\n { value: ClipperModel.Articoli, name: 'Articoli' },\r\n { value: ClipperModel.Juris, name: 'Note a sentenza' },\r\n { value: ClipperModel.GiurisprudenzaRecente, name: 'Giurisprudenza' },\r\n { value: ClipperModel.Quesiti, name: 'Quesiti' },\r\n { value: ClipperModel.NormativaVigente, name: 'Normativa vigente' },\r\n { value: ClipperModel.Scadenze, name: 'Scadenze' },\r\n { value: ClipperModel.AllerteAlimentari, name: 'Allerte alimentari' },\r\n { value: ClipperModel.Coordinamento, name: 'Modifiche e abrogazioni' },\r\n]\r\n\r\nexport const ClipperModuleGroups: NameValueItem<number>[] = [\r\n { name: \"Ultime novità\", value: ClipperModuleGroup.Home },\r\n { name: \"Ricerca\", value: ClipperModuleGroup.Ricerca },\r\n { name: \"DG Info\", value: ClipperModuleGroup.DGInfo },\r\n { name: \"Calendario\", value: ClipperModuleGroup.Calendario },\r\n { name: \"Archivio\", value: ClipperModuleGroup.Archivio }\r\n];\r\n\r\nexport const ClipperModules: NameValueItem<number>[] = [\r\n { name: 'News, articoli di approfondimento e note a sentenza', shortName: 'Novità', value: ClipperModule.News },\r\n { name: 'Gazzette, Bollettini e fonti diverse', shortName: 'Gazzette, Bollettini e fonti diverse', value: ClipperModule.GazzetteBollettiniEFontiDiverse },\r\n { name: 'Giurisprudenza', shortName: 'Giurisprudenza', value: ClipperModule.Giurisprudenza },\r\n { name: 'Modifiche, abrogazioni e rinvii', shortName: 'Modifiche, abrogazioni e rinvii', value: ClipperModule.ModificheAbrogazioniERinvii },\r\n { name: 'Allerte alimentari', shortName: 'Allerte alimentari', value: ClipperModule.AllerteAlimentari },\r\n { name: 'Scadenze e segnalazioni', shortName: 'Scadenze e segnalazioni', value: ClipperModule.ScadenzeESegnalazioni },\r\n { name: 'Normativa vigente', shortName: 'Normativa vigente', value: ClipperModule.NormativaVigente },\r\n { name: 'Quesiti e casi risolti', shortName: 'Quesiti', value: ClipperModule.QuesitiECasiRisolti },\r\n]\r\n\r\nexport enum ClipperChannel {\r\n None = 0,\r\n LavoroEAmbiente = 1,\r\n SostanzeAlimentari = 2,\r\n MerciPericolose = 3,\r\n Energia = 4,\r\n DGInfo = 5\r\n}\r\n\r\nexport const ClipperChannels: NameValueItem<ClipperChannel>[] = [\r\n { value: ClipperChannel.LavoroEAmbiente, name: \"Lavoro e Ambiente\", header: \"LA\" },\r\n { value: ClipperChannel.SostanzeAlimentari, name: \"Sostanze Alimentari\", header: \"SA\" },\r\n { value: ClipperChannel.Energia, name: \"Energia\", header: \"E\" },\r\n { value: ClipperChannel.MerciPericolose, name: \"Merci Pericolose\", header: \"MP\" }\r\n]\r\n\r\nexport interface ClipperAvailableChannel extends NameValueItem<ClipperChannel> {\r\n active?: boolean;\r\n suspended?: boolean;\r\n}\r\n\r\nexport const ClipperRegions: NameValueItem<string>[] = [\r\n {\r\n value: '4RAB',\r\n name: 'Abruzzo',\r\n },\r\n {\r\n value: '4RBA',\r\n name: 'Basilicata',\r\n },\r\n {\r\n value: '4RCAL',\r\n name: 'Calabria',\r\n },\r\n {\r\n value: '4RCAM',\r\n name: 'Campania',\r\n },\r\n {\r\n value: '4REM',\r\n name: 'Emilia Romagna',\r\n },\r\n {\r\n value: '4RFVG',\r\n name: 'Friuli Venezia Giulia',\r\n },\r\n {\r\n value: '4RLA',\r\n name: 'Lazio',\r\n },\r\n {\r\n value: '4RLI',\r\n name: 'Liguria',\r\n },\r\n {\r\n value: '4RLO',\r\n name: 'Lombardia',\r\n },\r\n {\r\n value: '4RMA',\r\n name: 'Marche',\r\n },\r\n {\r\n value: '4RMO',\r\n name: 'Molise',\r\n },\r\n {\r\n value: '4RPI',\r\n name: 'Piemonte',\r\n },\r\n {\r\n value: '4RPU',\r\n name: 'Puglia',\r\n },\r\n {\r\n value: '4RSA',\r\n name: 'Sardegna',\r\n },\r\n {\r\n value: '4RSI',\r\n name: 'Sicilia',\r\n },\r\n {\r\n value: '4RTO',\r\n name: 'Toscana',\r\n },\r\n {\r\n value: '4RTAA',\r\n name: 'Trentino Alto Adige',\r\n },\r\n {\r\n value: '4RUM',\r\n name: 'Umbria',\r\n },\r\n {\r\n value: '4RVA',\r\n name: \"Valle D'Aosta\",\r\n },\r\n {\r\n value: '4RVE',\r\n name: 'Veneto',\r\n },\r\n {\r\n value: '4PAT',\r\n name: 'Prov. Aut. Trento',\r\n },\r\n {\r\n value: '4PAB',\r\n name: 'Prov. Aut. Bolzano',\r\n }\r\n]\r\n\r\nexport interface SectorInfo extends NameValueItem<string> {\r\n\r\n group?: string;\r\n channels?: string;\r\n sectorId?: string;\r\n}\r\n\r\nexport const ClipperSectors: SectorInfo[] = [\r\n {\r\n value: 'LC',\r\n name: 'Legislazione comunitaria',\r\n shortName: 'Comunitaria',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'LN',\r\n name: 'Legislazione nazionale',\r\n shortName: 'Nazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n\r\n {\r\n value: 'LR',\r\n name: 'Legislazione regionale',\r\n shortName: 'Regionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RAB',\r\n name: ' Abruzzo',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4PAB',\r\n name: ' Prov. Aut. Bolzano',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RBA',\r\n name: ' Basilicata',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RCAL',\r\n name: ' Calabria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RCAM',\r\n name: ' Campania',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4REM',\r\n name: ' Emilia Romagna',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RFVG',\r\n name: ' Friuli Venezia Giulia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLA',\r\n name: ' Lazio',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLI',\r\n name: ' Liguria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLO',\r\n name: ' Lombardia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RMA',\r\n name: ' Marche',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RMO',\r\n name: ' Molise',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RPI',\r\n name: ' Piemonte',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RPU',\r\n name: ' Puglia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RSA',\r\n name: ' Sardegna',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RSI',\r\n name: ' Sicilia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RTO',\r\n name: ' Toscana',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RTAA',\r\n name: ' Trentino Alto Adige',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4PAT',\r\n name: ' Prov. Aut. Trento',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RUM',\r\n name: ' Umbria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RVA',\r\n name: \" Valle D'Aosta\",\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RVE',\r\n name: ' Veneto',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'GC',\r\n name: 'Giurisprudenza comunitaria',\r\n shortName: 'Giur. comunitaria',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'GN',\r\n name: 'Giurisprudenza nazionale',\r\n shortName: 'Giur. nazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'TN',\r\n name: 'Normativa tecnica',\r\n shortName: 'Tecnica',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n /* {\r\n value: 'TI',\r\n name: 'Normativa tecnica internazionale',\r\n shortName: 'Tecnica internaz.',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },*/\r\n {\r\n value: 'NI',\r\n name: 'Normativa internazionale',\r\n shortName: 'Internazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n /* {\r\n value: 'SN',\r\n name: 'Documentazione scientifica',\r\n shortName: 'Scientifica',\r\n group: 'S',\r\n channels: '|SA|',\r\n } */\r\n]\r\n\r\nexport const ClipperSectorTypes: NameValueItem<string>[] =\r\n [\r\n { parentValue: \"LN\", value: \"10\", name: \"Circolare Ministeriale\" },\r\n { parentValue: \"LN\", value: \"100\", name: \"Rettifica (naz.)\" },\r\n { parentValue: \"LR\", value: \"102\", name: \"Rettifica (reg.)\" },\r\n { parentValue: \"NI\", value: \"104\", name: \"Regolamento UNECE\" },\r\n { parentValue: \"SN\", value: \"105\", name: \"Documento\" },\r\n { parentValue: \"TN\", value: \"106\", name: \"Direttiva (Enti e Istituti)\" },\r\n { parentValue: \"TI\", value: \"107\", name: \"Normativa Tecnica Internazionale\" },\r\n { parentValue: \"LR\", value: \"11\", name: \"Circolare Pres. Giunta Reg\" },\r\n { parentValue: \"LC\", value: \"111\", name: \"Decisione (CEE)\" },\r\n { parentValue: \"LC\", value: \"112\", name: \"Decisione (CE)\" },\r\n { parentValue: \"LC\", value: \"113\", name: \"Decisione (UE)\" },\r\n { parentValue: \"LC\", value: \"114\", name: \"Decisione delegata (UE)\" },\r\n { parentValue: \"LC\", value: \"115\", name: \"Decisione di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"116\", name: \"Regolamento (CEE)\" },\r\n { parentValue: \"LC\", value: \"117\", name: \"Regolamento (CE)\" },\r\n { parentValue: \"LC\", value: \"118\", name: \"Regolamento (UE)\" },\r\n { parentValue: \"LC\", value: \"119\", name: \"Regolamento delegato (UE)\" },\r\n { parentValue: \"LR\", value: \"12\", name: \"Direttiva (reg.)\" },\r\n { parentValue: \"LC\", value: \"120\", name: \"Regolamento di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"121\", name: \"Direttiva (CEE)\" },\r\n { parentValue: \"LC\", value: \"122\", name: \"Direttiva (CE)\" },\r\n { parentValue: \"LC\", value: \"123\", name: \"Direttiva (UE)\" },\r\n { parentValue: \"LC\", value: \"124\", name: \"Direttiva delegata (UE)\" },\r\n { parentValue: \"LC\", value: \"125\", name: \"Direttiva di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"126\", name: \"Comunicazione (CE)\" },\r\n { parentValue: \"LC\", value: \"127\", name: \"Comunicazione (UE)\" },\r\n { parentValue: \"LC\", value: \"128\", name: \"Raccomandazione (CEE)\" },\r\n { parentValue: \"LC\", value: \"129\", name: \"Raccomandazione (CE)\" },\r\n { parentValue: \"LN\", value: \"13\", name: \"Comunicato (naz.)\" },\r\n { parentValue: \"LC\", value: \"130\", name: \"Raccomandazione (UE)\" },\r\n { parentValue: \"LC\", value: \"131\", name: \"Posizione Comune (CE)\" },\r\n { parentValue: \"LC\", value: \"132\", name: \"Posizione Comune (UE)\" },\r\n { parentValue: \"LC\", value: \"133\", name: \"Risoluzione\" },\r\n { parentValue: \"LC\", value: \"134\", name: \"Trattato\" },\r\n { parentValue: \"LC\", value: \"135\", name: \"Rettifica\" },\r\n { parentValue: \"LC\", value: \"138\", name: \"Parere\" },\r\n { parentValue: \"LC\", value: \"139\", name: \"Accordi (CE)\" },\r\n { parentValue: \"NI\", value: \"14\", name: \"Convenzione Internazionale\" },\r\n { parentValue: \"LC\", value: \"140\", name: \"Atti diversi (CE/UE)\" },\r\n { parentValue: \"GC\", value: \"141\", name: \"Sentenza (CE)\" },\r\n { parentValue: \"GC\", value: \"142\", name: \"Sentenza (UE)\" },\r\n { parentValue: \"GC\", value: \"143\", name: \"Ordinanza (CE)\" },\r\n { parentValue: \"GC\", value: \"144\", name: \"Ordinanza (UE)\" },\r\n { parentValue: \"LC\", value: \"145\", name: \"Direttiva (Euratom)\" },\r\n { parentValue: \"LC\", value: \"146\", name: \"Decisione (Euratom)\" },\r\n { parentValue: \"LC\", value: \"147\", name: \"Regolamento (Euratom)\" },\r\n { parentValue: \"LC\", value: \"148\", name: \"Raccomandazione (Euratom)\" },\r\n { parentValue: \"LN\", value: \"15\", name: \"Costituzione della Repubblica\" },\r\n { parentValue: \"LN\", value: \"16\", name: \"Linee guida (naz.)\" },\r\n { parentValue: \"LN\", value: \"17\", name: \"Circolare Commissariale\" },\r\n { parentValue: \"LN\", value: \"18\", name: \"Decreto Commissariale\" },\r\n { parentValue: \"LR\", value: \"19\", name: \"Decreto dell'Assessore Regionale\" },\r\n { parentValue: \"TN\", value: \"20\", name: \"Comunicato (Enti ed Istituti)\" },\r\n { parentValue: \"LN\", value: \"21\", name: \"Decreto Capo Provv. Stato\" },\r\n { parentValue: \"LN\", value: \"22\", name: \"Decreto Pres. Cons. Ministri\" },\r\n { parentValue: \"LR\", value: \"23\", name: \"Decreto Pres. Giunta Reg.\" },\r\n { parentValue: \"LR\", value: \"24\", name: \"Decreto Pres. Giunta Prov.\" },\r\n { parentValue: \"LN\", value: \"25\", name: \"Decreto Presidente Repubblica\" },\r\n { parentValue: \"LN\", value: \"26\", name: \"Documento di consultazione\" },\r\n { parentValue: \"LN\", value: \"27\", name: \"Decreto Legge\" },\r\n { parentValue: \"LN\", value: \"28\", name: \"Decreto Legge Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"29\", name: \"D.Lgs. Capo Provv. Stato\" },\r\n { parentValue: \"LN\", value: \"3\", name: \"Direttiva (naz.)\" },\r\n { parentValue: \"LN\", value: \"30\", name: \"D.Lgs. Governo\" },\r\n { parentValue: \"LR\", value: \"31\", name: \"Delib. Consiglio Prov.\" },\r\n { parentValue: \"LN\", value: \"32\", name: \"D.Lgs. Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"33\", name: \"Decreto Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"34\", name: \"Decreto Ministeriale\" },\r\n { parentValue: \"LN\", value: \"35\", name: \"Deliberazione (naz.)\" },\r\n { parentValue: \"LR\", value: \"36\", name: \"Delib. Consiglio Reg.\" },\r\n { parentValue: \"LR\", value: \"37\", name: \"Delib. Giunta Prov.\" },\r\n { parentValue: \"LR\", value: \"38\", name: \"Delib. Giunta Reg.\" },\r\n { parentValue: \"LN\", value: \"4\", name: \"Accordo\" },\r\n { parentValue: \"TN\", value: \"40\", name: \"Delibera (Enti ed Istituti)\" },\r\n { parentValue: \"GN\", value: \"41\", name: \"Decreto Penale\" },\r\n { parentValue: \"LN\", value: \"42\", name: \"Lettera Circolare (Comitati)\" },\r\n { parentValue: \"LN\", value: \"43\", name: \"Lettera Circolare Ministeriale\" },\r\n { parentValue: \"TN\", value: \"44\", name: \"Circolare (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"45\", name: \"Istruzione Tecnica\" },\r\n { parentValue: \"LR\", value: \"46\", name: \"Circolare dell'Assessore Regionale\" },\r\n { parentValue: \"LN\", value: \"47\", name: \"Determinazione (naz.)\" },\r\n { parentValue: \"LN\", value: \"48\", name: \"Legge\" },\r\n { parentValue: \"LR\", value: \"49\", name: \"Legge Prov. Aut.\" },\r\n { parentValue: \"LR\", value: \"5\", name: \"Decreto Assessore Prov.\" },\r\n { parentValue: \"LR\", value: \"50\", name: \"Legge Regionale\" },\r\n { parentValue: \"LR\", value: \"51\", name: \"Linee guida (reg.)\" },\r\n { parentValue: \"TN\", value: \"52\", name: \"Regolamento (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"53\", name: \"Fascicolo (Enti ed Istituti)\" },\r\n { parentValue: \"GN\", value: \"54\", name: \"Ordinanza\" },\r\n { parentValue: \"LR\", value: \"55\", name: \"Ordinanza Pres. Reg.\" },\r\n { parentValue: \"LN\", value: \"56\", name: \"Nota Ministeriale\" },\r\n { parentValue: \"LN\", value: \"57\", name: \"Ordinanza Ministeriale\" },\r\n { parentValue: \"LN\", value: \"58\", name: \"Circolare (Comitati)\" },\r\n { parentValue: \"TN\", value: \"59\", name: \"Lettera Circolare (Enti ed Istituti)\" },\r\n { parentValue: \"NI\", value: \"6\", name: \"Accordo Multilaterale\" },\r\n { parentValue: \"TN\", value: \"60\", name: \"Decreto (Enti ed Istituti)\" },\r\n { parentValue: \"LN\", value: \"61\", name: \"Decreto del Capo del Governo\" },\r\n { parentValue: \"GN\", value: \"62\", name: \"Ricorso\" },\r\n { parentValue: \"GN\", value: \"63\", name: \"Decisione\" },\r\n { parentValue: \"LR\", value: \"65\", name: \"Regolamento Regionale\" },\r\n { parentValue: \"LN\", value: \"66\", name: \"Regio Decreto\" },\r\n { parentValue: \"LN\", value: \"67\", name: \"Regio Decreto Legge\" },\r\n { parentValue: \"LN\", value: \"68\", name: \"Regio Decreto Legislativo\" },\r\n { parentValue: \"LR\", value: \"69\", name: \"Altri documenti (reg.)\" },\r\n { parentValue: \"LR\", value: \"70\", name: \"Comunicato (reg.)\" },\r\n { parentValue: \"LN\", value: \"71\", name: \"Statuto delle Regioni Ordinarie\" },\r\n { parentValue: \"GN\", value: \"72\", name: \"Sentenza\" },\r\n { parentValue: \"TN\", value: \"73\", name: \"Altri documenti (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"74\", name: \"Prassi di riferimento\" },\r\n { parentValue: \"LN\", value: \"75\", name: \"Altri documenti (naz.)\" },\r\n { parentValue: \"LN\", value: \"76\", name: \"Provvedimento (naz.)\" },\r\n { parentValue: \"TN\", value: \"77\", name: \"Pubblicazione (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"79\", name: \"Linee guida (Enti ed Istituti)\" },\r\n { parentValue: \"LR\", value: \"80\", name: \"Decreto del Dirigente (reg.)\" },\r\n { parentValue: \"LR\", value: \"81\", name: \"Determinazione del Dirigente (reg.)\" },\r\n { parentValue: \"LN\", value: \"82\", name: \"Ordinanza Pres. Cons. Ministri\" },\r\n { parentValue: \"LR\", value: \"83\", name: \"Circolare (reg.)\" },\r\n { parentValue: \"TN\", value: \"84\", name: \"Istruzione Operativa (Enti e Istituti)\" },\r\n { parentValue: \"LR\", value: \"85\", name: \"Provvedimento (reg.)\" },\r\n { parentValue: \"TN\", value: \"86\", name: \"Quaderno\" },\r\n { parentValue: \"LR\", value: \"9\", name: \"Ordinanza Pres. Prov.\" },\r\n { parentValue: \"LN\", value: \"91\", name: \"Ordinanza Commissariale\" },\r\n { parentValue: \"LN\", value: \"93\", name: \"Risoluzione (naz.)\" },\r\n { parentValue: \"TN\", value: \"94\", name: \"Nota (Enti e Istituti)\" },\r\n { parentValue: \"TN\", value: \"97\", name: \"Opuscolo Tecnico\" },\r\n { parentValue: \"TN\", value: \"98\", name: \"Norma Tecnica\" },\r\n { parentValue: \"NI\", value: \"99\", name: \"Norma Tecnica Internaz.\" }\r\n ]\r\n\r\nexport const ClipperAuthors: SectorInfo[] = [\r\n {\r\n value: \"1CAM\",\r\n sectorId: undefined,\r\n name: \"Camera dei Deputati\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MA\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAE\",\r\n sectorId: undefined,\r\n name: \"Ministero degli Affari Esteri\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Agricoltura e delle Foreste\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAP\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Attività Produttive\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MARP\",\r\n sectorId: undefined,\r\n name: \"Ministero per gli Affari Regionali e per i Problemi Istituzionali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MASAF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Agricoltura, della Sovranità Alimentare e delle Foreste\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MASE\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Sicurezza Energetica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MATT\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Tutela del Territorio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MATTM\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Tutela del Territorio e del Mare\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAU\",\r\n sectorId: undefined,\r\n name: \"Ministero del Aree Urbane\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MBAC\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Beni e delle Attività Culturali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MBCA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Beni Culturali e Ambientali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MC\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Comunicazioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCE\",\r\n sectorId: undefined,\r\n name: \"Ministero del Commercio con l'Estero\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCI\",\r\n sectorId: undefined,\r\n name: \"Ministero del Commercio Internazionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCPC\",\r\n sectorId: undefined,\r\n name: \"Ministero per il Coordinamento delle Politiche Comunitarie\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCRU\",\r\n sectorId: undefined,\r\n name: \"Ministero della Ricerca Universitaria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCU\",\r\n sectorId: undefined,\r\n name: \"Ministero della Cultura\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MDIF\",\r\n sectorId: undefined,\r\n name: \"Ministero della Difesa\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MEF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Economia e delle Finanze\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Finanze\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MFP\",\r\n sectorId: undefined,\r\n name: \"Ministero della Funzione Pubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MG\",\r\n sectorId: undefined,\r\n name: \"Ministero della Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MGG\",\r\n sectorId: undefined,\r\n name: \"Ministero di Grazia e Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MI\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Interno\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MICA\",\r\n sectorId: undefined,\r\n name: \"Ministero per l'Industria, il Commercio e l'Artigianato\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIME\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Istruzione e del Merito\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIMI\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Imprese e del Made in Italy\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIMS\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture e della Mobilità Sostenibili\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MINF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MISM\",\r\n sectorId: undefined,\r\n name: \"Ministero per l'Intervento Straordinario nel Mezzogiorno\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture e dei Trasporti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIUR\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Istruzione, Università e Ricerca\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLP\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Lavori Pubblici\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLPO\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro e Politiche Sociali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLPS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro e Previdenza Sociale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLSPS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro, della Salute e delle Politiche Sociali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MMM\",\r\n sectorId: undefined,\r\n name: \"Ministero della Marina Mercantile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole, Alimentari e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAAFT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole Alimentari e Forestali e del Turismo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPC\",\r\n sectorId: undefined,\r\n name: \"Ministero per il Coordinamento della Protezione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPI\",\r\n sectorId: undefined,\r\n name: \"Ministero della Pubblica Istruzione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Poste e Telecomunicazioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MRAAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Risorse Agricole, Alimentari e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MRP\",\r\n sectorId: undefined,\r\n name: \"Ministero per i Rapporti Parlamentari\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MS\",\r\n sectorId: undefined,\r\n name: \"Ministero della Sanità\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MSA\",\r\n sectorId: undefined,\r\n name: \"Ministero della Salute\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MSE\",\r\n sectorId: undefined,\r\n name: \"Ministero dello Sviluppo Economico\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MT\",\r\n sectorId: undefined,\r\n name: \"Ministero del Tesoro\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTAC\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti e dell'Aviazione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTE\",\r\n sectorId: undefined,\r\n name: \"Ministero della Transizione Ecologica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTNA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti e della Navigazione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTRA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Turismo e dello Spettacolo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTU\",\r\n sectorId: undefined,\r\n name: \"Ministero del Turismo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MURS\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Universitá e della Ricerca Scientifica e Tecnica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1PCM\",\r\n sectorId: undefined,\r\n name: \"Presidente del Consiglio dei Ministri\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1PR\",\r\n sectorId: undefined,\r\n name: \"Presidente della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1SEN\",\r\n sectorId: undefined,\r\n name: \"Senato della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AEEG\",\r\n sectorId: undefined,\r\n name: \"Autorità per l'Energia Elettrica e il Gas\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AEEGSI\",\r\n sectorId: undefined,\r\n name: \"Autorità Energia Elettrica e Gas e Sistema Idrico\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2ARERA\",\r\n sectorId: undefined,\r\n name: \"Autorità di Regolazione per Energia, Reti e Ambiente\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2ARIR\",\r\n sectorId: undefined,\r\n name: \"Autorità di Vigilanza sulle Risorse Idriche e sui Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AVCP\",\r\n sectorId: undefined,\r\n name: \"Autorità per la Vigilanza sui Contratti Pubblici di Lavori, Servizi e Forniture\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AVLP\",\r\n sectorId: undefined,\r\n name: \"Autorità per la Vigilanza sui Lavori Pubblici\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CAGA\",\r\n sectorId: undefined,\r\n name: \"Comitato Naz. Albo Naz. Gestori Ambientali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CAN\",\r\n sectorId: undefined,\r\n name: \"Comitato per le Aree Naturali protette.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDEA\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per l'Emergenza Ambientale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDMN\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per la Sicurezza dei Materiali Nucleari\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDRA\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per l'Emergenza Rifiuti e la Tutela delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIAB\",\r\n sectorId: undefined,\r\n name: \"Comitato Istituzionale Autorità di Bacino\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CICP\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale Coordinamento Politica Economica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIP\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale Prezzi\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIPE\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Programmazione Economica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIPESS\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Programmazione Economica e lo Sviluppo Sostenibile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIR\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per i Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CITA\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Tutela delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CSR\",\r\n sectorId: undefined,\r\n name: \"Conferenza Permanente Rapporti Stato e Regioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CSSR\",\r\n sectorId: undefined,\r\n name: \"Comitato Naz. Albo Imprese Esercenti Servizi Smaltimento Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CUN\",\r\n sectorId: undefined,\r\n name: \"Conferenza Unificata\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2GPDP\",\r\n sectorId: undefined,\r\n name: \"Garante per la Protezione dei Dati Personali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CCEE\",\r\n sectorId: \"LC\",\r\n name: \"Commissario CEE/CE\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CDR\",\r\n sectorId: \"LC\",\r\n name: \"Comitato delle Regioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CEDM\",\r\n sectorId: \"LC\",\r\n name: \"Corte Europea per i Diritti dell'Uomo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CES\",\r\n sectorId: \"LC\",\r\n name: \"Comitato Economico e Sociale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CJCE\",\r\n sectorId: \"LC\",\r\n name: \"Corte di Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CJCO\",\r\n sectorId: \"LC\",\r\n name: \"Corte dei Conti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3COMM\",\r\n sectorId: \"LC\",\r\n name: \"Commissione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CONS\",\r\n sectorId: \"LC\",\r\n name: \"Consiglio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CONSUE\",\r\n sectorId: \"LC\",\r\n name: \"Parlamento e Consiglio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CWJ\",\r\n sectorId: \"LC\",\r\n name: \"Corte Internazionale di Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3EFTA\",\r\n sectorId: \"LC\",\r\n name: \"EFTA - Associaz. Europea di Libero Scambio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3OTIF\",\r\n sectorId: \"LC\",\r\n name: \"OTIF - Intergov. Org. for International Carriage by Rail\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3PAE\",\r\n sectorId: \"LC\",\r\n name: \"Parlamento\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3T1CE\",\r\n sectorId: \"LC\",\r\n name: \"Tribunale di Primo Grado\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3UNECE\",\r\n sectorId: \"LC\",\r\n name: \"UNECE - United Nations Economic Commission for Europe\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4PAB\",\r\n sectorId: \"LR\",\r\n name: \"Prov. Autonoma di Bolzano\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4PAT\",\r\n sectorId: \"LR\",\r\n name: \"Prov. Autonoma di Trento\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RAB\",\r\n sectorId: \"LR\",\r\n name: \"Regione Abruzzo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RBA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Basilicata\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RCAL\",\r\n sectorId: \"LR\",\r\n name: \"Regione Calabria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RCAM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Campania\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4REM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Emilia Romagna\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RFVG\",\r\n sectorId: \"LR\",\r\n name: \"Regione Friuli Venezia Giulia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Lazio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Liguria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Lombardia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RMA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Marche\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RMO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Molise\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RPI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Piemonte\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RPU\",\r\n sectorId: \"LR\",\r\n name: \"Regione Puglia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RSA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Sardegna\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RSI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Sicilia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RTAA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Trentino Alto Adige\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RTO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Toscana\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RUM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Umbria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RVA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Valle D'Aosta\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RVE\",\r\n sectorId: \"LR\",\r\n name: \"Regione Veneto\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CA\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CAS\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Assise\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CASA\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Assise d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CC\",\r\n sectorId: \"GN\",\r\n name: \"Corte Costituzionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CCC\",\r\n sectorId: \"GN\",\r\n name: \"Corte di Cassazione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CCP\",\r\n sectorId: \"GN\",\r\n name: \"Corte di Cassazione Penale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CDC\",\r\n sectorId: \"GN\",\r\n name: \"Corte dei Conti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CDS\",\r\n sectorId: \"GN\",\r\n name: \"Consiglio di Stato\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CGAS\",\r\n sectorId: \"GN\",\r\n name: \"Cons. di Giustizia Amm.va della Sicilia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CTP\",\r\n sectorId: \"GN\",\r\n name: \"Commissione Tributaria Provinciale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CTR\",\r\n sectorId: \"GN\",\r\n name: \"Commissione Tributaria Regionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5GDP\",\r\n sectorId: \"GN\",\r\n name: \"Giudice di Pace\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5P\",\r\n sectorId: \"GN\",\r\n name: \"Pretura\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5PCA\",\r\n sectorId: \"GN\",\r\n name: \"Procura Generale Corte d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5PR\",\r\n sectorId: \"GN\",\r\n name: \"Procura della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5T\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TAR\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Amministrativo Regionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TGA\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Regionale acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TSA\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Superiore delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CAC\",\r\n sectorId: \"TN\",\r\n name: \"Codex Alimentarius Commission\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CEI\",\r\n sectorId: \"TN\",\r\n name: \"C.E.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CNR\",\r\n sectorId: \"TN\",\r\n name: \"C.N.R.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ENPI\",\r\n sectorId: \"TN\",\r\n name: \"E.N.P.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6INAI\",\r\n sectorId: \"TN\",\r\n name: \"I.N.A.I.L.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6INPS\",\r\n sectorId: \"TN\",\r\n name: \"I.N.P.S.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISO\",\r\n sectorId: \"NI\",\r\n name: \"I.S.O.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISPS\",\r\n sectorId: \"TN\",\r\n name: \"I.S.P.E.S.L.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISS\",\r\n sectorId: \"TN\",\r\n name: \"I.S.S. - Istituto Superiore di Sanità\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6NSF\",\r\n sectorId: \"TN\",\r\n name: \"NSF International\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6UNI\",\r\n sectorId: \"TN\",\r\n name: \"U.N.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6USDA\",\r\n sectorId: \"TN\",\r\n name: \"USDA - United States Department of Agriculture\",\r\n channels: undefined\r\n }\r\n]\r\n\r\nexport const ClipperSources: NameValueItem<string>[] = [\r\n {\r\n value: 'ACCML',\r\n name: 'Accordi Multilaterali',\r\n },\r\n {\r\n value: 'AEEG',\r\n name: \"Sito Autorità per l'Energia Elettrica, il Gas e il Sistema Idrico\",\r\n },\r\n {\r\n value: 'ARERA',\r\n name: 'Sito Autorità di Regolazione per Energia, Reti e Ambiente',\r\n },\r\n {\r\n value: 'BUR',\r\n name: 'Bollettino Uff. Regione',\r\n },\r\n {\r\n value: 'BUS',\r\n name: 'Suppl. speciale al Bollettino Uff.',\r\n },\r\n {\r\n value: 'BUSO',\r\n name: 'Suppl. ordin. al Bollettino Uff.',\r\n },\r\n {\r\n value: 'BUSS',\r\n name: 'Suppl. straord. al Bollettino Uff.',\r\n },\r\n {\r\n value: 'GU',\r\n name: 'Gazzetta Ufficiale Italiana',\r\n },\r\n {\r\n value: 'GUCC',\r\n name: 'Gazz. Uff. Corte Costituzionale',\r\n },\r\n {\r\n value: 'GUCE',\r\n name: 'Gazzetta ufficiale delle Comunità europee',\r\n },\r\n {\r\n value: 'GUES',\r\n name: 'Gazz. Uff. Ediz. Speciale',\r\n },\r\n {\r\n value: 'GURS',\r\n name: 'Gazz. Uff. Regione Sicilia',\r\n },\r\n {\r\n value: 'GUS',\r\n name: 'Gazz. Uff. Serie Speciale',\r\n },\r\n {\r\n value: 'GUSO',\r\n name: 'Suppl. ordin. alla Gazzetta Ufficiale',\r\n },\r\n {\r\n value: 'GUSS',\r\n name: 'Suppl. straord. alla Gazzetta Ufficiale',\r\n },\r\n {\r\n value: 'GUUE',\r\n name: 'Gazzetta ufficiale dell’Unione europea',\r\n },\r\n {\r\n value: 'MAC',\r\n name: 'Massimario Civile',\r\n },\r\n {\r\n value: 'MAP',\r\n name: 'Massimario Penale',\r\n },\r\n {\r\n value: 'NONE',\r\n name: 'Fonti diverse',\r\n }\r\n]\r\n\r\n\r\nexport interface ClipperSettingsInfo {\r\n lastUpdated?: Date;\r\n enableNotifications: boolean;\r\n channels?: ClipperChannelSettings[];\r\n bulletinTaxonomy?: string;\r\n bulletinOrigin?: number;\r\n enableBulletinFilter: boolean;\r\n}\r\n\r\nexport class ClipperUpdateChannelsStateParams {\r\n activeChannels: ClipperChannel[] = [];\r\n}\r\n\r\nexport interface ClipperChannelSettingsItem<T> {\r\n name: string;\r\n value: T;\r\n checked: boolean;\r\n}\r\n\r\nexport class ClipperChannelSettings {\r\n channelId?: ClipperChannel;\r\n channelName?: string;\r\n isEnabled?: boolean = false;\r\n isSuspended?: boolean = false;\r\n isActive?: boolean = false;\r\n sectors: ClipperChannelSettingsItem<string>[] = [];\r\n regions: ClipperChannelSettingsItem<string>[] = [];\r\n\r\n /**\r\n * Returns `true` when the channel is active and at least one of the given sector codes\r\n * matches a sector assigned to this channel.\r\n * @param values - Array of sector code strings to test against.\r\n */\r\n hasAnyOfSectors(values: string[]): boolean {\r\n if (this.isEnabled !== true || this.isActive !== true) return false;\r\n return values.some(v => this.sectors.some(s => s.value === v));\r\n }\r\n\r\n /**\r\n * Returns `true` when the channel is active and at least one of the given region codes\r\n * matches a region assigned to this channel.\r\n * @param values - Array of region code strings to test against.\r\n */\r\n hasAnyOfRegions(values: string[]): boolean {\r\n if (this.isEnabled !== true || this.isActive !== true) return false;\r\n return values.some(v => this.regions.some(r => r.value === v));\r\n }\r\n\r\n}\r\n\r\nexport interface ClipperUserChannelInfo {\r\n channel: ClipperChannel;\r\n channelName?: string;\r\n expiringDate: string;\r\n isTrial?: boolean;\r\n isDisabled: boolean;\r\n isSuspended: boolean;\r\n isDvd: boolean;\r\n isActive: boolean;\r\n documentsViewable?: number;\r\n documentsViewed?: number;\r\n settings?: ClipperChannelSettings;\r\n}\r\n\r\nexport interface ClipperUserInfo {\r\n userId: number;\r\n customerId?: number;\r\n companyName: string;\r\n displayName: string;\r\n firstName: string;\r\n email: string;\r\n oauth?: boolean;\r\n sessionId?: string;\r\n scope: number;\r\n isAuthenticated: boolean;\r\n isTemporary: boolean;\r\n hasTrial: boolean;\r\n hasTeam: boolean;\r\n hasSharedNotes: boolean;\r\n hasSharedArchive: boolean;\r\n hasSharedCalendar: boolean;\r\n hasAI: boolean;\r\n hasAIAssistant: boolean;\r\n hasAIEditor: boolean;\r\n channels: ClipperUserChannelInfo[];\r\n firstChannelTrial: ClipperUserChannelInfo;\r\n trialInfo?: ClipperUserTrialInfo;\r\n}\r\n\r\nexport interface ClipperLoginResult extends LoginResult<ClipperUserInfo> {\r\n settings?: ClipperChannelSettings[];\r\n}\r\n\r\nexport interface ClipperLoginInfo {\r\n context?: ClipperUserInfo;\r\n complianceContext?: any;\r\n channels?: ClipperChannelSettings[];\r\n oauth?: LoginOAuthType;\r\n remember?: boolean;\r\n}\r\n\r\nexport enum ClipperQueryDocumentFlags {\r\n None = 0,\r\n TitleOnly = 1,\r\n AbrogatedOnly = 1 << 1,\r\n NotAbrogatedOnly = 1 << 2,\r\n CommentedOnly = 1 << 3,\r\n UseSemanticSearch = 1 << 5,\r\n NotRead = 1 << 6,\r\n ExcludeUserFilters = 1 << 7\r\n}\r\n\r\nexport class ClipperSearchParams {\r\n version: number = 6;\r\n searchId?: number;\r\n searchName?: string;\r\n text?: string;\r\n title?: string;\r\n titleOnly?: boolean = false;\r\n showUnreadDocumentsOnly?: boolean = false;\r\n showCommentedDocumentsOnly?: boolean = false;\r\n showNotAbrogatedDocumentsOnly?: boolean = false;\r\n number?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n year?: number;\r\n sourceNumber?: string;\r\n source?: string;\r\n sourceFromDate?: Date;\r\n sourceToDate?: Date;\r\n sourceYear?: number;\r\n sector?: string;\r\n sectors?: SectorInfo[];\r\n topic?: string;\r\n topics?: NameValueItem<string>[];\r\n taxonomy?: string;\r\n taxonomies?: NameValueItem<string>[];\r\n taxonomyPath?: string;\r\n taxonomyNode?: string;\r\n type?: string;\r\n types?: NameValueItem<string>[];\r\n tag?: string;\r\n tags?: NameValueItem<string>[];\r\n author?: string;\r\n authors?: NameValueItem<string>[];\r\n changeReason?: number;\r\n changedNumber?: string;\r\n changedYear?: number;\r\n changedTitle?: string;\r\n changedId?: string;\r\n modifierId?: string;\r\n modifierNumber?: string;\r\n modifierYear?: number;\r\n modifierTitle?: string;\r\n model?: ClipperModel;\r\n models?: ClipperModel[];\r\n module?: ClipperModule;\r\n modules?: NameValueItem<ClipperModule>[];\r\n mode?: ClipperQueryReferencesMode;\r\n channels?: NameValueItem<ClipperChannel>[] = [...ClipperChannels];\r\n count?: number = 15;\r\n id?: string;\r\n anchor?: string;\r\n excludeTextReferences?: boolean = false;\r\n excludeNotesReferences?: boolean = false;\r\n useModifierInfo?: boolean = false;\r\n returnModifierInfo?: boolean = false;\r\n flags?: ClipperQueryDocumentFlags;\r\n first?: number = 0;\r\n sortMode?: number;\r\n}\r\n\r\nexport interface ClipperReferencesSearchParams {\r\n documentId: string;\r\n year?: number;\r\n sector?: string;\r\n author?: string;\r\n anchor?: string;\r\n model?: string;\r\n mode?: ClipperQueryReferencesMode;\r\n excludeTextReferences?: boolean;\r\n excludeNotesReferences?: boolean;\r\n useModifierInfo?: boolean;\r\n returnModifierInfo?: boolean;\r\n count?: number;\r\n first?: number;\r\n}\r\n\r\nexport enum ClipperDocumentContainer {\r\n None = 0,\r\n LavoroEAmbiente = 1,\r\n SostanzeAlimentari = 2,\r\n OrangeProject = 4,\r\n Energia = 8,\r\n DGInfo = 0x10,\r\n DLGS231 = 0x20,\r\n All = 0x3F\r\n}\r\n\r\nexport const ClipperDocumentChangeReasons: NameValueItem<number>[] = [\r\n { name: 'Abrogazione', value: 1 },\r\n { name: 'Annullamento', value: 5 },\r\n { name: 'Modifica', value: 2 },\r\n { name: 'Sostiuzione', value: 3 },\r\n { name: 'Segnalazione', value: 6 },\r\n { name: 'Rettifica', value: 7 },\r\n]\r\n\r\nexport interface ClipperDocumentAnchorInfo {\r\n documentId?: string;\r\n type?: number;\r\n typeDescription?: string;\r\n text?: string;\r\n title?: string;\r\n description?: string;\r\n uri: string;\r\n ordinal?: string;\r\n score?: number;\r\n chunk?: number;\r\n veryRelevant?: boolean;\r\n value?: string;\r\n level?: number;\r\n}\r\n\r\nexport interface ClipperDocumentRelevantChunkHit {\r\n id?: number;\r\n score: string;\r\n text: string;\r\n index?: number;\r\n uri?: string;\r\n}\r\n\r\nexport interface ClipperDocumentRelevants {\r\n items: ClipperDocumentAnchorInfo[];\r\n hits: number;\r\n hit: number;\r\n chunks: number;\r\n}\r\n\r\nexport interface ClipperDocumentNoteTracking {\r\n id: string;\r\n userMailId: number;\r\n email?: string;\r\n sentDate: Date;\r\n openDate?: Date;\r\n}\r\n\r\nexport interface ClipperDocumentNote {\r\n id?: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n documentId?: string;\r\n documentTitle?: string;\r\n color?: string;\r\n name?: string;\r\n note?: string;\r\n trackings?: ClipperDocumentNoteTracking[];\r\n trackingsCount?: number;\r\n trackingsOpenedCount?: number;\r\n expiringDate?: Date; \r\n isExpired?: boolean;\r\n isTroubled?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n created?: Date;\r\n}\r\n\r\nexport interface ClipperNotesSearchParams extends QueryModel {\r\n documentId?: string;\r\n teamId?: string;\r\n teamTitle?: string;\r\n color?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n state?: number;\r\n}\r\n\r\nexport interface ClipperNotesSearchResult extends QueryResultModel<ClipperDocumentNote> {\r\n teams: NameValueItem<string>[];\r\n}\r\n\r\nexport interface ClipperDocumentInfo {\r\n id?: string;\r\n documentId?: string;\r\n documentCode?: string;\r\n model?: number;\r\n modelName?: string;\r\n module?: number;\r\n moduleName?: string;\r\n channelName?: string;\r\n group?: string;\r\n title2?: string;\r\n title1?: string;\r\n tags?: string;\r\n topics?: string;\r\n number?: string;\r\n date?: Date;\r\n description?: string;\r\n publishingDate?: Date;\r\n pictureId?: string;\r\n sourceNumber?: string;\r\n sourceDate?: Date;\r\n source?: string;\r\n sector?: string;\r\n origin?: string;\r\n originDescription?: string;\r\n author?: string;\r\n anchors?: ClipperDocumentAnchorInfo[];\r\n notes?: ClipperDocumentNote[];\r\n chunks?: ClipperDocumentAnchorInfo[];\r\n chunksList?: string;\r\n taxonomy?: string;\r\n taxonomyPath?: string;\r\n info?: string;\r\n isRead?: boolean;\r\n isExportable?: boolean;\r\n isCommented?: boolean;\r\n isJuris?: boolean;\r\n isOver?: boolean;\r\n isTrial?: boolean;\r\n isNew?: boolean;\r\n isExpired?: boolean;\r\n isExpiring?: boolean;\r\n isMenuOpen?: boolean;\r\n applicableFromDate?: Date;\r\n validityState?: number;\r\n validFromDate?: Date;\r\n validUntilDate?: Date;\r\n validityDescription?: string;\r\n validityInfo?: string;\r\n expiringDate?: Date;\r\n expiringDescription?: string;\r\n expiringInfo?: string;\r\n popularity?: number;\r\n part?: number;\r\n primaryId?: string;\r\n primaryDescription?: string;\r\n primaryModel?: number;\r\n hasPrimary?: boolean;\r\n secondaryId?: string;\r\n bag?: any;\r\n lastUpdate?: string;\r\n\r\n}\r\n\r\nexport class ClipperSearchResult {\r\n days?: string;\r\n interval?: string;\r\n items?: ClipperDocumentInfo[];\r\n facets?: ClipperSearchFacetsSnapshot = new ClipperSearchFacetsSnapshot();\r\n tags?: NameValueItem<string>[];\r\n total?: number;\r\n terms?: string[];\r\n searchInfo?: any;\r\n searchParams?: ClipperSearchParams = new ClipperSearchParams();\r\n snapshotMode?: ClipperQueryReferencesMode;\r\n}\r\n\r\nexport interface ClipperSearchFacet {\r\n type: number;\r\n typeName: string;\r\n title: string;\r\n value: string;\r\n count: number;\r\n}\r\n\r\nexport interface ClipperSearchFacetGroup {\r\n name: string;\r\n selectedValue?: string;\r\n selectedValueDescription?: string;\r\n values: ClipperSearchFacet[];\r\n index: number;\r\n}\r\n\r\nexport interface ClipperSearchFacetsResult {\r\n interval?: string;\r\n facets?: ClipperSearchFacet[][];\r\n total?: number;\r\n}\r\n\r\n\r\nexport class ClipperSearchFacetsSnapshot {\r\n groups: ClipperSearchFacetGroup[] = [];\r\n usedGroups: ClipperSearchFacetGroup[] = [];\r\n hasFacets: boolean = false;\r\n hasMoreFacets: boolean = false;\r\n hasTooManyResults: boolean = false;\r\n sector?: string;\r\n author?: string;\r\n anchor?: string;\r\n type?: string;\r\n reason?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n interval?: string;\r\n}\r\n\r\nexport interface ClipperSearchCalendarSnapshotMonth {\r\n days: number[];\r\n monthShortName: string;\r\n monthName: string;\r\n month: number;\r\n year: number;\r\n total: number;\r\n expired: number;\r\n expiring: number;\r\n}\r\n\r\nexport class ClipperSearchCalendarSnapshotResult {\r\n months?: ClipperSearchCalendarSnapshotMonth[];\r\n}\r\n\r\n\r\n\r\nexport enum ClipperSort {\r\n Default = 0,\r\n Relevance = 1,\r\n DateAsc = 2,\r\n DateDesc = 3,\r\n SourceDateAsc = 7,\r\n SourceDateDesc = 8,\r\n Popularity = 5\r\n}\r\n\r\nexport enum ClipperQueryReferencesMode {\r\n ReferencesIn = 1,\r\n ReferencesOut = 2,\r\n ChangesIn = 3,\r\n ChangesOut = 5,\r\n Juris = 4\r\n}\r\n\r\nexport enum ClipperFacet {\r\n Sector = 1,\r\n Year = 2,\r\n DocumentType = 3,\r\n Topic = 4,\r\n Article = 5,\r\n Author = 6,\r\n Reason = 95\r\n}\r\n\r\nexport interface ClipperOTPInfo {\r\n code: string;\r\n canPreview?: boolean;\r\n canEmbed?: boolean;\r\n}\r\n\r\nexport enum ClipperExportDocumentsFormat {\r\n Deafault = 1,\r\n iCalendar = 2\r\n}\r\n\r\nexport interface ClipperExportDocumentsParams {\r\n query: ClipperSearchParams;\r\n ids: string[];\r\n format?: ClipperExportDocumentsFormat;\r\n}\r\n\r\nexport interface ClipperSendDocumentsByEmailParams extends SendToDialogResult {\r\n ids?: string[];\r\n isCalendar?: boolean;\r\n public?: string;\r\n userNoteId?: number;\r\n}\r\n\r\n\r\nexport interface ClipperNotifyDocumentNoteParams extends SendToDialogResult {\r\n userNoteId?: number;\r\n notifyIfNotOpen?: boolean;\r\n resend?: boolean;\r\n}\r\n\r\nexport interface ClipperDocumentStructure {\r\n id: string;\r\n title: string;\r\n items?: ClipperDocumentAnchorInfo[];\r\n}\r\n\r\n\r\nexport interface ClipperSearchFilter {\r\n container: ClipperDocumentContainer;\r\n models: number[];\r\n sectors: string[];\r\n regions: string[];\r\n notifications: number[];\r\n isEnabled: boolean;\r\n isActive: boolean;\r\n}\r\nexport interface ClipperTaxonomyParams {\r\n countItems: boolean;\r\n model: ClipperModel;\r\n userFilters?: ClipperSearchFilter[];\r\n}\r\n\r\nexport interface ClipperUserSearch {\r\n id?: number;\r\n userId?: number;\r\n name?: string;\r\n module?: ClipperModule;\r\n data?: string;\r\n}\r\n\r\nexport interface ClipperUserWorkingDocument {\r\n userId?: number;\r\n documentId?: string;\r\n documentDescriptor?: string;\r\n title1?: string;\r\n title2?: string;\r\n timestamp?: string;\r\n}\r\n\r\nexport interface ClipperDeleteWorkingDocumentsParams {\r\n documentIds: string[];\r\n deleteAll: boolean;\r\n}\r\n\r\n\r\nexport interface ClipperUserLink {\r\n id?: number;\r\n userId: number;\r\n userName?: string;\r\n key: string;\r\n}\r\n\r\nexport interface ClipperUserTrialInfo {\r\n channelName: string;\r\n expiringDate: Date;\r\n remainingDocuments: number;\r\n}\r\n\r\nexport interface ClipperArsEventInfo {\r\n id: number;\r\n location?: string;\r\n title?: string;\r\n pictureId?: string;\r\n date?: string;\r\n endDate?: string;\r\n startTime?: string;\r\n endTime?: string;\r\n hours?: number;\r\n days?: number;\r\n dateIntervalDescription?: string;\r\n durationDescription?: string;\r\n group?: string;\r\n address?: string;\r\n city?: string;\r\n isOver?: boolean;\r\n}\r\n\r\n\r\n\r\nexport interface ClipperSearchArsEventsParams {\r\n group?: string;\r\n group1?: string;\r\n collectGroups?: boolean;\r\n collectBundles?: boolean;\r\n fromDate?: string;\r\n untilDate?: string;\r\n text?: string;\r\n sortBy?: string;\r\n count: number\r\n}\r\n\r\nexport interface ClipperSearchArsEventsResult {\r\n interval?: string;\r\n items?: ClipperArsEventInfo[];\r\n total?: number;\r\n}\r\n\r\nexport interface ClipperDocumentUpdateStateParams {\r\n documentIds: string[];\r\n isRead: boolean;\r\n}\r\n\r\nexport interface ClipperDashboardModelItem {\r\n id: ClipperModel;\r\n newItems: number;\r\n unreadItems: number;\r\n}\r\n\r\nexport interface ClipperDashboardItem {\r\n id: ClipperModule;\r\n models: ClipperDashboardModelItem[];\r\n newItems: number;\r\n unreadItems: number;\r\n lastUpdated?: string;\r\n}\r\n\r\nexport interface ClipperDashboardResult {\r\n items?: ClipperDashboardItem[];\r\n isTrial?: boolean;\r\n expiredDeadlines?: number;\r\n expiringDeadlines?: number;\r\n documentUpdates?: number;\r\n channels?: ClipperChannelSettings[];\r\n}\r\n\r\nexport class ClipperDashboard {\r\n items = signal<ClipperDashboardItem[]>([]);\r\n isTrial?: boolean = false;\r\n expiredDeadlines?: number;\r\n expiringDeadlines?: number;\r\n documentUpdates?: number;\r\n unreadItems: Signal<[ClipperModule, number][]> = computed(() => {\r\n const states: [ClipperModule, number][] = [];\r\n states.push([ClipperModule.News, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.News)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.GazzetteBollettiniEFontiDiverse, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.GazzetteBollettiniEFontiDiverse)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.Giurisprudenza, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.Giurisprudenza)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.ModificheAbrogazioniERinvii, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.ModificheAbrogazioniERinvii)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.AllerteAlimentari, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.AllerteAlimentari)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.Approfondimenti, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.Approfondimenti)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.QuesitiECasiRisolti, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.QuesitiECasiRisolti)?.unreadItems ?? 0]);\r\n return states;\r\n });\r\n unreadItemsByModel: Signal<[ClipperModel, number][]> = computed(() => {\r\n const states: [ClipperModel, number][] = [];\r\n this.items().forEach(item => {\r\n if (item.models) {\r\n item.models.forEach(itemModel => {\r\n states.push([itemModel.id, itemModel.unreadItems]);\r\n });\r\n } else {\r\n if (item.id == ClipperModule.News) {\r\n states.push([ClipperModel.News, item.unreadItems]);\r\n } else if (item.id == ClipperModule.GazzetteBollettiniEFontiDiverse) {\r\n states.push([ClipperModel.AggiornamentoNormativo, item.unreadItems]);\r\n } else if (item.id == ClipperModule.QuesitiECasiRisolti) {\r\n states.push([ClipperModel.Quesiti, item.unreadItems]);\r\n } else if (item.id == ClipperModule.AllerteAlimentari) {\r\n states.push([ClipperModel.AllerteAlimentari, item.unreadItems]);\r\n } else if (item.id == ClipperModule.Approfondimenti) {\r\n states.push([ClipperModel.Articoli, item.unreadItems]);\r\n } else if (item.id == ClipperModule.ModificheAbrogazioniERinvii) {\r\n states.push([ClipperModel.Coordinamento, item.unreadItems]);\r\n } else if (item.id == ClipperModule.Giurisprudenza) {\r\n states.push([ClipperModel.Juris, item.unreadItems]);\r\n }\r\n }\r\n })\r\n return states;\r\n });\r\n\r\n /**\r\n * Increments (or decrements) the unread item counter for the given module or model.\r\n * Triggers a signal update so computed values and templates react to the change.\r\n * @param module - The `ClipperModule` whose counter should be adjusted.\r\n * @param model - Optional `ClipperModel` for sub-module granularity.\r\n * @param increment - Amount to add (use a negative value to decrement).\r\n */\r\n updateUnreadItems(module: ClipperModule, model: ClipperModel | undefined, increment: number): void {\r\n if (model) {\r\n for (const item of this.items()) {\r\n const itemModel = item.models?.find(x => x.id === model);\r\n if (itemModel) {\r\n itemModel.unreadItems += increment;\r\n break;\r\n }\r\n }\r\n }\r\n const item = this.items().find((x: ClipperDashboardItem) => x.id === module);\r\n if (item) {\r\n item.unreadItems += increment;\r\n }\r\n this.items.update(values => [...values]);\r\n }\r\n\r\n /**\r\n * Returns the unread-item count for the given module, or for a specific model within it.\r\n * @param module - The `ClipperModule` to query.\r\n * @param model - Optional `ClipperModel` for sub-module granularity.\r\n * @returns Number of unread items, or `0` when none are found.\r\n */\r\n getUnreadItems(module: ClipperModule, model?: ClipperModel): number {\r\n if (model) {\r\n return this.unreadItemsByModel().find((x: [ClipperModel, number]) => x[0] === model)?.[1] ?? 0;\r\n }\r\n return this.unreadItems().find((x: [ClipperModule, number]) => x[0] === module)?.[1] ?? 0;\r\n }\r\n\r\n /**\r\n * Returns the sum of unread items across all tracked modules.\r\n * @returns Total unread-item count.\r\n */\r\n getTotalUnreadItems(): number {\r\n return this.unreadItems().reduce((acc, item) => acc + item[1], 0);\r\n }\r\n}\r\n\r\nexport interface ClipperDayItem {\r\n day: string;\r\n label: string;\r\n items: ClipperDayGroup[];\r\n count: number;\r\n}\r\n\r\nexport interface ClipperDayGroup {\r\n model: ClipperModel;\r\n label: string;\r\n items: ClipperDocumentInfo[];\r\n}\r\n\r\nexport interface ClipperLastDaysResult {\r\n items: ClipperDayItem[];\r\n}\r\n\r\n\r\nexport class ClipperTeamMemberInfo {\r\n id: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n name?: string;\r\n email?: string;\r\n isAdmin?: boolean;\r\n isDisabled?: boolean;\r\n hasPermission55?: boolean;\r\n hasPermission56?: boolean;\r\n hasPermission57?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n}\r\n\r\nexport enum ClipperTeamProduct {\r\n SharedArchive = 1004676,\r\n SharedCalendar = 1004683,\r\n SharedNotes = 1013721\r\n}\r\n\r\nexport enum ClipperTeamProductPermission {\r\n SharedNotes = 55,\r\n SharedArchive = 56,\r\n SharedCalendar = 57\r\n}\r\n\r\nexport interface ClipperTeamProductInfo {\r\n permissionId: ClipperTeamProductPermission;\r\n name: string;\r\n maxMembers: number;\r\n usedMembers: number;\r\n}\r\n\r\nexport interface ClipperTeamMembersSearchResult {\r\n teamId?: string;\r\n teamTitle?: string;\r\n total?: number;\r\n customerId?: number;\r\n canEdit?: boolean;\r\n products?: ClipperTeamProductInfo[];\r\n items?: ClipperTeamMemberInfo[];\r\n}\r\n\r\nexport interface ClipperTeamsSearchParams {\r\n teamId?: string;\r\n permissionId?: number;\r\n productId?: number;\r\n adminsOnly?: boolean;\r\n activeMembersOnly?: boolean;\r\n includeRSTeams?: boolean;\r\n}\r\n\r\nexport interface ClipperTeamsSearchResult {\r\n total: number;\r\n items: NameValueItem<string>[];\r\n}\r\n\r\nexport class ClipperTeamInfo {\r\n id?: string;\r\n customerId?: number;\r\n title?: string;\r\n isDisabled?: boolean;\r\n created?: string;\r\n lastModified?: string;\r\n}\r\n\r\n\r\nexport interface ClipperContactsSearchParams extends QueryModel {\r\n teamId?: string;\r\n name?: string;\r\n includeDisabled?: boolean;\r\n}\r\n\r\nexport interface ClipperContactInfo {\r\n id?: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n userId?: number;\r\n name?: string;\r\n emails?: string;\r\n disabled?: boolean;\r\n created?: Date;\r\n lastUpdated?: Date;\r\n}\r\n\r\nexport enum ClipperCalendarState {\r\n Open = 101,\r\n Expired = 102,\r\n Expiring = 103,\r\n Closed = 104\r\n}\r\n\r\nexport const ClipperCalendarStates: NameValueItem<ClipperCalendarState>[] = [\r\n { name: 'Aperte', value: ClipperCalendarState.Open },\r\n { name: 'Chiuse', value: ClipperCalendarState.Closed },\r\n { name: 'Scadute', value: ClipperCalendarState.Expired },\r\n { name: 'Imminenti', value: ClipperCalendarState.Expiring }\r\n]\r\n\r\n\r\nexport class ClipperCalendarSearchParams {\r\n id?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n teamId?: string;\r\n text?: string;\r\n month?: number;\r\n year?: number;\r\n sortDescending?: boolean;\r\n state?: ClipperCalendarState;\r\n recurrentOnly?: boolean;\r\n first?: number = 0;\r\n count?: number = 15\r\n}\r\n\r\nexport interface ClipperCalendarSearchResult {\r\n interval: string;\r\n items: ClipperDeadlineInfo[];\r\n days: number[];\r\n teams: NameValueItem<string>[];\r\n total: number;\r\n}\r\n\r\n\r\n\r\nexport interface ClipperDeadlineInfo {\r\n id?: string;\r\n companyId?: number;\r\n userId?: number;\r\n teamId: string;\r\n teamName?: string;\r\n group?: string;\r\n description?: string;\r\n documentTitle?: string;\r\n documentId?: string;\r\n documentNumber?: string;\r\n documentDate?: Date;\r\n emails?: string;\r\n expiringDate?: Date;\r\n expiredAlertSent?: boolean;\r\n expiringInfo?: string;\r\n expiringDescription?: string;\r\n nextExpiringDate?: Date;\r\n alarmDays?: number;\r\n alarmDate?: Date;\r\n alarmMemo?: string;\r\n alarmSent?: boolean;\r\n hasAlarm?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n isExpired?: boolean;\r\n isExpiring?: boolean;\r\n isClosed?: boolean;\r\n isClosable?: boolean;\r\n isPrivate?: boolean;\r\n isRecurrent?: boolean;\r\n recurrencePatternType?: ClipperRecurrenceType;\r\n recurrenceFrequency?: number;\r\n recurrenceEndOfMonth?: boolean;\r\n recurrenceNewId?: string;\r\n outlookAppointmentId?: string;\r\n created?: Date;\r\n lastModified?: Date;\r\n}\r\n\r\nexport interface ClipperCalendarSaveDeadlineParams {\r\n deadline: ClipperDeadlineInfo;\r\n teamIds?: string[];\r\n}\r\n\r\nexport enum ClipperCalendarCopyMode {\r\n Duplicate = 1,\r\n Move = 2\r\n}\r\n\r\nexport interface ClipperCalendarCopyDeadlinesParams {\r\n ids: string[];\r\n teamId: string;\r\n mode: ClipperCalendarCopyMode;\r\n}\r\n\r\nexport enum ClipperArchiveFileType {\r\n None = 0,\r\n Procedure = 1,\r\n OperatingInstructions = 2,\r\n TechnicalReport = 3,\r\n AdministrativeDocument = 4,\r\n Document = 5,\r\n OtherApplicableRules = 6,\r\n Other = 7,\r\n File = 101,\r\n Image = 102\r\n}\r\n\r\nexport const ClipperArchiveFileTypes: NameValueItem<ClipperArchiveFileType>[] = [\r\n { name: 'File', value: ClipperArchiveFileType.File },\r\n { name: 'Immagine', value: ClipperArchiveFileType.Image },\r\n { name: 'Procedura', value: ClipperArchiveFileType.Procedure },\r\n { name: 'Istruzioni operative', value: ClipperArchiveFileType.OperatingInstructions },\r\n { name: 'Relazione tecnica', value: ClipperArchiveFileType.TechnicalReport },\r\n { name: 'Documento iter amministrativo', value: ClipperArchiveFileType.AdministrativeDocument },\r\n { name: 'Documento aziendale', value: ClipperArchiveFileType.Document },\r\n { name: 'Altre norme applicabili', value: ClipperArchiveFileType.OtherApplicableRules },\r\n { name: 'Altro', value: ClipperArchiveFileType.Other }\r\n]\r\n\r\n\r\nexport enum ClipperArchiveFileStorageType {\r\n ArsCloud = 2,\r\n OtherCloud = 3\r\n}\r\nexport const ClipperArchiveFileStorageTypes: NameValueItem<ClipperArchiveFileStorageType>[] = [\r\n { name: 'ARS Cloud', value: ClipperArchiveFileStorageType.ArsCloud },\r\n { name: 'Altro cloud', value: ClipperArchiveFileStorageType.OtherCloud }\r\n]\r\n\r\n\r\nexport interface ClipperArchiveFileInfo {\r\n id?: string;\r\n parentFolderId?: string;\r\n isFolder?: boolean;\r\n folderId?: string;\r\n folderName?: string;\r\n folderItemsCount?: number;\r\n teamId: string;\r\n teamName?: string;\r\n topicId?: string;\r\n topicPath?: string;\r\n topicName?: string;\r\n topics?: string[];\r\n tags?: string;\r\n isPrivate?: boolean;\r\n isFile?: boolean;\r\n fileName?: string;\r\n storageType?: ClipperArchiveFileStorageType;\r\n isBinary?: boolean;\r\n binaryId?: number;\r\n binaryFilePath?: string;\r\n isPermalink?: boolean;\r\n fileType?: ClipperArchiveFileType;\r\n file?: any;\r\n notes?: string;\r\n position?: number;\r\n documentIds?: string;\r\n documentLastChangedBy?: string;\r\n documentLastChangedById?: string;\r\n documentLastChangedReasonDescription?: string;\r\n documentLastChanged?: Date;\r\n documentUpdateState?: number;\r\n isDocumentChanged?: boolean;\r\n canPreview?: boolean;\r\n canEmbed?: boolean;\r\n channelName?: string;\r\n model?: ClipperModel;\r\n modelName?: string;\r\n title1?: string;\r\n title2?: string;\r\n date?: Date;\r\n number?: string;\r\n origin?: string;\r\n originDescription?: string;\r\n documentId?: string;\r\n documentCode?: string;\r\n isDocument?: boolean;\r\n isRead?: boolean;\r\n isJuris?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n validityState?: number;\r\n validUntilDate?: Date;\r\n expiringDate?: Date;\r\n expiringInfo?: string;\r\n uniqueId: string;\r\n}\r\n\r\n\r\nexport interface ClipperArchiveFolderTree extends Folder {\r\n subFolders: ClipperArchiveFolderTree[];\r\n}\r\n\r\n\r\nexport class ClipperArchiveFoldersSearchParams {\r\n teamId?: string;\r\n privateOnly?: boolean;\r\n}\r\n\r\nexport interface ClipperArchiveFoldersSearchResult {\r\n name: string;\r\n teams: NameValueItem<string>[];\r\n files: ClipperArchiveFileInfo[];\r\n subFolders: ClipperArchiveFolderTree[];\r\n\r\n}\r\n\r\n\r\nexport class ClipperArchiveFilesSearchParams {\r\n teamId?: string;\r\n folderId?: string;\r\n folderName?: string;\r\n fileType?: ClipperArchiveFileType;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n topicPath?: string;\r\n topicId?: string;\r\n topicName?: string;\r\n titlesOnly?: boolean;\r\n text?: string;\r\n documentNumber?: string;\r\n documentYear?: number;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface ClipperArchiveFilesSearchResult {\r\n items: ClipperArchiveFileInfo[];\r\n folderName?: string;\r\n total: number;\r\n}\r\n\r\nexport interface ClipperArchiveFoldersImportParams {\r\n teamId: string;\r\n destFolderId?: string;\r\n sourcePath?: string;\r\n sourceFileName?: string;\r\n file?: any;\r\n overwrite?: boolean;\r\n version?: number;\r\n}\r\n\r\nexport enum ClipperArchiveCopyMode {\r\n Duplicate = 1,\r\n Move = 2\r\n}\r\n\r\nexport interface ClipperArchiveFilesCopyParams {\r\n destTeamId: string;\r\n destFolderId?: string;\r\n files?: ClipperArchiveFileInfo[];\r\n mode?: ClipperArchiveCopyMode;\r\n}\r\n\r\nexport interface ClipperArchiveFilesDeleteParams {\r\n sourceFolderId?: string;\r\n destFolderId?: string;\r\n files?: ClipperArchiveFileInfo[];\r\n}\r\n\r\n\r\nexport class ClipperUtils {\r\n\r\n /**\r\n * Returns `true` when the given model corresponds to a readable document type\r\n * (i.e., can be opened in the document viewer).\r\n * @param model - The `ClipperModel` to test.\r\n */\r\n static isClipperModelReadable(model: ClipperModel): boolean {\r\n return model !== ClipperModel.Unknown &&\r\n model !== ClipperModel.NormativaVigente &&\r\n model !== ClipperModel.Scadenze &&\r\n model !== ClipperModel.Segnalazioni\r\n }\r\n\r\n /**\r\n * Returns the `ClipperModule` that owns the given document, derived from its model type.\r\n * @param item - The document info object to inspect.\r\n * @returns The matching `ClipperModule`, or `undefined` when the model has no direct module mapping.\r\n */\r\n static getClipperModuleFromModel(item: ClipperDocumentInfo): ClipperModule | undefined {\r\n switch (item.model) {\r\n case ClipperModel.AllerteAlimentari: return ClipperModule.AllerteAlimentari;\r\n case ClipperModel.News: return ClipperModule.News;\r\n case ClipperModel.Articoli:\r\n case ClipperModel.Juris: return ClipperModule.Approfondimenti;\r\n case ClipperModel.Quesiti: return ClipperModule.QuesitiECasiRisolti;\r\n case ClipperModel.Coordinamento: return ClipperModule.ModificheAbrogazioniERinvii;\r\n case ClipperModel.GiurisprudenzaRecente: return ClipperModule.Giurisprudenza;\r\n case ClipperModel.NormativaVigente: return ClipperModule.NormativaVigente;\r\n case ClipperModel.Segnalazioni:\r\n case ClipperModel.Scadenze: return ClipperModule.ScadenzeESegnalazioni;\r\n case ClipperModel.AggiornamentoNormativo: return ClipperModule.GazzetteBollettiniEFontiDiverse;\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n /**\r\n * Returns the display name for the given `ClipperModuleGroup`.\r\n * @param value - The module group enum value to look up.\r\n * @returns The group display name, or an empty string when not found.\r\n */\r\n static getClipperModuleGroupName(value: ClipperModuleGroup): string {\r\n return ClipperModuleGroups.find(n => n.value === value)?.name ?? '';\r\n }\r\n\r\n /**\r\n * Returns the list of `ClipperModule` items belonging to the given module group.\r\n * @param value - The module group to filter by.\r\n * @returns Array of matching `NameValueItem` entries.\r\n */\r\n static getClipperModuleGroupItems(value: ClipperModuleGroup): NameValueItem<ClipperModule>[] {\r\n return ClipperModules.filter(n => n.parentValue === value);\r\n }\r\n\r\n /**\r\n * Tests a set of modules against the currently selected modules in the search filter.\r\n * @param modules - The modules to test.\r\n * @param currentModules - The currently selected modules to check against.\r\n * @param mode - Matching strategy:\r\n * `1` = all and only the specified modules (exact set),\r\n * `2` = all specified modules must be present,\r\n * `3` = at least one specified module must be present.\r\n * @returns `true` when the condition defined by `mode` is satisfied.\r\n */\r\n private static checkModules(\r\n modules: ClipperModule[],\r\n currentModules: NameValueItem<ClipperModule>[],\r\n mode: number = 1\r\n ): boolean {\r\n let ok = false;\r\n if (mode === 1) {\r\n // All and only the elements specified\r\n for (const current of currentModules) {\r\n ok = modules.findIndex(x => x === current.value) !== -1;\r\n if (!ok) break;\r\n }\r\n ok = ok && modules.length >= currentModules.length;\r\n } else if (mode === 2) {\r\n // All the elements specified\r\n for (const mod of modules) {\r\n ok = currentModules.findIndex(x => x.value === mod) !== -1;\r\n if (!ok) break;\r\n }\r\n } else if (mode === 3) {\r\n // Any of the specified elements\r\n for (const mod of modules) {\r\n ok = currentModules.findIndex(x => x.value === mod) !== -1;\r\n if (ok) break;\r\n }\r\n }\r\n return ok;\r\n }\r\n\r\n /**\r\n * Returns the sort options available for the given module selection.\r\n * Includes the relevance option only when the query contains free text.\r\n * @param modules - Currently selected modules (used to determine which date axes are available).\r\n * @param params - Current search params (checked for free-text content).\r\n * @returns Array of applicable `NameValueItem<ClipperSort>` sort options.\r\n */\r\n static getClipperAvailableSortOptions(\r\n modules?: NameValueItem<ClipperModule>[],\r\n params?: ClipperSearchParams): NameValueItem<ClipperSort>[] {\r\n const options: NameValueItem<ClipperSort>[] = [\r\n { name: \"Data decrescente\", value: ClipperSort.DateDesc },\r\n { name: \"Data crescente\", value: ClipperSort.DateAsc },\r\n { name: \"Data fonte decrescente\", value: ClipperSort.SourceDateDesc },\r\n { name: \"Data fonte crescente\", value: ClipperSort.SourceDateAsc },\r\n { name: \"Rilevanza\", value: ClipperSort.Relevance },\r\n //{ name: \"Popolarità\", value: ClipperSort.Popularity },\r\n ];\r\n const sortOptions: NameValueItem<ClipperSort>[] = []\r\n if (params && ClipperSearchUtils.isTextQuery(params)) {\r\n sortOptions.push(options[4]);\r\n }\r\n if (modules && modules.length > 0) {\r\n if (this.checkModules([ClipperModule.GazzetteBollettiniEFontiDiverse], modules, 1)) {\r\n sortOptions.push(options[2]);\r\n sortOptions.push(options[3]);\r\n } else if (this.checkModules([ClipperModule.NormativaVigente], modules, 1) ||\r\n this.checkModules([ClipperModule.Giurisprudenza], modules, 1)) {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n } else {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n }\r\n } else {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n }\r\n return sortOptions;\r\n }\r\n\r\n}\r\n\r\nexport class ClipperSearchUtils {\r\n\r\n /**\r\n * Resets all filter fields of a `ClipperSearchParams` instance to their default (empty) values.\r\n * @param params - The search-params object to clear.\r\n */\r\n static clear(params: ClipperSearchParams): void {\r\n params.sector = undefined;\r\n params.sectors = undefined;\r\n params.author = undefined;\r\n params.authors = undefined;\r\n params.topic = undefined;\r\n params.topics = undefined;\r\n params.taxonomy = undefined;\r\n params.taxonomies = undefined;\r\n params.taxonomyPath = undefined;\r\n params.taxonomyNode = undefined;\r\n params.number = undefined;\r\n params.fromDate = undefined;\r\n params.toDate = undefined;\r\n params.year = undefined;\r\n params.sourceNumber = undefined;\r\n params.source = undefined;\r\n params.sourceFromDate = undefined;\r\n params.sourceToDate = undefined;\r\n params.sourceYear = undefined;\r\n params.tags = undefined;\r\n params.text = undefined;\r\n params.titleOnly = false;\r\n params.type = undefined;\r\n params.types = undefined;\r\n params.showUnreadDocumentsOnly = false;\r\n params.showCommentedDocumentsOnly = false;\r\n params.showNotAbrogatedDocumentsOnly = false;\r\n if (!params.channels || params.channels.length === 0) {\r\n params.channels = [...ClipperChannels];\r\n }\r\n params.changeReason = undefined;\r\n params.changedNumber = undefined;\r\n params.changedYear = undefined;\r\n params.changedTitle = undefined;\r\n params.changedId = undefined;\r\n params.modifierId = undefined;\r\n params.modifierNumber = undefined;\r\n params.modifierYear = undefined;\r\n params.modifierTitle = undefined;\r\n params.model = undefined;\r\n params.models = undefined;\r\n params.module = undefined;\r\n params.modules = undefined;\r\n }\r\n\r\n\r\n /**\r\n * Returns the list of `ClipperModel` values that correspond to the given modules.\r\n * @param modules - The selected modules to map to their underlying data models.\r\n * @returns Array of `ClipperModel` values matching the provided modules.\r\n */\r\n static getModulesModels(modules?: NameValueItem<ClipperModule>[]): ClipperModel[] {\r\n const models: ClipperModel[] = [];\r\n if (modules && modules.length > 0) {\r\n modules.forEach(module => {\r\n switch (module.value) {\r\n case ClipperModule.ScadenzeESegnalazioni:\r\n [ClipperModel.Scadenze, ClipperModel.Segnalazioni].forEach(x => models.push(x));\r\n break;\r\n case ClipperModule.QuesitiECasiRisolti:\r\n models.push(ClipperModel.Quesiti);\r\n break;\r\n case ClipperModule.News:\r\n models.push(ClipperModel.News);\r\n break;\r\n case ClipperModule.Approfondimenti:\r\n models.push(ClipperModel.Articoli);\r\n break;\r\n case ClipperModule.AllerteAlimentari:\r\n models.push(ClipperModel.AllerteAlimentari);\r\n break;\r\n case ClipperModule.GazzetteBollettiniEFontiDiverse:\r\n models.push(ClipperModel.AggiornamentoNormativo);\r\n break;\r\n case ClipperModule.GiurisprudenzaRecente:\r\n models.push(ClipperModel.GiurisprudenzaRecente);\r\n break;\r\n case ClipperModule.NormativaVigente:\r\n models.push(ClipperModel.NormativaVigente);\r\n break;\r\n case ClipperModule.ModificheAbrogazioniERinvii:\r\n models.push(ClipperModel.Coordinamento);\r\n break;\r\n case ClipperModule.Giurisprudenza:\r\n models.push(ClipperModel.Juris);\r\n break;\r\n }\r\n });\r\n }\r\n return models;\r\n }\r\n\r\n /**\r\n * Returns `true` when the search params contain a non-empty free-text query.\r\n * @param params - The search params to inspect.\r\n */\r\n static isTextQuery(params: ClipperSearchParams): boolean {\r\n return params.text != null && params.text.length > 0;\r\n }\r\n\r\n /**\r\n * Wraps `q` in quotes (if not already quoted) and appends it to `queries`.\r\n * @param q - A single search term to process.\r\n * @param queries - The accumulated query string to append to.\r\n * @returns The updated `queries` string.\r\n */\r\n private static concatTextQuery(q: string, queries: string): string {\r\n if (q && q.length > 1) {\r\n if ((q[0] === '+' || q[0] === '-') && q[1] !== '\"') {\r\n q = q[0] + '\"' + q.substring(1) + '\"';\r\n } else if (q[0] !== '\"') {\r\n q = \"\\\"\" + q + \"\\\"\";\r\n }\r\n queries += q + \" \";\r\n }\r\n return queries;\r\n }\r\n\r\n /**\r\n * Normalises a comma-separated search string by wrapping each term in quotes.\r\n * @param text - The raw search input to normalise.\r\n * @returns The normalised query string, or `undefined` when `text` is empty.\r\n */\r\n static normalizeTextQuery(text: string): string | undefined {\r\n if (!text || text.length === 0) return undefined;\r\n let q: string = '';\r\n let queries: string = '';\r\n for (let i = 0; i < text.length; i++) {\r\n if (text[i] === ',') {\r\n queries = this.concatTextQuery(q.trim(), queries);\r\n q = '';\r\n }\r\n else q += text[i];\r\n }\r\n queries = this.concatTextQuery(q.trim(), queries);\r\n return queries;\r\n }\r\n\r\n /**\r\n * Wraps the entire query in double quotes when it contains no boolean operators\r\n * (`\"`, `+`, or ` -`), making it an exact-phrase search.\r\n * @param text - The query string to normalise.\r\n * @returns The normalised query string.\r\n */\r\n static normalizeTextQuery2(text: string): string {\r\n if (!text) return text;\r\n // Add quotes only if there are no quoted elements, no '+', and no ' -'\r\n if (!text.includes('\"') && !text.includes('+') && !text.includes(' -')) {\r\n return '\"' + text + '\"';\r\n }\r\n return text;\r\n }\r\n\r\n\r\n /**\r\n * Maps a letter rank (`A`, `B`, or any other) to a numeric relevance threshold.\r\n * @param value - The single-character rank string.\r\n * @returns `0.751` for `'A'`, `0.71` for `'B'`, `0.51` for anything else.\r\n */\r\n static getRankFromChar(value: string): number {\r\n switch (value.toUpperCase()) {\r\n case 'A': return 0.751;\r\n case 'B': return 0.71;\r\n default:\r\n return 0.51;\r\n }\r\n }\r\n}","import { NameValueItem } from \"@arsedizioni/ars-utils/core\";\r\n\r\nexport const NotesColors: NameValueItem<string>[] = \r\n[{ name: \"Verde\", value: \"#2E8B74\" },\r\n { name: \"Viola\", value: \"#9B59B6\" },\r\n { name: \"Giallo\", value: \"#E8A838\" },\r\n { name: \"Ciano\", value: \"#17A8BA\" },\r\n { name: \"Arancione\", value: \"#FD7E14\" },\r\n { name: \"Magenta\", value: \"#E91E8C\" },\r\n { name: \"Grigio\", value: \"#6C757D\" },\r\n { name: \"Indaco\", value: \"#5B6EBF\" }\r\n];\r\n","import { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';\r\nimport { DestroyRef, Injectable, Signal, computed, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ApiResult, BroadcastService,\r\n Folder,\r\n FolderTree,\r\n NameValueItem, QueryResultModel, SystemUtils,\r\n UpdateResultModel\r\n} from '@arsedizioni/ars-utils/core';\r\nimport { DialogService, RecoverPasswordDialogResult, ResetPasswordDialogResult } from '@arsedizioni/ars-utils/ui';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\nimport { EMPTY, of, throwError } from 'rxjs';\r\nimport { catchError, finalize, map } from 'rxjs/operators';\r\nimport { ClipperServiceFlags, ClipperDashboard, ClipperDashboardResult, ClipperDocumentInfo, ClipperDocumentStructure, ClipperDocumentUpdateStateParams, ClipperExportDocumentsParams, ClipperLoginInfo, ClipperLoginResult, ClipperModule, ClipperOTPInfo, ClipperSearchArsEventsParams, ClipperSearchArsEventsResult, ClipperQueryReferencesMode, ClipperReferencesSearchParams, ClipperSearchFacetsResult, ClipperSearchParams, ClipperSearchResult, ClipperSendDocumentsByEmailParams, ClipperTaxonomyParams, ClipperUserSearch, ClipperUserWorkingDocument, ClipperCalendarSearchParams, ClipperCalendarSearchResult, ClipperSearchCalendarSnapshotResult, ClipperCalendarCopyDeadlinesParams, ClipperDeadlineInfo, ClipperCalendarSaveDeadlineParams, ClipperArchiveFoldersSearchParams, ClipperArchiveFoldersSearchResult, ClipperArchiveFileInfo, ClipperArchiveFoldersImportParams, ClipperArchiveFilesSearchResult, ClipperArchiveFilesDeleteParams, ClipperArchiveFilesCopyParams, ClipperArchiveFilesSearchParams, ClipperModel, ClipperChannel, ClipperChannels, ClipperLastDaysResult, ClipperAvailableChannel, ClipperChannelSettings, ClipperUpdateChannelsStateParams, ClipperUserTrialInfo, ClipperUserLink, ClipperTeamInfo, ClipperTeamsSearchParams, ClipperTeamsSearchResult, ClipperTeamMembersSearchResult, ClipperTeamMemberInfo, ClipperContactsSearchParams, ClipperContactInfo, ClipperDocumentNote, ClipperNotesSearchParams, ClipperNotifyDocumentNoteParams, ClipperDocumentNoteTracking, ClipperNotesSearchResult, ClipperSettingsInfo } from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\n\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ClipperService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private readonly dialogService = inject(DialogService);\r\n private broadcastInitialized = false;\r\n private _appUri?: string;\r\n get appUri(): string | undefined {\r\n return this._appUri;\r\n }\r\n private _serviceUri: string = '';\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n private _flags: ClipperServiceFlags = ClipperServiceFlags.None;\r\n get flags(): ClipperServiceFlags {\r\n return this._flags;\r\n }\r\n private _loginInfo?: ClipperLoginInfo;\r\n get loginInfo(): ClipperLoginInfo | undefined {\r\n if (!this._loginInfo) {\r\n const loginInfo = localStorage.getItem('clipper_context');\r\n if (loginInfo) {\r\n try {\r\n this._loginInfo = JSON.parse(loginInfo) as ClipperLoginInfo;\r\n } catch { }\r\n }\r\n }\r\n return this._loginInfo;\r\n }\r\n public readonly loggedIn = signal<boolean>(sessionStorage.getItem(\"clipper_oauth_token\") !== null);\r\n public readonly loggingIn = signal<boolean>(false);\r\n public readonly snapshot = signal<ClipperSearchResult | undefined>(undefined);\r\n public readonly supportsRS = signal<boolean>(false);\r\n public readonly referencesSnapshot = signal<ClipperSearchResult | undefined>(undefined);\r\n public readonly dashboard: ClipperDashboard = new ClipperDashboard();\r\n public readonly bag = signal<ClipperDocumentInfo[]>([]);\r\n public readonly bagTotal: Signal<number> = computed(() => this.bag().length);\r\n public readonly visible = signal<boolean>(false);\r\n private _teams: NameValueItem<string>[] = [];\r\n get teams(): NameValueItem<string>[] {\r\n return this._teams;\r\n }\r\n public readonly availableChannels = signal<ClipperAvailableChannel[]>([]);\r\n\r\n public readonly activeChannels: Signal<ClipperAvailableChannel[]> = computed(() => {\r\n return this.availableChannels()?.filter(x => !x.suspended && !x.disabled && x.active === true);\r\n });\r\n public readonly allowTags = signal<boolean>(false);\r\n public readonly pendingNotes = signal<number|undefined>(undefined);\r\n\r\n /**\r\n * Initialises the service with the API base URI, optional app URI, and feature flags.\r\n * @param serviceUri - The base URI of the Clipper REST API.\r\n * @param appUri - Optional URI of the Clipper web application (used to build document links).\r\n * @param flags - Feature flags that control service behaviour. Defaults to `ClipperServiceFlags.None`.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n appUri?: string,\r\n flags: ClipperServiceFlags = ClipperServiceFlags.None,\r\n ) {\r\n\r\n // Create unique client and machine id\r\n if (!sessionStorage.getItem('clipper_client_id')) {\r\n sessionStorage.setItem('clipper_client_id',\r\n (flags && ClipperServiceFlags.Embedded) > 0\r\n ? 'embedded'\r\n : SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._appUri = appUri;\r\n this._flags = flags;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastInitialized) {\r\n this.broadcastInitialized = true;\r\n this.broadcastService.getMessage()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(message => {\r\n if (message.id === ClipperMessages.LOGIN_CHANGED) {\r\n this.login(\r\n undefined,\r\n undefined,\r\n true,\r\n message.data?.oauth ?? undefined,\r\n message.data?.oauthAccessToken ?? undefined).subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.error(\r\n \"Le credenziali di accesso sono cambiate o non sono più valide. Esegui un nuovo accesso.\",\r\n undefined,\r\n \"Errore di Clipper\");\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_FAILED);\r\n } else {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Connesso a Clipper', 1500, 'power');\r\n }\r\n // Load bag\r\n this.loadBag();\r\n }\r\n },\r\n error: () => { console.error(\"Clipper non disponibile.\") } // Avoid unwanted errors on client\r\n });\r\n } else if (message.id === ClipperMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.logout().subscribe(r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.dialogService.error(\"<p>\" + r.message + \"</p><br><br><hr><p class='small'><i>Per eliminare la configurazione di Clipper accedere a:<br><b>menu > personalizza > collegamenti</b></i></p>\", undefined, \"Errore di Clipper\");\r\n }\r\n } else {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Disconnesso da Clipper', 1500, 'power_off');\r\n }\r\n // Empty bag\r\n this.bag.set([]);\r\n }\r\n });\r\n } else {\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n if (this.loggedIn()) {\r\n // Auto login\r\n this.loggingIn.set(false);\r\n // Initialize channels\r\n this.initializeChannels();\r\n // Notify \r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_COMPLETED);\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Ping\r\n */\r\n ping() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/ping?nocache=' + SystemUtils.generateUUID()\r\n )\r\n .pipe(catchError(() => { return EMPTY }))\r\n .subscribe();\r\n }\r\n\r\n\r\n\r\n /**\r\n * Persists the current login context to `localStorage`.\r\n */\r\n storeContext(): void {\r\n localStorage.setItem('clipper_context', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n /**\r\n * Updates the stored login context with the values from a fresh login result.\r\n * @param result - The login result containing the new user context and channel settings.\r\n */\r\n updateContext(result: ClipperLoginResult): void {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n this._loginInfo.context = result.context;\r\n this._loginInfo.channels = result.settings;\r\n this.storeContext();\r\n }\r\n\r\n /**\r\n * Attempts an automatic login using the credentials currently stored in session storage.\r\n * @param onSuccess - Optional callback invoked with the login result value on success.\r\n */\r\n autoLogin(onSuccess?: (value?: any) => void) {\r\n this.login(undefined, undefined, true)\r\n .pipe(finalize(() => this.dialogService.clearBusy()))\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message, undefined, \"Errore in Clipper\");\r\n } else {\r\n if (!r.value.requiresMfa) {\r\n this.dialogService.toast('Connesso a Clipper', 1500, 'power');\r\n }\r\n if (onSuccess) {\r\n onSuccess(r.value);\r\n }\r\n }\r\n },\r\n error: () => { this.dialogService.error(\"Clipper non disponibile.\") }\r\n });\r\n }\r\n\r\n /**\r\n * Performs an automatic logout and clears the stored session.\r\n * @param onSuccess - Optional callback invoked after a successful logout.\r\n */\r\n autoLogout(onSuccess?: () => void) {\r\n this.logout()\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.dialogService.error(r.message, undefined, \"Errore in Clipper\");\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_CHANGED);\r\n } else {\r\n this.dialogService.toast('Disconnesso da Clipper', 1500, 'power_off');\r\n }\r\n },\r\n error: () => { },\r\n complete: () => {\r\n this.dialogService.clearBusy();\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Authenticates the user against the Clipper API, supporting both credential-based and\r\n * OAuth2 login flows.\r\n * @param email - The user's email address (credential login only).\r\n * @param password - The user's password (credential login only).\r\n * @param remember - When `true`, the session is remembered across browser restarts.\r\n * @param oauth - The OAuth2 provider type, when authenticating via SSO.\r\n * @param oauthAccessToken - The OAuth2 bearer token. Defaults to the value stored in session storage.\r\n */\r\n login(email?: string,\r\n password?: string,\r\n remember?: boolean,\r\n oauth?: LoginOAuthType,\r\n oauthAccessToken: string | undefined = sessionStorage.getItem(\"clipper_oauth_token\") ?? undefined) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperLoginResult>>(\r\n this._serviceUri + '/login2',\r\n {\r\n user: oauth ? null : email,\r\n password: oauth ? null : password,\r\n remember: remember,\r\n oauth: oauth\r\n },\r\n {\r\n headers:\r\n !oauth || !oauthAccessToken\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", 'Bearer ' + oauthAccessToken)\r\n })\r\n .pipe(\r\n catchError(err => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<ClipperLoginResult>) => {\r\n if (r.success) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n this._loginInfo.oauth = oauth;\r\n this._loginInfo.remember = remember;\r\n if (!oauth && r.value.requiresMfa) {\r\n // Notify login is pending\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_PENDING);\r\n } else {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Finalises the login flow by updating the stored context, setting the logged-in signal,\r\n * initialising channels, and broadcasting `LOGIN_COMPLETED`.\r\n * @param result - The login result returned by the API.\r\n */\r\n private completeLogin(result: ClipperLoginResult): void {\r\n // Update context info \r\n this.updateContext(result);\r\n this.loggedIn.set(!result.context?.isTemporary);\r\n this.loggingIn.set(false);\r\n // Initialize channels\r\n this.initializeChannels();\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_COMPLETED);\r\n }\r\n /**\r\n * Submits the MFA confirmation code to complete a two-factor login flow.\r\n * @param code - The one-time confirmation code provided to the user.\r\n */\r\n confirmIdentity(code: string) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperLoginResult>>(\r\n this._serviceUri + '/login/confirm/' + code,\r\n {},\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<ClipperLoginResult>) => {\r\n if (r.success) {\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Logs the user out and clears the current session.\r\n * @param forget - When `true`, all stored user credentials are also removed.\r\n */\r\n logout(forget: boolean = false) {\r\n return this.httpClient.post<any>(this._serviceUri + '/logout/?forget=' + forget, {})\r\n .pipe(\r\n finalize(() => {\r\n this.clear(true);\r\n // Clean up\r\n localStorage.removeItem('clipper_context');\r\n }),\r\n catchError((_e) => {\r\n return of([]);\r\n }));\r\n }\r\n /**\r\n * Resets the login state, clears the stored login info, and broadcasts `LOGOUT_COMPLETED`.\r\n */\r\n reset(): void {\r\n // Clear login info\r\n this._loginInfo = undefined;\r\n // Logged out\r\n this.loggedIn.set(false);\r\n // Reset channels\r\n this.availableChannels.set([]);\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGOUT_COMPLETED);\r\n }\r\n /**\r\n * Clears all session-storage authentication keys and resets the login state.\r\n * @param clearOAuthToken - When `true`, the OAuth bearer token is also removed.\r\n */\r\n clear(clearOAuthToken: boolean = false): void {\r\n // Clear local storage\r\n sessionStorage.removeItem('clipper_auth');\r\n sessionStorage.removeItem('clipper_oauth');\r\n if (clearOAuthToken) {\r\n sessionStorage.removeItem('clipper_oauth_token');\r\n }\r\n\r\n // Reset login\r\n this.reset();\r\n }\r\n /**\r\n * Applies a new dashboard result: updates channel settings, dashboard counters, and\r\n * re-initialises the available-channels signal.\r\n * @param value - The dashboard result containing updated channel and counter data.\r\n */\r\n setChannelsState(value: ClipperDashboardResult): void {\r\n // Update channels\r\n if (this._loginInfo) {\r\n this._loginInfo.channels = value.channels ?? [];\r\n }\r\n // Update dashboard\r\n this.dashboard.documentUpdates = value.documentUpdates;\r\n this.dashboard.expiredDeadlines = value.expiredDeadlines;\r\n this.dashboard.expiringDeadlines = value.expiringDeadlines;\r\n this.dashboard.isTrial = value.isTrial;\r\n this.dashboard.items.set(value.items ?? []);\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n this.storeContext();\r\n this.initializeChannels();\r\n }\r\n\r\n /**\r\n * Replaces the stored channel settings and re-initialises the available-channels signal.\r\n * @param channels - The new channel settings to store and activate.\r\n */\r\n setChannels(channels: ClipperChannelSettings[]): void {\r\n if (this._loginInfo) {\r\n this._loginInfo.channels = channels;\r\n this.storeContext();\r\n this.initializeChannels();\r\n }\r\n }\r\n\r\n /**\r\n * Rebuilds the `availableChannels` signal from the current login context.\r\n */\r\n private initializeChannels(): void {\r\n if (this.loginInfo) {\r\n const channels: ClipperAvailableChannel[] = [];\r\n this.loginInfo.channels?.forEach(n => {\r\n const channelSubscription = this.loginInfo?.context?.channels?.find(x => x.channel === n.channelId);\r\n n.isSuspended = channelSubscription?.isSuspended === true;\r\n const channel = ClipperChannels.find(x => x.value === n.channelId) as ClipperAvailableChannel;\r\n if (channel) {\r\n channel.disabled = !n.isActive\r\n channel.suspended = n.isSuspended === true;\r\n channel.active = n.isActive === true && n.isEnabled === true;\r\n channels.push(channel);\r\n }\r\n });\r\n this.availableChannels.set(channels);\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the active state of available channels based on the supplied selection list.\r\n * @param values - The selected channel items; channels absent from this list are deactivated.\r\n */\r\n updateChannels(values: NameValueItem<ClipperChannel>[]): void {\r\n this.availableChannels().forEach(channel => {\r\n if (!channel.disabled) {\r\n channel.active = values?.findIndex(x => x.value === channel.value) !== -1;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Requests a new one-time password for the given repository.\r\n * @param id - The repository ID for which the OTP should be generated.\r\n */\r\n newOTP(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperOTPInfo>>(\r\n this._serviceUri + '/otp/new/?id=' + id,\r\n );\r\n }\r\n\r\n /**\r\n * Load Ars events calendar\r\n */\r\n events(params: ClipperSearchArsEventsParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchArsEventsResult>>(\r\n this._serviceUri + '/ars/events',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Query documents\r\n */\r\n query(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Get facets for a query\r\n */\r\n queryFacets(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this._serviceUri + '/documents/facets',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Update document state\r\n */\r\n updateState(params: ClipperDocumentUpdateStateParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/documents/state/update',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Export a document in pdf format\r\n */\r\n exportPdf(id: string) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/documents/export/' + id,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Export document list (query or selected items) or export deadlines as ics\r\n */\r\n export(params: ClipperExportDocumentsParams) {\r\n return this.httpClient.post(\r\n this._serviceUri + '/documents/export',\r\n params,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Send documents link by email\r\n */\r\n sendTo(params: ClipperSendDocumentsByEmailParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/documents/send',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Sends an email notification about a document note update to the specified recipients.\r\n * @param params - The notification parameters including recipients and note details.\r\n */\r\n notifyNoteTo(params: ClipperNotifyDocumentNoteParams) {\r\n return this.httpClient.post<ApiResult<UpdateResultModel<ClipperDocumentNoteTracking>>>(\r\n this._serviceUri + '/documents/notes/notify',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Display a page the full document report\r\n */\r\n report(id: string) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/documents/report/' + id,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Get document comment\r\n */\r\n comment(id: string) {\r\n return this.httpClient.get<ApiResult<string>>(\r\n this._serviceUri + '/documents/comment/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Get document info\r\n */\r\n info(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentInfo>>(\r\n this._serviceUri + '/documents/info/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Get document structure\r\n */\r\n index(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentStructure>>(\r\n this._serviceUri + '/documents/structure/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Get document last update\r\n */\r\n metadata(id: string) {\r\n return this.httpClient.get<ApiResult<{ item1?: string; item2?: ClipperDocumentNote[] }>>(\r\n this._serviceUri + '/documents/metadata/' + id\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Query document references\r\n */\r\n references(params: ClipperReferencesSearchParams) {\r\n let mode = params.mode;\r\n if (!mode) mode = ClipperQueryReferencesMode.ReferencesIn;\r\n switch (mode) {\r\n case ClipperQueryReferencesMode.ReferencesIn:\r\n case ClipperQueryReferencesMode.ReferencesOut:\r\n params.mode = mode;\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents/references',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.ChangesIn:\r\n case ClipperQueryReferencesMode.ChangesOut:\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents/changes',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.Juris:\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents/juris',\r\n params\r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Get facets for a document references\r\n */\r\n referencesFacets(params: ClipperReferencesSearchParams) {\r\n let mode = params.mode ?? ClipperQueryReferencesMode.ReferencesIn;\r\n switch (mode) {\r\n case ClipperQueryReferencesMode.ReferencesIn:\r\n case ClipperQueryReferencesMode.ReferencesOut:\r\n params.mode = mode;\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this._serviceUri + '/documents/references/facets',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.ChangesIn:\r\n case ClipperQueryReferencesMode.ChangesOut:\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this._serviceUri + '/documents/changes/facets',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.Juris:\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this._serviceUri + '/documents/juris/facets',\r\n params\r\n );\r\n default: return null;\r\n }\r\n }\r\n\r\n /**\r\n * Wrap document rendering to allow token refresh\r\n */\r\n preRender() {\r\n return this.httpClient.get<ApiResult<boolean>>(\r\n this._serviceUri + '/documents/pre-render?nocache=' + SystemUtils.generateUUID()\r\n );\r\n }\r\n\r\n /**\r\n * Get document juris articles\r\n */\r\n jurisArticles(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this._serviceUri + '/documents/juris/articles',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Get deadlines snapshot based on the deadlines\r\n */\r\n deadlinesSnapshot(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchCalendarSnapshotResult>>(\r\n this._serviceUri + '/documents/calendar/snapshot',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Retrieve the taxonomy\r\n */\r\n getTaxonomy(params?: ClipperTaxonomyParams) {\r\n return this.httpClient.post<ApiResult<FolderTree>>(\r\n this._serviceUri + '/taxonomy',\r\n params ?? { model: 0, countItems: false }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve topics\r\n */\r\n getTopics() {\r\n return this.httpClient.get<ApiResult<NameValueItem<string>[]>>(\r\n this._serviceUri + '/topics'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve topics as tree\r\n */\r\n getTopicsAsTree() {\r\n return this.httpClient.get<ApiResult<FolderTree>>(\r\n this._serviceUri + '/topics2'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve tags\r\n */\r\n getTags() {\r\n return this.httpClient.get<ApiResult<NameValueItem<string>[]>>(\r\n this._serviceUri + '/tags'\r\n );\r\n }\r\n\r\n\r\n ///\r\n // DASHBOARD\r\n ///\r\n /**\r\n * Retrieve current dashboard\r\n */\r\n loadDashboard() {\r\n return this.httpClient\r\n .post<ApiResult<ClipperDashboardResult>>(\r\n this._serviceUri + '/account/dashboard',\r\n { refreshing: true }\r\n ).subscribe((r: ApiResult<ClipperDashboardResult>) => {\r\n if (r.success) {\r\n this.dashboard.documentUpdates = r.value.documentUpdates;\r\n this.dashboard.expiredDeadlines = r.value.expiredDeadlines;\r\n this.dashboard.expiringDeadlines = r.value.expiringDeadlines;\r\n this.dashboard.isTrial = r.value.isTrial;\r\n this.dashboard.items.set(r.value.items ?? []);\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves documents updated in the last 15 days for the given search parameters.\r\n * @param params - The search parameters to filter results.\r\n */\r\n last15Days(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperLastDaysResult>>(\r\n this._serviceUri + '/account/last-15-days',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Adjusts the unread-item counter for the given module and broadcasts a dashboard update.\r\n * @param module - The Clipper module whose counter should be adjusted.\r\n * @param model - Optional document model to further scope the counter update.\r\n * @param increment - The signed increment to apply (use negative values to decrement).\r\n */\r\n updateUnreadItems(module: ClipperModule, model?: ClipperModel, increment?: number): void {\r\n increment ??= 0;\r\n if (increment !== 0) {\r\n this.dashboard.updateUnreadItems(module, model, increment);\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n }\r\n\r\n\r\n ///\r\n // BAG - WORKING DOCUMENTS\r\n ///\r\n\r\n /**\r\n * Load working documents\r\n */\r\n loadBag() {\r\n return this.httpClient\r\n .get<ApiResult<ClipperUserWorkingDocument[]>>(\r\n this.serviceUri + '/documents/working'\r\n )\r\n .subscribe(\r\n r => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n if (r.value) {\r\n const items: ClipperDocumentInfo[] = [];\r\n r.value.forEach(n => {\r\n if (n.documentDescriptor) {\r\n const documentInfo = JSON.parse(n.documentDescriptor);\r\n if (documentInfo) {\r\n if (!n.documentId) {\r\n n.documentId = documentInfo.DocumentId || documentInfo.Id;\r\n }\r\n n.title1 = documentInfo.Title1 ?? documentInfo.Title2;\r\n n.title2 = documentInfo.Title1 ? documentInfo.Title2 : undefined;\r\n }\r\n n.documentDescriptor = undefined;\r\n items.push(n);\r\n }\r\n });\r\n this.bag.set(items);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adds one or more documents to the working documents bag.\r\n * @param documentIds - The IDs of the documents to add.\r\n */\r\n addToBag(documentIds: string[]) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperUserWorkingDocument[]>>(\r\n this.serviceUri + '/documents/working/add',\r\n { documentIds: documentIds }\r\n )\r\n .subscribe((r: ApiResult<ClipperUserWorkingDocument[]>) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n if (r.value) {\r\n const newItems: ClipperDocumentInfo[] = [];\r\n r.value.forEach(n => {\r\n if (n.documentDescriptor) {\r\n const documentInfo = JSON.parse(n.documentDescriptor);\r\n if (documentInfo) {\r\n n.documentId = documentInfo.DocumentId || documentInfo.Id;\r\n n.title1 = documentInfo.Title1 ?? documentInfo.Title2;\r\n n.title2 = documentInfo.Title1 ? documentInfo.Title2 : null;\r\n }\r\n n.documentDescriptor = undefined;\r\n newItems.push(n);\r\n }\r\n });\r\n if (newItems.length > 0) {\r\n this.bag.update((values: any) => [...values, ...newItems]);\r\n }\r\n this.dialogService.toast('Operazione completata con successo.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Removes a document from the working documents bag.\r\n * @param documentId - The ID of the document to remove.\r\n */\r\n removeFromBag(documentId: string) {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.serviceUri + '/documents/working/delete',\r\n { documentIds: [documentId] }\r\n )\r\n .subscribe((r: ApiResult<number>) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n const p = this.bag().findIndex((n: any) => n.documentId === documentId);\r\n if (p !== -1) {\r\n this.bag.update((values: any) => {\r\n values.splice(p, 1);\r\n return [...values];\r\n });\r\n this.dialogService.toast('Operazione completata con successo.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear all working documents\r\n */\r\n clearBag() {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.serviceUri + '/documents/working/delete',\r\n { deleteAll: true }\r\n )\r\n .subscribe((r: ApiResult<number>) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n this.bag.set([]);\r\n this.dialogService.toast('Operazione completata con successo.');\r\n }\r\n });\r\n }\r\n\r\n ///\r\n // WORKING SEARCHES\r\n ///\r\n\r\n /**\r\n * Retrieves the saved searches for the given module.\r\n * @param module - The Clipper module whose saved searches to load.\r\n */\r\n loadSearches(module: ClipperModule) {\r\n return this.httpClient\r\n .get<ApiResult<ClipperUserSearch[]>>(\r\n this.serviceUri + '/documents/searches/?module=' + module\r\n )\r\n }\r\n\r\n /**\r\n * Persists a user search configuration on the server.\r\n * @param params - The search configuration to save.\r\n */\r\n saveSearch(params: ClipperUserSearch) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperUserSearch>>(\r\n this.serviceUri + '/documents/searches/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes a saved search by its ID.\r\n * @param id - The ID of the saved search to remove.\r\n */\r\n deleteSearch(id: number) {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.serviceUri + '/documents/searches/delete',\r\n { id: id }\r\n );\r\n }\r\n\r\n\r\n\r\n ///\r\n // CALENDAR\r\n ///\r\n /**\r\n * Query calendar\r\n */\r\n queryCalendar(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperCalendarSearchResult>>(\r\n this._serviceUri + '/calendar',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperCalendarSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this._teams = r.value.teams;\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get the calendar snapshot\r\n */\r\n calendarSnapshot(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchCalendarSnapshotResult>>(\r\n this._serviceUri + '/calendar/snapshot',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes one or more calendar deadlines by ID.\r\n * @param ids - The IDs of the deadlines to delete.\r\n */\r\n deleteCalendarDeadlines(ids: string[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/calendar/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Copies one or more calendar deadlines using the given parameters.\r\n * @param params - The copy operation parameters.\r\n */\r\n copyCalendarDeadlines(params: ClipperCalendarCopyDeadlinesParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/calendar/copy',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Marks the given calendar deadline as closed.\r\n * @param id - The ID of the deadline to close.\r\n */\r\n closeCalendarDeadline(id: string) {\r\n return this.httpClient.post<ApiResult<ClipperDeadlineInfo>>(\r\n this._serviceUri + '/calendar/close',\r\n { id: id }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a calendar deadline.\r\n * @param params - The deadline data to save.\r\n */\r\n saveCalendarDeadline(params: ClipperCalendarSaveDeadlineParams) {\r\n return this.httpClient.post<ApiResult<ClipperDeadlineInfo[]>>(\r\n this._serviceUri + '/calendar/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves a single calendar deadline by its ID.\r\n * @param id - The ID of the deadline to retrieve.\r\n */\r\n getCalendarDeadline(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDeadlineInfo>>(\r\n this._serviceUri + '/calendar/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Exports the selected deadlines in iCalendar (.ics) format.\r\n * @param ids - The IDs of the deadlines to export.\r\n */\r\n exportCalendarDeadlines(ids: string[]) {\r\n return this.httpClient.post(\r\n this._serviceUri + '/calendar/export',\r\n { ids: ids },\r\n {\r\n responseType: 'blob'\r\n }\r\n );\r\n }\r\n\r\n ///\r\n // ARCHIVE\r\n ///\r\n /**\r\n * Retrieves all archive folders matching the given search parameters.\r\n * @param params - The folder search parameters.\r\n */\r\n getArchiveFolders(params: ClipperArchiveFoldersSearchParams) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperArchiveFoldersSearchResult>>(\r\n this._serviceUri + '/archive/folders',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperArchiveFoldersSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this._teams = r.value.teams;\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates an archive folder.\r\n * @param params - The folder data to save.\r\n */\r\n saveArchiveFolder(params: Folder) {\r\n return this.httpClient.post<ApiResult<Folder>>(\r\n this._serviceUri + '/archive/folders/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Exports archive folders as a downloadable file.\r\n * @param id - The folder ID to export, or `undefined` to export all folders.\r\n * @param teamId - The optional team ID. Defaults to `undefined` (personal workspace).\r\n */\r\n exportArchiveFolders(id?: string, teamId?: string) {\r\n let url = this._serviceUri + '/archive/export/?';\r\n if (id) {\r\n url += 'id=' + id;\r\n }\r\n if (teamId) {\r\n if (id) {\r\n url += '&';\r\n }\r\n url += 'team=' + teamId;\r\n }\r\n return this.httpClient.get(\r\n url,\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/octet-stram'\r\n }),\r\n responseType: 'blob'\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Uploads and imports archive folders from a file.\r\n * @param params - The import parameters including the source file and destination folder.\r\n */\r\n importArchiveFolders(params: ClipperArchiveFoldersImportParams) {\r\n // Prepare form\r\n const formData = new FormData();\r\n formData.append(params.file.name, params.file);\r\n formData.append('sourceFileName', params.file.name);\r\n formData.append('overwrite', params.overwrite === true ? \"true\" : \"false\");\r\n if (params.destFolderId) {\r\n formData.append('destFolderId', params.destFolderId);\r\n }\r\n if (params.teamId) {\r\n formData.append('teamId', params.teamId);\r\n }\r\n // Create request\r\n return this.httpClient.request(\r\n new HttpRequest(\r\n 'POST',\r\n this._serviceUri + '/archive/import/',\r\n formData,\r\n { reportProgress: true }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves archive files and folders matching the given search parameters.\r\n * @param params - The archive files search parameters.\r\n */\r\n queryArchiveItems(params: ClipperArchiveFilesSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperArchiveFilesSearchResult>>(\r\n this._serviceUri + '/archive/files',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes one or more archive files or folders.\r\n * @param params - The delete operation parameters.\r\n */\r\n deleteArchiveItems(params: ClipperArchiveFilesDeleteParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/archive/files/delete',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Copies archive files or folders to a destination folder.\r\n * @param params - The copy operation parameters.\r\n */\r\n copyArchiveItems(params: ClipperArchiveFilesCopyParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/archive/files/copy',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Uploads and saves an archive file using multipart form data.\r\n * @param params - The file metadata and binary content to save.\r\n */\r\n saveArchiveFile(params: ClipperArchiveFileInfo) {\r\n // Prepare form\r\n const formData = new FormData();\r\n if (params.file) formData.append(params.file.file.name, params.file.file);\r\n if (params.id) formData.append('id', params.id);\r\n if (params.folderId) {\r\n formData.append('folderId', params.folderId);\r\n }\r\n if (params.topicId && params.topicPath) {\r\n formData.append('topicId', params.topicId);\r\n formData.append('topicPath', params.topicPath);\r\n }\r\n if (params.title1) formData.append('title1', params.title1);\r\n if (params.title2) formData.append('title2', params.title2);\r\n if (params.origin) formData.append('origin', params.origin);\r\n if (params.originDescription) {\r\n formData.append('originDescription', params.originDescription);\r\n }\r\n if (params.documentId) formData.append('documentId', params.documentId);\r\n if (params.documentIds) formData.append('documentIds', params.documentIds);\r\n if (params.binaryId) formData.append('binaryId', params.binaryId?.toString());\r\n if (params.tags) formData.append('tags', params.tags);\r\n if (params.notes) formData.append('notes', params.notes);\r\n if (params.fileName) formData.append('fileName', params.fileName);\r\n if (params.fileType) formData.append('fileType', (params.fileType as number).toString());\r\n if (params.storageType) formData.append('storageType', (params.storageType as number).toString());\r\n if (params.model) formData.append('model', (params.model as number).toString());\r\n\r\n // Create request\r\n return this.httpClient.request(\r\n new HttpRequest(\r\n 'POST',\r\n this._serviceUri + '/archive/files/save',\r\n formData,\r\n { reportProgress: true }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the metadata for a single archive file.\r\n * @param id - The ID of the archive file to retrieve.\r\n */\r\n getArchiveFile(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperArchiveFileInfo>>(\r\n this._serviceUri + '/archive/files/' + id);\r\n }\r\n\r\n /**\r\n * Downloads the binary content of an archive file.\r\n * @param id - The binary ID of the file to download.\r\n * @param otp - An optional one-time password for authenticated downloads.\r\n */\r\n downloadArchiveFile(id: number, otp?: string) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/archive/files/download/?id=' + id + '&otp=' + (otp ?? ''),\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n ///\r\n // ACCOUNT AND SETTINGS\r\n ///\r\n\r\n\r\n /**\r\n * Resets the user's password using the provided parameters.\r\n * @param params - The new password and confirmation data.\r\n */\r\n resetPassword(params: ResetPasswordDialogResult) {\r\n return this.httpClient.post<ApiResult<ResetPasswordDialogResult>>(\r\n this._serviceUri + '/account/password/reset',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Initiates a password recovery flow by sending a reset link to the user's email.\r\n * @param params - The password recovery request data.\r\n */\r\n recoverPassword(params: RecoverPasswordDialogResult) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/password/recover',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Gets the current user account settings \r\n */\r\n getSettings() {\r\n return this.httpClient.get<ApiResult<ClipperSettingsInfo>>(\r\n this._serviceUri + '/account/settings'\r\n );\r\n }\r\n\r\n /**\r\n * Updates user account settings and applies any channel configuration changes.\r\n * @param params - A map of settings key-value pairs to update.\r\n */\r\n updateSettings(params: ClipperSettingsInfo) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/settings/update',\r\n params\r\n ).pipe(\r\n map(r => {\r\n if (r.success) {\r\n if (params.channels) {\r\n this.setChannels(params.channels);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Saves updated channel activation states to the server and applies the new dashboard result.\r\n * @param params - The channel state update parameters.\r\n */\r\n updateChannelsState(params: ClipperUpdateChannelsStateParams) {\r\n return this.httpClient.post<ApiResult<ClipperDashboardResult>>(\r\n this._serviceUri + '/account/settings/channels/update',\r\n params\r\n ).pipe(\r\n map(r => {\r\n if (r.success) {\r\n this.setChannelsState(r.value);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n ///\r\n // TRIAL \r\n ///\r\n\r\n /**\r\n * Get trial info\r\n */\r\n private getTrialInfo() {\r\n return this.httpClient.get<ApiResult<ClipperUserTrialInfo>>(\r\n this._serviceUri + '/account/trial'\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the trial status from the server and updates the stored login context.\r\n */\r\n updateTrialInfo(): void {\r\n if (!this._loginInfo || this._loginInfo?.context?.hasTrial === false)\r\n return; // Not supported\r\n this.getTrialInfo().subscribe((r: ApiResult<ClipperUserTrialInfo>) => {\r\n if (r.success) {\r\n if (this._loginInfo?.context) {\r\n if (r.value) {\r\n this._loginInfo.context.hasTrial = true;\r\n this._loginInfo.context.trialInfo = r.value;\r\n } else {\r\n this._loginInfo.context.hasTrial = false;\r\n this._loginInfo.context.trialInfo = undefined;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ///\r\n // LINKS\r\n ///\r\n\r\n /**\r\n * Creates or updates a user link record.\r\n * @param item - The user link data to save.\r\n */\r\n saveLink(item: ClipperUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Deletes a user link record.\r\n * @param item - The user link to remove.\r\n */\r\n deleteLink(item: ClipperUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/delete',\r\n item\r\n );\r\n }\r\n\r\n ///\r\n // TEAMS\r\n ///\r\n\r\n /**\r\n * Renames the current user's team.\r\n * @param newName - The new display name for the team.\r\n */\r\n renameTeam(newName: string) {\r\n return this.httpClient.post<ApiResult<ClipperTeamInfo>>(\r\n this._serviceUri + '/account/teams/update',\r\n { title: newName }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the list of teams available to the current user.\r\n * @param params - The teams search parameters.\r\n */\r\n getTeams(params: ClipperTeamsSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperTeamsSearchResult>>(\r\n this._serviceUri + '/account/teams',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperTeamsSearchResult>) => {\r\n // Store teams\r\n if (!params.adminsOnly) {\r\n this._teams = r.value.items;\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the members of a team matching the given search parameters.\r\n * @param params - The team members search parameters.\r\n */\r\n getTeamMembers(params: ClipperTeamsSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperTeamMembersSearchResult>>(\r\n this._serviceUri + '/account/teams/members',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Removes the specified members from the team.\r\n * @param teamId - The ID of the team. \r\n * @param ids - The numeric IDs of the team members to remove.\r\n */\r\n deleteTeamMembers(teamId: string, ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/account/teams/members/delete',\r\n { teamId: teamId, ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a team member record.\r\n * @param item - The team member data to save.\r\n */\r\n saveTeamMember(item: ClipperTeamMemberInfo) {\r\n return this.httpClient.post<ApiResult<ClipperTeamMemberInfo>>(\r\n this._serviceUri + '/account/teams/members/save',\r\n item\r\n );\r\n }\r\n\r\n\r\n ///\r\n // CONTACTS\r\n ///\r\n\r\n\r\n /**\r\n * Retrieves contacts matching the given search parameters.\r\n * @param params - The contacts search parameters.\r\n */\r\n queryContacts(params: ClipperContactsSearchParams) {\r\n return this.httpClient.post<ApiResult<QueryResultModel<ClipperContactInfo>>>(\r\n this._serviceUri + '/account/contacts',\r\n params\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Deletes the specified contacts.\r\n * @param ids - The numeric IDs of the contacts to remove.\r\n */\r\n deleteContacts(ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/account/contacts/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a contact record.\r\n * @param item - The contact data to save.\r\n */\r\n saveContact(item: ClipperContactInfo) {\r\n return this.httpClient.post<ApiResult<ClipperContactInfo>>(\r\n this._serviceUri + '/account/contacts/save',\r\n item\r\n );\r\n }\r\n\r\n\r\n ///\r\n // NOTES\r\n ///\r\n\r\n\r\n /**\r\n * Retrieves document notes matching the given search parameters.\r\n * @param params - The notes search parameters.\r\n */\r\n queryNotes(params: ClipperNotesSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperNotesSearchResult>>(\r\n this._serviceUri + '/account/notes',\r\n params\r\n ).pipe(\r\n map((r: ApiResult<ClipperNotesSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this._teams = r.value.teams;\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Deletes the specified document notes.\r\n * @param ids - The numeric IDs of the notes to remove.\r\n */\r\n deleteNotes(ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this._serviceUri + '/account/notes/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a document note.\r\n * @param item - The note data to save.\r\n */\r\n saveNote(item: ClipperDocumentNote) {\r\n return this.httpClient.post<ApiResult<ClipperDocumentNote>>(\r\n this._serviceUri + '/account/notes/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the tracking history for the given document note.\r\n * @param id - The numeric ID of the note whose tracking records to retrieve.\r\n */\r\n getNoteTrackings(id: number) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentNoteTracking[]>>(\r\n this._serviceUri + '/account/notes/trackings/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the count of troubled tracking notifications for document notes, \r\n * which can be used to display an unread counter in the UI.\r\n */\r\n countNotesTrackingsTroubled() {\r\n return this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/account/notes/trackings/troubled'\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BroadcastService, ErrorInfo } from '@arsedizioni/ars-utils/core';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { ClipperServiceFlags } from '../definitions';\r\nimport { ClipperService } from '../services/clipper.service';\r\nimport { ClipperMessages } from '../messages';\r\n\r\n/** Minimum milliseconds between consecutive error broadcasts (debounce guard). */\r\nconst ERROR_DEBOUNCE_MS = 5000;\r\n\r\n/**\r\n * HTTP interceptor that attaches Clipper authentication headers to every request\r\n * targeting the Clipper service, and broadcasts user-friendly error messages\r\n * when the server returns an error response.\r\n */\r\n@Injectable()\r\nexport class ClipperAuthInterceptor implements HttpInterceptor {\r\n private readonly clipperService = inject(ClipperService);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private lastErrorTime = -1;\r\n\r\n /**\r\n * Intercepts every outgoing HTTP request.\r\n * When the request targets the Clipper service URI, attaches credentials and\r\n * a client-ID header, then pipes the response through an error handler.\r\n * @param request - The outgoing HTTP request.\r\n * @param next - The next handler in the interceptor chain.\r\n * @returns An observable of the HTTP event stream.\r\n */\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (!request.url.startsWith(this.clipperService.serviceUri)) {\r\n return next.handle(request);\r\n }\r\n\r\n const authenticatedRequest = request.clone({\r\n withCredentials: true,\r\n setHeaders: {\r\n 'ngsw-bypass': 'ngsw-bypass',\r\n 'X-Client-Id': sessionStorage.getItem('clipper_client_id') ?? ''\r\n }\r\n });\r\n\r\n return next.handle(authenticatedRequest).pipe(\r\n catchError((error: unknown) => {\r\n this.handleError(error);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Processes an HTTP error, broadcasting a user-friendly message when appropriate.\r\n * Errors are debounced: only one message is sent per `ERROR_DEBOUNCE_MS` window.\r\n * @param error - The raw error value thrown by the HTTP layer.\r\n */\r\n private handleError(error: unknown): void {\r\n if (!(error instanceof HttpErrorResponse)) return;\r\n if (!error.url?.startsWith(this.clipperService.serviceUri)) return;\r\n\r\n const errorStatus = error.status;\r\n const shouldNotify =\r\n (errorStatus > 0 && errorStatus < 500) ||\r\n (this.clipperService.flags & ClipperServiceFlags.NotifySystemErrors) > 0;\r\n\r\n if (!shouldNotify) return;\r\n\r\n const now = Date.now();\r\n if (now - this.lastErrorTime <= ERROR_DEBOUNCE_MS) return;\r\n this.lastErrorTime = now;\r\n\r\n let message: string;\r\n switch (errorStatus) {\r\n case 0:\r\n message = \"In questo momento Clipper non è disponibile. Riprova tra qualche minuto.\";\r\n break;\r\n case 403:\r\n message = \"Non hai i permessi necessari per eseguire l'operazione richiesta.\";\r\n break;\r\n default:\r\n message = (\r\n (error.error as Record<string, string> | null)?.['message'] ??\r\n error.message ??\r\n \"Impossibile eseguire l'operazione richiesta.\"\r\n ).replaceAll('\\r\\n', '</p><p>');\r\n break;\r\n }\r\n\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.ERROR,\r\n {\r\n invalidateSession: errorStatus === 405 || errorStatus === 410,\r\n message,\r\n title: \"Errore in Clipper\",\r\n errorStatus,\r\n service: this.clipperService.serviceUri\r\n } as ErrorInfo\r\n );\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class ArsClipperCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './notes';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/clipper.service';\r\n\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\n\r\nexport * from './common/common.module';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}