@mark1russell7/packing 0.1.3 → 0.1.4
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/build/index.d.ts +183 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1112 -3
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- package/src/corpus.ts +65 -0
- package/src/generators.ts +684 -0
- package/src/index.ts +34 -0
- package/src/layout-input.ts +120 -0
- package/src/sha256.ts +93 -0
package/build/index.d.ts
CHANGED
|
@@ -595,5 +595,187 @@ interface HardBreaks {
|
|
|
595
595
|
* The rules read a shape of the container or of an obstacle as its bounding box. The result has no tolerance in it.
|
|
596
596
|
*/
|
|
597
597
|
export declare function checkHard(input: PackInput, output: PackOutput, tolerance?: Pick<Tolerance, "overlap">): HardBreaks;
|
|
598
|
-
|
|
598
|
+
/** An edge between two boxes. The router reads it, and the packer ignores it. */
|
|
599
|
+
interface Edge {
|
|
600
|
+
id: string;
|
|
601
|
+
source: string;
|
|
602
|
+
target: string;
|
|
603
|
+
sourcePort?: string;
|
|
604
|
+
targetPort?: string;
|
|
605
|
+
}
|
|
606
|
+
/** The parameters of a generator: a name and a string or a number for each parameter. */
|
|
607
|
+
type GeneratorParams = Record<string, string | number>;
|
|
608
|
+
/** The stamp of a generated input: the generator, its version, the full parameters and the seed. */
|
|
609
|
+
interface GeneratorStamp {
|
|
610
|
+
name: string;
|
|
611
|
+
version: number;
|
|
612
|
+
params: GeneratorParams;
|
|
613
|
+
seed: number;
|
|
614
|
+
}
|
|
615
|
+
/** One input file `layout-input/1`. `docs/FORMAT.md` gives each field. */
|
|
616
|
+
interface LayoutInput {
|
|
617
|
+
schema: "layout-input/1";
|
|
618
|
+
id: string;
|
|
619
|
+
set: string;
|
|
620
|
+
family: string;
|
|
621
|
+
seed: number;
|
|
622
|
+
/** The origin: `made-up`, `published:<set>` or `known-best:<construction>`. */
|
|
623
|
+
source: string;
|
|
624
|
+
/** The generator of a generated input. A hand-made or published input has `null`. */
|
|
625
|
+
generator: GeneratorStamp | null;
|
|
626
|
+
container: Container;
|
|
627
|
+
obstacles?: Obstacle[];
|
|
628
|
+
gap?: number;
|
|
629
|
+
boxes: Item[];
|
|
630
|
+
edges: Edge[];
|
|
631
|
+
base?: string;
|
|
632
|
+
change?: string;
|
|
633
|
+
step?: number;
|
|
634
|
+
/** The first 16 hex characters of the SHA-256 of the canonical form of the other fields. */
|
|
635
|
+
hash: string;
|
|
636
|
+
}
|
|
637
|
+
/** The layout of the obstacles (`docs/research/TAXONOMY.md`, dimension 3). */
|
|
638
|
+
type ObstacleLayout = "none" | "center" | "scattered" | "wall" | "corridors" | "touching" | "edge";
|
|
639
|
+
/** The distribution of the sizes of the items (`docs/research/TAXONOMY.md`, dimension 6). */
|
|
640
|
+
type SizeDistribution = "identical" | "nearIdentical" | "uniform" | "heavyTail" | "bimodal" | "extremeAspect";
|
|
641
|
+
/** The scale of the count of the items (`docs/research/TAXONOMY.md`, dimension 7). */
|
|
642
|
+
type CountScale = "1" | "10" | "100" | "1k" | "10k";
|
|
643
|
+
/**
|
|
644
|
+
* The cell of a generated input: one value for each dimension of the packer. The cell of `cellOf` has the dimensions
|
|
645
|
+
* that the input tells. The generator adds the layout of the obstacles, the sizes, the count and the mode.
|
|
646
|
+
*/
|
|
647
|
+
interface CorpusCell extends Cell {
|
|
648
|
+
obstacles: ObstacleLayout;
|
|
649
|
+
sizes: SizeDistribution;
|
|
650
|
+
count: CountScale;
|
|
651
|
+
mode: "offline" | "online" | "incremental";
|
|
652
|
+
}
|
|
653
|
+
/** This function gives the `fnv1a32` hash of the UTF-8 bytes of a string, as `docs/FORMAT.md` gives it. */
|
|
654
|
+
export declare function fnv1a32(text: string): number;
|
|
655
|
+
/** This function rounds the numbers of a file to 3 decimals. A half goes up, and the value `-0` becomes 0. */
|
|
656
|
+
export declare function round3(x: number): number;
|
|
657
|
+
/**
|
|
658
|
+
* This function gives the canonical form of a value: sorted keys, no whitespace and the numbers of `JSON.stringify`
|
|
659
|
+
* after `round3`. A key with the value `undefined` is not in the form.
|
|
660
|
+
*/
|
|
661
|
+
export declare function canonicalJson(value: unknown): string;
|
|
662
|
+
/** This function gives the hash of an input file: the first 16 hex characters of the SHA-256 of its canonical form without `hash`. */
|
|
663
|
+
export declare function hashInput(file: Omit<LayoutInput, "hash"> | LayoutInput): string;
|
|
664
|
+
/** This function gives the scale of a count: the nearest of 1, 10, 100, 1000 and 10000 on a log scale. The count 0 gives `1`. */
|
|
665
|
+
export declare function countCell(count: number): CountScale;
|
|
666
|
+
/** This function gives the packing input of a file. The boxes become the items, and the edges go. */
|
|
667
|
+
export declare function toPackInput(file: Pick<LayoutInput, "container" | "boxes" | "obstacles" | "gap">): PackInput;
|
|
668
|
+
/** A seeded generator of `layout-input/1` files. The same version, parameters and seed give the same file, byte for byte. */
|
|
669
|
+
interface CorpusGenerator<P extends GeneratorParams = GeneratorParams> {
|
|
670
|
+
/** The name. The file writes it in `generator.name`. */
|
|
671
|
+
readonly name: string;
|
|
672
|
+
/** The version. A change of the output of a generator needs a new version. */
|
|
673
|
+
readonly version: number;
|
|
674
|
+
/** The default set of an input, when the call gives no set. */
|
|
675
|
+
readonly set: string;
|
|
676
|
+
/** The default parameters. */
|
|
677
|
+
readonly defaults: Readonly<P>;
|
|
678
|
+
/** For each parameter with a list of values, the values that the generator accepts. */
|
|
679
|
+
readonly values: { readonly [K in keyof P]?: readonly P[K][]; };
|
|
680
|
+
/** This method gives the full parameters: the defaults with the given parameters over them. It throws a `RangeError` for a bad parameter. */
|
|
681
|
+
withDefaults(params?: Partial<P>): P;
|
|
682
|
+
/** This method gives the cell of each input of the parameters. The cell does not depend on the seed. */
|
|
683
|
+
cell(params?: Partial<P>): CorpusCell;
|
|
684
|
+
/** This method gives the input file of a seed. The `id` is `<set>/<family>/s<seed>`. */
|
|
685
|
+
generate(seed: number, params?: Partial<P>, set?: string): LayoutInput;
|
|
686
|
+
}
|
|
687
|
+
/** The parameters of `rect-scattered`. */
|
|
688
|
+
type RectScatteredParams = {
|
|
689
|
+
count: number;
|
|
690
|
+
};
|
|
691
|
+
/** The shared generator `rect-scattered` of `docs/FORMAT.md`, version 1: rectangle obstacles at random places in a fixed rectangle. */
|
|
692
|
+
export declare const rectScattered: CorpusGenerator<RectScatteredParams>;
|
|
693
|
+
/** The parameters of `rect-grid`: one value for each dimension of the taxonomy that it covers. */
|
|
694
|
+
type RectGridParams = {
|
|
695
|
+
containerSize: DimensionValue<"containerSize">;
|
|
696
|
+
containerShape: DimensionValue<"containerShape">;
|
|
697
|
+
obstacles: ObstacleLayout;
|
|
698
|
+
sizes: SizeDistribution;
|
|
699
|
+
count: number;
|
|
700
|
+
};
|
|
701
|
+
/**
|
|
702
|
+
* The generator `rect-grid`, version 1: rectangle boxes for each value of `containerSize`, `containerShape`, `obstacles`
|
|
703
|
+
* and `sizes`, with each count. The container is a nominal rectangle of 600 to 1000 by 400 to 800.
|
|
704
|
+
*/
|
|
705
|
+
export declare const rectGrid: CorpusGenerator<RectGridParams>;
|
|
706
|
+
/** The parameters of a family of a user interface. */
|
|
707
|
+
type UiParams = {
|
|
708
|
+
containerSize: DimensionValue<"containerSize">;
|
|
709
|
+
count: number;
|
|
710
|
+
};
|
|
711
|
+
/** The generator `gallery`, version 1: thumbnails with one size and one aspect (1, 4:3, 3:2 or 16:9). The default container has a fixed width. */
|
|
712
|
+
export declare const gallery: CorpusGenerator<UiParams>;
|
|
713
|
+
/** The generator `dashboard`, version 1: tiles in 6 standard sizes, from 1 by 1 to 4 by 2 grid units of 60 to 100. */
|
|
714
|
+
export declare const dashboard: CorpusGenerator<UiParams>;
|
|
715
|
+
/** The generator `cards`, version 1: cards with one width from 200 to 320, and a height from 120 to 420 each. */
|
|
716
|
+
export declare const cards: CorpusGenerator<UiParams>;
|
|
717
|
+
/** The generator `word-cloud`, version 1: boxes of text. The height comes from 6 font sizes, the width from 3 to 12 letters. */
|
|
718
|
+
export declare const wordCloud: CorpusGenerator<UiParams>;
|
|
719
|
+
/** The cases of `edge-cases`. */
|
|
720
|
+
type EdgeCase = "empty" | "one" | "oversize" | "exactTiling" | "touchObstacles";
|
|
721
|
+
/** The parameters of `edge-cases`. The cases `empty` and `one` ignore `count`. */
|
|
722
|
+
type EdgeCaseParams = {
|
|
723
|
+
case: EdgeCase;
|
|
724
|
+
count: number;
|
|
725
|
+
};
|
|
726
|
+
/**
|
|
727
|
+
* The generator `edge-cases`, version 1. Each case has a fixed rectangle container.
|
|
728
|
+
*
|
|
729
|
+
* - `empty`: no box.
|
|
730
|
+
* - `one`: one box.
|
|
731
|
+
* - `oversize`: `count` boxes. One box is wider than the container.
|
|
732
|
+
* - `exactTiling`: `count` identical boxes that fill the container with no free space.
|
|
733
|
+
* - `touchObstacles`: a locked box on the top of an obstacle, and boxes as wide as the path between 2 obstacles.
|
|
734
|
+
*/
|
|
735
|
+
export declare const edgeCases: CorpusGenerator<EdgeCaseParams>;
|
|
736
|
+
/** Each generator of the package. */
|
|
737
|
+
export declare const generators: readonly CorpusGenerator[];
|
|
738
|
+
/** This function gives the generator with a name. It throws a `RangeError` for a name that the package does not have. */
|
|
739
|
+
export declare function generator(name: string): CorpusGenerator;
|
|
740
|
+
/** One spec of a corpus: a generator, its parameters and its seeds. */
|
|
741
|
+
interface CorpusSpec {
|
|
742
|
+
/** The name of the generator. */
|
|
743
|
+
generator: string;
|
|
744
|
+
/** The version of the generator. Without it, the spec uses the version of the package. A different version is an error. */
|
|
745
|
+
version?: number;
|
|
746
|
+
/** The parameters over the defaults of the generator. */
|
|
747
|
+
params?: GeneratorParams;
|
|
748
|
+
seeds: readonly number[];
|
|
749
|
+
}
|
|
750
|
+
/** One input in the index of a manifest. */
|
|
751
|
+
interface CorpusEntry {
|
|
752
|
+
id: string;
|
|
753
|
+
hash: string;
|
|
754
|
+
cell: CorpusCell;
|
|
755
|
+
}
|
|
756
|
+
/** The manifest `corpus.json` of a corpus. */
|
|
757
|
+
interface CorpusManifest {
|
|
758
|
+
schema: "layout-corpus/1";
|
|
759
|
+
/** The name of the corpus. Each input has it in `set`. */
|
|
760
|
+
corpus: string;
|
|
761
|
+
/** The specs, each with its version and its full parameters. */
|
|
762
|
+
specs: {
|
|
763
|
+
generator: string;
|
|
764
|
+
version: number;
|
|
765
|
+
params: GeneratorParams;
|
|
766
|
+
seeds: number[];
|
|
767
|
+
}[];
|
|
768
|
+
inputs: CorpusEntry[];
|
|
769
|
+
}
|
|
770
|
+
/** A corpus: the manifest and the input files, in the order of the specs and the seeds. */
|
|
771
|
+
interface Corpus {
|
|
772
|
+
manifest: CorpusManifest;
|
|
773
|
+
inputs: LayoutInput[];
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
776
|
+
* This function generates a corpus from specs. Each input gets the name of the corpus as its set. The function throws a
|
|
777
|
+
* `RangeError` for an unknown generator, a different version or 2 inputs with the same id.
|
|
778
|
+
*/
|
|
779
|
+
export declare function corpus(name: string, specs: readonly CorpusSpec[]): Corpus;
|
|
780
|
+
export type { Cell, Container, Corpus, CorpusCell, CorpusEntry, CorpusGenerator, CorpusManifest, CorpusSpec, CountScale, Dimension, DimensionValue, Edge, EdgeCase, EdgeCaseParams, FreeWidthOptions, FreeWidthResult, FreeWidthTry, GeneratorParams, GeneratorStamp, HardBreaks, Item, LayoutInput, LayoutStrategyOptions, Margin, MetricsOptions, Obstacle, ObstacleLayout, PackContext, PackInput, PackLayoutOptions, PackOptions, PackOutput, PackingMetrics, Placement, Port, PushOptions, PushStrategyOptions, RectGridParams, RectScatteredParams, Region, ShelfOptions, SizeDistribution, SizeSearch, SortOrder, StageTrace, Strategy, Supports, Tolerance, UiParams };
|
|
599
781
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/vector.ts","../src/rect.ts","../src/order.ts","../src/pack.ts","../src/skyline.ts","../src/shelf.ts","../src/free.ts","../src/push.ts","../src/metrics.ts","../src/contract.ts","../src/strategy.ts","../src/adapters.ts","../src/convert.ts","../src/registry.ts","../src/check.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/vector.ts","../src/rect.ts","../src/order.ts","../src/pack.ts","../src/skyline.ts","../src/shelf.ts","../src/free.ts","../src/push.ts","../src/metrics.ts","../src/contract.ts","../src/strategy.ts","../src/adapters.ts","../src/convert.ts","../src/registry.ts","../src/check.ts","../src/layout-input.ts","../src/generators.ts","../src/corpus.ts"],"mappings":"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"}
|