@baiyibai-antora/extensions 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.adoc
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
3
3
|
|
|
4
4
|
All notable changes to this project will be documented in this file.
|
|
5
5
|
|
|
6
|
+
== [1.1.1] - 2026-06-02
|
|
7
|
+
|
|
8
|
+
=== Fixed
|
|
9
|
+
|
|
10
|
+
* *list-of-site*: `list-of::image[site]`, `list-of::listing[site]`, and `list-of::example[site]` always produced empty output in HTML
|
|
11
|
+
** Only blocks with an explicit AsciiDoc anchor (`[[id]]`) have an `id` attribute on their outer `<div>` — the registry scan required this attribute and silently skipped everything else
|
|
12
|
+
** `extractElements` now matches blocks with or without a pre-existing `id`, and injects a slug-based `id` into the page HTML for blocks that lack one (matching the existing behaviour of `extractTables`)
|
|
13
|
+
** The title-search lookahead window is reduced from 4 096 to 512 characters: for listings and examples the title `<div>` is the first child of the block; for images it follows a short `<div class="content"><img …></div>` — all within 512 characters.
|
|
14
|
+
The wider window risked picking up a title from an adjacent titled block when scanning an untitled one.
|
|
15
|
+
|
|
16
|
+
* *list-of-site*: Duplicate entries appeared in site-wide lists when the same captioned block was reachable via two different page URLs (e.g. a page that `include::` a second page whose content contains the block)
|
|
17
|
+
** Registry insertion now skips any entry whose label already exists in the bucket, so each unique caption appears at most once across the entire site
|
|
18
|
+
|
|
19
|
+
== [1.1.0] - 2026-06-01
|
|
20
|
+
|
|
21
|
+
=== Added
|
|
22
|
+
|
|
23
|
+
* *trademark-it*: Antora documentation component added under `docs/` — trademark-it documentation moved from `baiyibai-antora-demo-site` and merged with the README reference content into a single canonical page
|
|
24
|
+
** `README.adoc` trademark-it section is now single-sourced via `include::docs/modules/ROOT/pages/trademark-it.adoc[tags=reference]`
|
|
25
|
+
** Live inline conditional detection and suppression demos embedded in the Referenced Trademarks section
|
|
26
|
+
|
|
27
|
+
=== Fixed
|
|
28
|
+
|
|
29
|
+
* *trademark-it*: Inline `ifdef::attr[content]` was not suppressed when `attr` appeared in `scan_ignore_conditionals`
|
|
30
|
+
** Only block-form `ifdef::attr[]` … `endif::` suppression was working; standalone inline conditionals were always scanned regardless of the ignore list
|
|
31
|
+
** Now checks the inline conditional's own attribute against `scan_ignore_conditionals` in addition to the existing block-suppression stack check
|
|
32
|
+
|
|
6
33
|
== [1.0.32] - 2026-06-01
|
|
7
34
|
|
|
8
35
|
=== Fixed
|
package/README.adoc
CHANGED
|
@@ -130,520 +130,32 @@ antora:
|
|
|
130
130
|
[[collector-writer]]
|
|
131
131
|
=== collector-writer
|
|
132
132
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
==== Configuration
|
|
136
|
-
|
|
137
|
-
[cols="2,1,3,2"]
|
|
138
|
-
|===
|
|
139
|
-
|Key |Type |Description |Default
|
|
140
|
-
|
|
141
|
-
|`enabled`
|
|
142
|
-
|boolean
|
|
143
|
-
|Enable/disable the extension
|
|
144
|
-
|`true`
|
|
145
|
-
|
|
146
|
-
|`quiet`
|
|
147
|
-
|boolean
|
|
148
|
-
|Suppress informational output
|
|
149
|
-
|`true`
|
|
150
|
-
|
|
151
|
-
|`output_dir`
|
|
152
|
-
|string
|
|
153
|
-
|Base output directory
|
|
154
|
-
|`'vale-output'`
|
|
155
|
-
|
|
156
|
-
|`targets`
|
|
157
|
-
|array
|
|
158
|
-
|List of target configurations
|
|
159
|
-
|`[]`
|
|
160
|
-
|
|
161
|
-
|`required`
|
|
162
|
-
|array
|
|
163
|
-
|List of required component targets
|
|
164
|
-
|`[]`
|
|
165
|
-
|===
|
|
166
|
-
|
|
167
|
-
==== Target Configuration
|
|
168
|
-
|
|
169
|
-
[cols="2,1,3,2"]
|
|
170
|
-
|===
|
|
171
|
-
|Key |Type |Description |Default
|
|
172
|
-
|
|
173
|
-
|`component`
|
|
174
|
-
|string
|
|
175
|
-
|Component name to match in content catalog
|
|
176
|
-
|_(required)_
|
|
177
|
-
|
|
178
|
-
|`write_dir`
|
|
179
|
-
|string
|
|
180
|
-
|Directory to write files to
|
|
181
|
-
|`'target'`
|
|
182
|
-
|
|
183
|
-
|`ephemeral`
|
|
184
|
-
|boolean
|
|
185
|
-
|Delete directory after site is published
|
|
186
|
-
|`true`
|
|
187
|
-
|===
|
|
188
|
-
|
|
189
|
-
==== Per-Component Console Messages
|
|
190
|
-
|
|
191
|
-
A component can emit a custom message to the build console after its files are written.
|
|
192
|
-
Set `collector-message` in the component's `antora.yml` under `ext:`:
|
|
193
|
-
|
|
194
|
-
[source,yaml]
|
|
195
|
-
----
|
|
196
|
-
# antora.yml (in the content component repository)
|
|
197
|
-
ext:
|
|
198
|
-
collector-message: "Vale styles loaded — linting rules are active."
|
|
199
|
-
collector:
|
|
200
|
-
- scan:
|
|
201
|
-
dir: .
|
|
202
|
-
files:
|
|
203
|
-
- styles/**
|
|
204
|
-
into: modules/ROOT/attachments
|
|
205
|
-
----
|
|
206
|
-
|
|
207
|
-
The message is logged as an `EVENT` line immediately after the component's files are written, and only if at least one file was written.
|
|
208
|
-
It is useful for reminding developers of side-effects, such as reloading a VSCode extension or checking a generated directory.
|
|
209
|
-
|
|
210
|
-
==== Playbook Configuration
|
|
211
|
-
|
|
212
|
-
[source,yaml]
|
|
213
|
-
----
|
|
214
|
-
- require: '@baiyibai-antora/extensions/collector-writer'
|
|
215
|
-
collectorWriter:
|
|
216
|
-
enabled: true
|
|
217
|
-
quiet: false
|
|
218
|
-
targets:
|
|
219
|
-
- component: pdf-themes
|
|
220
|
-
write_dir: ./assembler-themes
|
|
221
|
-
ephemeral: false
|
|
222
|
-
- component: vale-styles
|
|
223
|
-
write_dir: ./vale-rules
|
|
224
|
-
ephemeral: true
|
|
225
|
-
----
|
|
133
|
+
include::docs/modules/ROOT/pages/collector-writer.adoc[tags=reference,leveloffset=+2]
|
|
226
134
|
|
|
227
135
|
[[assembler-ruby-preflight]]
|
|
228
136
|
=== assembler-ruby-preflight
|
|
229
137
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
==== Configuration
|
|
233
|
-
|
|
234
|
-
[cols="2,1,3,2"]
|
|
235
|
-
|===
|
|
236
|
-
|Key |Type |Description |Default
|
|
237
|
-
|
|
238
|
-
|`enabled`
|
|
239
|
-
|boolean
|
|
240
|
-
|Enable/disable the extension
|
|
241
|
-
|`true`
|
|
242
|
-
|
|
243
|
-
|`quiet`
|
|
244
|
-
|boolean
|
|
245
|
-
|Suppress informational output
|
|
246
|
-
|`true`
|
|
247
|
-
|
|
248
|
-
|`gemfile_path`
|
|
249
|
-
|string
|
|
250
|
-
|Path to source Gemfile
|
|
251
|
-
|_(required for gem bundling)_
|
|
252
|
-
|
|
253
|
-
|`use_system_gems`
|
|
254
|
-
|boolean
|
|
255
|
-
|Use system-installed gems instead of vendor/bundle
|
|
256
|
-
|`false`
|
|
257
|
-
|
|
258
|
-
|`platforms`
|
|
259
|
-
|object
|
|
260
|
-
|Per-platform configuration
|
|
261
|
-
|_(see below)_
|
|
262
|
-
|===
|
|
263
|
-
|
|
264
|
-
==== Platform Configuration
|
|
265
|
-
|
|
266
|
-
Each platform (`win32`, `linux`, `darwin`) supports:
|
|
267
|
-
|
|
268
|
-
[cols="2,1,3,2"]
|
|
269
|
-
|===
|
|
270
|
-
|Key |Type |Description |Default
|
|
271
|
-
|
|
272
|
-
|`ruby_version`
|
|
273
|
-
|string
|
|
274
|
-
|Expected Ruby version (e.g., `'3.3.8'`)
|
|
275
|
-
|_(none)_
|
|
276
|
-
|
|
277
|
-
|`ruby_revision`
|
|
278
|
-
|string
|
|
279
|
-
|Expected Ruby revision hash
|
|
280
|
-
|_(none)_
|
|
281
|
-
|
|
282
|
-
|`ruby_guidance`
|
|
283
|
-
|string
|
|
284
|
-
|Message shown if Ruby check fails
|
|
285
|
-
|_(none)_
|
|
286
|
-
|
|
287
|
-
|`gs_version`
|
|
288
|
-
|string
|
|
289
|
-
|Expected Ghostscript version
|
|
290
|
-
|_(none)_
|
|
291
|
-
|
|
292
|
-
|`gs_guidance`
|
|
293
|
-
|string
|
|
294
|
-
|Message shown if Ghostscript check fails
|
|
295
|
-
|_(none)_
|
|
296
|
-
|
|
297
|
-
|`check_ruby`
|
|
298
|
-
|boolean
|
|
299
|
-
|Enable Ruby version check
|
|
300
|
-
|`true`
|
|
301
|
-
|
|
302
|
-
|`check_gs`
|
|
303
|
-
|boolean
|
|
304
|
-
|Enable Ghostscript version check
|
|
305
|
-
|`false` (linux), `true` (others)
|
|
306
|
-
|===
|
|
307
|
-
|
|
308
|
-
==== Playbook Configuration
|
|
309
|
-
|
|
310
|
-
[source,yaml]
|
|
311
|
-
----
|
|
312
|
-
- require: '@baiyibai-antora/extensions/assembler-ruby-preflight'
|
|
313
|
-
preflight:
|
|
314
|
-
enabled: true
|
|
315
|
-
quiet: false
|
|
316
|
-
gemfile_path: './assembler-themes/Gemfile'
|
|
317
|
-
use_system_gems: true
|
|
318
|
-
platforms:
|
|
319
|
-
linux:
|
|
320
|
-
ruby_version: '3.3.8'
|
|
321
|
-
ruby_revision: 'b200bad6cd'
|
|
322
|
-
check_ruby: true
|
|
323
|
-
check_gs: false
|
|
324
|
-
win32:
|
|
325
|
-
ruby_version: '3.3.8'
|
|
326
|
-
gs_version: '10.05.1'
|
|
327
|
-
check_ruby: true
|
|
328
|
-
check_gs: true
|
|
329
|
-
----
|
|
138
|
+
include::docs/modules/ROOT/pages/ruby-preflight.adoc[tags=reference,leveloffset=+2]
|
|
330
139
|
|
|
331
140
|
[[assembler-rename-pdf]]
|
|
332
141
|
=== assembler-rename-pdf
|
|
333
142
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
==== Configuration
|
|
337
|
-
|
|
338
|
-
[cols="2,1,3,2"]
|
|
339
|
-
|===
|
|
340
|
-
|Key |Type |Description |Default
|
|
341
|
-
|
|
342
|
-
|`enabled`
|
|
343
|
-
|boolean
|
|
344
|
-
|Enable/disable the extension
|
|
345
|
-
|`true`
|
|
346
|
-
|
|
347
|
-
|`quiet`
|
|
348
|
-
|boolean
|
|
349
|
-
|Suppress informational output
|
|
350
|
-
|`true`
|
|
351
|
-
|
|
352
|
-
|`pdf_filename_attribute`
|
|
353
|
-
|string
|
|
354
|
-
|Document attribute containing the desired PDF filename
|
|
355
|
-
|`'pdf-filename'`
|
|
356
|
-
|
|
357
|
-
|`assembler_base_dir`
|
|
358
|
-
|string
|
|
359
|
-
|Base directory for assembler output
|
|
360
|
-
|`'build/assembler-pdf'`
|
|
361
|
-
|
|
362
|
-
|`site_base_dir`
|
|
363
|
-
|string
|
|
364
|
-
|Base directory for site output
|
|
365
|
-
|_(uses playbook output.dir)_
|
|
366
|
-
|
|
367
|
-
|`exports_subdir`
|
|
368
|
-
|string
|
|
369
|
-
|Subdirectory containing exports
|
|
370
|
-
|`'_exports'`
|
|
371
|
-
|
|
372
|
-
|`copy_target_dir`
|
|
373
|
-
|string
|
|
374
|
-
|Directory to copy renamed PDFs to
|
|
375
|
-
|_(disabled)_
|
|
376
|
-
|===
|
|
377
|
-
|
|
378
|
-
==== Playbook Configuration
|
|
379
|
-
|
|
380
|
-
[source,yaml]
|
|
381
|
-
----
|
|
382
|
-
- require: '@baiyibai-antora/extensions/assembler-rename-pdf'
|
|
383
|
-
renamer:
|
|
384
|
-
enabled: true
|
|
385
|
-
quiet: false
|
|
386
|
-
pdf_filename_attribute: 'pdf-filename'
|
|
387
|
-
assembler_base_dir: 'build/assembler-pdf'
|
|
388
|
-
exports_subdir: '_exports'
|
|
389
|
-
copy_target_dir: '.'
|
|
390
|
-
----
|
|
143
|
+
include::docs/modules/ROOT/pages/pdf-renamer.adoc[tags=reference,leveloffset=+2]
|
|
391
144
|
|
|
392
145
|
[[external-asset-downloader]]
|
|
393
146
|
=== external-asset-downloader
|
|
394
147
|
|
|
395
|
-
|
|
396
|
-
Parses `antora.yml` files directly to find `image:` attributes (both commented and uncommented).
|
|
397
|
-
Automatically detects and crawls Apache-style HTTP directory listings.
|
|
398
|
-
|
|
399
|
-
==== How It Works
|
|
400
|
-
|
|
401
|
-
1. Scans `antora.yml` for attributes matching the prefix (e.g., `image`, `image2`, `image3`)
|
|
402
|
-
2. Supports both active and commented-out attributes (falls back to commented if no active URLs found)
|
|
403
|
-
3. Auto-detects directory URLs (ending with `/` or no file extension) and downloads all files
|
|
404
|
-
4. Applies optional URL transformations before fetching
|
|
405
|
-
|
|
406
|
-
==== antora.yml Example
|
|
407
|
-
|
|
408
|
-
[source,yaml]
|
|
409
|
-
----
|
|
410
|
-
name: my-component
|
|
411
|
-
version: '1.0'
|
|
412
|
-
asciidoc:
|
|
413
|
-
attributes:
|
|
414
|
-
# Active image URL - downloads all files from this directory
|
|
415
|
-
image: 'https://example.com/assets/images/'
|
|
416
|
-
image2: 'https://example.com/other-images/'
|
|
417
|
-
# Commented fallback - used if no active URLs found
|
|
418
|
-
# image3: 'https://fallback.example.com/images/'
|
|
419
|
-
----
|
|
420
|
-
|
|
421
|
-
==== Configuration
|
|
422
|
-
|
|
423
|
-
[cols="2,1,3,2"]
|
|
424
|
-
|===
|
|
425
|
-
|Key |Type |Description |Default
|
|
426
|
-
|
|
427
|
-
|`enabled`
|
|
428
|
-
|boolean
|
|
429
|
-
|Enable/disable the extension
|
|
430
|
-
|`true`
|
|
431
|
-
|
|
432
|
-
|`quiet`
|
|
433
|
-
|boolean
|
|
434
|
-
|Suppress informational output
|
|
435
|
-
|`true`
|
|
436
|
-
|
|
437
|
-
|`attribute_prefix`
|
|
438
|
-
|string
|
|
439
|
-
|Attribute name prefix to scan (matches `image`, `image2`, etc.)
|
|
440
|
-
|`'image'`
|
|
441
|
-
|
|
442
|
-
|`include_commented`
|
|
443
|
-
|boolean
|
|
444
|
-
|Fall back to commented attributes in antora.yml when no active ones found
|
|
445
|
-
|`true`
|
|
446
|
-
|
|
447
|
-
|`target_dir`
|
|
448
|
-
|string
|
|
449
|
-
|Directory to download assets to (relative to playbook directory)
|
|
450
|
-
|_(required)_
|
|
451
|
-
|
|
452
|
-
|`overwrite`
|
|
453
|
-
|string
|
|
454
|
-
|Overwrite behavior: `'never'` or `'always'`
|
|
455
|
-
|`'never'`
|
|
456
|
-
|
|
457
|
-
|`concurrency`
|
|
458
|
-
|number
|
|
459
|
-
|Number of concurrent downloads
|
|
460
|
-
|`5`
|
|
461
|
-
|
|
462
|
-
|`url_replace`
|
|
463
|
-
|array
|
|
464
|
-
|URL transformation rules (applied before fetching directory listings)
|
|
465
|
-
|`[]`
|
|
466
|
-
|
|
467
|
-
|`trigger_file`
|
|
468
|
-
|string
|
|
469
|
-
|Skip download if this file exists (e.g., `'Gemfile.lock'` or `'package-lock.json'`)
|
|
470
|
-
|_(disabled)_
|
|
471
|
-
|===
|
|
472
|
-
|
|
473
|
-
==== URL Replace Rules
|
|
474
|
-
|
|
475
|
-
Use `url_replace` to transform URLs before fetching (e.g., converting paths to API endpoints).
|
|
476
|
-
|
|
477
|
-
[cols="2,1,3"]
|
|
478
|
-
|===
|
|
479
|
-
|Key |Type |Description
|
|
480
|
-
|
|
481
|
-
|`pattern`
|
|
482
|
-
|string
|
|
483
|
-
|Regex pattern to match
|
|
484
|
-
|
|
485
|
-
|`replacement`
|
|
486
|
-
|string
|
|
487
|
-
|Replacement string
|
|
488
|
-
|===
|
|
489
|
-
|
|
490
|
-
==== Playbook Configuration
|
|
491
|
-
|
|
492
|
-
[source,yaml]
|
|
493
|
-
----
|
|
494
|
-
- require: '@baiyibai-antora/extensions/external-asset-downloader'
|
|
495
|
-
assetDownloader:
|
|
496
|
-
enabled: true
|
|
497
|
-
quiet: false
|
|
498
|
-
attribute_prefix: 'image'
|
|
499
|
-
target_dir: 'modules/ROOT/images'
|
|
500
|
-
overwrite: 'never'
|
|
501
|
-
concurrency: 5
|
|
502
|
-
trigger_file: 'Gemfile.lock' # Skip if this file exists
|
|
503
|
-
url_replace:
|
|
504
|
-
- pattern: '/some-path/'
|
|
505
|
-
replacement: '/api/storage/'
|
|
506
|
-
----
|
|
148
|
+
include::docs/modules/ROOT/pages/external-asset-downloader.adoc[tags=reference,leveloffset=+2]
|
|
507
149
|
|
|
508
150
|
[[vale-integration]]
|
|
509
151
|
=== vale-integration
|
|
510
152
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
==== Configuration
|
|
514
|
-
|
|
515
|
-
[cols="2,1,3,2"]
|
|
516
|
-
|===
|
|
517
|
-
|Key |Type |Description |Default
|
|
518
|
-
|
|
519
|
-
|`enabled`
|
|
520
|
-
|boolean
|
|
521
|
-
|Enable/disable the extension
|
|
522
|
-
|`true`
|
|
523
|
-
|
|
524
|
-
|`quiet`
|
|
525
|
-
|boolean
|
|
526
|
-
|Suppress informational output
|
|
527
|
-
|`true`
|
|
528
|
-
|
|
529
|
-
|`output_dir`
|
|
530
|
-
|string
|
|
531
|
-
|Directory for Vale log files
|
|
532
|
-
|`'vale-output'`
|
|
533
|
-
|
|
534
|
-
|`config_file`
|
|
535
|
-
|string
|
|
536
|
-
|Path to Vale configuration file
|
|
537
|
-
|`'./.vale.ini'`
|
|
538
|
-
|
|
539
|
-
|`ignore_files`
|
|
540
|
-
|array
|
|
541
|
-
|Patterns for files to ignore
|
|
542
|
-
|`[]`
|
|
543
|
-
|
|
544
|
-
|`toolchain_config_path`
|
|
545
|
-
|string
|
|
546
|
-
|Path to toolchain config with additional ignores
|
|
547
|
-
|`'./toolchain-config.ini'`
|
|
548
|
-
|
|
549
|
-
|`max_logs`
|
|
550
|
-
|number
|
|
551
|
-
|Maximum number of log files to keep
|
|
552
|
-
|`10`
|
|
553
|
-
|
|
554
|
-
|`list_limit`
|
|
555
|
-
|number
|
|
556
|
-
|Maximum files to list in verbose output
|
|
557
|
-
|`20`
|
|
558
|
-
|===
|
|
559
|
-
|
|
560
|
-
==== Playbook Configuration
|
|
561
|
-
|
|
562
|
-
[source,yaml]
|
|
563
|
-
----
|
|
564
|
-
- require: '@baiyibai-antora/extensions/vale-integration'
|
|
565
|
-
vale:
|
|
566
|
-
enabled: true
|
|
567
|
-
quiet: false
|
|
568
|
-
output_dir: 'vale-output'
|
|
569
|
-
config_file: './vale-rules/.vale.ini'
|
|
570
|
-
ignore_files:
|
|
571
|
-
- 'partials/generated'
|
|
572
|
-
toolchain_config_path: './toolchain-config.ini'
|
|
573
|
-
max_logs: 10
|
|
574
|
-
----
|
|
575
|
-
|
|
576
|
-
[[trademark-it]]
|
|
577
|
-
=== trademark-it
|
|
578
|
-
|
|
579
|
-
include::docs/modules/ROOT/pages/trademark-it.adoc[tags=reference,leveloffset=+2]
|
|
153
|
+
include::docs/modules/ROOT/pages/vale-integration.adoc[tags=reference,leveloffset=+2]
|
|
580
154
|
|
|
581
155
|
[[asciidoctorconfig]]
|
|
582
156
|
=== asciidoctorconfig
|
|
583
157
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
==== Configuration
|
|
587
|
-
|
|
588
|
-
[cols="2,1,3,2"]
|
|
589
|
-
|===
|
|
590
|
-
|Key |Type |Description |Default
|
|
591
|
-
|
|
592
|
-
|`enabled`
|
|
593
|
-
|boolean
|
|
594
|
-
|Enable/disable the extension
|
|
595
|
-
|`true`
|
|
596
|
-
|
|
597
|
-
|`quiet`
|
|
598
|
-
|boolean
|
|
599
|
-
|Suppress informational output
|
|
600
|
-
|`true`
|
|
601
|
-
|
|
602
|
-
|`version`
|
|
603
|
-
|string
|
|
604
|
-
|Version prefix for resource ID (e.g., `'1.0'`)
|
|
605
|
-
|`''`
|
|
606
|
-
|
|
607
|
-
|`component`
|
|
608
|
-
|string
|
|
609
|
-
|Component containing config files
|
|
610
|
-
|`'asciidoctorconfig'`
|
|
611
|
-
|
|
612
|
-
|`module`
|
|
613
|
-
|string
|
|
614
|
-
|Module containing config files
|
|
615
|
-
|`'ROOT'`
|
|
616
|
-
|
|
617
|
-
|`location`
|
|
618
|
-
|string
|
|
619
|
-
|Location family for config files
|
|
620
|
-
|`'partial$'`
|
|
621
|
-
|
|
622
|
-
|`asciidoctorconfig_adoc_filename`
|
|
623
|
-
|string
|
|
624
|
-
|Source filename for `.asciidoctorconfig.adoc`
|
|
625
|
-
|_(disabled)_
|
|
626
|
-
|
|
627
|
-
|`asciidoctorconfig_filename`
|
|
628
|
-
|string
|
|
629
|
-
|Source filename for `.asciidoctorconfig`
|
|
630
|
-
|_(disabled)_
|
|
631
|
-
|===
|
|
632
|
-
|
|
633
|
-
==== Playbook Configuration
|
|
634
|
-
|
|
635
|
-
[source,yaml]
|
|
636
|
-
----
|
|
637
|
-
- require: '@baiyibai-antora/extensions/asciidoctorconfig'
|
|
638
|
-
asciidoctorconfig:
|
|
639
|
-
enabled: true
|
|
640
|
-
quiet: false
|
|
641
|
-
component: 'asciidoctorconfig'
|
|
642
|
-
module: 'ROOT'
|
|
643
|
-
location: 'partial$'
|
|
644
|
-
asciidoctorconfig_adoc_filename: 'asciidoctorconfig.adoc'
|
|
645
|
-
asciidoctorconfig_filename: 'asciidoctorconfig'
|
|
646
|
-
----
|
|
158
|
+
include::docs/modules/ROOT/pages/asciidoctorconfig.adoc[tags=reference,leveloffset=+2]
|
|
647
159
|
|
|
648
160
|
== Vendorization
|
|
649
161
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/list-of-site/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,GAAG,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,WAAW,EAAE,CAAC;CAC/B;AAED,UAAU,aAAa;IACrB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,UAAU,QAAQ;IAChB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;IAC3C,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC;CACzE;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/list-of-site/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,GAAG,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,WAAW,EAAE,CAAC;CAC/B;AAED,UAAU,aAAa;IACrB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,UAAU,QAAQ;IAChB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;IAC3C,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC;CACzE;AAkSD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAqFhD"}
|
|
@@ -98,33 +98,60 @@ function extractTables(html) {
|
|
|
98
98
|
return { entries, modifiedHtml };
|
|
99
99
|
}
|
|
100
100
|
/**
|
|
101
|
-
* Extract all captioned non-table elements of a given block type from HTML
|
|
101
|
+
* Extract all captioned non-table elements of a given block type from HTML,
|
|
102
|
+
* injecting id attributes where missing (same strategy as extractTables).
|
|
102
103
|
*
|
|
103
104
|
* Asciidoctor HTML5 structure (images, listings, examples, …):
|
|
104
|
-
* <div id="ANCHOR" class="…TYPE_CLASS…">
|
|
105
|
+
* <div [id="ANCHOR"] class="…TYPE_CLASS…">
|
|
105
106
|
* …(possibly content first, e.g. imageblock)…
|
|
106
107
|
* <div class="title">CAPTION AND TITLE TEXT</div>
|
|
107
108
|
* …
|
|
108
109
|
* </div>
|
|
110
|
+
*
|
|
111
|
+
* Blocks that lack an id attribute get a slug-based id injected so the
|
|
112
|
+
* generated anchor links resolve correctly in the browser.
|
|
113
|
+
*
|
|
114
|
+
* The title search is bounded to 512 chars to avoid false positives from
|
|
115
|
+
* adjacent untitled blocks whose window would otherwise span a later title.
|
|
116
|
+
*
|
|
117
|
+
* Returns:
|
|
118
|
+
* entries — { id, label } pairs in document order
|
|
119
|
+
* modifiedHtml — HTML with id attributes injected (unchanged if none needed)
|
|
109
120
|
*/
|
|
110
121
|
function extractElements(html, elementType) {
|
|
111
122
|
const blockClass = ELEMENT_CLASS_MAP[elementType] || `${elementType}block`;
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
123
|
+
const entries = [];
|
|
124
|
+
let modifiedHtml = html;
|
|
125
|
+
let htmlOffset = 0;
|
|
126
|
+
// Match opening <div> containing the block class, with or without id attribute.
|
|
127
|
+
const blockPattern = new RegExp(`<div([^>]*class="[^"]*${blockClass}[^"]*"[^>]*)>`, 'g');
|
|
115
128
|
let match;
|
|
116
129
|
while ((match = blockPattern.exec(html)) !== null) {
|
|
117
|
-
const
|
|
130
|
+
const attrs = match[1];
|
|
118
131
|
const startIdx = match.index + match[0].length;
|
|
119
|
-
// Look forward for
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
const
|
|
132
|
+
// Look forward (≤512 chars) for a <div class="title">.
|
|
133
|
+
// For listings/examples the title is the first child; for images it follows
|
|
134
|
+
// a short <div class="content"><img …></div> — both fit within 512 chars.
|
|
135
|
+
const snippet = html.slice(startIdx, startIdx + 512);
|
|
136
|
+
const titleMatch = snippet.match(/<div\s+class="title">([^<]+)<\/div>/);
|
|
123
137
|
if (!titleMatch)
|
|
124
138
|
continue;
|
|
125
|
-
|
|
139
|
+
const label = titleMatch[1].trim();
|
|
140
|
+
const idMatch = attrs.match(/\bid="([^"]+)"/);
|
|
141
|
+
if (idMatch) {
|
|
142
|
+
entries.push({ id: idMatch[1], label });
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
// Inject id before the closing '>' of the <div …> tag.
|
|
146
|
+
const id = slugify(label);
|
|
147
|
+
const insertPos = match.index + match[0].length - 1 + htmlOffset;
|
|
148
|
+
const insertion = ` id="${id}"`;
|
|
149
|
+
modifiedHtml = modifiedHtml.slice(0, insertPos) + insertion + modifiedHtml.slice(insertPos);
|
|
150
|
+
htmlOffset += insertion.length;
|
|
151
|
+
entries.push({ id, label });
|
|
152
|
+
}
|
|
126
153
|
}
|
|
127
|
-
return
|
|
154
|
+
return { entries, modifiedHtml };
|
|
128
155
|
}
|
|
129
156
|
/**
|
|
130
157
|
* Derive a human-readable page title from a site-relative URL.
|
|
@@ -251,15 +278,23 @@ function register(context) {
|
|
|
251
278
|
htmlModified = true;
|
|
252
279
|
}
|
|
253
280
|
for (const { id, label } of entries) {
|
|
254
|
-
bucket.
|
|
281
|
+
if (!bucket.some(e => e.label === label)) {
|
|
282
|
+
bucket.push({ pageUrl, id, label });
|
|
283
|
+
}
|
|
255
284
|
}
|
|
256
285
|
}
|
|
257
286
|
else {
|
|
258
|
-
const found = extractElements(html, elementType);
|
|
287
|
+
const { entries: found, modifiedHtml } = extractElements(html, elementType);
|
|
259
288
|
if (found.length === 0)
|
|
260
289
|
continue;
|
|
290
|
+
if (modifiedHtml !== html) {
|
|
291
|
+
html = modifiedHtml;
|
|
292
|
+
htmlModified = true;
|
|
293
|
+
}
|
|
261
294
|
for (const { id, label } of found) {
|
|
262
|
-
bucket.
|
|
295
|
+
if (!bucket.some(e => e.label === label)) {
|
|
296
|
+
bucket.push({ pageUrl, id, label });
|
|
297
|
+
}
|
|
263
298
|
}
|
|
264
299
|
}
|
|
265
300
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/list-of-site/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/list-of-site/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;AA8TH,4BAqFC;AA7WD,iFAAiF;AAEjF,SAAS,SAAS;IAChB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe;IAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,yDAAyD,OAAO,SAAS,CAAC,CAAC;AACxG,CAAC;AAED,6DAA6D;AAC7D,8CAA8C;AAC9C,MAAM,iBAAiB,GAA2B;IAChD,KAAK,EAAI,YAAY;IACrB,KAAK,EAAI,YAAY;IACrB,OAAO,EAAE,cAAc;IACvB,OAAO,EAAE,cAAc;IACvB,KAAK,EAAI,YAAY;IACrB,KAAK,EAAI,YAAY;CACtB,CAAC;AAEF;;;GAGG;AACH,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;SAC5B,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAE,qCAAqC;IAE1D,MAAM,YAAY,GAAG,mBAAmB,CAAC;IACzC,IAAI,KAA6B,CAAC;IAElC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QAE5D,wDAAwD;QACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/C,MAAM,OAAO,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAClF,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,MAAM,KAAK,GAAK,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,6CAA6C;YAC7C,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC;YACjE,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC;YAChC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5F,UAAU,IAAK,SAAS,CAAC,MAAM,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,eAAe,CACtB,IAAY,EACZ,WAAmB;IAEnB,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,GAAG,WAAW,OAAO,CAAC;IAC3E,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,gFAAgF;IAChF,MAAM,YAAY,GAAG,IAAI,MAAM,CAC7B,yBAAyB,UAAU,eAAe,EAClD,GAAG,CACJ,CAAC;IAEF,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAE/C,uDAAuD;QACvD,4EAA4E;QAC5E,0EAA0E;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,MAAM,KAAK,GAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC;YACjE,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC;YAChC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5F,UAAU,IAAK,SAAS,CAAC,MAAM,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACtE,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,mBAAmB,CAC1B,IAAY,EACZ,QAAqC,EACrC,cAAsB;IAEtB,OAAO,IAAI,CAAC,OAAO,CACjB,gFAAgF,EAChF,CAAC,MAAM,EAAE,WAAmB,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,uBAAuB,WAAW,8BAA8B,CAAC;QAC1E,CAAC;QAED,gEAAgE;QAChE,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;QACjD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAU,EAAU,EAAE,CACxD,OAAO,KAAK,cAAc;YACxB,CAAC,CAAC,IAAI,EAAE,EAAE;YACV,CAAC,CAAC,GAAG,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAEtD,0EAA0E;QAC1E,mDAAmD;QACnD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACnD,kBAAkB,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,WAAW,CAC1E,CAAC;YACF,OAAO,sBAAsB,WAAW,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5E,CAAC;QAED,sCAAsC;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACvC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;YACzC,MAAM,QAAQ,GAAK,OAAO,KAAK,cAAc;gBAC3C,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACzC,MAAM,SAAS,GAAI,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;YAEzD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAC9C,sBAAsB,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,WAAW,CAC9E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO,CACL,+BAA+B;gBAC/B,2CAA2C,QAAQ,KAAK,SAAS,QAAQ;gBACzE,aAAa,KAAK,eAAe;gBACjC,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,sBAAsB,WAAW,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7E,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,EAAU;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAG,2BAA2B;IAC7E,MAAM,OAAO,GAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,OACE,SAAS,GAAG,SAAS,CAAC,MAAM;QAC5B,SAAS,GAAG,OAAO,CAAC,MAAM;QAC1B,SAAS,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,EAC3C,CAAC;QACD,SAAS,EAAE,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAM,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5C,MAAM,KAAK,GAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,GAAG,GAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,iFAAiF;AAEjF,SAAgB,QAAQ,CAAC,OAAiB;IACxC,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,EAAE,cAAc,EAAiB,EAAE,EAAE;QACrE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;QAExC,6EAA6E;QAC7E,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;YAC9B,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAEzC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;oBAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;gBAE1C,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;oBAC5B,sEAAsE;oBACtE,kEAAkE;oBAClE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;oBACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;wBAAE,SAAS;oBACnC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;wBAC1B,IAAI,GAAG,YAAY,CAAC;wBACpB,YAAY,GAAG,IAAI,CAAC;oBACtB,CAAC;oBACD,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;wBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;4BACzC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;wBACtC,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;oBAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;wBAAE,SAAS;oBACjC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;wBAC1B,IAAI,GAAG,YAAY,CAAC;wBACpB,YAAY,GAAG,IAAI,CAAC;oBACtB,CAAC;oBACD,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;wBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;4BACzC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;wBACtC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAEhC,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,6EAA6E;QAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAAE,SAAS;YAEzD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE7D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,iBAAiB,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QAED,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBAC3C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC;iBACtC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,QAAQ,CAAC,iCAAiC,iBAAiB,wBAAwB,OAAO,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|