@runopencode/rx-stencil 0.4.1 → 0.4.3
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/README.md +12 -11
- package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
- package/dist/cjs/index-CbERigo8.js +1211 -0
- package/dist/cjs/index.cjs.js +166 -447
- package/dist/cjs/loader.cjs.js +4 -6
- package/dist/cjs/rx-async.cjs.entry.js +29 -63
- package/dist/cjs/rx-stencil.cjs.js +14 -14
- package/dist/cjs/set-property-BZHuI0P5.js +9525 -0
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/async/async.css +3 -0
- package/dist/collection/components/async/async.js +62 -61
- package/dist/collection/index.js +0 -1
- package/dist/collection/rx/decorator/index.js +0 -1
- package/dist/collection/rx/decorator/query-selector-all.js +26 -27
- package/dist/collection/rx/decorator/query-selector.js +32 -33
- package/dist/collection/rx/index.js +0 -1
- package/dist/collection/rx/observable/index.js +1 -1
- package/dist/collection/rx/observable/mutation-observable.js +8 -9
- package/dist/collection/rx/observable/properties-observable.js +13 -0
- package/dist/collection/rx/observable/property-observable.js +20 -21
- package/dist/collection/rx/observable/render-observable.js +15 -16
- package/dist/collection/rx/operator/index.js +0 -1
- package/dist/collection/rx/operator/schedule-render.js +9 -10
- package/dist/collection/rx/operator/to-property.js +8 -9
- package/dist/collection/rx/operator/until-disconnected.js +56 -57
- package/dist/collection/rx/subscriber/index.js +0 -1
- package/dist/collection/rx/subscriber/set-property.js +12 -13
- package/dist/collection/utils/get-property-descriptor.js +10 -11
- package/dist/collection/utils/index.js +0 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -562
- package/dist/components/rx-async.d.ts +2 -2
- package/dist/components/rx-async.js +1 -86
- package/dist/components/set-property.js +1 -1150
- package/dist/esm/app-globals-DQuL1Twl.js +3 -0
- package/dist/esm/index-BIBww8qU.js +1202 -0
- package/dist/esm/index.js +167 -447
- package/dist/esm/loader.js +5 -5
- package/dist/esm/rx-async.entry.js +29 -61
- package/dist/esm/rx-stencil.js +14 -13
- package/dist/esm/set-property-CpZKE-Xu.js +9520 -0
- package/dist/rx-stencil/index.esm.js +1 -2
- package/dist/rx-stencil/p-77100dee.entry.js +1 -0
- package/dist/rx-stencil/p-BIBww8qU.js +2 -0
- package/dist/rx-stencil/p-DQuL1Twl.js +1 -0
- package/dist/rx-stencil/p-IbpJ_cRo.js +1 -0
- package/dist/rx-stencil/rx-stencil.esm.js +1 -2
- package/dist/types/components/async/async.d.ts +5 -5
- package/dist/types/components.d.ts +7 -1
- package/dist/types/rx/decorator/query-selector-all.d.ts +9 -9
- package/dist/types/rx/decorator/query-selector.d.ts +9 -9
- package/dist/types/rx/observable/index.d.ts +1 -0
- package/dist/types/rx/observable/properties-observable.d.ts +6 -0
- package/dist/types/rx/subscriber/set-property.d.ts +12 -12
- package/dist/types/stencil-public-runtime.d.ts +225 -17
- package/docs/creation-operators.md +62 -3
- package/loader/cdn.js +1 -3
- package/loader/index.cjs.js +1 -3
- package/loader/index.d.ts +3 -0
- package/loader/index.es2017.js +1 -3
- package/loader/index.js +1 -3
- package/package.json +11 -10
- package/dist/cjs/index-5f6f12ab.js +0 -1265
- package/dist/cjs/index-5f6f12ab.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/rx-async.cjs.entry.js.map +0 -1
- package/dist/cjs/rx-stencil.cjs.js.map +0 -1
- package/dist/cjs/set-property-88176225.js +0 -1167
- package/dist/cjs/set-property-88176225.js.map +0 -1
- package/dist/collection/components/async/async.js.map +0 -1
- package/dist/collection/components/async/async.scss +0 -3
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/rx/decorator/index.js.map +0 -1
- package/dist/collection/rx/decorator/query-selector-all.js.map +0 -1
- package/dist/collection/rx/decorator/query-selector.js.map +0 -1
- package/dist/collection/rx/index.js.map +0 -1
- package/dist/collection/rx/observable/index.js.map +0 -1
- package/dist/collection/rx/observable/mutation-observable.js.map +0 -1
- package/dist/collection/rx/observable/property-observable.js.map +0 -1
- package/dist/collection/rx/observable/render-observable.js.map +0 -1
- package/dist/collection/rx/operator/index.js.map +0 -1
- package/dist/collection/rx/operator/schedule-render.js.map +0 -1
- package/dist/collection/rx/operator/to-property.js.map +0 -1
- package/dist/collection/rx/operator/until-disconnected.js.map +0 -1
- package/dist/collection/rx/subscriber/index.js.map +0 -1
- package/dist/collection/rx/subscriber/set-property.js.map +0 -1
- package/dist/collection/utils/get-property-descriptor.js.map +0 -1
- package/dist/collection/utils/index.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/rx-async.js.map +0 -1
- package/dist/components/set-property.js.map +0 -1
- package/dist/esm/index-9102de09.js +0 -1236
- package/dist/esm/index-9102de09.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/polyfills/core-js.js +0 -11
- package/dist/esm/polyfills/dom.js +0 -79
- package/dist/esm/polyfills/es5-html-element.js +0 -1
- package/dist/esm/polyfills/index.js +0 -34
- package/dist/esm/polyfills/system.js +0 -6
- package/dist/esm/rx-async.entry.js.map +0 -1
- package/dist/esm/rx-stencil.js.map +0 -1
- package/dist/esm/set-property-7fa82bef.js +0 -1150
- package/dist/esm/set-property-7fa82bef.js.map +0 -1
- package/dist/rx-stencil/index.esm.js.map +0 -1
- package/dist/rx-stencil/p-01af4414.entry.js +0 -2
- package/dist/rx-stencil/p-01af4414.entry.js.map +0 -1
- package/dist/rx-stencil/p-0cd0b2da.js +0 -2
- package/dist/rx-stencil/p-0cd0b2da.js.map +0 -1
- package/dist/rx-stencil/p-8411601b.js +0 -3
- package/dist/rx-stencil/p-8411601b.js.map +0 -1
- package/dist/rx-stencil/rx-stencil.esm.js.map +0 -1
- package/loader/package.json +0 -11
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { forceUpdate, } from "@stencil/core";
|
|
2
2
|
export function setProperty(cmp, property, options = {}) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
let resolvedOptions = Object.assign({ scheduleRender: false, nextTick: true }, options);
|
|
4
|
+
return (value) => {
|
|
5
|
+
cmp[property] = value;
|
|
6
|
+
if (!resolvedOptions.scheduleRender) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (!resolvedOptions.nextTick) {
|
|
10
|
+
forceUpdate(cmp);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
Promise.resolve().then(() => forceUpdate(cmp));
|
|
14
|
+
};
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=set-property.js.map
|
|
@@ -4,15 +4,14 @@
|
|
|
4
4
|
* {@internal}
|
|
5
5
|
*/
|
|
6
6
|
export function getPropertyDescriptor(cmp, property, configurableRequired = true) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
// descriptors are defined on prototype, so we have to go one level up.
|
|
8
|
+
let prototype = Object.getPrototypeOf(cmp);
|
|
9
|
+
let descriptor = Object.getOwnPropertyDescriptor(prototype, property);
|
|
10
|
+
if (!descriptor) {
|
|
11
|
+
throw new Error(`Property "${property}" is not defined on component "${cmp.constructor.name}".`);
|
|
12
|
+
}
|
|
13
|
+
if (configurableRequired && !descriptor.configurable) {
|
|
14
|
+
throw new Error(`Property "${property}" is not configurable on component "${cmp.constructor.name}".`);
|
|
15
|
+
}
|
|
16
|
+
return descriptor;
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=get-property-descriptor.js.map
|
|
@@ -31,3 +31,5 @@ export interface SetPlatformOptions {
|
|
|
31
31
|
rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
32
32
|
}
|
|
33
33
|
export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;
|
|
34
|
+
|
|
35
|
+
export * from '../types';
|
package/dist/components/index.js
CHANGED
|
@@ -1,562 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export { getAssetPath, setAssetPath, setNonce, setPlatformOptions } from '@stencil/core/internal/client';
|
|
3
|
-
import { S as Subject, o as operate, c as createOperatorSubscriber, i as innerFrom, e as executeSchedule, a as isFunction, b as identity, f as from, p as popScheduler, d as SafeSubscriber, n as noop, O as Observable, g as distinctUntilChanged, h as getPropertyDescriptor } from './set-property.js';
|
|
4
|
-
export { j as propertyObservable, s as setProperty } from './set-property.js';
|
|
5
|
-
|
|
6
|
-
const dateTimestampProvider = {
|
|
7
|
-
now() {
|
|
8
|
-
return (dateTimestampProvider.delegate || Date).now();
|
|
9
|
-
},
|
|
10
|
-
delegate: undefined,
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
class ReplaySubject extends Subject {
|
|
14
|
-
constructor(_bufferSize = Infinity, _windowTime = Infinity, _timestampProvider = dateTimestampProvider) {
|
|
15
|
-
super();
|
|
16
|
-
this._bufferSize = _bufferSize;
|
|
17
|
-
this._windowTime = _windowTime;
|
|
18
|
-
this._timestampProvider = _timestampProvider;
|
|
19
|
-
this._buffer = [];
|
|
20
|
-
this._infiniteTimeWindow = true;
|
|
21
|
-
this._infiniteTimeWindow = _windowTime === Infinity;
|
|
22
|
-
this._bufferSize = Math.max(1, _bufferSize);
|
|
23
|
-
this._windowTime = Math.max(1, _windowTime);
|
|
24
|
-
}
|
|
25
|
-
next(value) {
|
|
26
|
-
const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;
|
|
27
|
-
if (!isStopped) {
|
|
28
|
-
_buffer.push(value);
|
|
29
|
-
!_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);
|
|
30
|
-
}
|
|
31
|
-
this._trimBuffer();
|
|
32
|
-
super.next(value);
|
|
33
|
-
}
|
|
34
|
-
_subscribe(subscriber) {
|
|
35
|
-
this._throwIfClosed();
|
|
36
|
-
this._trimBuffer();
|
|
37
|
-
const subscription = this._innerSubscribe(subscriber);
|
|
38
|
-
const { _infiniteTimeWindow, _buffer } = this;
|
|
39
|
-
const copy = _buffer.slice();
|
|
40
|
-
for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {
|
|
41
|
-
subscriber.next(copy[i]);
|
|
42
|
-
}
|
|
43
|
-
this._checkFinalizedStatuses(subscriber);
|
|
44
|
-
return subscription;
|
|
45
|
-
}
|
|
46
|
-
_trimBuffer() {
|
|
47
|
-
const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;
|
|
48
|
-
const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;
|
|
49
|
-
_bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);
|
|
50
|
-
if (!_infiniteTimeWindow) {
|
|
51
|
-
const now = _timestampProvider.now();
|
|
52
|
-
let last = 0;
|
|
53
|
-
for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {
|
|
54
|
-
last = i;
|
|
55
|
-
}
|
|
56
|
-
last && _buffer.splice(0, last + 1);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function map(project, thisArg) {
|
|
62
|
-
return operate((source, subscriber) => {
|
|
63
|
-
let index = 0;
|
|
64
|
-
source.subscribe(createOperatorSubscriber(subscriber, (value) => {
|
|
65
|
-
subscriber.next(project.call(thisArg, value, index++));
|
|
66
|
-
}));
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {
|
|
71
|
-
const buffer = [];
|
|
72
|
-
let active = 0;
|
|
73
|
-
let index = 0;
|
|
74
|
-
let isComplete = false;
|
|
75
|
-
const checkComplete = () => {
|
|
76
|
-
if (isComplete && !buffer.length && !active) {
|
|
77
|
-
subscriber.complete();
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
const outerNext = (value) => (active < concurrent ? doInnerSub(value) : buffer.push(value));
|
|
81
|
-
const doInnerSub = (value) => {
|
|
82
|
-
expand && subscriber.next(value);
|
|
83
|
-
active++;
|
|
84
|
-
let innerComplete = false;
|
|
85
|
-
innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => {
|
|
86
|
-
onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);
|
|
87
|
-
if (expand) {
|
|
88
|
-
outerNext(innerValue);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
subscriber.next(innerValue);
|
|
92
|
-
}
|
|
93
|
-
}, () => {
|
|
94
|
-
innerComplete = true;
|
|
95
|
-
}, undefined, () => {
|
|
96
|
-
if (innerComplete) {
|
|
97
|
-
try {
|
|
98
|
-
active--;
|
|
99
|
-
while (buffer.length && active < concurrent) {
|
|
100
|
-
const bufferedValue = buffer.shift();
|
|
101
|
-
if (innerSubScheduler) {
|
|
102
|
-
executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
doInnerSub(bufferedValue);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
checkComplete();
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
subscriber.error(err);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}));
|
|
115
|
-
};
|
|
116
|
-
source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => {
|
|
117
|
-
isComplete = true;
|
|
118
|
-
checkComplete();
|
|
119
|
-
}));
|
|
120
|
-
return () => {
|
|
121
|
-
additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function mergeMap(project, resultSelector, concurrent = Infinity) {
|
|
126
|
-
if (isFunction(resultSelector)) {
|
|
127
|
-
return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);
|
|
128
|
-
}
|
|
129
|
-
else if (typeof resultSelector === 'number') {
|
|
130
|
-
concurrent = resultSelector;
|
|
131
|
-
}
|
|
132
|
-
return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
function mergeAll(concurrent = Infinity) {
|
|
136
|
-
return mergeMap(identity, concurrent);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
function concatAll() {
|
|
140
|
-
return mergeAll(1);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function concat(...args) {
|
|
144
|
-
return concatAll()(from(args, popScheduler(args)));
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
function filter(predicate, thisArg) {
|
|
148
|
-
return operate((source, subscriber) => {
|
|
149
|
-
let index = 0;
|
|
150
|
-
source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value)));
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
function share(options = {}) {
|
|
155
|
-
const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;
|
|
156
|
-
return (wrapperSource) => {
|
|
157
|
-
let connection;
|
|
158
|
-
let resetConnection;
|
|
159
|
-
let subject;
|
|
160
|
-
let refCount = 0;
|
|
161
|
-
let hasCompleted = false;
|
|
162
|
-
let hasErrored = false;
|
|
163
|
-
const cancelReset = () => {
|
|
164
|
-
resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();
|
|
165
|
-
resetConnection = undefined;
|
|
166
|
-
};
|
|
167
|
-
const reset = () => {
|
|
168
|
-
cancelReset();
|
|
169
|
-
connection = subject = undefined;
|
|
170
|
-
hasCompleted = hasErrored = false;
|
|
171
|
-
};
|
|
172
|
-
const resetAndUnsubscribe = () => {
|
|
173
|
-
const conn = connection;
|
|
174
|
-
reset();
|
|
175
|
-
conn === null || conn === void 0 ? void 0 : conn.unsubscribe();
|
|
176
|
-
};
|
|
177
|
-
return operate((source, subscriber) => {
|
|
178
|
-
refCount++;
|
|
179
|
-
if (!hasErrored && !hasCompleted) {
|
|
180
|
-
cancelReset();
|
|
181
|
-
}
|
|
182
|
-
const dest = (subject = subject !== null && subject !== void 0 ? subject : connector());
|
|
183
|
-
subscriber.add(() => {
|
|
184
|
-
refCount--;
|
|
185
|
-
if (refCount === 0 && !hasErrored && !hasCompleted) {
|
|
186
|
-
resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
dest.subscribe(subscriber);
|
|
190
|
-
if (!connection &&
|
|
191
|
-
refCount > 0) {
|
|
192
|
-
connection = new SafeSubscriber({
|
|
193
|
-
next: (value) => dest.next(value),
|
|
194
|
-
error: (err) => {
|
|
195
|
-
hasErrored = true;
|
|
196
|
-
cancelReset();
|
|
197
|
-
resetConnection = handleReset(reset, resetOnError, err);
|
|
198
|
-
dest.error(err);
|
|
199
|
-
},
|
|
200
|
-
complete: () => {
|
|
201
|
-
hasCompleted = true;
|
|
202
|
-
cancelReset();
|
|
203
|
-
resetConnection = handleReset(reset, resetOnComplete);
|
|
204
|
-
dest.complete();
|
|
205
|
-
},
|
|
206
|
-
});
|
|
207
|
-
innerFrom(source).subscribe(connection);
|
|
208
|
-
}
|
|
209
|
-
})(wrapperSource);
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
function handleReset(reset, on, ...args) {
|
|
213
|
-
if (on === true) {
|
|
214
|
-
reset();
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
if (on === false) {
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
const onSubscriber = new SafeSubscriber({
|
|
221
|
-
next: () => {
|
|
222
|
-
onSubscriber.unsubscribe();
|
|
223
|
-
reset();
|
|
224
|
-
},
|
|
225
|
-
});
|
|
226
|
-
return innerFrom(on(...args)).subscribe(onSubscriber);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
function shareReplay(configOrBufferSize, windowTime, scheduler) {
|
|
230
|
-
let bufferSize;
|
|
231
|
-
let refCount = false;
|
|
232
|
-
if (configOrBufferSize && typeof configOrBufferSize === 'object') {
|
|
233
|
-
({ bufferSize = Infinity, windowTime = Infinity, refCount = false, scheduler } = configOrBufferSize);
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);
|
|
237
|
-
}
|
|
238
|
-
return share({
|
|
239
|
-
connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),
|
|
240
|
-
resetOnError: true,
|
|
241
|
-
resetOnComplete: false,
|
|
242
|
-
resetOnRefCountZero: refCount,
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
function startWith(...values) {
|
|
247
|
-
const scheduler = popScheduler(values);
|
|
248
|
-
return operate((source, subscriber) => {
|
|
249
|
-
(scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
function takeUntil(notifier) {
|
|
254
|
-
return operate((source, subscriber) => {
|
|
255
|
-
innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));
|
|
256
|
-
!subscriber.closed && source.subscribe(subscriber);
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
function tap(observerOrNext, error, complete) {
|
|
261
|
-
const tapObserver = isFunction(observerOrNext) || error || complete
|
|
262
|
-
?
|
|
263
|
-
{ next: observerOrNext, error, complete }
|
|
264
|
-
: observerOrNext;
|
|
265
|
-
return tapObserver
|
|
266
|
-
? operate((source, subscriber) => {
|
|
267
|
-
var _a;
|
|
268
|
-
(_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
|
|
269
|
-
let isUnsub = true;
|
|
270
|
-
source.subscribe(createOperatorSubscriber(subscriber, (value) => {
|
|
271
|
-
var _a;
|
|
272
|
-
(_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);
|
|
273
|
-
subscriber.next(value);
|
|
274
|
-
}, () => {
|
|
275
|
-
var _a;
|
|
276
|
-
isUnsub = false;
|
|
277
|
-
(_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
|
|
278
|
-
subscriber.complete();
|
|
279
|
-
}, (err) => {
|
|
280
|
-
var _a;
|
|
281
|
-
isUnsub = false;
|
|
282
|
-
(_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);
|
|
283
|
-
subscriber.error(err);
|
|
284
|
-
}, () => {
|
|
285
|
-
var _a, _b;
|
|
286
|
-
if (isUnsub) {
|
|
287
|
-
(_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
|
|
288
|
-
}
|
|
289
|
-
(_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);
|
|
290
|
-
}));
|
|
291
|
-
})
|
|
292
|
-
:
|
|
293
|
-
identity;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
function mutationObservable(target, options) {
|
|
297
|
-
return new Observable((observer) => {
|
|
298
|
-
let mutation = new MutationObserver((mutations) => {
|
|
299
|
-
observer.next(mutations);
|
|
300
|
-
});
|
|
301
|
-
mutation.observe(target, options);
|
|
302
|
-
return () => {
|
|
303
|
-
mutation.disconnect();
|
|
304
|
-
};
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* Returns an observable that emits when the component render()
|
|
310
|
-
* function is called. Value will be emitted after the next
|
|
311
|
-
* microtask (next tick).
|
|
312
|
-
*/
|
|
313
|
-
function renderObservable(cmp) {
|
|
314
|
-
if ('function' !== typeof cmp.render) {
|
|
315
|
-
throw new Error('Component does not have a render function.');
|
|
316
|
-
}
|
|
317
|
-
return new Observable((subscriber) => {
|
|
318
|
-
let previousRender = cmp.render;
|
|
319
|
-
cmp.render = function () {
|
|
320
|
-
Promise.resolve().then(() => {
|
|
321
|
-
subscriber.next();
|
|
322
|
-
});
|
|
323
|
-
return previousRender.call(this);
|
|
324
|
-
};
|
|
325
|
-
return () => {
|
|
326
|
-
cmp.render = previousRender;
|
|
327
|
-
};
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
/**
|
|
332
|
-
* Observe all sub nodes of the given node and notify
|
|
333
|
-
* when any of them is removed and/or added.
|
|
334
|
-
*
|
|
335
|
-
* {@internal}
|
|
336
|
-
*/
|
|
337
|
-
function observeSubNodes(target) {
|
|
338
|
-
return mutationObservable(target, {
|
|
339
|
-
subtree: true,
|
|
340
|
-
childList: true,
|
|
341
|
-
}).pipe(filter((records) => {
|
|
342
|
-
for (let i = 0; i < records.length; i++) {
|
|
343
|
-
if ('childList' !== records[i].type) {
|
|
344
|
-
continue;
|
|
345
|
-
}
|
|
346
|
-
if (records[i].addedNodes.length || records[i].removedNodes.length) {
|
|
347
|
-
return true;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
return false;
|
|
351
|
-
}), map(() => {
|
|
352
|
-
/* noop */
|
|
353
|
-
}));
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Property decorator inspired by Angular's @ViewChild/@ContentChild.
|
|
357
|
-
*
|
|
358
|
-
* After each render, the decorated property will be set to the first element
|
|
359
|
-
* matching the given selector. If no element is found, the property will be
|
|
360
|
-
* set to null.
|
|
361
|
-
*/
|
|
362
|
-
function QuerySelector(selector, options) {
|
|
363
|
-
return (target, property) => {
|
|
364
|
-
let descriptor = {
|
|
365
|
-
set: function () {
|
|
366
|
-
throw new Error(`Property "${property}" is read-only.`);
|
|
367
|
-
},
|
|
368
|
-
get: function () {
|
|
369
|
-
let observableProperty = `__rx__query_selector__observable__shadow_root__${(options === null || options === void 0 ? void 0 : options.shadowRoot) ? 'yes' : 'no'}__mutation_observer__${(options === null || options === void 0 ? void 0 : options.mutationObserver) ? 'yes' : 'no'}__selector__${selector}__`;
|
|
370
|
-
if (!this[observableProperty]) {
|
|
371
|
-
let root = (options === null || options === void 0 ? void 0 : options.shadowRoot) ? getElement(this).shadowRoot : getElement(this);
|
|
372
|
-
let observable = (options === null || options === void 0 ? void 0 : options.mutationObserver) ? observeSubNodes(root) : renderObservable(this);
|
|
373
|
-
this[observableProperty] = observable.pipe(startWith(), map(() => root.querySelector(selector)), distinctUntilChanged(), shareReplay(1));
|
|
374
|
-
}
|
|
375
|
-
return this[observableProperty];
|
|
376
|
-
},
|
|
377
|
-
};
|
|
378
|
-
Object.defineProperty(target, property, descriptor);
|
|
379
|
-
};
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Property decorator inspired by Angular's @ViewChild/@ContentChild.
|
|
384
|
-
*
|
|
385
|
-
* After each render, the decorated property will be set to the first element
|
|
386
|
-
* matching the given selector. If no element is found, the property will be
|
|
387
|
-
* set to null.
|
|
388
|
-
*/
|
|
389
|
-
function QuerySelectorAll(selector, options) {
|
|
390
|
-
return (target, property) => {
|
|
391
|
-
let descriptor = {
|
|
392
|
-
set: function () {
|
|
393
|
-
throw new Error(`Property "${property}" is read-only.`);
|
|
394
|
-
},
|
|
395
|
-
get: function () {
|
|
396
|
-
let observableProperty = `__rx__query_selector_all__observable__shadow_root__${(options === null || options === void 0 ? void 0 : options.shadowRoot) ? 'yes' : 'no'}__mutation_observer__${(options === null || options === void 0 ? void 0 : options.mutationObserver) ? 'yes' : 'no'}__selector__${selector}__`;
|
|
397
|
-
if (!this[observableProperty]) {
|
|
398
|
-
let root = (options === null || options === void 0 ? void 0 : options.shadowRoot) ? getElement(this).shadowRoot : getElement(this);
|
|
399
|
-
let observable = (options === null || options === void 0 ? void 0 : options.mutationObserver) ? observeSubNodes(root) : renderObservable(this);
|
|
400
|
-
this[observableProperty] = observable.pipe(startWith(), map(() => Array.from(root.querySelectorAll(selector))), distinctUntilChanged((previous, current) => {
|
|
401
|
-
if (previous.length !== current.length) {
|
|
402
|
-
return false;
|
|
403
|
-
}
|
|
404
|
-
for (let i = 0; i < previous.length; i++) {
|
|
405
|
-
if (previous[i] !== current[i]) {
|
|
406
|
-
return false;
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
return true;
|
|
410
|
-
}), shareReplay(1));
|
|
411
|
-
}
|
|
412
|
-
return this[observableProperty];
|
|
413
|
-
},
|
|
414
|
-
};
|
|
415
|
-
Object.defineProperty(target, property, descriptor);
|
|
416
|
-
};
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/**
|
|
420
|
-
* Schedule a render of the component. This is useful when you
|
|
421
|
-
* want to force a render of the component as result of changing
|
|
422
|
-
* the values of the component which are not tracked by Stencil,
|
|
423
|
-
* observables, for example.
|
|
424
|
-
*
|
|
425
|
-
* By default, the render is scheduled on the next tick, but you
|
|
426
|
-
* can disable this behavior by passing `false` as second argument.
|
|
427
|
-
*/
|
|
428
|
-
function scheduleRender(cmp, nextTick = true) {
|
|
429
|
-
return (source) => {
|
|
430
|
-
return source.pipe(tap(() => {
|
|
431
|
-
if (!nextTick) {
|
|
432
|
-
forceUpdate(cmp);
|
|
433
|
-
return;
|
|
434
|
-
}
|
|
435
|
-
Promise.resolve().then(() => forceUpdate(cmp));
|
|
436
|
-
}));
|
|
437
|
-
};
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
/**
|
|
441
|
-
* Use this function to tap into a value stream and flush value to
|
|
442
|
-
* component property. You may also use this function as subscription
|
|
443
|
-
* function (function will detect that value is passed instead of
|
|
444
|
-
* observable).
|
|
445
|
-
*/
|
|
446
|
-
function toProperty(cmp, property) {
|
|
447
|
-
// ensure that the property is defined on the component.
|
|
448
|
-
getPropertyDescriptor(cmp, property);
|
|
449
|
-
// @ts-ignore
|
|
450
|
-
return (source) => {
|
|
451
|
-
return source.pipe(tap((value) => {
|
|
452
|
-
cmp[property] = value;
|
|
453
|
-
}));
|
|
454
|
-
};
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
/**
|
|
458
|
-
* A map of component observables that are being watched for
|
|
459
|
-
* disconnect callback invocation. A weak map is being used
|
|
460
|
-
* so that the component instance can be garbage collected.
|
|
461
|
-
*
|
|
462
|
-
* {@internal}
|
|
463
|
-
*/
|
|
464
|
-
let disconnectObservables = new WeakMap();
|
|
465
|
-
/**
|
|
466
|
-
* Creates an observable that emits a value when the component
|
|
467
|
-
* is disconnected from DOM and method `disconnectedCallback()`
|
|
468
|
-
* is invoked. StencilJS will supress the invocation of this
|
|
469
|
-
* method if it is not defined on the component.
|
|
470
|
-
*
|
|
471
|
-
* {@internal}
|
|
472
|
-
*/
|
|
473
|
-
let createUsingDisconnectedCallback = function (cmp) {
|
|
474
|
-
let previousDisconnected = cmp.disconnectedCallback;
|
|
475
|
-
if (!previousDisconnected) {
|
|
476
|
-
throw new Error(`Component "${cmp.constructor.name}" does not have a "disconnectedCallback()" method defined.`);
|
|
477
|
-
}
|
|
478
|
-
let disconnectedSubject$ = new Subject();
|
|
479
|
-
cmp.disconnectedCallback = function () {
|
|
480
|
-
if (previousDisconnected) {
|
|
481
|
-
previousDisconnected.call(cmp);
|
|
482
|
-
}
|
|
483
|
-
disconnectedSubject$.next();
|
|
484
|
-
};
|
|
485
|
-
return disconnectedSubject$.asObservable();
|
|
486
|
-
};
|
|
487
|
-
/**
|
|
488
|
-
* Mutation observer is our next heuristic. We will monitor parent
|
|
489
|
-
* node of the component and emit a value when the component is
|
|
490
|
-
* disconnected from DOM. This will only work, of course, if the
|
|
491
|
-
* component is not the root node of the application and component
|
|
492
|
-
* is already within DOM.
|
|
493
|
-
*
|
|
494
|
-
* {@internal}
|
|
495
|
-
*/
|
|
496
|
-
let createUsingMutationObserver = function (cmp) {
|
|
497
|
-
let element = getElement(cmp);
|
|
498
|
-
if (null === element.parentNode) {
|
|
499
|
-
throw new Error(`Component "${cmp.constructor.name}" is not within DOM.`);
|
|
500
|
-
}
|
|
501
|
-
return new Observable((observer) => {
|
|
502
|
-
let mutationObserver = new MutationObserver((mutations) => {
|
|
503
|
-
mutations.forEach((record) => {
|
|
504
|
-
for (let node of Array.from(record.removedNodes)) {
|
|
505
|
-
if (node !== element) {
|
|
506
|
-
continue;
|
|
507
|
-
}
|
|
508
|
-
observer.next();
|
|
509
|
-
observer.complete();
|
|
510
|
-
}
|
|
511
|
-
});
|
|
512
|
-
});
|
|
513
|
-
mutationObserver.observe(element.parentNode, {
|
|
514
|
-
childList: true,
|
|
515
|
-
subtree: true,
|
|
516
|
-
});
|
|
517
|
-
return () => {
|
|
518
|
-
mutationObserver.disconnect();
|
|
519
|
-
// we can not re-use this observable, so we have to delete it
|
|
520
|
-
disconnectObservables.delete(cmp);
|
|
521
|
-
};
|
|
522
|
-
});
|
|
523
|
-
};
|
|
524
|
-
/**
|
|
525
|
-
* Creates an observable that emits a value when the component
|
|
526
|
-
* is disconnected from DOM.
|
|
527
|
-
*
|
|
528
|
-
* {@internal}
|
|
529
|
-
*/
|
|
530
|
-
function createDisconnectObservable(cmp) {
|
|
531
|
-
let functions = [
|
|
532
|
-
createUsingDisconnectedCallback,
|
|
533
|
-
createUsingMutationObserver,
|
|
534
|
-
];
|
|
535
|
-
for (let fn of functions) {
|
|
536
|
-
try {
|
|
537
|
-
disconnectObservables.set(cmp, fn(cmp));
|
|
538
|
-
return;
|
|
539
|
-
}
|
|
540
|
-
catch (e) {
|
|
541
|
-
// noop
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
throw new Error(`Could not create disconnect observable for component "${cmp.constructor.name}".`);
|
|
545
|
-
}
|
|
546
|
-
/**
|
|
547
|
-
* Operator that unsubscribes from the source observable when
|
|
548
|
-
* the component is disconnected from DOM.
|
|
549
|
-
*/
|
|
550
|
-
function untilDisconnected(cmp) {
|
|
551
|
-
return (source) => {
|
|
552
|
-
if (!disconnectObservables.has(cmp)) {
|
|
553
|
-
createDisconnectObservable(cmp);
|
|
554
|
-
}
|
|
555
|
-
let disconnectObservable$ = disconnectObservables.get(cmp);
|
|
556
|
-
return source.pipe(takeUntil(disconnectObservable$));
|
|
557
|
-
};
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
export { QuerySelector, QuerySelectorAll, mutationObservable, renderObservable, scheduleRender, toProperty, untilDisconnected };
|
|
561
|
-
|
|
562
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import{getElement as t,forceUpdate as e}from"@stencil/core/internal/client";export{getAssetPath,render,setAssetPath,setNonce,setPlatformOptions}from"@stencil/core/internal/client";import{c as r,p as n,g as o}from"./set-property.js";export{s as setProperty}from"./set-property.js";function i(t,e){return new r.Observable((r=>{let n=new MutationObserver((t=>{r.next(t)}));return n.observe(t,e),()=>{n.disconnect()}}))}function u(t,...e){if(0===e.length)throw Error("At least one property must be specified.");return r.combineLatest(e.map((e=>n(t,e))))}function l(t){if("function"!=typeof t.render)throw Error("Component does not have a render function.");return new r.Observable((e=>{let r=t.render;return t.render=function(){return Promise.resolve().then((()=>{e.next()})),r.call(this)},()=>{t.render=r}}))}function c(t){return i(t,{subtree:!0,childList:!0}).pipe(r.filter((t=>{for(let e=0;e<t.length;e++)if("childList"===t[e].type&&(t[e].addedNodes.length||t[e].removedNodes.length))return!0;return!1})),r.map((()=>{})))}function _(e,n){return(o,i)=>{Object.defineProperty(o,i,{set:function(){throw Error(`Property "${i}" is read-only.`)},get:function(){let o=`__rx__query_selector__observable__shadow_root__${(null==n?void 0:n.shadowRoot)?"yes":"no"}__mutation_observer__${(null==n?void 0:n.mutationObserver)?"yes":"no"}__selector__${e}__`;if(!this[o]){let i=(null==n?void 0:n.shadowRoot)?t(this).shadowRoot:t(this),s=(null==n?void 0:n.mutationObserver)?c(i):l(this);this[o]=s.pipe(r.startWith(),r.map((()=>i.querySelector(e))),r.distinctUntilChanged(),r.shareReplay(1))}return this[o]}})}}function f(e,n){return(o,i)=>{Object.defineProperty(o,i,{set:function(){throw Error(`Property "${i}" is read-only.`)},get:function(){let o=`__rx__query_selector_all__observable__shadow_root__${(null==n?void 0:n.shadowRoot)?"yes":"no"}__mutation_observer__${(null==n?void 0:n.mutationObserver)?"yes":"no"}__selector__${e}__`;if(!this[o]){let i=(null==n?void 0:n.shadowRoot)?t(this).shadowRoot:t(this),s=(null==n?void 0:n.mutationObserver)?c(i):l(this);this[o]=s.pipe(r.startWith(),r.map((()=>Array.from(i.querySelectorAll(e)))),r.distinctUntilChanged(((t,e)=>{if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0})),r.shareReplay(1))}return this[o]}})}}function a(t,n=!0){return o=>o.pipe(r.tap((()=>{n?Promise.resolve().then((()=>e(t))):e(t)})))}function h(t,e){return o(t,e),n=>n.pipe(r.tap((r=>{t[e]=r})))}let d=new WeakMap,p=function(t){let e=t.disconnectedCallback;if(!e)throw Error(`Component "${t.constructor.name}" does not have a "disconnectedCallback()" method defined.`);let n=new r.Subject;return t.disconnectedCallback=function(){e&&e.call(t),n.next()},n.asObservable()},v=function(e){let n=t(e);if(null===n.parentNode)throw Error(`Component "${e.constructor.name}" is not within DOM.`);return new r.Observable((t=>{let r=new MutationObserver((e=>{e.forEach((e=>{for(let r of Array.from(e.removedNodes))r===n&&(t.next(),t.complete())}))}));return r.observe(n.parentNode,{childList:!0,subtree:!0}),()=>{r.disconnect(),d.delete(e)}}))};function y(t){return e=>{d.has(t)||function(t){let e=[p,v];for(let r of e)try{return void d.set(t,r(t))}catch(t){}throw Error(`Could not create disconnect observable for component "${t.constructor.name}".`)}(t);let n=d.get(t);return e.pipe(r.takeUntil(n))}}export{_ as QuerySelector,f as QuerySelectorAll,i as mutationObservable,u as propertiesObservable,n as propertyObservable,l as renderObservable,a as scheduleRender,h as toProperty,y as untilDisconnected}
|
|
@@ -2,8 +2,8 @@ import type { Components, JSX } from "../types/components";
|
|
|
2
2
|
|
|
3
3
|
interface RxAsync extends Components.RxAsync, HTMLElement {}
|
|
4
4
|
export const RxAsync: {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
prototype: RxAsync;
|
|
6
|
+
new (): RxAsync;
|
|
7
7
|
};
|
|
8
8
|
/**
|
|
9
9
|
* Used to define this component and all nested components recursively.
|