bromcom-ui 2.8.1-rc.1 → 2.8.1-rc.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/dist/bromcom-ui/bromcom-ui.css +1 -1
- package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
- package/dist/bromcom-ui/{p-70909443.entry.js → p-05852df3.entry.js} +1 -1
- package/dist/bromcom-ui/{p-02116d36.entry.js → p-1b1f82cf.entry.js} +1 -1
- package/dist/bromcom-ui/{p-63bff12e.entry.js → p-1c1f02a8.entry.js} +1 -1
- package/dist/bromcom-ui/{p-216c6fd5.entry.js → p-1d591e1e.entry.js} +1 -1
- package/dist/bromcom-ui/p-1eabd5dc.js +10 -0
- package/dist/bromcom-ui/{p-b40bb51f.entry.js → p-23b6f1b6.entry.js} +1 -1
- package/dist/bromcom-ui/{p-a3109200.entry.js → p-25e6e25d.entry.js} +1 -1
- package/dist/bromcom-ui/{p-426b7889.entry.js → p-2c93afb8.entry.js} +1 -1
- package/dist/bromcom-ui/{p-a6b9ac13.entry.js → p-2d1124ca.entry.js} +1 -1
- package/dist/bromcom-ui/{p-495b54be.entry.js → p-50b59f5f.entry.js} +1 -1
- package/dist/bromcom-ui/p-5358bb45.entry.js +5 -0
- package/dist/bromcom-ui/p-53658089.entry.js +13 -0
- package/dist/bromcom-ui/{p-7a89e7ae.entry.js → p-538a13af.entry.js} +1 -1
- package/dist/bromcom-ui/{p-48e2d5e5.js → p-594fbc80.js} +1 -1
- package/dist/bromcom-ui/p-59efe1da.js +5 -0
- package/dist/bromcom-ui/{p-e0855669.entry.js → p-5bb7e3b7.entry.js} +1 -1
- package/dist/bromcom-ui/{p-ea763cf4.entry.js → p-5bf4d697.entry.js} +1 -1
- package/dist/bromcom-ui/{p-c3da137b.entry.js → p-5c718986.entry.js} +1 -1
- package/dist/bromcom-ui/{p-bda1709b.entry.js → p-5e72a278.entry.js} +1 -1
- package/dist/bromcom-ui/{p-57c71c1f.entry.js → p-63608aaa.entry.js} +1 -1
- package/dist/bromcom-ui/{p-67ff8aa3.entry.js → p-6b988756.entry.js} +1 -1
- package/dist/bromcom-ui/{p-18a5c6ab.entry.js → p-6db0f8dd.entry.js} +1 -1
- package/dist/bromcom-ui/p-6eefda1d.entry.js +5 -0
- package/dist/bromcom-ui/{p-7ad7c6d7.entry.js → p-6f5bd54d.entry.js} +1 -1
- package/dist/bromcom-ui/{p-4bbdd324.entry.js → p-702a285b.entry.js} +1 -1
- package/dist/bromcom-ui/{p-cab8c1e0.entry.js → p-70b210af.entry.js} +1 -1
- package/dist/bromcom-ui/{p-6755089b.js → p-75a2820f.js} +1 -1
- package/dist/bromcom-ui/{p-3f9d992a.entry.js → p-76182c8b.entry.js} +1 -1
- package/dist/bromcom-ui/{p-b2d87a12.entry.js → p-78527fcd.entry.js} +1 -1
- package/dist/bromcom-ui/{p-b9ba70c3.entry.js → p-7baef152.entry.js} +1 -1
- package/dist/bromcom-ui/{p-5098fca3.entry.js → p-8aa4fee3.entry.js} +1 -1
- package/dist/bromcom-ui/{p-940cbe01.js → p-8e7a489e.js} +1 -1
- package/dist/bromcom-ui/{p-e6afe8b6.entry.js → p-962fee18.entry.js} +1 -1
- package/dist/bromcom-ui/{p-bf523f14.entry.js → p-97e22a22.entry.js} +1 -1
- package/dist/bromcom-ui/{p-ffec0a2b.js → p-9bc739ac.js} +1 -1
- package/dist/bromcom-ui/{p-748cefe3.entry.js → p-9c2f39ab.entry.js} +1 -1
- package/dist/bromcom-ui/{p-3ee818a8.entry.js → p-9d00bf3c.entry.js} +1 -1
- package/dist/bromcom-ui/{p-81f1dd1f.js → p-aea6f62f.js} +1 -1
- package/dist/bromcom-ui/{p-6fc52a85.entry.js → p-af81e5fa.entry.js} +1 -1
- package/dist/bromcom-ui/{p-406785b9.entry.js → p-b1b64c8b.entry.js} +1 -1
- package/dist/bromcom-ui/{p-a58c6ceb.entry.js → p-b29766b2.entry.js} +1 -1
- package/dist/bromcom-ui/{p-5b2b1352.entry.js → p-b4b06540.entry.js} +1 -1
- package/dist/bromcom-ui/{p-95351a23.entry.js → p-b685ca73.entry.js} +1 -1
- package/dist/bromcom-ui/{p-481f4962.entry.js → p-b7919ac8.entry.js} +1 -1
- package/dist/bromcom-ui/{p-6d8f018f.entry.js → p-bae55354.entry.js} +1 -1
- package/dist/bromcom-ui/{p-6de2deb5.entry.js → p-bbd80e20.entry.js} +1 -1
- package/dist/bromcom-ui/{p-0ae7d5fb.entry.js → p-c0bb9cfc.entry.js} +1 -1
- package/dist/bromcom-ui/{p-ffdc6086.entry.js → p-c4e92744.entry.js} +1 -1
- package/dist/bromcom-ui/{p-1f0ce7fa.entry.js → p-c863ba72.entry.js} +1 -1
- package/dist/bromcom-ui/{p-c2210caa.entry.js → p-d019f179.entry.js} +1 -1
- package/dist/bromcom-ui/{p-e0991d3a.entry.js → p-d497bc00.entry.js} +1 -1
- package/dist/bromcom-ui/{p-a8c8c9cf.entry.js → p-d9838751.entry.js} +1 -1
- package/dist/bromcom-ui/{p-7af21a10.entry.js → p-dd4c1650.entry.js} +1 -1
- package/dist/bromcom-ui/{p-773d6818.js → p-e1119ff2.js} +1 -1
- package/dist/bromcom-ui/{p-677153b5.entry.js → p-e1898d81.entry.js} +1 -1
- package/dist/bromcom-ui/p-ea6c32e1.entry.js +5 -0
- package/dist/bromcom-ui/{p-68868af9.entry.js → p-f1eefc73.entry.js} +1 -1
- package/dist/bromcom-ui/{p-44b18c6d.entry.js → p-f2699133.entry.js} +1 -1
- package/dist/bromcom-ui/{p-4b1cba4c.entry.js → p-f35d0fc2.entry.js} +1 -1
- package/dist/cjs/bcm-accordion.cjs.entry.js +1 -1
- package/dist/cjs/bcm-alert.cjs.entry.js +1 -1
- package/dist/cjs/bcm-attendance.cjs.entry.js +1 -1
- package/dist/cjs/bcm-avatar_2.cjs.entry.js +3 -3
- package/dist/cjs/bcm-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/bcm-button-group.cjs.entry.js +1 -1
- package/dist/cjs/bcm-button_7.cjs.entry.js +4 -4
- package/dist/cjs/bcm-card.cjs.entry.js +1 -1
- package/dist/cjs/bcm-checkbox-lite_9.cjs.entry.js +1 -1
- package/dist/cjs/bcm-chip.cjs.entry.js +1 -1
- package/dist/cjs/bcm-collapse.cjs.entry.js +1 -1
- package/dist/cjs/bcm-color-input.cjs.entry.js +3 -3
- package/dist/cjs/bcm-colorful_2.cjs.entry.js +15 -544
- package/dist/cjs/bcm-date-picker.cjs.entry.js +1 -1
- package/dist/cjs/bcm-datetime-picker.cjs.entry.js +1 -1
- package/dist/cjs/bcm-default.cjs.entry.js +1 -1
- package/dist/cjs/bcm-drawer.cjs.entry.js +3 -3
- package/dist/cjs/bcm-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/bcm-expansion-panel.cjs.entry.js +1 -1
- package/dist/cjs/bcm-form-2.cjs.entry.js +1 -1
- package/dist/cjs/bcm-input-custom.cjs.entry.js +1 -1
- package/dist/cjs/bcm-input.cjs.entry.js +4 -4
- package/dist/cjs/bcm-item.cjs.entry.js +1 -1
- package/dist/cjs/bcm-items.cjs.entry.js +1 -1
- package/dist/cjs/bcm-list.cjs.entry.js +140 -328
- package/dist/cjs/bcm-menu.cjs.entry.js +4 -4
- package/dist/cjs/bcm-modal-2-footer.cjs.entry.js +3 -3
- package/dist/cjs/bcm-modal-2-header.cjs.entry.js +3 -3
- package/dist/cjs/bcm-modal-2.cjs.entry.js +3 -3
- package/dist/cjs/bcm-modal.cjs.entry.js +1 -1
- package/dist/cjs/bcm-popconfirm-box.cjs.entry.js +1 -1
- package/dist/cjs/bcm-popconfirm.cjs.entry.js +1 -1
- package/dist/cjs/bcm-popover.cjs.entry.js +3 -3
- package/dist/cjs/bcm-progress.cjs.entry.js +1 -1
- package/dist/cjs/bcm-radio-group.cjs.entry.js +3 -3
- package/dist/cjs/bcm-radio.cjs.entry.js +3 -3
- package/dist/cjs/bcm-range.cjs.entry.js +1 -1
- package/dist/cjs/bcm-rc-overflow_2.cjs.entry.js +2443 -0
- package/dist/cjs/bcm-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/bcm-step.cjs.entry.js +2 -2
- package/dist/cjs/bcm-stepper.cjs.entry.js +4 -4
- package/dist/cjs/bcm-switch.cjs.entry.js +1 -1
- package/dist/cjs/bcm-tab-group.cjs.entry.js +3 -3
- package/dist/cjs/bcm-tab-item-header.cjs.entry.js +3 -3
- package/dist/cjs/bcm-tab-item.cjs.entry.js +3 -3
- package/dist/cjs/bcm-tag.cjs.entry.js +2 -2
- package/dist/cjs/bcm-textarea.cjs.entry.js +2 -2
- package/dist/cjs/bcm-time-picker.cjs.entry.js +1 -1
- package/dist/cjs/bcm-toast.cjs.entry.js +1 -1
- package/dist/cjs/bromcom-ui.cjs.js +1 -1
- package/dist/cjs/{generate-493daefd.js → generate-5564014f.js} +1 -1
- package/dist/cjs/index-906fb4e5.js +540 -0
- package/dist/cjs/{input-template-96af0058.js → input-template-b8eb3568.js} +1 -1
- package/dist/cjs/{json-parse-decarator-b5b0b23d.js → json-parse-decarator-c9d01873.js} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{number-helper-051fe1ec.js → number-helper-57fc05a9.js} +1 -1
- package/dist/cjs/old-bcm-popover-box.cjs.entry.js +2 -2
- package/dist/cjs/old-bcm-popover.cjs.entry.js +1 -1
- package/dist/cjs/{stepper-states-efee4ad7.js → stepper-states-47bcb1a4.js} +1 -1
- package/dist/cjs/{tooltip-helper-a8734616.js → tooltip-helper-4ca7648e.js} +3 -3
- package/dist/cjs/{validators-50fd1ad1.js → validators-f1b75654.js} +1 -1
- package/dist/collection/collection-manifest.json +3 -2
- package/dist/collection/components/organism/list/list.css +4 -3
- package/dist/collection/components/organism/list/list.js +171 -176
- package/dist/collection/components/organism/states/bcm-list2.states.js +1 -1
- package/dist/collection/components/{molecules → third-parts}/colorful/colorful.css +1 -1
- package/dist/collection/components/third-parts/rc-overflow/rc-overflow.css +138 -0
- package/dist/collection/components/third-parts/rc-overflow/rc-overflow.js +194 -0
- package/dist/components/bcm-alert.js +1 -1
- package/dist/components/bcm-checkbox-group.js +1 -1
- package/dist/components/bcm-list.js +154 -329
- package/dist/components/bcm-rc-overflow.d.ts +11 -0
- package/dist/components/bcm-rc-overflow.js +10 -0
- package/dist/components/button.js +1 -1
- package/dist/components/colorful.js +2 -531
- package/dist/components/generate.js +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index3.js +523 -177
- package/dist/components/index4.js +191 -0
- package/dist/components/rc-overflow.js +2238 -0
- package/dist/components/search.js +1 -1
- package/dist/components/step.js +1 -1
- package/dist/esm/bcm-accordion.entry.js +1 -1
- package/dist/esm/bcm-alert.entry.js +1 -1
- package/dist/esm/bcm-attendance.entry.js +1 -1
- package/dist/esm/bcm-avatar_2.entry.js +3 -3
- package/dist/esm/bcm-breadcrumb.entry.js +1 -1
- package/dist/esm/bcm-button-group.entry.js +1 -1
- package/dist/esm/bcm-button_7.entry.js +4 -4
- package/dist/esm/bcm-card.entry.js +1 -1
- package/dist/esm/bcm-checkbox-lite_9.entry.js +1 -1
- package/dist/esm/bcm-chip.entry.js +1 -1
- package/dist/esm/bcm-collapse.entry.js +1 -1
- package/dist/esm/bcm-color-input.entry.js +3 -3
- package/dist/esm/bcm-colorful_2.entry.js +5 -534
- package/dist/esm/bcm-date-picker.entry.js +1 -1
- package/dist/esm/bcm-datetime-picker.entry.js +1 -1
- package/dist/esm/bcm-default.entry.js +1 -1
- package/dist/esm/bcm-drawer.entry.js +3 -3
- package/dist/esm/bcm-dropdown.entry.js +2 -2
- package/dist/esm/bcm-expansion-panel.entry.js +1 -1
- package/dist/esm/bcm-form-2.entry.js +1 -1
- package/dist/esm/bcm-input-custom.entry.js +1 -1
- package/dist/esm/bcm-input.entry.js +4 -4
- package/dist/esm/bcm-item.entry.js +1 -1
- package/dist/esm/bcm-items.entry.js +1 -1
- package/dist/esm/bcm-list.entry.js +140 -328
- package/dist/esm/bcm-menu.entry.js +4 -4
- package/dist/esm/bcm-modal-2-footer.entry.js +3 -3
- package/dist/esm/bcm-modal-2-header.entry.js +3 -3
- package/dist/esm/bcm-modal-2.entry.js +3 -3
- package/dist/esm/bcm-modal.entry.js +1 -1
- package/dist/esm/bcm-popconfirm-box.entry.js +1 -1
- package/dist/esm/bcm-popconfirm.entry.js +1 -1
- package/dist/esm/bcm-popover.entry.js +3 -3
- package/dist/esm/bcm-progress.entry.js +1 -1
- package/dist/esm/bcm-radio-group.entry.js +3 -3
- package/dist/esm/bcm-radio.entry.js +3 -3
- package/dist/esm/bcm-range.entry.js +1 -1
- package/dist/esm/bcm-rc-overflow_2.entry.js +2438 -0
- package/dist/esm/bcm-skeleton.entry.js +1 -1
- package/dist/esm/bcm-step.entry.js +2 -2
- package/dist/esm/bcm-stepper.entry.js +4 -4
- package/dist/esm/bcm-switch.entry.js +1 -1
- package/dist/esm/bcm-tab-group.entry.js +3 -3
- package/dist/esm/bcm-tab-item-header.entry.js +3 -3
- package/dist/esm/bcm-tab-item.entry.js +3 -3
- package/dist/esm/bcm-tag.entry.js +2 -2
- package/dist/esm/bcm-textarea.entry.js +2 -2
- package/dist/esm/bcm-time-picker.entry.js +1 -1
- package/dist/esm/bcm-toast.entry.js +1 -1
- package/dist/esm/bromcom-ui.js +1 -1
- package/dist/esm/{generate-de5e04cf.js → generate-5684c743.js} +1 -1
- package/dist/esm/index-6310a048.js +537 -0
- package/dist/esm/{input-template-c5338e25.js → input-template-846cd4f3.js} +1 -1
- package/dist/esm/{json-parse-decarator-a417723b.js → json-parse-decarator-5cdef266.js} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{number-helper-8de373ee.js → number-helper-3c971b4e.js} +1 -1
- package/dist/esm/old-bcm-popover-box.entry.js +2 -2
- package/dist/esm/old-bcm-popover.entry.js +1 -1
- package/dist/esm/{stepper-states-64ffef36.js → stepper-states-2f1dd0bd.js} +1 -1
- package/dist/esm/{tooltip-helper-096296d0.js → tooltip-helper-86b9b16e.js} +3 -3
- package/dist/esm/{validators-c8be2c83.js → validators-d6dd6432.js} +1 -1
- package/dist/types/components/organism/list/list.d.ts +9 -5
- package/dist/types/components/third-parts/rc-overflow/rc-overflow.d.ts +17 -0
- package/dist/types/components.d.ts +26 -0
- package/package.json +2 -1
- package/dist/bromcom-ui/p-2677dc60.entry.js +0 -10
- package/dist/bromcom-ui/p-6a842eb1.js +0 -5
- package/dist/bromcom-ui/p-a8b7d3cf.entry.js +0 -5
- package/dist/bromcom-ui/p-c0e58db2.entry.js +0 -5
- package/dist/bromcom-ui/p-efee3d33.entry.js +0 -5
- package/dist/cjs/bcm-search.cjs.entry.js +0 -245
- package/dist/collection/components/organism/list/list-tag-control.js +0 -173
- package/dist/esm/bcm-search.entry.js +0 -241
- package/dist/types/components/organism/list/list-tag-control.d.ts +0 -18
- /package/dist/collection/components/{molecules → third-parts}/colorful/colorful.js +0 -0
- /package/dist/types/components/{molecules → third-parts}/colorful/colorful.d.ts +0 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built with Stencil
|
|
3
|
+
* Copyright (c) Bromcom.
|
|
4
|
+
*/
|
|
5
|
+
import { getRenderingRef, forceUpdate } from '@stencil/core/internal/client';
|
|
6
|
+
|
|
7
|
+
const appendToMap = (map, propName, value) => {
|
|
8
|
+
const items = map.get(propName);
|
|
9
|
+
if (!items) {
|
|
10
|
+
map.set(propName, [value]);
|
|
11
|
+
}
|
|
12
|
+
else if (!items.includes(value)) {
|
|
13
|
+
items.push(value);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const debounce = (fn, ms) => {
|
|
17
|
+
let timeoutId;
|
|
18
|
+
return (...args) => {
|
|
19
|
+
if (timeoutId) {
|
|
20
|
+
clearTimeout(timeoutId);
|
|
21
|
+
}
|
|
22
|
+
timeoutId = setTimeout(() => {
|
|
23
|
+
timeoutId = 0;
|
|
24
|
+
fn(...args);
|
|
25
|
+
}, ms);
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Check if a possible element isConnected.
|
|
31
|
+
* The property might not be there, so we check for it.
|
|
32
|
+
*
|
|
33
|
+
* We want it to return true if isConnected is not a property,
|
|
34
|
+
* otherwise we would remove these elements and would not update.
|
|
35
|
+
*
|
|
36
|
+
* Better leak in Edge than to be useless.
|
|
37
|
+
*/
|
|
38
|
+
const isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;
|
|
39
|
+
const cleanupElements = debounce((map) => {
|
|
40
|
+
for (let key of map.keys()) {
|
|
41
|
+
map.set(key, map.get(key).filter(isConnected));
|
|
42
|
+
}
|
|
43
|
+
}, 2000);
|
|
44
|
+
const stencilSubscription = () => {
|
|
45
|
+
if (typeof getRenderingRef !== 'function') {
|
|
46
|
+
// If we are not in a stencil project, we do nothing.
|
|
47
|
+
// This function is not really exported by @stencil/core.
|
|
48
|
+
return {};
|
|
49
|
+
}
|
|
50
|
+
const elmsToUpdate = new Map();
|
|
51
|
+
return {
|
|
52
|
+
dispose: () => elmsToUpdate.clear(),
|
|
53
|
+
get: (propName) => {
|
|
54
|
+
const elm = getRenderingRef();
|
|
55
|
+
if (elm) {
|
|
56
|
+
appendToMap(elmsToUpdate, propName, elm);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
set: (propName) => {
|
|
60
|
+
const elements = elmsToUpdate.get(propName);
|
|
61
|
+
if (elements) {
|
|
62
|
+
elmsToUpdate.set(propName, elements.filter(forceUpdate));
|
|
63
|
+
}
|
|
64
|
+
cleanupElements(elmsToUpdate);
|
|
65
|
+
},
|
|
66
|
+
reset: () => {
|
|
67
|
+
elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));
|
|
68
|
+
cleanupElements(elmsToUpdate);
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {
|
|
74
|
+
let states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));
|
|
75
|
+
const handlers = {
|
|
76
|
+
dispose: [],
|
|
77
|
+
get: [],
|
|
78
|
+
set: [],
|
|
79
|
+
reset: [],
|
|
80
|
+
};
|
|
81
|
+
const reset = () => {
|
|
82
|
+
states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));
|
|
83
|
+
handlers.reset.forEach((cb) => cb());
|
|
84
|
+
};
|
|
85
|
+
const dispose = () => {
|
|
86
|
+
// Call first dispose as resetting the state would
|
|
87
|
+
// cause less updates ;)
|
|
88
|
+
handlers.dispose.forEach((cb) => cb());
|
|
89
|
+
reset();
|
|
90
|
+
};
|
|
91
|
+
const get = (propName) => {
|
|
92
|
+
handlers.get.forEach((cb) => cb(propName));
|
|
93
|
+
return states.get(propName);
|
|
94
|
+
};
|
|
95
|
+
const set = (propName, value) => {
|
|
96
|
+
const oldValue = states.get(propName);
|
|
97
|
+
if (shouldUpdate(value, oldValue, propName)) {
|
|
98
|
+
states.set(propName, value);
|
|
99
|
+
handlers.set.forEach((cb) => cb(propName, value, oldValue));
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const state = (typeof Proxy === 'undefined'
|
|
103
|
+
? {}
|
|
104
|
+
: new Proxy(defaultState, {
|
|
105
|
+
get(_, propName) {
|
|
106
|
+
return get(propName);
|
|
107
|
+
},
|
|
108
|
+
ownKeys(_) {
|
|
109
|
+
return Array.from(states.keys());
|
|
110
|
+
},
|
|
111
|
+
getOwnPropertyDescriptor() {
|
|
112
|
+
return {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
configurable: true,
|
|
115
|
+
};
|
|
116
|
+
},
|
|
117
|
+
has(_, propName) {
|
|
118
|
+
return states.has(propName);
|
|
119
|
+
},
|
|
120
|
+
set(_, propName, value) {
|
|
121
|
+
set(propName, value);
|
|
122
|
+
return true;
|
|
123
|
+
},
|
|
124
|
+
}));
|
|
125
|
+
const on = (eventName, callback) => {
|
|
126
|
+
handlers[eventName].push(callback);
|
|
127
|
+
return () => {
|
|
128
|
+
removeFromArray(handlers[eventName], callback);
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
const onChange = (propName, cb) => {
|
|
132
|
+
const unSet = on('set', (key, newValue) => {
|
|
133
|
+
if (key === propName) {
|
|
134
|
+
cb(newValue);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
const unReset = on('reset', () => cb(defaultState[propName]));
|
|
138
|
+
return () => {
|
|
139
|
+
unSet();
|
|
140
|
+
unReset();
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
const use = (...subscriptions) => {
|
|
144
|
+
const unsubs = subscriptions.reduce((unsubs, subscription) => {
|
|
145
|
+
if (subscription.set) {
|
|
146
|
+
unsubs.push(on('set', subscription.set));
|
|
147
|
+
}
|
|
148
|
+
if (subscription.get) {
|
|
149
|
+
unsubs.push(on('get', subscription.get));
|
|
150
|
+
}
|
|
151
|
+
if (subscription.reset) {
|
|
152
|
+
unsubs.push(on('reset', subscription.reset));
|
|
153
|
+
}
|
|
154
|
+
if (subscription.dispose) {
|
|
155
|
+
unsubs.push(on('dispose', subscription.dispose));
|
|
156
|
+
}
|
|
157
|
+
return unsubs;
|
|
158
|
+
}, []);
|
|
159
|
+
return () => unsubs.forEach((unsub) => unsub());
|
|
160
|
+
};
|
|
161
|
+
const forceUpdate = (key) => {
|
|
162
|
+
const oldValue = states.get(key);
|
|
163
|
+
handlers.set.forEach((cb) => cb(key, oldValue, oldValue));
|
|
164
|
+
};
|
|
165
|
+
return {
|
|
166
|
+
state,
|
|
167
|
+
get,
|
|
168
|
+
set,
|
|
169
|
+
on,
|
|
170
|
+
onChange,
|
|
171
|
+
use,
|
|
172
|
+
dispose,
|
|
173
|
+
reset,
|
|
174
|
+
forceUpdate,
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
const removeFromArray = (array, item) => {
|
|
178
|
+
const index = array.indexOf(item);
|
|
179
|
+
if (index >= 0) {
|
|
180
|
+
array[index] = array[array.length - 1];
|
|
181
|
+
array.length--;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
const createStore = (defaultState, shouldUpdate) => {
|
|
186
|
+
const map = createObservableMap(defaultState, shouldUpdate);
|
|
187
|
+
map.use(stencilSubscription());
|
|
188
|
+
return map;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export { createStore as c };
|