@devvit/public-api 0.11.0-next-2024-07-09-907b3322a.0 → 0.11.0-next-2024-07-09-2412ac001.0
Sign up to get free protection for your applications and to get access to all the features.
- package/devvit/internals/blocks/BlocksReconciler.d.ts.map +1 -1
- package/devvit/internals/blocks/BlocksReconciler.js +10 -3
- package/devvit/internals/blocks/BlocksTransformer.d.ts +26 -24
- package/devvit/internals/blocks/BlocksTransformer.d.ts.map +1 -1
- package/devvit/internals/blocks/BlocksTransformer.js +68 -98
- package/devvit/internals/blocks/handler/BlocksHandler.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/BlocksHandler.js +7 -3
- package/devvit/internals/blocks/transformContext.d.ts +6 -0
- package/devvit/internals/blocks/transformContext.d.ts.map +1 -0
- package/devvit/internals/blocks/transformContext.js +108 -0
- package/devvit/internals/blocks/transformContext.test.d.ts.map +1 -0
- package/meta.json +44 -7
- package/meta.min.json +50 -8
- package/package.json +7 -7
- package/public-api.iife.js +228 -110
- package/public-api.min.js +5 -5
- package/public-api.min.js.map +4 -4
@@ -0,0 +1,108 @@
|
|
1
|
+
import { BlockSizeUnit, BlockStackDirection } from '@devvit/protos';
|
2
|
+
// eslint-disable-next-line security/detect-unsafe-regex
|
3
|
+
const SIZE_UNIT_REGEX = /^(\d+(?:\.\d+)?)(px|%)?$/;
|
4
|
+
export const makeDimensionValue = (size, maxDimension) => {
|
5
|
+
if (size == null)
|
6
|
+
return undefined;
|
7
|
+
const pxValue = stackDimensionToPx(size, maxDimension);
|
8
|
+
return pxValue != null ? { value: pxValue, unit: BlockSizeUnit.SIZE_UNIT_PIXELS } : undefined;
|
9
|
+
};
|
10
|
+
export const calculateMaxDimensions = (props, parentMaxDimensions, stackDirection, childrenCount) => {
|
11
|
+
if (!props)
|
12
|
+
return parentMaxDimensions;
|
13
|
+
const paddingOffset = stackPaddingToPx(props.padding, parentMaxDimensions.fontScale) * 2;
|
14
|
+
const borderOffset = stackBorderToPx(props.border, props.borderColor) * 2;
|
15
|
+
const gapSize = stackGapToPx(props.gap);
|
16
|
+
// Calculate height
|
17
|
+
let childMaxHeight = parentMaxDimensions.height;
|
18
|
+
const hasHeightDefined = props.height != null || props.minHeight != null || props.maxHeight != null;
|
19
|
+
if (hasHeightDefined) {
|
20
|
+
childMaxHeight = getMaxForDimension(props.height, props.minHeight, props.maxHeight, parentMaxDimensions.height);
|
21
|
+
}
|
22
|
+
let heightOffset = paddingOffset + borderOffset;
|
23
|
+
if (stackDirection === BlockStackDirection.STACK_VERTICAL && gapSize && childrenCount > 0) {
|
24
|
+
heightOffset = heightOffset + gapSize * (childrenCount - 1);
|
25
|
+
}
|
26
|
+
// Calculate width
|
27
|
+
let childMaxWidth = parentMaxDimensions.width;
|
28
|
+
const hasWidthDefined = props.width != null || props.minWidth != null || props.maxWidth != null;
|
29
|
+
if (hasWidthDefined) {
|
30
|
+
childMaxWidth = getMaxForDimension(props.width, props.minWidth, props.maxWidth, parentMaxDimensions.width);
|
31
|
+
}
|
32
|
+
let widthOffset = paddingOffset + borderOffset;
|
33
|
+
if (stackDirection === BlockStackDirection.STACK_HORIZONTAL && gapSize && childrenCount > 0) {
|
34
|
+
widthOffset = widthOffset + gapSize * (childrenCount - 1);
|
35
|
+
}
|
36
|
+
return {
|
37
|
+
...parentMaxDimensions,
|
38
|
+
height: childMaxHeight - heightOffset,
|
39
|
+
width: childMaxWidth - widthOffset,
|
40
|
+
};
|
41
|
+
};
|
42
|
+
/* As a result of DX-6656, all percent dimension values will be converted to px values. */
|
43
|
+
const stackDimensionToPx = (value, maxDimension) => {
|
44
|
+
if (value == null)
|
45
|
+
return undefined;
|
46
|
+
if (typeof value === 'number') {
|
47
|
+
return (maxDimension * value) / 100;
|
48
|
+
}
|
49
|
+
else {
|
50
|
+
const parts = value.match(SIZE_UNIT_REGEX);
|
51
|
+
if (parts == null)
|
52
|
+
return undefined;
|
53
|
+
const dimensions = Number.parseFloat(parts[1]);
|
54
|
+
if (parts?.at(2) === '%') {
|
55
|
+
return (maxDimension * dimensions) / 100;
|
56
|
+
}
|
57
|
+
return dimensions;
|
58
|
+
}
|
59
|
+
};
|
60
|
+
const stackPaddingToPx = (padding, fontScale = 1 // fontScale is web only and refers to window browser font scaling, default to 1
|
61
|
+
) => {
|
62
|
+
switch (padding) {
|
63
|
+
case 'xsmall':
|
64
|
+
return 4 * fontScale;
|
65
|
+
case 'small':
|
66
|
+
return 8 * fontScale;
|
67
|
+
case 'medium':
|
68
|
+
return 16 * fontScale;
|
69
|
+
case 'large':
|
70
|
+
return 32 * fontScale;
|
71
|
+
default:
|
72
|
+
return 0;
|
73
|
+
}
|
74
|
+
};
|
75
|
+
const stackGapToPx = (gap) => {
|
76
|
+
switch (gap) {
|
77
|
+
case 'small':
|
78
|
+
return 8;
|
79
|
+
case 'medium':
|
80
|
+
return 16;
|
81
|
+
case 'large':
|
82
|
+
return 32;
|
83
|
+
}
|
84
|
+
return 0;
|
85
|
+
};
|
86
|
+
const stackBorderToPx = (borderWidth, color) => {
|
87
|
+
if (!borderWidth && !color)
|
88
|
+
return 0;
|
89
|
+
switch (borderWidth) {
|
90
|
+
case 'none':
|
91
|
+
return 0;
|
92
|
+
case 'thin':
|
93
|
+
return 1;
|
94
|
+
case 'thick':
|
95
|
+
return 2;
|
96
|
+
default:
|
97
|
+
// Default to a thin border when a color was set, but no borderWidth.
|
98
|
+
return 1;
|
99
|
+
}
|
100
|
+
};
|
101
|
+
const getMaxForDimension = (value, min, max, maxDimension) => {
|
102
|
+
const pxValue = stackDimensionToPx(value, maxDimension) || 0;
|
103
|
+
const pxMin = stackDimensionToPx(min, maxDimension) || 0;
|
104
|
+
const pxMax = stackDimensionToPx(max, maxDimension) || 0;
|
105
|
+
const upperBound = Math.min(pxMax, pxValue);
|
106
|
+
const lowerBound = Math.max(pxMin, pxValue);
|
107
|
+
return Math.max(upperBound, lowerBound);
|
108
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transformContext.test.d.ts","sourceRoot":"","sources":["../../../../src/devvit/internals/blocks/transformContext.test.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,+BAA+B"}
|
package/meta.json
CHANGED
@@ -11783,6 +11783,11 @@
|
|
11783
11783
|
],
|
11784
11784
|
"format": "esm"
|
11785
11785
|
},
|
11786
|
+
"../shared-types/dist/dimensions.js": {
|
11787
|
+
"bytes": 108,
|
11788
|
+
"imports": [],
|
11789
|
+
"format": "esm"
|
11790
|
+
},
|
11786
11791
|
"src/apis/ui/helpers/getEffectsFromUIClient.ts": {
|
11787
11792
|
"bytes": 368,
|
11788
11793
|
"imports": [],
|
@@ -11809,8 +11814,19 @@
|
|
11809
11814
|
],
|
11810
11815
|
"format": "esm"
|
11811
11816
|
},
|
11817
|
+
"src/devvit/internals/blocks/transformContext.ts": {
|
11818
|
+
"bytes": 4619,
|
11819
|
+
"imports": [
|
11820
|
+
{
|
11821
|
+
"path": "../protos/dist/index.js",
|
11822
|
+
"kind": "import-statement",
|
11823
|
+
"original": "@devvit/protos"
|
11824
|
+
}
|
11825
|
+
],
|
11826
|
+
"format": "esm"
|
11827
|
+
},
|
11812
11828
|
"src/devvit/internals/blocks/BlocksTransformer.ts": {
|
11813
|
-
"bytes":
|
11829
|
+
"bytes": 28949,
|
11814
11830
|
"imports": [
|
11815
11831
|
{
|
11816
11832
|
"path": "../protos/dist/index.js",
|
@@ -11827,6 +11843,11 @@
|
|
11827
11843
|
"kind": "import-statement",
|
11828
11844
|
"original": "../helpers/color.js"
|
11829
11845
|
},
|
11846
|
+
{
|
11847
|
+
"path": "src/devvit/internals/blocks/transformContext.ts",
|
11848
|
+
"kind": "import-statement",
|
11849
|
+
"original": "./transformContext.js"
|
11850
|
+
},
|
11830
11851
|
{
|
11831
11852
|
"path": "<runtime>",
|
11832
11853
|
"kind": "import-statement",
|
@@ -11836,13 +11857,18 @@
|
|
11836
11857
|
"format": "esm"
|
11837
11858
|
},
|
11838
11859
|
"src/devvit/internals/blocks/BlocksReconciler.ts": {
|
11839
|
-
"bytes":
|
11860
|
+
"bytes": 19878,
|
11840
11861
|
"imports": [
|
11841
11862
|
{
|
11842
11863
|
"path": "../protos/dist/index.js",
|
11843
11864
|
"kind": "import-statement",
|
11844
11865
|
"original": "@devvit/protos"
|
11845
11866
|
},
|
11867
|
+
{
|
11868
|
+
"path": "../shared-types/dist/dimensions.js",
|
11869
|
+
"kind": "import-statement",
|
11870
|
+
"original": "@devvit/shared-types/dimensions.js"
|
11871
|
+
},
|
11846
11872
|
{
|
11847
11873
|
"path": "../shared-types/dist/Header.js",
|
11848
11874
|
"kind": "import-statement",
|
@@ -12465,13 +12491,18 @@
|
|
12465
12491
|
"format": "esm"
|
12466
12492
|
},
|
12467
12493
|
"src/devvit/internals/blocks/handler/BlocksHandler.ts": {
|
12468
|
-
"bytes":
|
12494
|
+
"bytes": 18665,
|
12469
12495
|
"imports": [
|
12470
12496
|
{
|
12471
12497
|
"path": "@devvit/protos",
|
12472
12498
|
"kind": "import-statement",
|
12473
12499
|
"external": true
|
12474
12500
|
},
|
12501
|
+
{
|
12502
|
+
"path": "../shared-types/dist/dimensions.js",
|
12503
|
+
"kind": "import-statement",
|
12504
|
+
"original": "@devvit/shared-types/dimensions.js"
|
12505
|
+
},
|
12475
12506
|
{
|
12476
12507
|
"path": "../../node_modules/lodash.isequal/index.js",
|
12477
12508
|
"kind": "import-statement",
|
@@ -14353,6 +14384,9 @@
|
|
14353
14384
|
"src/devvit/internals/app-settings.ts": {
|
14354
14385
|
"bytesInOutput": 614
|
14355
14386
|
},
|
14387
|
+
"../shared-types/dist/dimensions.js": {
|
14388
|
+
"bytesInOutput": 98
|
14389
|
+
},
|
14356
14390
|
"src/apis/ui/helpers/getEffectsFromUIClient.ts": {
|
14357
14391
|
"bytesInOutput": 69
|
14358
14392
|
},
|
@@ -14365,11 +14399,14 @@
|
|
14365
14399
|
"src/devvit/internals/helpers/color.ts": {
|
14366
14400
|
"bytesInOutput": 5194
|
14367
14401
|
},
|
14402
|
+
"src/devvit/internals/blocks/transformContext.ts": {
|
14403
|
+
"bytesInOutput": 3618
|
14404
|
+
},
|
14368
14405
|
"src/devvit/internals/blocks/BlocksTransformer.ts": {
|
14369
|
-
"bytesInOutput":
|
14406
|
+
"bytesInOutput": 23029
|
14370
14407
|
},
|
14371
14408
|
"src/devvit/internals/blocks/BlocksReconciler.ts": {
|
14372
|
-
"bytesInOutput":
|
14409
|
+
"bytesInOutput": 14530
|
14373
14410
|
},
|
14374
14411
|
"src/devvit/internals/custom-post.ts": {
|
14375
14412
|
"bytesInOutput": 697
|
@@ -14396,7 +14433,7 @@
|
|
14396
14433
|
"bytesInOutput": 3085
|
14397
14434
|
},
|
14398
14435
|
"src/devvit/internals/blocks/handler/BlocksHandler.ts": {
|
14399
|
-
"bytesInOutput":
|
14436
|
+
"bytesInOutput": 15750
|
14400
14437
|
},
|
14401
14438
|
"../shared-types/dist/useForm.js": {
|
14402
14439
|
"bytesInOutput": 162
|
@@ -14519,7 +14556,7 @@
|
|
14519
14556
|
"bytesInOutput": 4450
|
14520
14557
|
}
|
14521
14558
|
},
|
14522
|
-
"bytes":
|
14559
|
+
"bytes": 14991189
|
14523
14560
|
}
|
14524
14561
|
}
|
14525
14562
|
}
|
package/meta.min.json
CHANGED
@@ -3071,6 +3071,11 @@
|
|
3071
3071
|
],
|
3072
3072
|
"format": "esm"
|
3073
3073
|
},
|
3074
|
+
"../shared-types/dist/dimensions.js": {
|
3075
|
+
"bytes": 108,
|
3076
|
+
"imports": [],
|
3077
|
+
"format": "esm"
|
3078
|
+
},
|
3074
3079
|
"src/apis/ui/helpers/getEffectsFromUIClient.ts": {
|
3075
3080
|
"bytes": 368,
|
3076
3081
|
"imports": [],
|
@@ -3097,8 +3102,19 @@
|
|
3097
3102
|
],
|
3098
3103
|
"format": "esm"
|
3099
3104
|
},
|
3105
|
+
"src/devvit/internals/blocks/transformContext.ts": {
|
3106
|
+
"bytes": 4619,
|
3107
|
+
"imports": [
|
3108
|
+
{
|
3109
|
+
"path": "@devvit/protos",
|
3110
|
+
"kind": "import-statement",
|
3111
|
+
"external": true
|
3112
|
+
}
|
3113
|
+
],
|
3114
|
+
"format": "esm"
|
3115
|
+
},
|
3100
3116
|
"src/devvit/internals/blocks/BlocksTransformer.ts": {
|
3101
|
-
"bytes":
|
3117
|
+
"bytes": 28949,
|
3102
3118
|
"imports": [
|
3103
3119
|
{
|
3104
3120
|
"path": "@devvit/protos",
|
@@ -3115,6 +3131,11 @@
|
|
3115
3131
|
"kind": "import-statement",
|
3116
3132
|
"original": "../helpers/color.js"
|
3117
3133
|
},
|
3134
|
+
{
|
3135
|
+
"path": "src/devvit/internals/blocks/transformContext.ts",
|
3136
|
+
"kind": "import-statement",
|
3137
|
+
"original": "./transformContext.js"
|
3138
|
+
},
|
3118
3139
|
{
|
3119
3140
|
"path": "<runtime>",
|
3120
3141
|
"kind": "import-statement",
|
@@ -3124,13 +3145,18 @@
|
|
3124
3145
|
"format": "esm"
|
3125
3146
|
},
|
3126
3147
|
"src/devvit/internals/blocks/BlocksReconciler.ts": {
|
3127
|
-
"bytes":
|
3148
|
+
"bytes": 19878,
|
3128
3149
|
"imports": [
|
3129
3150
|
{
|
3130
3151
|
"path": "@devvit/protos",
|
3131
3152
|
"kind": "import-statement",
|
3132
3153
|
"external": true
|
3133
3154
|
},
|
3155
|
+
{
|
3156
|
+
"path": "../shared-types/dist/dimensions.js",
|
3157
|
+
"kind": "import-statement",
|
3158
|
+
"original": "@devvit/shared-types/dimensions.js"
|
3159
|
+
},
|
3134
3160
|
{
|
3135
3161
|
"path": "../shared-types/dist/Header.js",
|
3136
3162
|
"kind": "import-statement",
|
@@ -3753,13 +3779,18 @@
|
|
3753
3779
|
"format": "esm"
|
3754
3780
|
},
|
3755
3781
|
"src/devvit/internals/blocks/handler/BlocksHandler.ts": {
|
3756
|
-
"bytes":
|
3782
|
+
"bytes": 18665,
|
3757
3783
|
"imports": [
|
3758
3784
|
{
|
3759
3785
|
"path": "@devvit/protos",
|
3760
3786
|
"kind": "import-statement",
|
3761
3787
|
"external": true
|
3762
3788
|
},
|
3789
|
+
{
|
3790
|
+
"path": "../shared-types/dist/dimensions.js",
|
3791
|
+
"kind": "import-statement",
|
3792
|
+
"original": "@devvit/shared-types/dimensions.js"
|
3793
|
+
},
|
3763
3794
|
{
|
3764
3795
|
"path": "../../node_modules/lodash.isequal/index.js",
|
3765
3796
|
"kind": "import-statement",
|
@@ -4689,7 +4720,7 @@
|
|
4689
4720
|
"imports": [],
|
4690
4721
|
"exports": [],
|
4691
4722
|
"inputs": {},
|
4692
|
-
"bytes":
|
4723
|
+
"bytes": 1178681
|
4693
4724
|
},
|
4694
4725
|
"dist/public-api.min.js": {
|
4695
4726
|
"imports": [
|
@@ -4798,6 +4829,11 @@
|
|
4798
4829
|
"kind": "import-statement",
|
4799
4830
|
"external": true
|
4800
4831
|
},
|
4832
|
+
{
|
4833
|
+
"path": "@devvit/protos",
|
4834
|
+
"kind": "import-statement",
|
4835
|
+
"external": true
|
4836
|
+
},
|
4801
4837
|
{
|
4802
4838
|
"path": "@devvit/protos",
|
4803
4839
|
"kind": "import-statement",
|
@@ -5326,7 +5362,10 @@
|
|
5326
5362
|
"bytesInOutput": 350
|
5327
5363
|
},
|
5328
5364
|
"src/devvit/internals/blocks/BlocksReconciler.ts": {
|
5329
|
-
"bytesInOutput":
|
5365
|
+
"bytesInOutput": 7323
|
5366
|
+
},
|
5367
|
+
"../shared-types/dist/dimensions.js": {
|
5368
|
+
"bytesInOutput": 50
|
5330
5369
|
},
|
5331
5370
|
"src/apis/ui/helpers/getEffectsFromUIClient.ts": {
|
5332
5371
|
"bytesInOutput": 34
|
@@ -5335,7 +5374,7 @@
|
|
5335
5374
|
"bytesInOutput": 101
|
5336
5375
|
},
|
5337
5376
|
"src/devvit/internals/blocks/BlocksTransformer.ts": {
|
5338
|
-
"bytesInOutput":
|
5377
|
+
"bytesInOutput": 11875
|
5339
5378
|
},
|
5340
5379
|
"src/devvit/internals/semanticColors.ts": {
|
5341
5380
|
"bytesInOutput": 11055
|
@@ -5343,6 +5382,9 @@
|
|
5343
5382
|
"src/devvit/internals/helpers/color.ts": {
|
5344
5383
|
"bytesInOutput": 3463
|
5345
5384
|
},
|
5385
|
+
"src/devvit/internals/blocks/transformContext.ts": {
|
5386
|
+
"bytesInOutput": 1319
|
5387
|
+
},
|
5346
5388
|
"src/devvit/internals/installation-settings.ts": {
|
5347
5389
|
"bytesInOutput": 401
|
5348
5390
|
},
|
@@ -5368,7 +5410,7 @@
|
|
5368
5410
|
"bytesInOutput": 260
|
5369
5411
|
},
|
5370
5412
|
"src/devvit/internals/blocks/handler/BlocksHandler.ts": {
|
5371
|
-
"bytesInOutput":
|
5413
|
+
"bytesInOutput": 7130
|
5372
5414
|
},
|
5373
5415
|
"src/devvit/internals/blocks/handler/UIClient.ts": {
|
5374
5416
|
"bytesInOutput": 974
|
@@ -5485,7 +5527,7 @@
|
|
5485
5527
|
"bytesInOutput": 2135
|
5486
5528
|
}
|
5487
5529
|
},
|
5488
|
-
"bytes":
|
5530
|
+
"bytes": 250660
|
5489
5531
|
}
|
5490
5532
|
}
|
5491
5533
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@devvit/public-api",
|
3
|
-
"version": "0.11.0-next-2024-07-09-
|
3
|
+
"version": "0.11.0-next-2024-07-09-2412ac001.0",
|
4
4
|
"license": "BSD-3-Clause",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -30,8 +30,8 @@
|
|
30
30
|
},
|
31
31
|
"types": "./index.d.ts",
|
32
32
|
"dependencies": {
|
33
|
-
"@devvit/protos": "0.11.0-next-2024-07-09-
|
34
|
-
"@devvit/shared-types": "0.11.0-next-2024-07-09-
|
33
|
+
"@devvit/protos": "0.11.0-next-2024-07-09-2412ac001.0",
|
34
|
+
"@devvit/shared-types": "0.11.0-next-2024-07-09-2412ac001.0",
|
35
35
|
"base64-js": "1.5.1",
|
36
36
|
"clone-deep": "4.0.1",
|
37
37
|
"core-js": "3.27.2",
|
@@ -39,9 +39,9 @@
|
|
39
39
|
},
|
40
40
|
"devDependencies": {
|
41
41
|
"@ampproject/filesize": "4.3.0",
|
42
|
-
"@devvit/eslint-config": "0.11.0-next-2024-07-09-
|
43
|
-
"@devvit/repo-tools": "0.11.0-next-2024-07-09-
|
44
|
-
"@devvit/tsconfig": "0.11.0-next-2024-07-09-
|
42
|
+
"@devvit/eslint-config": "0.11.0-next-2024-07-09-2412ac001.0",
|
43
|
+
"@devvit/repo-tools": "0.11.0-next-2024-07-09-2412ac001.0",
|
44
|
+
"@devvit/tsconfig": "0.11.0-next-2024-07-09-2412ac001.0",
|
45
45
|
"@microsoft/api-extractor": "7.41.0",
|
46
46
|
"@reddit/faceplate-ui": "11.3.3",
|
47
47
|
"@types/clone-deep": "4.0.1",
|
@@ -64,5 +64,5 @@
|
|
64
64
|
}
|
65
65
|
},
|
66
66
|
"source": "./src/index.ts",
|
67
|
-
"gitHead": "
|
67
|
+
"gitHead": "be7fc1259d1499e7dbdc209d7779e2e7541afba2"
|
68
68
|
}
|