@airmark/quiver 0.32.1 → 0.32.2
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@airmark/quiver",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.2",
|
|
4
4
|
"description": "Airmark Quiver — Air Force and DAF document Quills for Quillmark.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"node": ">=24"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@quillmark/quiver": "0.
|
|
20
|
-
"@quillmark/wasm": "^0.
|
|
21
|
-
"quillkit": "0.5.
|
|
19
|
+
"@quillmark/quiver": "0.27.0",
|
|
20
|
+
"@quillmark/wasm": "^0.110.0",
|
|
21
|
+
"quillkit": "0.5.4"
|
|
22
22
|
},
|
|
23
23
|
"scripts": {
|
|
24
24
|
"test": "quillkit test",
|
|
@@ -57,7 +57,15 @@ main:
|
|
|
57
57
|
ui:
|
|
58
58
|
group: addressing
|
|
59
59
|
description: "Be brief and clear. Capitalize the first letter of each word except articles, prepositions, and conjunctions. Include suspense dates in parentheses if applicable. Italicize publication titles with *asterisks* (standard Markdown emphasis), as in the References field."
|
|
60
|
-
|
|
60
|
+
|
|
61
|
+
date:
|
|
62
|
+
type: date
|
|
63
|
+
default: ""
|
|
64
|
+
ui:
|
|
65
|
+
group: addressing
|
|
66
|
+
compact: true
|
|
67
|
+
description: YYYY-MM-DD. Leave blank to use today's date.
|
|
68
|
+
|
|
61
69
|
signature_block:
|
|
62
70
|
type: array
|
|
63
71
|
items:
|
|
@@ -71,14 +79,6 @@ main:
|
|
|
71
79
|
compact: true
|
|
72
80
|
description: "Line 1: Name in UPPERCASE as signed, grade, and service. Line 2: Duty title."
|
|
73
81
|
|
|
74
|
-
date:
|
|
75
|
-
type: date
|
|
76
|
-
default: ""
|
|
77
|
-
ui:
|
|
78
|
-
group: addressing
|
|
79
|
-
compact: true
|
|
80
|
-
description: YYYY-MM-DD. Leave blank to use today's date.
|
|
81
|
-
|
|
82
82
|
letterhead_title:
|
|
83
83
|
type: array
|
|
84
84
|
items:
|
|
@@ -259,6 +259,13 @@ card_kinds:
|
|
|
259
259
|
group: addressing
|
|
260
260
|
compact: true
|
|
261
261
|
description: Office symbol or organization receiving the endorsed memo.
|
|
262
|
+
date:
|
|
263
|
+
type: date
|
|
264
|
+
default: ""
|
|
265
|
+
ui:
|
|
266
|
+
group: addressing
|
|
267
|
+
compact: true
|
|
268
|
+
description: "YYYY-MM-DD. Date the endorser signs/forwards the memo (per AFH 33-337 Ch. 14, this is distinct from the originating memo's date). Leave blank to render a fillable PDF text field for the endorser to type the date into when signing."
|
|
262
269
|
signature_block:
|
|
263
270
|
type: array
|
|
264
271
|
items:
|
|
@@ -271,13 +278,6 @@ card_kinds:
|
|
|
271
278
|
group: addressing
|
|
272
279
|
compact: true
|
|
273
280
|
description: "Line 1: Name in UPPERCASE as signed, grade, and service. Line 2: Duty title."
|
|
274
|
-
date:
|
|
275
|
-
type: date
|
|
276
|
-
default: ""
|
|
277
|
-
ui:
|
|
278
|
-
group: addressing
|
|
279
|
-
compact: true
|
|
280
|
-
description: "YYYY-MM-DD. Date the endorser signs/forwards the memo (per AFH 33-337 Ch. 14, this is distinct from the originating memo's date). Leave blank to render a fillable PDF text field for the endorser to type the date into when signing."
|
|
281
281
|
format:
|
|
282
282
|
type: enum
|
|
283
283
|
values:
|
|
@@ -264,23 +264,33 @@
|
|
|
264
264
|
// but a gap left outside can be consumed at the foot of one page while
|
|
265
265
|
// the block starts at the top margin of the next, which is also what put
|
|
266
266
|
// the signing field off the page (see below).
|
|
267
|
-
#v(gap)
|
|
268
267
|
#if signing-field != none {
|
|
269
268
|
// The signing field covers those blank lines — where a signature is
|
|
270
|
-
// actually written — so it is placed over the gap.
|
|
271
|
-
// the
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
//
|
|
275
|
-
// the
|
|
276
|
-
//
|
|
277
|
-
//
|
|
269
|
+
// actually written — so it is placed over the gap. It is placed BEFORE
|
|
270
|
+
// the gap is emitted: `place` anchors at the current flow position, so
|
|
271
|
+
// placing it after `v(gap)` anchors the box at the first name line and
|
|
272
|
+
// paints it down over the printed signature block. Anchored here it
|
|
273
|
+
// still travels with the block onto whatever page the block lands on,
|
|
274
|
+
// since the gap is inside the unbreakable block rather than ahead of
|
|
275
|
+
// it.
|
|
276
|
+
//
|
|
277
|
+
// The widget keeps its own size (the helper's default is 50pt tall and
|
|
278
|
+
// it positions itself, so an `align` around it does nothing) and is
|
|
279
|
+
// offset to the BOTTOM of the gap: it always ends where the printed
|
|
280
|
+
// name begins, and whatever the gap has beyond the widget's height
|
|
281
|
+
// stays clear between the body text and the widget's frame.
|
|
282
|
+
let widget-height = {
|
|
283
|
+
let h = measure(signing-field).height
|
|
284
|
+
if h > 0pt { h } else { 50pt }
|
|
285
|
+
}
|
|
286
|
+
let drop = gap - widget-height - 3pt
|
|
278
287
|
place(
|
|
279
288
|
dx: left-pad,
|
|
280
|
-
dy: 0pt,
|
|
281
|
-
box(width: body-width - left-pad, height:
|
|
289
|
+
dy: if drop > 0pt { drop } else { 0pt },
|
|
290
|
+
box(width: body-width - left-pad, height: widget-height, signing-field),
|
|
282
291
|
)
|
|
283
292
|
}
|
|
293
|
+
#v(gap)
|
|
284
294
|
#align(left)[
|
|
285
295
|
#pad(left: left-pad)[
|
|
286
296
|
#text(hyphenate: false)[
|
|
@@ -119,7 +119,14 @@
|
|
|
119
119
|
#backmatter(
|
|
120
120
|
// Signature block
|
|
121
121
|
signature_block: data.signature_block,
|
|
122
|
-
|
|
122
|
+
// The widget sits at the bottom of AFH 33-337's four blank lines and is
|
|
123
|
+
// sized to two and a half of them, so the line and a half above it stays
|
|
124
|
+
// clear of the body text without moving the block off the fifth line.
|
|
125
|
+
signing_field: signature-field(
|
|
126
|
+
"Signature",
|
|
127
|
+
field: "signature_block",
|
|
128
|
+
height: body_font_size * 2.5,
|
|
129
|
+
),
|
|
123
130
|
|
|
124
131
|
// Optional cc
|
|
125
132
|
..if data.cc.len() > 0 { (cc: data.cc) },
|
|
@@ -184,6 +191,7 @@
|
|
|
184
191
|
signing_field: signature-field(
|
|
185
192
|
"Ind_" + str(i) + "_Signature",
|
|
186
193
|
field: card.at("$path") + "signature_block",
|
|
194
|
+
height: body_font_size * 2.5,
|
|
187
195
|
),
|
|
188
196
|
..if card.format != "" { (format: card.format) },
|
|
189
197
|
date: resolved_date,
|