@teipublisher/pb-components 2.18.4 → 2.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -47,6 +47,9 @@
47
47
  "browse": {
48
48
  "description": "Use este aplicativo para experimentar vários ODDs contendo as instruções dos modelos de processamento. Envie seus próprios arquivos e crie um ODD personalizado.",
49
49
  "login": "para enviar os arquivos ou ver funções administrativas (usuário padrão: 'tei-demo', senha: 'demo').",
50
+ "login-1": "Entrar como ",
51
+ "login-2": "com palavra-passe",
52
+ "login-3": "para experimentar com os seus próprios ficheiros e ODD",
50
53
  "sort": "Ordenar por",
51
54
  "filter": "Filtrar por",
52
55
  "filterPlaceholder": "Filtro",
@@ -60,6 +63,9 @@
60
63
  "confirmDeletion": "Tem certeza que deseja eliminar este ficheiro?",
61
64
  "confirmDeletion_plural": "Tem certeza que deseja eliminar estes {{count}} ficheiro(s)?",
62
65
  "documents": "Documentos",
66
+ "documents-removed": "Remover documento",
67
+ "document-not-found": "Documento não encontrado",
68
+ "document-remove-failed": "Falha ao remover o documento",
63
69
  "collections": "Coleção local",
64
70
  "dts": "Distributed Text Services (Experimental)",
65
71
  "test": {
@@ -78,6 +84,10 @@
78
84
  "title": "Exemplo de Markdown",
79
85
  "description": "Um exemplo de uso de markdown para conteúdo estático."
80
86
  },
87
+ "annotate": {
88
+ "title": "Amostras de Anotação",
89
+ "description": "Outro espaço para anotar documentos."
90
+ },
81
91
  "up": "Voltar ao registo pai"
82
92
  },
83
93
  "upload": {
@@ -111,11 +121,15 @@
111
121
  "reset": "Reinicializar",
112
122
  "placeholder": "Inserir Consulta",
113
123
  "sections": "Pesquisar em Secções",
114
- "headings": "Pesquisar títulos"
124
+ "headings": "Pesquisar títulos",
125
+ "title": "Pesquisar títulos",
126
+ "content": "Pesquisar conteúdo",
127
+ "scope": "Âmbito da consulta"
115
128
  },
116
129
  "dts": {
117
130
  "endpoint": "Selecionar Endpoint",
118
- "note": "Experimental: acessar outras edições que expõem a DTS API"
131
+ "note": "Experimental: acessar outras edições que expõem a DTS API",
132
+ "requires-login": "Requer acesso"
119
133
  },
120
134
  "odd": {
121
135
  "files": "Arquivos ODD",
@@ -134,6 +148,9 @@
134
148
  "save": "Guardar",
135
149
  "saving": "Salvando ...",
136
150
  "saved": "Guardado",
151
+ "unsaved": "Existem alterações que não foram guardadas, as quais serão incluídas na exportação! Deseja continuar mesmo assim?",
152
+ "download": "Descarregar ODD",
153
+ "save-as": "Guardar ODD na pasta",
137
154
  "denied": "Permissão negada",
138
155
  "denied-message": "Não tem permissão para salvar {{odd}}",
139
156
  "reload": "Recarregar",
@@ -162,7 +179,9 @@
162
179
  "custom-behaviour-placeholder": "[Comportamento personalizado]",
163
180
  "template-placeholder": "[Defina um modelo de código para aplicar ao conteúdo]",
164
181
  "param-name-placeholder": "[Nome do parametro]",
165
- "empty": "[Vazio]"
182
+ "empty": "[Vazio]",
183
+ "mode-placeholder": "[Modo de processamento - passado para modelos subsequentes]",
184
+ "set-param": "definir"
166
185
  },
167
186
  "css-source": "Abrir arquivo CSS"
168
187
  }
@@ -170,7 +189,10 @@
170
189
  "facets": {
171
190
  "show": "Mostrar top 50",
172
191
  "genre": "Género",
173
- "language": "Idioma"
192
+ "language": "Idioma",
193
+ "feature": "Funcionalidade",
194
+ "form": "Forma",
195
+ "period": "Período"
174
196
  },
175
197
  "appgen": {
176
198
  "account": {
@@ -210,5 +232,89 @@
210
232
  },
211
233
  "open": "Abrir",
212
234
  "success": "Seu aplicativo foi gerado com sucesso!"
235
+ },
236
+ "annotations": {
237
+ "edit": "Editar anotação",
238
+ "delete": "Eliminar anotação",
239
+ "save": "Unir e guardar as anotações em TEI",
240
+ "no-properties": "Nenhuma propriedade definida.",
241
+ "person": "Pessoa",
242
+ "organisation": "Organização",
243
+ "place": "Local",
244
+ "term": "Termo",
245
+ "date": "Data",
246
+ "reg": "Regularização",
247
+ "app": "Entrada do aparato",
248
+ "hi": "Destacar",
249
+ "ref": "Link (ref)",
250
+ "pb": "Quebra de página (pb)",
251
+ "pagenum": "Número de página (@n)",
252
+ "facs": "URL da imagem (@facs)",
253
+ "abbreviation": "Abreviatura",
254
+ "occurrences": "Ocorrências em texto",
255
+ "correction": "Correção",
256
+ "expansion": "Expansão",
257
+ "reference": "Referência",
258
+ "lookup": "Pesquisar entidade",
259
+ "apply": "Aplicar anotação",
260
+ "apply-all": "Selecionar e aplicar tudo",
261
+ "search-other": "Pesquisar por ocorrências noutros documentos",
262
+ "save-other": "Procurar por ocorrências noutros documentos e aplicá-las imediatamente",
263
+ "changes": "Alterações",
264
+ "undo": "Anular a última alteração",
265
+ "download": "Guardar o TEI unificado num ficheiro local.",
266
+ "reload": "Recarregar o TEI de origem",
267
+ "preview": "Pré-visualizar resultados unificados",
268
+ "confirm-restore-title": "Confirmar restauração",
269
+ "restore": "Foram encontradas anotações feitas a este documento numa sessão anterior. Gostaria de recarregá-las?",
270
+ "confirm-reload-title": "Confirmar Recarregamento",
271
+ "confirm-reload": "Ignorar as anotações atuais e recarregar a fonte?",
272
+ "modify": "Aplicar uma edição ao texto-base",
273
+ "modify-info": "Aviso: Isto não é uma anotação, mas modificará o texto-base ao ser unido.",
274
+ "permission": "Permissão negada: não tem permissão para guardar anotações.",
275
+ "ner": {
276
+ "title": "Extração de Entidades Nomeadas",
277
+ "description": "Para encontrar automaticamente entidades nomeadas no texto e marcá-las como anotações.",
278
+ "run": "Executar",
279
+ "model": "Selecione um modelo",
280
+ "denied": "Há alterações não gravadas: por favor, guarde-as ou ignore-as primeiro."
281
+ },
282
+ "confirm-discard-title": "Ignorar",
283
+ "confirm-discard": "Ignorar a lista de ocorrências?",
284
+ "doc-count": "{{count}} de {{total}}",
285
+ "toggle": "Mostrar/ocultar painel de pré-visualização/controlo",
286
+ "add-entity": "Criar entidade",
287
+ "edit-entity": "Editar entidade",
288
+ "edit-reference": "Pesquisar/editar referência",
289
+ "hints": {
290
+ "modify": "entidade marcada do mesmo tipo, mas chave diferente",
291
+ "incomplete": "marcado o mesmo tipo, mas sem chave",
292
+ "unmarked": "ocorrência não marcada no texto",
293
+ "open-in-tab": "Abra o documento numa nova aba para rever"
294
+ }
295
+ },
296
+ "ner": {
297
+ "title": "Treinar um Modelo de Reconhecimento de Entidade Nomeada",
298
+ "not-found": "Esta funcionalidade requer que o serviço TEI Publisher NER esteja em execução! Falha ao entrar em contacto com o serviço.",
299
+ "found": "TEI Publisher NER encontrado com a versão spaCy",
300
+ "name-placeholder": "Nome do modelo a criar",
301
+ "name": "Nome",
302
+ "path": "Caminho",
303
+ "path-placeholder": "Caminho relativo para documento ou coleção",
304
+ "path-info": "Insira o caminho para um documento ou coleção para usar como entrada de treino. Deve ser relativo à raiz de dados do TEI Publisher.",
305
+ "lang-info": "Pode treinar um novo modelo para um idioma ou selecionar um modelo existente para estender abaixo. Se não estender um modelo existente, deve especificar um idioma. Caso contrário, deixe-o vazio.",
306
+ "language-placeholder": "Idioma para criar o modelo",
307
+ "language": "Idioma",
308
+ "language-error": "É necessário fornecer um idioma ou um modelo-base",
309
+ "model": "Modelo-Base",
310
+ "model-placeholder": "Modelo-base para estender ou copiar de",
311
+ "vectors": "Apenas copiar vetores do modelo-base",
312
+ "output": "Saída do Treino",
313
+ "prepare": "Preparando os dados de treino",
314
+ "start": "Executar"
315
+ },
316
+ "timeline": {
317
+ "unknown": "desatualizado",
318
+ "clear": "Limpar seleção de data"
213
319
  }
214
320
  }
@@ -47,6 +47,9 @@
47
47
  "browse": {
48
48
  "description": "За допомогою цього додатка ви можете експериментувати та тестувати різні файли ODD з інструкціями до нашої моделі. Заімпортуйте власний код та створіть файл ODD, достосований до ваших особистих потреб.",
49
49
  "login": ", щоб заімпортувати файли або переглянути адміністративні функції (користувач за замовчуванням: 'tei-demo', пароль: 'demo').",
50
+ "login-1": "Увійти як ",
51
+ "login-2": "з паролем",
52
+ "login-3": "поекспериментувати зі своїми файлами та ОРДами",
50
53
  "sort": "Сортувати за",
51
54
  "filter": "Фільтрувати за",
52
55
  "filterPlaceholder": "Фільтр",
@@ -60,6 +63,9 @@
60
63
  "confirmDeletion": "Ви дійсно бажаєте видалити цей файл?",
61
64
  "confirmDeletion_plural": "Ви дійсно бажаєте видалити ці {{count}} файли?",
62
65
  "documents": "Документи",
66
+ "documents-removed": "Видалені документи",
67
+ "document-not-found": "Документ не знайдено",
68
+ "document-remove-failed": "Не вдалося видалити документ",
63
69
  "collections": "Локальна колекція",
64
70
  "dts": "Distributed Text Services (експериментальні)",
65
71
  "test": {
@@ -78,6 +84,10 @@
78
84
  "title": "Приклад Markdown",
79
85
  "description": "Приклад використання markdown для статичного контенту."
80
86
  },
87
+ "annotate": {
88
+ "title": "Зразки анотації",
89
+ "description": "Ще один ігровий майданчик для анотації документів."
90
+ },
81
91
  "up": "Перейти на рівень вище"
82
92
  },
83
93
  "upload": {
@@ -111,11 +121,15 @@
111
121
  "reset": "Скинути",
112
122
  "placeholder": "Введіть запит",
113
123
  "sections": "Пошук у секціях",
114
- "headings": "Пошук у заголовках"
124
+ "headings": "Пошук у заголовках",
125
+ "title": "Пошук за заголовками",
126
+ "content": "Що шукати",
127
+ "scope": "Область запиту"
115
128
  },
116
129
  "dts": {
117
130
  "endpoint": "Вибрати Endpoint",
118
- "note": "Експериментальна версія: доступ до редагування за допомогою DTS API"
131
+ "note": "Експериментальна версія: доступ до редагування за допомогою DTS API",
132
+ "requires-login": "Потрібен вхід"
119
133
  },
120
134
  "odd": {
121
135
  "files": "Файли ODD",
@@ -134,6 +148,9 @@
134
148
  "save": "Зберегти",
135
149
  "saving": "Збереження ...",
136
150
  "saved": "Збережено",
151
+ "unsaved": "Є незбережені зміни, які будуть включені в експорт! Все одно продовжити?",
152
+ "download": "Завантажити ODD",
153
+ "save-as": "Зберегти ODD до теки",
137
154
  "denied": "У доступі відмовлено",
138
155
  "denied-message": "У вас недостатньо прав для збереження {{odd}}",
139
156
  "reload": "Оновити",
@@ -162,7 +179,9 @@
162
179
  "custom-behaviour-placeholder": "[Нестандартна поведінка (behaviour)]",
163
180
  "template-placeholder": "[Визначити шаблон коду, який буде використовуватися для параметра content]",
164
181
  "param-name-placeholder": "[Назва параметра]",
165
- "empty": "[Пусто]"
182
+ "empty": "[Пусто]",
183
+ "mode-placeholder": "[Режим обробки - передається до наступних моделей]",
184
+ "set-param": "встановити"
166
185
  },
167
186
  "css-source": "Відкрити файл CSS"
168
187
  }
@@ -170,7 +189,10 @@
170
189
  "facets": {
171
190
  "show": "Показати перші 50",
172
191
  "genre": "Жанр",
173
- "language": "Мова"
192
+ "language": "Мова",
193
+ "feature": "Функція",
194
+ "form": "Форма",
195
+ "period": "Період"
174
196
  },
175
197
  "appgen": {
176
198
  "account": {
@@ -210,5 +232,89 @@
210
232
  },
211
233
  "open": "Відкрити",
212
234
  "success": "Ваш додаток успішно створено!"
235
+ },
236
+ "annotations": {
237
+ "edit": "Редагувати анотацію",
238
+ "delete": "Видалити анотацію",
239
+ "save": "Об'єднати і зберегти анотації в TEI",
240
+ "no-properties": "Властивості не визначено.",
241
+ "person": "Особа",
242
+ "organisation": "Організація",
243
+ "place": "Місце",
244
+ "term": "Термін",
245
+ "date": "Дата",
246
+ "reg": "Регуляризація",
247
+ "app": "Запис апарату",
248
+ "hi": "Основні характеристики",
249
+ "ref": "Посилання (ref)",
250
+ "pb": "Розрив сторінки (pb)",
251
+ "pagenum": "Номер сторінки (@n)",
252
+ "facs": "URL зображення (@facs)",
253
+ "abbreviation": "Абревіатура",
254
+ "occurrences": "Кількість у тексті",
255
+ "correction": "Виправлення",
256
+ "expansion": "Розширення",
257
+ "reference": "Посилання",
258
+ "lookup": "Знайти об'єкт",
259
+ "apply": "Застосувати анотацію",
260
+ "apply-all": "Вибрати та застосувати все",
261
+ "search-other": "Пошук випадків в інших документах",
262
+ "save-other": "Пошук випадків в інших документах і застосування анотацій негайно",
263
+ "changes": "Зміни",
264
+ "undo": "Скасувати останню зміну",
265
+ "download": "Зберегти об'єднаний TEI в локальний файл",
266
+ "reload": "Перезавантажити джерело TEI",
267
+ "preview": "Попередній перегляд результатів злиття",
268
+ "confirm-restore-title": "Підтвердити відновлення",
269
+ "restore": "Знайдено анотації створені для цього документа в попередній сесії. Чи хочете їх завантажити?",
270
+ "confirm-reload-title": "Підтвердити перезавантаження",
271
+ "confirm-reload": "Скасувати поточні анотації та перезавантажити джерело?",
272
+ "modify": "Застосувати редагування до основного тексту",
273
+ "modify-info": "Примітка: це не анотація, але вона змінить основний текст при злитті.",
274
+ "permission": "У доступі відмовлено: Вам не дозволено зберігати анотації.",
275
+ "ner": {
276
+ "title": "Екстракція назв об'єктів",
277
+ "description": "Спробуйте автоматично знайти назви об'єктів у тексті і позначте їх як анотації.",
278
+ "run": "Виконати",
279
+ "model": "Оберіть модель",
280
+ "denied": "Знайдено незбережені зміни: будь ласка, спочатку збережіть або відхиліть їх."
281
+ },
282
+ "confirm-discard-title": "Відмінити",
283
+ "confirm-discard": "Відхилити список траплянь?",
284
+ "doc-count": "{{count}} з {{total}}",
285
+ "toggle": "Показати/приховати панель попереднього перегляду/управління",
286
+ "add-entity": "Створити об'єкт",
287
+ "edit-entity": "Редагувати об'єкт",
288
+ "edit-reference": "Пошук/Редагування посилання",
289
+ "hints": {
290
+ "modify": "позначено об'єкт того ж типу, але з іншим ключем",
291
+ "incomplete": "позначено той самий тип, але без ключа",
292
+ "unmarked": "непозначений фрагмент тексту",
293
+ "open-in-tab": "Відкрити документ у новій вкладці, щоб переглянути"
294
+ }
295
+ },
296
+ "ner": {
297
+ "title": "Тренуйте модель розпізнавання назв об'єктів",
298
+ "not-found": "Ця функція вимагає використання сервера NER TEI Publisher! Не вдалося зв'язатися із сервісом.",
299
+ "found": "Знайдено NER TEI Publisher із версією SpaCy",
300
+ "name-placeholder": "Назва моделі, що створюється",
301
+ "name": "Назва",
302
+ "path": "Стежка",
303
+ "path-placeholder": "Відносна стежка до документа або колекції",
304
+ "path-info": "Введіть стежку до документа або колекції, що будуть використовувати як тренувальні дані. Стежка повинна бути відносна до кореневого каталога даних TEI Publisher.",
305
+ "lang-info": "Ви можете натренувати нову модель для мови, або вибрати нижче існуючу модель для розширення. Якщо ви не розширюєте існуючу модель, то потрібно вказати мову. В іншому випадку залиште поле порожнім.",
306
+ "language-placeholder": "Мова для створення моделі",
307
+ "language": "Мова",
308
+ "language-error": "Необхідні або мова, або базова модель",
309
+ "model": "Базова модель",
310
+ "model-placeholder": "Базова модель для розширення або копіювання",
311
+ "vectors": "Копіювати вектори лише з базової моделі",
312
+ "output": "Результат навчання",
313
+ "prepare": "Підготовка даних для тренування",
314
+ "start": "Виконати"
315
+ },
316
+ "timeline": {
317
+ "unknown": "без дати",
318
+ "clear": "Очистити вибір дати"
213
319
  }
214
320
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teipublisher/pb-components",
3
- "version": "2.18.4",
3
+ "version": "2.19.0",
4
4
  "description": "Collection of webcomponents underlying TEI Publisher",
5
5
  "repository": "https://github.com/eeditiones/tei-publisher-components.git",
6
6
  "main": "index.html",
package/pb-elements.json CHANGED
@@ -12089,6 +12089,14 @@
12089
12089
  "name": "pb-annotation-detail",
12090
12090
  "description": "fired to request additional details about an annotation"
12091
12091
  },
12092
+ {
12093
+ "name": "pb-disable",
12094
+ "description": "if received, disables selection tracking, suppressing pb-selection-changed events"
12095
+ },
12096
+ {
12097
+ "name": "pb-enable",
12098
+ "description": "re-enables selection tracking"
12099
+ },
12092
12100
  {
12093
12101
  "name": "pb-start-update",
12094
12102
  "description": "Fired before the element updates its content"
@@ -219,6 +219,8 @@ function clearProperties(teiRange) {
219
219
  * @fires pb-selection-changed - fired when user selects text
220
220
  * @fires pb-annotations-changed - fired when an annotation was added or changed
221
221
  * @fires pb-annotation-detail - fired to request additional details about an annotation
222
+ * @fires pb-disable - if received, disables selection tracking, suppressing pb-selection-changed events
223
+ * @fires pb-enable - re-enables selection tracking
222
224
  */
223
225
  class PbViewAnnotate extends PbView {
224
226
  static get properties() {
@@ -260,6 +262,7 @@ class PbViewAnnotate extends PbView {
260
262
  this._ranges = [];
261
263
  this._rangesMap = new Map();
262
264
  this._history = [];
265
+ this._disabled = false;
263
266
  }
264
267
 
265
268
  connectedCallback() {
@@ -326,6 +329,9 @@ class PbViewAnnotate extends PbView {
326
329
  this.emitTo('pb-annotations-changed', { ranges: this._ranges, refresh: true });
327
330
  });
328
331
 
332
+ this.addEventListener('pb-disable', () => { this._disabled = true; });
333
+ this.addEventListener('pb-enable', () => { this._disabled = false; });
334
+
329
335
  this._resizeHandler();
330
336
  }
331
337
 
@@ -535,6 +541,9 @@ class PbViewAnnotate extends PbView {
535
541
  }
536
542
 
537
543
  _selectionChanged() {
544
+ if (this._disabled) {
545
+ return;
546
+ }
538
547
  const selection = this._getSelection();
539
548
  const range = this._selectedRange(selection);
540
549
  if (range) {
@@ -552,6 +561,7 @@ class PbViewAnnotate extends PbView {
552
561
  changed = true;
553
562
  }
554
563
  }
564
+ this._markSelection(range);
555
565
  this._currentSelection = range;
556
566
  console.log('<pb-view-annotate> selection: %o', range);
557
567
 
@@ -568,10 +578,38 @@ class PbViewAnnotate extends PbView {
568
578
  }
569
579
  this.emitTo('pb-selection-changed', { hasContent: true, range, selected: selection.toString()});
570
580
  } else {
581
+ this._clearSelection();
571
582
  this.emitTo('pb-selection-changed', { hasContent: false });
572
583
  }
573
584
  }
574
585
 
586
+ _markSelection(range) {
587
+ const root = this.shadowRoot.getElementById('view');
588
+ const rootRect = root.getBoundingClientRect();
589
+ const markerLayer = this.shadowRoot.getElementById('marker-layer');
590
+ this._clearSelection();
591
+ const rects = range.getClientRects();
592
+ for (let i = 0; i < rects.length; i++) {
593
+ const rect = rects[i];
594
+ const marker = document.createElement('div');
595
+ marker.className = `selection-marker`;
596
+ marker.style.position = 'absolute';
597
+ marker.style.left = `${rect.left - rootRect.left}px`;
598
+ marker.style.top = `${rect.top - rootRect.top}px`;
599
+ marker.style.width = `${rect.width}px`;
600
+ marker.style.height = `${rect.height}px`;
601
+ marker.style.backgroundColor = `var(--pb-annotation-selection, #f9ea7678)`;
602
+ markerLayer.appendChild(marker);
603
+ }
604
+ }
605
+
606
+ _clearSelection() {
607
+ const markerLayer = this.shadowRoot.getElementById('marker-layer');
608
+ markerLayer.querySelectorAll('.selection-marker').forEach((oldMarker) => {
609
+ markerLayer.removeChild(oldMarker);
610
+ });
611
+ }
612
+
575
613
  updateAnnotation(teiRange, batch = false) {
576
614
  teiRange = clearProperties(teiRange);
577
615
  const result = this._updateAnnotation(teiRange, batch);