@builder.io/sdk 3.0.2-1 → 3.0.2-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/dist/index.browser.js +1 -16
- package/dist/index.browser.js.map +1 -1
- package/dist/index.cjs.js +1 -16
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -16
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +49 -13
- package/dist/index.umd.js +1 -16
- package/dist/index.umd.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/src/builder.class.js +0 -2
- package/dist/src/builder.class.js.map +1 -1
- package/dist/src/builder.class.test.js +171 -153
- package/dist/src/classes/animator.class.js +218 -195
- package/dist/src/classes/cookies.class.js +0 -2
- package/dist/src/classes/cookies.class.js.map +1 -1
- package/dist/src/classes/observable.class.js +102 -97
- package/dist/src/constants/builder.js +4 -4
- package/dist/src/functions/get-top-level-domain.d.ts +6 -6
- package/dist/src/types/content.js +3 -3
- package/dist/src/url.js +41 -42
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1,208 +1,231 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports,
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
3
|
exports.Animator = void 0;
|
|
4
|
-
var throttle_function_1 = require(
|
|
5
|
-
var assign_function_1 = require(
|
|
4
|
+
var throttle_function_1 = require('../functions/throttle.function');
|
|
5
|
+
var assign_function_1 = require('../functions/assign.function');
|
|
6
6
|
var camelCaseToKebabCase = function (str) {
|
|
7
|
-
|
|
7
|
+
return str
|
|
8
|
+
? str.replace(/([A-Z])/g, function (g) {
|
|
9
|
+
return '-'.concat(g[0].toLowerCase());
|
|
10
|
+
})
|
|
11
|
+
: '';
|
|
8
12
|
};
|
|
9
13
|
var Animator = /** @class */ (function () {
|
|
10
|
-
|
|
14
|
+
function Animator() {}
|
|
15
|
+
Animator.prototype.bindAnimations = function (animations) {
|
|
16
|
+
for (var _i = 0, animations_1 = animations; _i < animations_1.length; _i++) {
|
|
17
|
+
var animation = animations_1[_i];
|
|
18
|
+
switch (animation.trigger) {
|
|
19
|
+
case 'pageLoad':
|
|
20
|
+
this.triggerAnimation(animation);
|
|
21
|
+
break;
|
|
22
|
+
case 'hover':
|
|
23
|
+
this.bindHoverAnimation(animation);
|
|
24
|
+
break;
|
|
25
|
+
case 'scrollInView':
|
|
26
|
+
this.bindScrollInViewAnimation(animation);
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
11
29
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
var stylesUsed = this.getAllStylesUsed(animation);
|
|
33
|
-
var computedStyle = getComputedStyle(element);
|
|
34
|
-
// const computedStyle = getComputedStyle(element);
|
|
35
|
-
// // FIXME: this will break if original load is in one reponsive size then resize to another hmmm
|
|
36
|
-
// Need to use transform instead of left since left can change on screen sizes
|
|
37
|
-
var firstStyles = animation.steps[0].styles;
|
|
38
|
-
var lastStyles = animation.steps[animation.steps.length - 1].styles;
|
|
39
|
-
var bothStyles = [firstStyles, lastStyles];
|
|
40
|
-
// FIXME: this won't work as expected for augmented animations - may need the editor itself to manage this
|
|
41
|
-
for (var _i = 0, bothStyles_1 = bothStyles; _i < bothStyles_1.length; _i++) {
|
|
42
|
-
var styles = bothStyles_1[_i];
|
|
43
|
-
for (var _a = 0, stylesUsed_1 = stylesUsed; _a < stylesUsed_1.length; _a++) {
|
|
44
|
-
var style = stylesUsed_1[_a];
|
|
45
|
-
if (!(style in styles)) {
|
|
46
|
-
styles[style] = computedStyle[style];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
30
|
+
};
|
|
31
|
+
Animator.prototype.warnElementNotPresent = function (id) {
|
|
32
|
+
console.warn('Cannot animate element: element with ID '.concat(id, ' not found!'));
|
|
33
|
+
};
|
|
34
|
+
Animator.prototype.augmentAnimation = function (animation, element) {
|
|
35
|
+
var stylesUsed = this.getAllStylesUsed(animation);
|
|
36
|
+
var computedStyle = getComputedStyle(element);
|
|
37
|
+
// const computedStyle = getComputedStyle(element);
|
|
38
|
+
// // FIXME: this will break if original load is in one reponsive size then resize to another hmmm
|
|
39
|
+
// Need to use transform instead of left since left can change on screen sizes
|
|
40
|
+
var firstStyles = animation.steps[0].styles;
|
|
41
|
+
var lastStyles = animation.steps[animation.steps.length - 1].styles;
|
|
42
|
+
var bothStyles = [firstStyles, lastStyles];
|
|
43
|
+
// FIXME: this won't work as expected for augmented animations - may need the editor itself to manage this
|
|
44
|
+
for (var _i = 0, bothStyles_1 = bothStyles; _i < bothStyles_1.length; _i++) {
|
|
45
|
+
var styles = bothStyles_1[_i];
|
|
46
|
+
for (var _a = 0, stylesUsed_1 = stylesUsed; _a < stylesUsed_1.length; _a++) {
|
|
47
|
+
var style = stylesUsed_1[_a];
|
|
48
|
+
if (!(style in styles)) {
|
|
49
|
+
styles[style] = computedStyle[style];
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
return properties;
|
|
62
|
-
};
|
|
63
|
-
Animator.prototype.triggerAnimation = function (animation) {
|
|
64
|
-
var _this = this;
|
|
65
|
-
// TODO: do for ALL elements
|
|
66
|
-
var elements = Array.prototype.slice.call(document.getElementsByClassName(animation.elementId || animation.id || ''));
|
|
67
|
-
if (!elements.length) {
|
|
68
|
-
this.warnElementNotPresent(animation.elementId || animation.id || '');
|
|
69
|
-
return;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
Animator.prototype.getAllStylesUsed = function (animation) {
|
|
55
|
+
var properties = [];
|
|
56
|
+
for (var _i = 0, _a = animation.steps; _i < _a.length; _i++) {
|
|
57
|
+
var step = _a[_i];
|
|
58
|
+
for (var key in step.styles) {
|
|
59
|
+
if (properties.indexOf(key) === -1) {
|
|
60
|
+
properties.push(key);
|
|
70
61
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
// TODO: apply to ALL elements
|
|
105
|
-
var elements = Array.prototype.slice.call(document.getElementsByClassName(animation.elementId || animation.id || ''));
|
|
106
|
-
if (!elements.length) {
|
|
107
|
-
this.warnElementNotPresent(animation.elementId || animation.id || '');
|
|
108
|
-
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return properties;
|
|
65
|
+
};
|
|
66
|
+
Animator.prototype.triggerAnimation = function (animation) {
|
|
67
|
+
var _this = this;
|
|
68
|
+
// TODO: do for ALL elements
|
|
69
|
+
var elements = Array.prototype.slice.call(
|
|
70
|
+
document.getElementsByClassName(animation.elementId || animation.id || '')
|
|
71
|
+
);
|
|
72
|
+
if (!elements.length) {
|
|
73
|
+
this.warnElementNotPresent(animation.elementId || animation.id || '');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
Array.from(elements).forEach(function (element) {
|
|
77
|
+
_this.augmentAnimation(animation, element);
|
|
78
|
+
// TODO: do this properly, may have other animations of different properties
|
|
79
|
+
// TODO: only override the properties
|
|
80
|
+
// TODO: if there is an entrance and hover animation, the transition duration will get effed
|
|
81
|
+
// element.setAttribute('style', '');
|
|
82
|
+
// const styledUsed = this.getAllStylesUsed(animation);
|
|
83
|
+
element.style.transition = 'none';
|
|
84
|
+
element.style.transitionDelay = '0';
|
|
85
|
+
(0, assign_function_1.assign)(element.style, animation.steps[0].styles);
|
|
86
|
+
// TODO: queue/batch these timeouts
|
|
87
|
+
// TODO: only include properties explicitly set in the animation
|
|
88
|
+
// using Object.keys(styles)
|
|
89
|
+
setTimeout(function () {
|
|
90
|
+
element.style.transition = 'all '
|
|
91
|
+
.concat(animation.duration, 's ')
|
|
92
|
+
.concat(camelCaseToKebabCase(animation.easing));
|
|
93
|
+
if (animation.delay) {
|
|
94
|
+
element.style.transitionDelay = animation.delay + 's';
|
|
109
95
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
element.style.transitionDelay = animation.delay + 's';
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
};
|
|
96
|
+
(0, assign_function_1.assign)(element.style, animation.steps[1].styles);
|
|
97
|
+
// TODO: maybe remove/reset transitoin property after animation duration
|
|
98
|
+
// TODO: queue timers
|
|
99
|
+
setTimeout(
|
|
100
|
+
function () {
|
|
101
|
+
// TODO: what if has other transition (reset back to what it was)
|
|
102
|
+
element.style.transition = '';
|
|
103
|
+
element.style.transitionDelay = '';
|
|
104
|
+
},
|
|
105
|
+
(animation.delay || 0) * 1000 + animation.duration * 1000 + 100
|
|
106
|
+
);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
Animator.prototype.bindHoverAnimation = function (animation) {
|
|
111
|
+
var _this = this;
|
|
112
|
+
// TODO: is it multiple binding when editing...?
|
|
132
113
|
// TODO: unbind on element remove
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
114
|
+
// TODO: apply to ALL elements
|
|
115
|
+
var elements = Array.prototype.slice.call(
|
|
116
|
+
document.getElementsByClassName(animation.elementId || animation.id || '')
|
|
117
|
+
);
|
|
118
|
+
if (!elements.length) {
|
|
119
|
+
this.warnElementNotPresent(animation.elementId || animation.id || '');
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
Array.from(elements).forEach(function (element) {
|
|
123
|
+
_this.augmentAnimation(animation, element);
|
|
124
|
+
var defaultState = animation.steps[0].styles;
|
|
125
|
+
var hoverState = animation.steps[1].styles;
|
|
126
|
+
function attachDefaultState() {
|
|
127
|
+
(0, assign_function_1.assign)(element.style, defaultState);
|
|
128
|
+
}
|
|
129
|
+
function attachHoverState() {
|
|
130
|
+
(0, assign_function_1.assign)(element.style, hoverState);
|
|
131
|
+
}
|
|
132
|
+
attachDefaultState();
|
|
133
|
+
element.addEventListener('mouseenter', attachHoverState);
|
|
134
|
+
element.addEventListener('mouseleave', attachDefaultState);
|
|
135
|
+
// TODO: queue/batch these timeouts
|
|
136
|
+
setTimeout(function () {
|
|
137
|
+
element.style.transition = 'all '
|
|
138
|
+
.concat(animation.duration, 's ')
|
|
139
|
+
.concat(camelCaseToKebabCase(animation.easing));
|
|
140
|
+
if (animation.delay) {
|
|
141
|
+
element.style.transitionDelay = animation.delay + 's';
|
|
140
142
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
// we want to repeat the animation every time the the element is out of view and back again
|
|
169
|
-
triggered = false;
|
|
170
|
-
(0, assign_function_1.assign)(element.style, animation.steps[0].styles);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
// TODO: roll all of these in one for more efficiency of checking all the rects
|
|
174
|
-
var onScroll = (0, throttle_function_1.throttle)(immediateOnScroll, 200, { leading: false });
|
|
175
|
-
// TODO: fully in view or partially
|
|
176
|
-
function isScrolledIntoView(elem) {
|
|
177
|
-
var rect = elem.getBoundingClientRect();
|
|
178
|
-
var windowHeight = window.innerHeight;
|
|
179
|
-
var thresholdPercent = (animation.thresholdPercent || 0) / 100;
|
|
180
|
-
var threshold = thresholdPercent * windowHeight;
|
|
181
|
-
// TODO: partial in view? or what if element is larger than screen itself
|
|
182
|
-
return (rect.bottom > threshold && rect.top < windowHeight - threshold // Element is peeking top or bottom
|
|
183
|
-
// (rect.top > 0 && rect.bottom < window.innerHeight) || // element fits within the screen and is fully on screen (not hanging off at all)
|
|
184
|
-
// (rect.top < 0 && rect.bottom > window.innerHeight) // element is larger than the screen and hangs over the top and bottom
|
|
185
|
-
);
|
|
186
|
-
}
|
|
187
|
-
var defaultState = animation.steps[0].styles;
|
|
188
|
-
function attachDefaultState() {
|
|
189
|
-
(0, assign_function_1.assign)(element.style, defaultState);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
// TODO: unbind on element remove
|
|
147
|
+
Animator.prototype.bindScrollInViewAnimation = function (animation) {
|
|
148
|
+
var _this = this;
|
|
149
|
+
// TODO: apply to ALL matching elements
|
|
150
|
+
var elements = Array.prototype.slice.call(
|
|
151
|
+
document.getElementsByClassName(animation.elementId || animation.id || '')
|
|
152
|
+
);
|
|
153
|
+
if (!elements.length) {
|
|
154
|
+
this.warnElementNotPresent(animation.elementId || animation.id || '');
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// TODO: if server side rendered and scrolled into view don't animate...
|
|
158
|
+
Array.from(elements).forEach(function (element) {
|
|
159
|
+
_this.augmentAnimation(animation, element);
|
|
160
|
+
var triggered = false;
|
|
161
|
+
var pendingAnimation = false;
|
|
162
|
+
function immediateOnScroll() {
|
|
163
|
+
if (!triggered && isScrolledIntoView(element)) {
|
|
164
|
+
triggered = true;
|
|
165
|
+
pendingAnimation = true;
|
|
166
|
+
setTimeout(function () {
|
|
167
|
+
(0, assign_function_1.assign)(element.style, animation.steps[1].styles);
|
|
168
|
+
if (!animation.repeat) {
|
|
169
|
+
document.removeEventListener('scroll', onScroll);
|
|
190
170
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
171
|
+
setTimeout(
|
|
172
|
+
function () {
|
|
173
|
+
pendingAnimation = false;
|
|
174
|
+
if (!animation.repeat) {
|
|
175
|
+
element.style.transition = '';
|
|
176
|
+
element.style.transitionDelay = '';
|
|
197
177
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
178
|
+
},
|
|
179
|
+
(animation.duration + (animation.delay || 0)) * 1000 + 100
|
|
180
|
+
);
|
|
181
|
+
});
|
|
182
|
+
} else if (
|
|
183
|
+
animation.repeat &&
|
|
184
|
+
triggered &&
|
|
185
|
+
!pendingAnimation &&
|
|
186
|
+
!isScrolledIntoView(element)
|
|
187
|
+
) {
|
|
188
|
+
// we want to repeat the animation every time the the element is out of view and back again
|
|
189
|
+
triggered = false;
|
|
190
|
+
(0, assign_function_1.assign)(element.style, animation.steps[0].styles);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// TODO: roll all of these in one for more efficiency of checking all the rects
|
|
194
|
+
var onScroll = (0, throttle_function_1.throttle)(immediateOnScroll, 200, { leading: false });
|
|
195
|
+
// TODO: fully in view or partially
|
|
196
|
+
function isScrolledIntoView(elem) {
|
|
197
|
+
var rect = elem.getBoundingClientRect();
|
|
198
|
+
var windowHeight = window.innerHeight;
|
|
199
|
+
var thresholdPercent = (animation.thresholdPercent || 0) / 100;
|
|
200
|
+
var threshold = thresholdPercent * windowHeight;
|
|
201
|
+
// TODO: partial in view? or what if element is larger than screen itself
|
|
202
|
+
return (
|
|
203
|
+
rect.bottom > threshold && rect.top < windowHeight - threshold // Element is peeking top or bottom
|
|
204
|
+
// (rect.top > 0 && rect.bottom < window.innerHeight) || // element fits within the screen and is fully on screen (not hanging off at all)
|
|
205
|
+
// (rect.top < 0 && rect.bottom > window.innerHeight) // element is larger than the screen and hangs over the top and bottom
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
var defaultState = animation.steps[0].styles;
|
|
209
|
+
function attachDefaultState() {
|
|
210
|
+
(0, assign_function_1.assign)(element.style, defaultState);
|
|
211
|
+
}
|
|
212
|
+
attachDefaultState();
|
|
213
|
+
// TODO: queue/batch these timeouts!
|
|
214
|
+
setTimeout(function () {
|
|
215
|
+
element.style.transition = 'all '
|
|
216
|
+
.concat(animation.duration, 's ')
|
|
217
|
+
.concat(camelCaseToKebabCase(animation.easing));
|
|
218
|
+
if (animation.delay) {
|
|
219
|
+
element.style.transitionDelay = animation.delay + 's';
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
// TODO: one listener for everything
|
|
223
|
+
document.addEventListener('scroll', onScroll, { capture: true, passive: true });
|
|
224
|
+
// Do an initial check
|
|
225
|
+
immediateOnScroll();
|
|
226
|
+
});
|
|
227
|
+
};
|
|
228
|
+
return Animator;
|
|
229
|
+
})();
|
|
207
230
|
exports.Animator = Animator;
|
|
208
|
-
//# sourceMappingURL=animator.class.js.map
|
|
231
|
+
//# sourceMappingURL=animator.class.js.map
|
|
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
* obs-text = %x80-FF
|
|
9
9
|
*/
|
|
10
10
|
var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
|
|
11
|
-
var get_top_level_domain_1 = require("../functions/get-top-level-domain");
|
|
12
11
|
var Cookies = /** @class */ (function () {
|
|
13
12
|
function Cookies(request, response) {
|
|
14
13
|
this.request = request;
|
|
@@ -45,7 +44,6 @@ var Cookies = /** @class */ (function () {
|
|
|
45
44
|
if (opts && 'secure' in opts) {
|
|
46
45
|
cookie.secure = !!opts.secure;
|
|
47
46
|
}
|
|
48
|
-
cookie.domain = req.headers.host && (0, get_top_level_domain_1.getTopLevelDomain)(req.headers.host);
|
|
49
47
|
pushCookie(headers, cookie);
|
|
50
48
|
var setHeader = res.setHeader;
|
|
51
49
|
setHeader.call(res, 'Set-Cookie', headers);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookies.class.js","sourceRoot":"","sources":["../../../src/classes/cookies.class.ts"],"names":[],"mappings":";;AAAA;;;;;;GAMG;AACH,IAAM,kBAAkB,GAAG,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"cookies.class.js","sourceRoot":"","sources":["../../../src/classes/cookies.class.ts"],"names":[],"mappings":"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"}
|