sprae 12.4.6 → 12.4.8
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/directive/style.js +1 -1
- package/dist/sprae.js +2 -2
- package/dist/sprae.js.map +3 -3
- package/dist/sprae.umd.js +2 -2
- package/dist/sprae.umd.js.map +3 -3
- package/package.json +1 -1
- package/readme.md +12 -1
- package/sprae.js +12 -4
- package/store.js +5 -3
- package/types/sprae.d.ts.map +1 -1
- package/types/store.d.ts.map +1 -1
package/sprae.js
CHANGED
|
@@ -175,10 +175,18 @@ for (let k in keys) modifier[k] = (fn, a, b) => (e) => keys[k](e) && (!a || keyM
|
|
|
175
175
|
|
|
176
176
|
// Checks for first-level semicolons (statement vs expression)
|
|
177
177
|
const hasSemi = s => {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
178
|
+
let d = 0, q = '', esc = 0
|
|
179
|
+
for (let ch of s) {
|
|
180
|
+
if (q) {
|
|
181
|
+
if (esc) esc = 0
|
|
182
|
+
else if (ch === '\\') esc = 1
|
|
183
|
+
else if (ch === q) q = ''
|
|
184
|
+
continue
|
|
185
|
+
}
|
|
186
|
+
if (ch === ';' && !d) return true
|
|
187
|
+
if (ch === '{') d++
|
|
188
|
+
else if (ch === '}') d--
|
|
189
|
+
else if (ch === '"' || ch === "'" || ch === '`') q = ch
|
|
182
190
|
}
|
|
183
191
|
return false
|
|
184
192
|
}
|
package/store.js
CHANGED
|
@@ -62,6 +62,8 @@ export const store = (values, parent) => {
|
|
|
62
62
|
}), {
|
|
63
63
|
get: (_, k) => {
|
|
64
64
|
if (k in signals) {
|
|
65
|
+
// raw methods (no prototype) - bind to state for consistent `this`
|
|
66
|
+
if (signals.hasOwnProperty(k) && typeof signals[k] === 'function' && !signals[k].prototype) return signals[k].bind(state)
|
|
65
67
|
return (signals[k] ? signals[k].valueOf() : signals[k])
|
|
66
68
|
}
|
|
67
69
|
if (parent) {
|
|
@@ -205,12 +207,12 @@ const list = (values, parent = globalThis) => {
|
|
|
205
207
|
|
|
206
208
|
/**
|
|
207
209
|
* Creates a signal for a property value.
|
|
208
|
-
* Skips wrapping for untracked props (underscore prefix)
|
|
210
|
+
* Skips wrapping for untracked props (underscore prefix), existing signals, and functions.
|
|
209
211
|
* @param {Object} signals - Signals storage object
|
|
210
212
|
* @param {string} k - Property key
|
|
211
213
|
* @param {any} v - Property value
|
|
212
214
|
*/
|
|
213
|
-
const create = (signals, k, v) => (signals[k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))
|
|
215
|
+
const create = (signals, k, v) => (signals[k] = (k[0] == '_' || v?.peek || typeof v === 'function') ? v : signal(store(v)))
|
|
214
216
|
|
|
215
217
|
/**
|
|
216
218
|
* Updates a signal value, handling arrays specially for efficient patching.
|
|
@@ -220,7 +222,7 @@ const create = (signals, k, v) => (signals[k] = (k[0] == '_' || v?.peek) ? v : s
|
|
|
220
222
|
*/
|
|
221
223
|
const set = (signals, k, v, _s, _v) => {
|
|
222
224
|
// skip unchanged (although can be handled by last condition - we skip a few checks this way)
|
|
223
|
-
return k[0] === '_' ? (signals[k] = v) :
|
|
225
|
+
return k[0] === '_' || typeof signals[k] === 'function' ? (signals[k] = v) :
|
|
224
226
|
(v !== (_v = (_s = signals[k]).peek?.() ?? _s)) && (
|
|
225
227
|
// stashed _set for value with getter/setter
|
|
226
228
|
_s[_set] ? _s[_set](v) :
|
package/types/sprae.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprae.d.ts","sourceRoot":"","sources":["../sprae.js"],"names":[],"mappings":";kBAQ+H,WAAW;kBAHxH,YAAY;uBAC6B,WAAW;uBAAX,WAAW;yBAAX,WAAW;sBAAX,WAAW;0BAAX,WAAW;sBAEyD,WAAW;oBAAX,WAAW;yBAAX,WAAW;yBAAX,WAAW;
|
|
1
|
+
{"version":3,"file":"sprae.d.ts","sourceRoot":"","sources":["../sprae.js"],"names":[],"mappings":";kBAQ+H,WAAW;kBAHxH,YAAY;uBAC6B,WAAW;uBAAX,WAAW;yBAAX,WAAW;sBAAX,WAAW;0BAAX,WAAW;sBAEyD,WAAW;oBAAX,WAAW;yBAAX,WAAW;yBAAX,WAAW;AA+N1H,4BAFL,OAAO,OAEsC"}
|
package/types/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../store.js"],"names":[],"mappings":"AAOA,oDAAoD;AACpD,qCAAyC;AAEzC,2EAA2E;AAC3E,oCAAuC;AAEvC,mDAAmD;AACnD,iCAAiC;AA0B1B,sBAVe,CAAC,0BACZ,CAAC,iBAEC,aAAa,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../store.js"],"names":[],"mappings":"AAOA,oDAAoD;AACpD,qCAAyC;AAEzC,2EAA2E;AAC3E,oCAAuC;AAEvC,mDAAmD;AACnD,iCAAiC;AA0B1B,sBAVe,CAAC,0BACZ,CAAC,iBAEC,aAAa,CAAC,CAAC,CAAC,CAiG5B;;;;;0BA7GY,CAAC,IACD,CAAC,GAAG;IAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE"}
|