New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@contrail/document-generation

Package Overview
Dependencies
Maintainers
9
Versions
97
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@contrail/document-generation - npm Package Compare versions

Comparing version 1.0.10 to 1.0.11

lib/info-panel/info-panel-generator.d.ts

5

lib/components/component-generator.d.ts
import { DocumentElement } from "@contrail/documents";
import { ComponentPropertyDefinition, ComponentPropertyTemplate, ComponentTemplate } from "../interfaces";
import { PropertyValueFormatter } from "@contrail/types";
import { ComponentPropertyTemplate, ComponentTemplate } from "../interfaces";
export declare class ComponentGenerator {

@@ -12,4 +11,2 @@ static generateComponent(data: any, options: DocumentElement, template: ComponentTemplate): any;

static generateComponentFromPropertyTemplate(data: any, options: DocumentElement, template: ComponentPropertyTemplate): DocumentElement;
static generatePropertyTextElements(data: any, properties: Array<ComponentPropertyDefinition>, options: DocumentElement, yPosition: number): Array<DocumentElement>;
static generatePropertyTextElement(data: any, property: ComponentPropertyDefinition, options: DocumentElement, formatter: PropertyValueFormatter, yPosition: number): DocumentElement;
}

38

lib/components/component-generator.js

@@ -6,4 +6,4 @@ "use strict";

const nanoid_1 = require("nanoid");
const types_1 = require("@contrail/types");
const util_1 = require("@contrail/util");
const document_property_util_1 = require("../util/document-property-util");
class ComponentGenerator {

@@ -55,3 +55,3 @@ static generateComponent(data, options, template) {

};
elements.push(...this.generatePropertyTextElements(data, template.properties, textOptions, yPosition));
elements.push(...document_property_util_1.DocumentPropertyUtil.generatePropertyTextElements(data, template.properties, textOptions, { y: yPosition }, true));
const modelBindings = this.generatedModelBindings(data);

@@ -68,37 +68,3 @@ componentElement.elements = elements;

}
static generatePropertyTextElements(data, properties, options, yPosition) {
const elements = [];
const formatter = new types_1.PropertyValueFormatter();
for (let property of properties) {
let element = this.generatePropertyTextElement(data, property, options, formatter, yPosition);
elements.push(element);
}
return elements;
}
static generatePropertyTextElement(data, property, options, formatter, yPosition) {
var _a, _b, _c;
const key = `${util_1.StringUtil.convertToCamelCase(property.typeRootSlug)}.${property.propertyDefinition.slug}`;
let style = property.style || {
font: {
size: 8,
},
color: 'rgba(0,0,0,.5)',
};
if ((_a = options === null || options === void 0 ? void 0 : options.style) === null || _a === void 0 ? void 0 : _a.text) {
style.text = options.style.text;
}
let element = Object.assign({
label: property.includeLabel ? (_b = property.propertyDefinition) === null || _b === void 0 ? void 0 : _b.label : null,
type: "text",
position: { x: 0, y: yPosition },
size: { height: 25, width: ((_c = options === null || options === void 0 ? void 0 : options.size) === null || _c === void 0 ? void 0 : _c.width) || 125 },
style,
propertyBindings: { text: key }
});
const value = util_1.ObjectUtil.getByPath(data, key);
const display = formatter.formatValueForProperty(value, property.propertyDefinition);
element.text = display;
return element;
}
}
exports.ComponentGenerator = ComponentGenerator;

@@ -72,3 +72,2 @@ "use strict";

const requiredWidthAdjustment = (idealSize.width - requiredSize.width) / template.gridDimensions.cols;
console.log("requiredHeightAdjustment: ", requiredHeightAdjustment, " requiredWidthAdjustment: ", requiredWidthAdjustment);
if (requiredHeightAdjustment < 0 && requiredHeightAdjustment < requiredWidthAdjustment) {

@@ -75,0 +74,0 @@ adjustedTemplate.componentTemplate.propertyTemplate.imageDimension.width += requiredHeightAdjustment;

@@ -7,3 +7,4 @@ import { DocumentElement, PositionDefinition, SizeDefinition } from "@contrail/documents";

static generateFrameHeaderForDataGroup(dataGroup: DataGroup, position: PositionDefinition, template: DocumentTemplate, headerSize: SizeDefinition): DocumentElement[];
static generateFrameInfoPanelForDataGroup(dataGroup: DataGroup, position: PositionDefinition, template: DocumentTemplate, panelSize: SizeDefinition): DocumentElement[];
static generateFrame(options: DocumentElement): DocumentElement;
}

@@ -8,4 +8,6 @@ "use strict";

const document_util_1 = require("./util/document-util");
const info_panel_generator_1 = require("./info-panel/info-panel-generator");
class FrameGenerator {
static generateFrameForDataGroup(dataGroup, framePosition, template) {
var _a, _b;
const elements = [];

@@ -22,6 +24,31 @@ const frame = this.generateFrame({

headerPosition.x = headerPosition.x + FRAME_PADDING;
const frameHeaderDimensions = { height: 50, width: template.frameSize.width - 50 };
const HEADER_MARGIN = 20;
const gridPosition = util_1.ObjectUtil.cloneDeep(headerPosition);
gridPosition.y = gridPosition.y + frameHeaderDimensions.height + HEADER_MARGIN;
const panelPosition = util_1.ObjectUtil.cloneDeep(framePosition);
panelPosition.y = panelPosition.y + FRAME_PADDING;
panelPosition.x = panelPosition.x + FRAME_PADDING;
let frameHeaderDimensions = { height: 0, width: 0 };
let framePanelDimensions = { height: 0, width: 0 };
let hasPanel = false;
let hasHeader = false;
elements.push(util_1.ObjectUtil.cloneDeep(frame));
if (template.frameHeaderTemplate) {
hasHeader = true;
frameHeaderDimensions = { height: 50, width: template.frameSize.width - 50 };
elements.push(...this.generateFrameHeaderForDataGroup(dataGroup, headerPosition, template, frameHeaderDimensions));
}
if (template.frameInfoPanelTemplate) {
hasPanel = true;
framePanelDimensions = { width: ((_b = (_a = template.frameInfoPanelTemplate.panelDocumentTemplate) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.width) || 300 };
framePanelDimensions.height = template.frameSize.height - (2 * FRAME_PADDING);
elements.push(...this.generateFrameInfoPanelForDataGroup(dataGroup, panelPosition, template, framePanelDimensions));
}
const GRID_MARGIN = 20;
let gridPosition = util_1.ObjectUtil.cloneDeep(framePosition);
if (hasHeader) {
gridPosition = util_1.ObjectUtil.cloneDeep(headerPosition);
gridPosition.y = gridPosition.y + frameHeaderDimensions.height + GRID_MARGIN;
}
if (hasPanel) {
gridPosition = util_1.ObjectUtil.cloneDeep(panelPosition);
gridPosition.x = gridPosition.x + framePanelDimensions.width + GRID_MARGIN;
}
const relativeGridPosition = document_util_1.DocumentUtil.getRelativePosition(framePosition, gridPosition);

@@ -33,4 +60,2 @@ const frameSize = template.frameSize;

};
elements.push(util_1.ObjectUtil.cloneDeep(frame));
elements.push(...this.generateFrameHeaderForDataGroup(dataGroup, headerPosition, template, frameHeaderDimensions));
elements.push(...component_grid_generator_1.ComponentGridGenerator.generateComponentGrid(dataGroup.data, gridPosition, template.componentGridTemplate, idealGridSize));

@@ -47,2 +72,5 @@ return elements;

}
static generateFrameInfoPanelForDataGroup(dataGroup, position, template, panelSize) {
return info_panel_generator_1.InfoPanelGenerator.generatePanelFromTemplate(dataGroup.propertyValues, template.frameInfoPanelTemplate, position, panelSize);
}
static generateFrame(options) {

@@ -49,0 +77,0 @@ const frame = documents_1.DocumentElementFactory.createFrameElement(options);

@@ -21,5 +21,14 @@ import { DataGroupStructure } from "@contrail/data-grouping";

frameGroupHeaderTemplate: DocumentElement;
frameHeaderTemplate: DocumentElement;
frameHeaderTemplate?: DocumentElement;
frameInfoPanelTemplate?: FrameInfoPanelTemplate;
componentGridTemplate: ComponentGridTemplate;
}
export interface FrameInfoPanelTemplate {
panelDocumentTemplate: DocumentElement;
propertyTemplate: PanelPropertyTemplate;
}
export interface PanelPropertyTemplate {
textHorizontalAlignment?: 'center' | 'right' | 'left';
properties: Array<DocumentPropertyDefinition>;
}
export interface ComponentGridTemplate {

@@ -40,5 +49,5 @@ componentTemplate: ComponentTemplate;

textHorizontalAlignment?: 'center' | 'right' | 'left';
properties: Array<ComponentPropertyDefinition>;
properties: Array<DocumentPropertyDefinition>;
}
export interface ComponentPropertyDefinition {
export interface DocumentPropertyDefinition {
style?: StyleDefinition;

@@ -45,0 +54,0 @@ propertyDefinition: TypeProperty;

@@ -20,3 +20,2 @@ "use strict";

return __awaiter(this, void 0, void 0, function* () {
const generator = new document_generator_1.DocumentGenerator();
const orgSlug = 'converse-prod';

@@ -67,17 +66,61 @@ yield loginSDK(orgSlug);

slug: "baseStyleNumber",
}]
};
const PANEL_PROPERTY_TEMPLATE = {
properties: [{
propertyDefinition: itemType.typeProperties.find(p => p.slug === 'name'),
typeRootSlug: 'item',
slug: "name",
includeLabel: false,
style: {
font: {
size: 25,
weight: 'bold'
},
color: 'white',
}
}, {
propertyDefinition: itemType.typeProperties.find(p => p.slug === 'closureType'),
propertyDefinition: itemType.typeProperties.find(p => p.slug === 'segment'),
typeRootSlug: 'item',
slug: "closureType",
slug: "segment",
includeLabel: true,
style: {
font: {
size: 14,
},
color: 'white',
}
}, {
propertyDefinition: itemType.typeProperties.find(p => p.slug === 'colorFamily'),
propertyDefinition: itemType.typeProperties.find(p => p.slug === 'familyName'),
typeRootSlug: 'item',
slug: "colorFamily",
slug: "familyName",
includeLabel: true,
style: {
font: {
size: 14,
},
color: 'white',
}
}, {
propertyDefinition: projectItemType.typeProperties.find(p => p.slug === 'colorwayStatus'),
slug: "colorwayStatus",
typeRootSlug: 'project-item',
propertyDefinition: itemType.typeProperties.find(p => p.slug === 'ageGroup'),
typeRootSlug: 'item',
slug: "ageGroup",
includeLabel: true,
style: {
font: {
size: 14,
},
color: 'white',
}
}, {
propertyDefinition: itemType.typeProperties.find(p => p.slug === 'planningLevel1'),
typeRootSlug: 'item',
slug: "planningLevel1",
includeLabel: true,
style: {
font: {
size: 14,
},
color: 'white',
}
}]

@@ -89,9 +132,9 @@ };

framePadding: 30,
frameHeaderTemplate: {
frameGroupHeaderTemplate: {
style: {
color: '#000000',
color: '#ffffff',
font: {
size: 20
},
backgroundColor: '#FFFFFF',
backgroundColor: 'rgba(0, 0, 0, 0.8)',
},

@@ -102,16 +145,23 @@ size: {

},
frameGroupHeaderTemplate: {
style: {
color: '#ffffff',
font: {
size: 20
frameInfoPanelTemplate: {
panelDocumentTemplate: {
style: {
color: '#ffffff',
font: {
size: 20
},
backgroundColor: 'rgba(0, 0, 0, 0.8)',
border: {
radius: 4,
}
},
backgroundColor: 'black',
size: {
width: 250,
height: 400,
}
},
size: {
height: 60,
}
propertyTemplate: PANEL_PROPERTY_TEMPLATE
},
componentGridTemplate: {
gridDimensions: { cols: 8, rows: 2 },
gridDimensions: { cols: 4, rows: 2 },
componentPadding: 5,

@@ -125,7 +175,2 @@ componentTemplate: {

{
property: itemType.typeProperties.find(p => p.slug === 'designPack'),
scope: 'item',
sort: sdk_1.SortOrderOptions.ASC,
values: null,
}, {
property: itemType.typeProperties.find(p => p.slug === 'category'),

@@ -136,3 +181,3 @@ scope: 'item',

}, {
property: itemType.typeProperties.find(p => p.slug === 'class'),
property: itemType.typeProperties.find(p => p.slug === 'name'),
scope: 'item',

@@ -167,7 +212,8 @@ sort: sdk_1.SortOrderOptions.ASC,

return __awaiter(this, void 0, void 0, function* () {
yield (0, sdk_1.login)({
const config = {
email: 'brian@vibeiq.com',
password: process.env.CONTRAIL_PW,
orgSlug: orgSlug,
});
};
yield (0, sdk_1.login)(config);
});

@@ -174,0 +220,0 @@ }

{
"name": "@contrail/document-generation",
"version": "1.0.10",
"version": "1.0.11",
"description": "Utilities for automatic generation of documents.",

@@ -45,3 +45,3 @@ "main": "lib/index.js",

"dependencies": {
"@contrail/data-grouping": "^1.0.15",
"@contrail/data-grouping": "^1.0.18",
"@contrail/documents": "^1.0.44",

@@ -48,0 +48,0 @@ "@contrail/types": "^3.0.27",

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc