Add guide metadata, redesign PDF cover, paginate steps, and run exports in a helper process #19
+17
-9
@@ -87,6 +87,16 @@ function stepNumberMap(steps) {
|
||||
return numbers;
|
||||
}
|
||||
|
||||
function stepDepth(step, stepMap) {
|
||||
let depth = 0;
|
||||
let parent = step.parentStepId;
|
||||
while (parent && stepMap.has(parent)) {
|
||||
depth += 1;
|
||||
parent = stepMap.get(parent).parentStepId;
|
||||
}
|
||||
return depth;
|
||||
}
|
||||
|
||||
function isEditableTarget(target) {
|
||||
return target && (
|
||||
target.tagName === 'INPUT' ||
|
||||
@@ -761,15 +771,10 @@ class GuideEditor {
|
||||
this.dom.selectStepsBtn.className = this.stepSelectMode ? 'primary' : '';
|
||||
for (const step of this.steps) {
|
||||
const number = numbers.get(step.stepId) || '';
|
||||
let depth = 0;
|
||||
let parent = step.parentStepId;
|
||||
while (parent && this.stepMap.has(parent)) {
|
||||
depth += 1;
|
||||
parent = this.stepMap.get(parent).parentStepId;
|
||||
}
|
||||
const depth = stepDepth(step, this.stepMap);
|
||||
const selected = current && current.stepId === step.stepId;
|
||||
const checked = this.selectedSteps.has(step.stepId);
|
||||
const item = el('div.step-item', {
|
||||
const itemProps = {
|
||||
className: `step-item${selected ? ' selected' : ''}${depth ? ' sub' : ''}${step.skipped ? ' skipped' : ''}${step.hidden ? ' hiddenstep' : ''}`,
|
||||
dataset: { stepId: step.stepId },
|
||||
onClick: () => {
|
||||
@@ -802,7 +807,9 @@ class GuideEditor {
|
||||
{ label: 'Delete step', danger: true, action: () => this.deleteSelectedStep() },
|
||||
]);
|
||||
},
|
||||
},
|
||||
};
|
||||
if (depth) itemProps.style = { marginLeft: `${depth * 18}px` };
|
||||
const item = el('div.step-item', itemProps,
|
||||
this.stepSelectMode
|
||||
? el('input', {
|
||||
type: 'checkbox',
|
||||
@@ -818,7 +825,8 @@ class GuideEditor {
|
||||
step.parentStepId ? 'sub' : '',
|
||||
step.hidden ? 'hidden' : '',
|
||||
step.skipped ? 'skipped' : '',
|
||||
].filter(Boolean).join(' · ')));
|
||||
].filter(Boolean).join(' · ')),
|
||||
);
|
||||
this.dom.stepsList.append(item);
|
||||
}
|
||||
if (!this.steps.length) {
|
||||
|
||||
Reference in New Issue
Block a user