angular-three-soba 2.10.0 → 2.10.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.
@@ -68,4 +68,4 @@ export function injectAnimations(animations, object, { injector } = {}) {
68
68
  return { clips, mixer, actions, names, ready };
69
69
  });
70
70
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9saWIvYW5pbWF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBd0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFrQyxjQUFjLEVBQVksTUFBTSxPQUFPLENBQUM7QUFhakY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQy9CLFVBQThELEVBQzlELE1BQW9HLEVBQ3BHLEVBQUUsUUFBUSxLQUE4QixFQUFFO0lBRTFDLE9BQU8sY0FBYyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDdEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSyxDQUFDLENBQUM7UUFDeEMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQUUsT0FBTztZQUM3QixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxNQUFNLEdBQUcsRUFBcUMsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxFQUE2QyxDQUFDO1FBQzlELE1BQU0sS0FBSyxHQUFHLEVBQTJDLENBQUM7UUFDMUQsTUFBTSxLQUFLLEdBQUcsRUFBMkMsQ0FBQztRQUUxRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2xDLElBQUksUUFBUSxDQUFDLE1B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SW5qZWN0b3IsIGlzU2lnbmFsLCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyLCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IEFuaW1hdGlvbkFjdGlvbiwgQW5pbWF0aW9uQ2xpcCwgQW5pbWF0aW9uTWl4ZXIsIE9iamVjdDNEIH0gZnJvbSAndGhyZWUnO1xuXG50eXBlIE5ndHNBbmltYXRpb25BcGk8VCBleHRlbmRzIEFuaW1hdGlvbkNsaXA+ID0ge1xuXHRjbGlwczogQW5pbWF0aW9uQ2xpcFtdO1xuXHRtaXhlcjogQW5pbWF0aW9uTWl4ZXI7XG5cdG5hbWVzOiBUWyduYW1lJ11bXTtcblx0YWN0aW9uczogeyBba2V5IGluIFRbJ25hbWUnXV06IEFuaW1hdGlvbkFjdGlvbiB8IG51bGwgfTtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndHNBbmltYXRpb248VEFuaW1hdGlvbiBleHRlbmRzIEFuaW1hdGlvbkNsaXAgPSBBbmltYXRpb25DbGlwPiA9XG5cdHwgVEFuaW1hdGlvbltdXG5cdHwgeyBhbmltYXRpb25zOiBUQW5pbWF0aW9uW10gfTtcblxuLyoqXG4gKiBVc2UgYWZ0ZXJOZXh0UmVuZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBbmltYXRpb25zPFRBbmltYXRpb24gZXh0ZW5kcyBBbmltYXRpb25DbGlwPihcblx0YW5pbWF0aW9uczogKCkgPT4gTmd0c0FuaW1hdGlvbjxUQW5pbWF0aW9uPiB8IHVuZGVmaW5lZCB8IG51bGwsXG5cdG9iamVjdDogRWxlbWVudFJlZjxPYmplY3QzRD4gfCBPYmplY3QzRCB8ICgoKSA9PiBFbGVtZW50UmVmPE9iamVjdDNEPiB8IE9iamVjdDNEIHwgdW5kZWZpbmVkIHwgbnVsbCksXG5cdHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0QW5pbWF0aW9ucywgaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBtaXhlciA9IG5ldyBBbmltYXRpb25NaXhlcihudWxsISk7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGRlbHRhIH0pID0+IHtcblx0XHRcdGlmICghbWl4ZXIuZ2V0Um9vdCgpKSByZXR1cm47XG5cdFx0XHRtaXhlci51cGRhdGUoZGVsdGEpO1xuXHRcdH0pO1xuXG5cdFx0bGV0IGNhY2hlZCA9IHt9IGFzIFJlY29yZDxzdHJpbmcsIEFuaW1hdGlvbkFjdGlvbj47XG5cdFx0Y29uc3QgYWN0aW9ucyA9IHt9IGFzIE5ndHNBbmltYXRpb25BcGk8VEFuaW1hdGlvbj5bJ2FjdGlvbnMnXTtcblx0XHRjb25zdCBjbGlwcyA9IFtdIGFzIE5ndHNBbmltYXRpb25BcGk8VEFuaW1hdGlvbj5bJ2NsaXBzJ107XG5cdFx0Y29uc3QgbmFtZXMgPSBbXSBhcyBOZ3RzQW5pbWF0aW9uQXBpPFRBbmltYXRpb24+WyduYW1lcyddO1xuXG5cdFx0Y29uc3QgYWN0dWFsT2JqZWN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0aWYgKGlzU2lnbmFsKG9iamVjdCkgfHwgdHlwZW9mIG9iamVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRyZXR1cm4gcmVzb2x2ZVJlZihvYmplY3QoKSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiByZXNvbHZlUmVmKG9iamVjdCk7XG5cdFx0fSk7XG5cblx0XHRjb25zdCByZWFkeSA9IHNpZ25hbChmYWxzZSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3Qgb2JqID0gYWN0dWFsT2JqZWN0KCkgYXMgT2JqZWN0M0QgfCB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoIW9iaikgcmV0dXJuO1xuXHRcdFx0T2JqZWN0LmFzc2lnbihtaXhlciwgeyBfcm9vdDogb2JqIH0pO1xuXG5cdFx0XHRjb25zdCBtYXliZUFuaW1hdGlvbkNsaXBzID0gYW5pbWF0aW9ucygpO1xuXHRcdFx0aWYgKCFtYXliZUFuaW1hdGlvbkNsaXBzKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IGFuaW1hdGlvbkNsaXBzID0gQXJyYXkuaXNBcnJheShtYXliZUFuaW1hdGlvbkNsaXBzKSA/IG1heWJlQW5pbWF0aW9uQ2xpcHMgOiBtYXliZUFuaW1hdGlvbkNsaXBzLmFuaW1hdGlvbnM7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYW5pbWF0aW9uQ2xpcHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3QgY2xpcCA9IGFuaW1hdGlvbkNsaXBzW2ldO1xuXG5cdFx0XHRcdG5hbWVzLnB1c2goY2xpcC5uYW1lKTtcblx0XHRcdFx0Y2xpcHMucHVzaChjbGlwKTtcblxuXHRcdFx0XHRpZiAoIWFjdGlvbnNbY2xpcC5uYW1lIGFzIFRBbmltYXRpb25bJ25hbWUnXV0pIHtcblx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoYWN0aW9ucywgY2xpcC5uYW1lLCB7XG5cdFx0XHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdFx0Z2V0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmICghY2FjaGVkW2NsaXAubmFtZV0pIHtcblx0XHRcdFx0XHRcdFx0XHRjYWNoZWRbY2xpcC5uYW1lXSA9IG1peGVyLmNsaXBBY3Rpb24oY2xpcCwgb2JqKTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHJldHVybiBjYWNoZWRbY2xpcC5uYW1lXTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0aWYgKCFyZWFkeSgpKSB7XG5cdFx0XHRcdFx0cmVhZHkuc2V0KHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0Ly8gY2xlYXIgY2FjaGVkXG5cdFx0XHRcdGNhY2hlZCA9IHt9O1xuXHRcdFx0XHQvLyBzdG9wIGFsbCBhY3Rpb25zXG5cdFx0XHRcdG1peGVyLnN0b3BBbGxBY3Rpb24oKTtcblx0XHRcdFx0Ly8gdW5jYWNoZSBhY3Rpb25zXG5cdFx0XHRcdE9iamVjdC52YWx1ZXMoYWN0aW9ucykuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0bWl4ZXIudW5jYWNoZUFjdGlvbihhY3Rpb24gYXMgQW5pbWF0aW9uQ2xpcCwgb2JqKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdHJldHVybiB7IGNsaXBzLCBtaXhlciwgYWN0aW9ucywgbmFtZXMsIHJlYWR5IH07XG5cdH0pO1xufVxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9saWIvYW5pbWF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBd0IsUUFBUSxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFrQyxjQUFjLEVBQVksTUFBTSxPQUFPLENBQUM7QUFzQmpGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUMvQixVQUE4RCxFQUM5RCxNQUFvRyxFQUNwRyxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUUxQyxPQUFPLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQ3hDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUFFLE9BQU87WUFDN0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksTUFBTSxHQUFHLEVBQXFDLENBQUM7UUFDbkQsTUFBTSxPQUFPLEdBQUcsRUFBNkMsQ0FBQztRQUM5RCxNQUFNLEtBQUssR0FBRyxFQUEyQyxDQUFDO1FBQzFELE1BQU0sS0FBSyxHQUFHLEVBQTJDLENBQUM7UUFFMUQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLFFBQVEsQ0FBQyxN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IEluamVjdG9yLCBpc1NpZ25hbCwgU2lnbmFsLCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyLCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IEFuaW1hdGlvbkFjdGlvbiwgQW5pbWF0aW9uQ2xpcCwgQW5pbWF0aW9uTWl4ZXIsIE9iamVjdDNEIH0gZnJvbSAndGhyZWUnO1xuXG4vKipcbiAqIG5hbWU6IGFueSB0byBhbGxvdyBjb25zdW1lcnMgdG8gcGFzcyBpbiB0eXBlLXNhZmUgYW5pbWF0aW9uIGNsaXBzXG4gKi9cbnR5cGUgTmd0c0FuaW1hdGlvbkNsaXBXaXRob3V0TmFtZSA9IE9taXQ8QW5pbWF0aW9uQ2xpcCwgJ25hbWUnPiAmIHsgbmFtZTogYW55IH07XG5leHBvcnQgdHlwZSBOZ3RzQW5pbWF0aW9uQ2xpcCA9IE9taXQ8Tmd0c0FuaW1hdGlvbkNsaXBXaXRob3V0TmFtZSwgJ2Nsb25lJz4gJiB7IGNsb25lOiAoKSA9PiBOZ3RzQW5pbWF0aW9uQ2xpcCB9O1xuZXhwb3J0IHR5cGUgTmd0c0FuaW1hdGlvbkNsaXBzPFRBbmltYXRpb25OYW1lcyBleHRlbmRzIHN0cmluZz4gPSB7XG5cdFtOYW1lIGluIFRBbmltYXRpb25OYW1lc106IE9taXQ8Tmd0c0FuaW1hdGlvbkNsaXAsICduYW1lJz4gJiB7IG5hbWU6IE5hbWUgfTtcbn1bVEFuaW1hdGlvbk5hbWVzXTtcbmV4cG9ydCB0eXBlIE5ndHNBbmltYXRpb25BcGk8VCBleHRlbmRzIE5ndHNBbmltYXRpb25DbGlwPiA9IHtcblx0cmVhZHk6IFNpZ25hbDxib29sZWFuPjtcblx0Y2xpcHM6IFRbXTtcblx0bWl4ZXI6IEFuaW1hdGlvbk1peGVyO1xuXHRuYW1lczogVFsnbmFtZSddW107XG5cdGFjdGlvbnM6IHsgW2tleSBpbiBUWyduYW1lJ11dOiBBbmltYXRpb25BY3Rpb24gfCBudWxsIH07XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzQW5pbWF0aW9uPFRBbmltYXRpb24gZXh0ZW5kcyBOZ3RzQW5pbWF0aW9uQ2xpcCA9IE5ndHNBbmltYXRpb25DbGlwPiA9XG5cdHwgVEFuaW1hdGlvbltdXG5cdHwgeyBhbmltYXRpb25zOiBUQW5pbWF0aW9uW10gfTtcblxuLyoqXG4gKiBVc2UgYWZ0ZXJOZXh0UmVuZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBbmltYXRpb25zPFRBbmltYXRpb24gZXh0ZW5kcyBOZ3RzQW5pbWF0aW9uQ2xpcD4oXG5cdGFuaW1hdGlvbnM6ICgpID0+IE5ndHNBbmltYXRpb248VEFuaW1hdGlvbj4gfCB1bmRlZmluZWQgfCBudWxsLFxuXHRvYmplY3Q6IEVsZW1lbnRSZWY8T2JqZWN0M0Q+IHwgT2JqZWN0M0QgfCAoKCkgPT4gRWxlbWVudFJlZjxPYmplY3QzRD4gfCBPYmplY3QzRCB8IHVuZGVmaW5lZCB8IG51bGwpLFxuXHR7IGluamVjdG9yIH06IHsgaW5qZWN0b3I/OiBJbmplY3RvciB9ID0ge30sXG4pIHtcblx0cmV0dXJuIGFzc2VydEluamVjdG9yKGluamVjdEFuaW1hdGlvbnMsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgbWl4ZXIgPSBuZXcgQW5pbWF0aW9uTWl4ZXIobnVsbCEpO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBkZWx0YSB9KSA9PiB7XG5cdFx0XHRpZiAoIW1peGVyLmdldFJvb3QoKSkgcmV0dXJuO1xuXHRcdFx0bWl4ZXIudXBkYXRlKGRlbHRhKTtcblx0XHR9KTtcblxuXHRcdGxldCBjYWNoZWQgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBBbmltYXRpb25BY3Rpb24+O1xuXHRcdGNvbnN0IGFjdGlvbnMgPSB7fSBhcyBOZ3RzQW5pbWF0aW9uQXBpPFRBbmltYXRpb24+WydhY3Rpb25zJ107XG5cdFx0Y29uc3QgY2xpcHMgPSBbXSBhcyBOZ3RzQW5pbWF0aW9uQXBpPFRBbmltYXRpb24+WydjbGlwcyddO1xuXHRcdGNvbnN0IG5hbWVzID0gW10gYXMgTmd0c0FuaW1hdGlvbkFwaTxUQW5pbWF0aW9uPlsnbmFtZXMnXTtcblxuXHRcdGNvbnN0IGFjdHVhbE9iamVjdCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGlmIChpc1NpZ25hbChvYmplY3QpIHx8IHR5cGVvZiBvYmplY3QgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0cmV0dXJuIHJlc29sdmVSZWYob2JqZWN0KCkpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcmVzb2x2ZVJlZihvYmplY3QpO1xuXHRcdH0pO1xuXG5cdFx0Y29uc3QgcmVhZHkgPSBzaWduYWwoZmFsc2UpO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IG9iaiA9IGFjdHVhbE9iamVjdCgpIGFzIE9iamVjdDNEIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKCFvYmopIHJldHVybjtcblx0XHRcdE9iamVjdC5hc3NpZ24obWl4ZXIsIHsgX3Jvb3Q6IG9iaiB9KTtcblxuXHRcdFx0Y29uc3QgbWF5YmVBbmltYXRpb25DbGlwcyA9IGFuaW1hdGlvbnMoKTtcblx0XHRcdGlmICghbWF5YmVBbmltYXRpb25DbGlwcykgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBhbmltYXRpb25DbGlwcyA9IEFycmF5LmlzQXJyYXkobWF5YmVBbmltYXRpb25DbGlwcykgPyBtYXliZUFuaW1hdGlvbkNsaXBzIDogbWF5YmVBbmltYXRpb25DbGlwcy5hbmltYXRpb25zO1xuXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFuaW1hdGlvbkNsaXBzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGNsaXAgPSBhbmltYXRpb25DbGlwc1tpXTtcblxuXHRcdFx0XHRuYW1lcy5wdXNoKGNsaXAubmFtZSk7XG5cdFx0XHRcdGNsaXBzLnB1c2goY2xpcCk7XG5cblx0XHRcdFx0aWYgKCFhY3Rpb25zW2NsaXAubmFtZSBhcyBUQW5pbWF0aW9uWyduYW1lJ11dKSB7XG5cdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGFjdGlvbnMsIGNsaXAubmFtZSwge1xuXHRcdFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRcdGdldDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoIWNhY2hlZFtjbGlwLm5hbWVdKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FjaGVkW2NsaXAubmFtZV0gPSBtaXhlci5jbGlwQWN0aW9uKGNsaXAsIG9iaik7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gY2FjaGVkW2NsaXAubmFtZV07XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdGlmICghcmVhZHkoKSkge1xuXHRcdFx0XHRcdHJlYWR5LnNldCh0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XG5cdFx0XHRcdC8vIGNsZWFyIGNhY2hlZFxuXHRcdFx0XHRjYWNoZWQgPSB7fTtcblx0XHRcdFx0Ly8gc3RvcCBhbGwgYWN0aW9uc1xuXHRcdFx0XHRtaXhlci5zdG9wQWxsQWN0aW9uKCk7XG5cdFx0XHRcdC8vIHVuY2FjaGUgYWN0aW9uc1xuXHRcdFx0XHRPYmplY3QudmFsdWVzKGFjdGlvbnMpLmZvckVhY2goKGFjdGlvbikgPT4ge1xuXHRcdFx0XHRcdG1peGVyLnVuY2FjaGVBY3Rpb24oYWN0aW9uIGFzIEFuaW1hdGlvbkNsaXAsIG9iaik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4geyBjbGlwcywgbWl4ZXIsIGFjdGlvbnMsIG5hbWVzLCByZWFkeSB9O1xuXHR9KTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/soba/misc/src/lib/animations.ts","../../../../libs/soba/misc/src/lib/bake-shadows.ts","../../../../libs/soba/misc/src/lib/computed-attribute.ts","../../../../libs/soba/misc/src/lib/constants.ts","../../../../libs/soba/misc/src/lib/decal.ts","../../../../libs/soba/misc/src/lib/deprecated.ts","../../../../libs/soba/misc/src/lib/fbo.ts","../../../../libs/soba/misc/src/lib/depth-buffer.ts","../../../../libs/soba/misc/src/lib/html/html.ts","../../../../libs/soba/misc/src/lib/html/utils.ts","../../../../libs/soba/misc/src/lib/html/html-content.ts","../../../../libs/soba/misc/src/lib/intersect.ts","../../../../libs/soba/misc/src/lib/preload.ts","../../../../libs/soba/misc/src/lib/sampler.ts","../../../../libs/soba/misc/src/lib/scale-factor.ts","../../../../libs/soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { computed, effect, ElementRef, Injector, isSignal, signal, untracked } from '@angular/core';\nimport { injectBeforeRender, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { AnimationAction, AnimationClip, AnimationMixer, Object3D } from 'three';\n\ntype NgtsAnimationApi<T extends AnimationClip> = {\n\tclips: AnimationClip[];\n\tmixer: AnimationMixer;\n\tnames: T['name'][];\n\tactions: { [key in T['name']]: AnimationAction | null };\n};\n\nexport type NgtsAnimation<TAnimation extends AnimationClip = AnimationClip> =\n\t| TAnimation[]\n\t| { animations: TAnimation[] };\n\n/**\n * Use afterNextRender\n */\nexport function injectAnimations<TAnimation extends AnimationClip>(\n\tanimations: () => NgtsAnimation<TAnimation> | undefined | null,\n\tobject: ElementRef<Object3D> | Object3D | (() => ElementRef<Object3D> | Object3D | undefined | null),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectAnimations, injector, () => {\n\t\tconst mixer = new AnimationMixer(null!);\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tif (!mixer.getRoot()) return;\n\t\t\tmixer.update(delta);\n\t\t});\n\n\t\tlet cached = {} as Record<string, AnimationAction>;\n\t\tconst actions = {} as NgtsAnimationApi<TAnimation>['actions'];\n\t\tconst clips = [] as NgtsAnimationApi<TAnimation>['clips'];\n\t\tconst names = [] as NgtsAnimationApi<TAnimation>['names'];\n\n\t\tconst actualObject = computed(() => {\n\t\t\tif (isSignal(object) || typeof object === 'function') {\n\t\t\t\treturn resolveRef(object());\n\t\t\t}\n\n\t\t\treturn resolveRef(object);\n\t\t});\n\n\t\tconst ready = signal(false);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst obj = actualObject() as Object3D | undefined;\n\t\t\tif (!obj) return;\n\t\t\tObject.assign(mixer, { _root: obj });\n\n\t\t\tconst maybeAnimationClips = animations();\n\t\t\tif (!maybeAnimationClips) return;\n\n\t\t\tconst animationClips = Array.isArray(maybeAnimationClips) ? maybeAnimationClips : maybeAnimationClips.animations;\n\n\t\t\tfor (let i = 0; i < animationClips.length; i++) {\n\t\t\t\tconst clip = animationClips[i];\n\n\t\t\t\tnames.push(clip.name);\n\t\t\t\tclips.push(clip);\n\n\t\t\t\tif (!actions[clip.name as TAnimation['name']]) {\n\t\t\t\t\tObject.defineProperty(actions, clip.name, {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tget: () => {\n\t\t\t\t\t\t\tif (!cached[clip.name]) {\n\t\t\t\t\t\t\t\tcached[clip.name] = mixer.clipAction(clip, obj);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn cached[clip.name];\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuntracked(() => {\n\t\t\t\tif (!ready()) {\n\t\t\t\t\tready.set(true);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tonCleanup(() => {\n\t\t\t\t// clear cached\n\t\t\t\tcached = {};\n\t\t\t\t// stop all actions\n\t\t\t\tmixer.stopAllAction();\n\t\t\t\t// uncache actions\n\t\t\t\tObject.values(actions).forEach((action) => {\n\t\t\t\t\tmixer.uncacheAction(action as AnimationClip, obj);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\treturn { clips, mixer, actions, names, ready };\n\t});\n}\n","import { Directive, effect } from '@angular/core';\nimport { injectStore } from 'angular-three';\n\n@Directive({ standalone: true, selector: 'ngts-bake-shadows' })\nexport class NgtsBakeShadows {\n\tconstructor() {\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\t\teffect((onCleanup) => {\n\t\t\tconst _gl = gl();\n\t\t\t_gl.shadowMap.autoUpdate = false;\n\t\t\t_gl.shadowMap.needsUpdate = true;\n\t\t\tonCleanup(() => {\n\t\t\t\t_gl.shadowMap.autoUpdate = _gl.shadowMap.needsUpdate = true;\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtBufferAttribute, getLocalState } from 'angular-three';\nimport { BufferAttribute, BufferGeometry } from 'three';\n\n@Component({\n\tselector: 'ngts-computed-attribute',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive #attribute *args=\"[bufferAttribute]\" [attach]=\"['attributes', name()]\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\n/**\n * Used exclusively as a child of a BufferGeometry.\n * Computes the BufferAttribute by calling the `compute` function\n * and attaches the attribute to the geometry.\n */\nexport class NgtsComputedAttribute {\n\tcompute = input.required<(geometry: BufferGeometry) => BufferAttribute>();\n\tname = input.required<string>();\n\toptions = input({} as Partial<NgtBufferAttribute>);\n\n\tbufferAttribute = new BufferAttribute(new Float32Array(0), 1);\n\tattributeRef = viewChild<ElementRef<BufferAttribute>>('attribute');\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst bufferAttribute = this.attributeRef()?.nativeElement;\n\t\t\tif (!bufferAttribute) return;\n\n\t\t\tconst localState = getLocalState(bufferAttribute);\n\t\t\tif (!localState) return;\n\n\t\t\tconst geometry = ((bufferAttribute as any).parent as BufferGeometry) ?? localState.parent();\n\n\t\t\tconst attribute = this.compute()(geometry);\n\t\t\tbufferAttribute.copy(attribute);\n\t\t});\n\t}\n}\n","import { REVISION } from 'three';\n\nexport function getVersion() {\n\treturn parseInt(REVISION.replace(/\\D+/g, ''));\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { applyProps, extend, getLocalState, NgtMesh, omit, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { AxesHelper, BoxGeometry, Euler, Mesh, MeshNormalMaterial, Object3D, Texture, Vector3 } from 'three';\nimport { DecalGeometry } from 'three-stdlib';\n\nexport interface NgtsDecalOptions extends Partial<NgtMesh> {\n\tpolygonOffsetFactor: number;\n\tdepthTest: boolean;\n\tdebug: boolean;\n\tmap?: Texture | null;\n}\n\nconst defaultOptions: NgtsDecalOptions = {\n\tpolygonOffsetFactor: -10,\n\tdebug: false,\n\tdepthTest: false,\n};\n\n@Component({\n\tselector: 'ngts-decal',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.transparent\" />\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.polygonOffset\" />\n\t\t\t<ngt-value [rawValue]=\"map()\" attach=\"material.map\" />\n\n\t\t\t<ng-content>\n\t\t\t\t<!-- we only want to pass through these material properties if they don't use a custom material -->\n\t\t\t\t<ngt-value [rawValue]=\"polygonOffsetFactor()\" attach=\"material.polygonOffsetFactor\" />\n\t\t\t\t<ngt-value [rawValue]=\"depthTest()\" attach=\"material.depthTest\" />\n\t\t\t</ng-content>\n\n\t\t\t@if (debug()) {\n\t\t\t\t<ngt-mesh #helper>\n\t\t\t\t\t<ngt-box-geometry />\n\t\t\t\t\t<ngt-mesh-normal-material [wireframe]=\"true\" />\n\t\t\t\t\t<ngt-axes-helper />\n\t\t\t\t</ngt-mesh>\n\t\t\t}\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsDecal {\n\tmesh = input<ElementRef<Mesh> | Mesh | null>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'debug',\n\t\t'map',\n\t\t'depthTest',\n\t\t'polygonOffsetFactor',\n\t\t'position',\n\t\t'scale',\n\t\t'rotation',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\thelperRef = viewChild<ElementRef<Mesh>>('helper');\n\n\tprotected map = pick(this.options, 'map');\n\tprotected depthTest = pick(this.options, 'depthTest');\n\tprotected polygonOffsetFactor = pick(this.options, 'polygonOffsetFactor');\n\tprotected debug = pick(this.options, 'debug');\n\tprivate position = pick(this.options, 'position');\n\tprivate rotation = pick(this.options, 'rotation');\n\tprivate scale = pick(this.options, 'scale');\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry, MeshNormalMaterial, AxesHelper });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst thisMesh = this.meshRef().nativeElement;\n\t\t\tconst localState = getLocalState(thisMesh);\n\t\t\tif (!localState) return;\n\n\t\t\tconst parent = resolveRef(this.mesh()) || localState.parent();\n\n\t\t\tif (parent && !(parent as Mesh).isMesh) {\n\t\t\t\tthrow new Error('<ngts-decal> must have a Mesh as parent or specify its \"mesh\" input');\n\t\t\t}\n\n\t\t\tif (!parent) return;\n\n\t\t\tconst parentLocalState = getLocalState(parent);\n\t\t\tif (!parentLocalState) return;\n\n\t\t\t// track parent's children\n\t\t\tconst parentNonObjects = parentLocalState.nonObjects();\n\t\t\tif (!parentNonObjects || !parentNonObjects.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if parent geometry doesn't have its attributes populated properly, we skip\n\t\t\tif (!parent.geometry?.attributes?.['position']) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst [position, rotation, scale] = [this.position(), this.rotation(), this.scale()];\n\t\t\tconst state = { position: new Vector3(), rotation: new Euler(), scale: new Vector3(1, 1, 1) };\n\n\t\t\tapplyProps(state, { position, scale });\n\n\t\t\t// zero out the parents matrix world for this operation\n\t\t\tconst matrixWorld = parent.matrixWorld.clone();\n\t\t\tparent.matrixWorld.identity();\n\n\t\t\tif (!rotation || typeof rotation === 'number') {\n\t\t\t\tconst o = new Object3D();\n\t\t\t\to.position.copy(state.position);\n\t\t\t\to.lookAt(parent.position);\n\t\t\t\tif (typeof rotation === 'number') o.rotateZ(rotation);\n\t\t\t\tapplyProps(state, { rotation: o.rotation });\n\t\t\t} else {\n\t\t\t\tapplyProps(state, { rotation });\n\t\t\t}\n\n\t\t\tthisMesh.geometry = new DecalGeometry(parent, state.position, state.rotation, state.scale);\n\t\t\tconst helper = this.helperRef()?.nativeElement;\n\t\t\tif (helper) {\n\t\t\t\tapplyProps(helper, state);\n\t\t\t\t// Prevent the helpers from blocking rays\n\t\t\t\thelper.traverse((child) => (child.raycast = () => null));\n\t\t\t}\n\n\t\t\t// Reset parents matrix-world\n\t\t\tparent.matrixWorld = matrixWorld;\n\n\t\t\tonCleanup(() => {\n\t\t\t\tthisMesh.geometry.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { BufferAttribute } from 'three';\n\n/**\n * NOTE: Sets `BufferAttribute.updateRange` since r159.\n */\nexport const setUpdateRange = (attribute: BufferAttribute, updateRange: { offset: number; count: number }): void => {\n\tif ('updateRanges' in attribute) {\n\t\t// attribute.updateRanges[0] = updateRange;\n\t\tattribute.addUpdateRange(updateRange.offset, updateRange.count);\n\t} else {\n\t\tObject.assign(attribute, { updateRange });\n\t}\n};\n\nexport const LinearEncoding = 3000;\nexport const sRGBEncoding = 3001;\n\n/**\n * NOTE: TextureEncoding was deprecated in r152, and removed in r162.\n */\nexport type TextureEncoding = typeof LinearEncoding | typeof sRGBEncoding;\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tTemplateRef,\n\tViewContainerRef,\n\tafterNextRender,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport {\n\tColorSpace,\n\tDepthTexture,\n\tFloatType,\n\tHalfFloatType,\n\tLinearFilter,\n\tMagnificationTextureFilter,\n\tMinificationTextureFilter,\n\tTextureDataType,\n\tWebGLRenderTarget,\n\tWrapping,\n} from 'three';\nimport { TextureEncoding } from './deprecated';\n\ninterface FBOSettings {\n\t/** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n\tsamples?: number;\n\t/** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n\tdepth?: boolean;\n\n\t// WebGLRenderTargetOptions => RenderTargetOptions\n\twrapS?: Wrapping | undefined;\n\twrapT?: Wrapping | undefined;\n\tmagFilter?: MagnificationTextureFilter | undefined;\n\tminFilter?: MinificationTextureFilter | undefined;\n\tformat?: number | undefined; // RGBAFormat;\n\ttype?: TextureDataType | undefined; // UnsignedByteType;\n\tanisotropy?: number | undefined; // 1;\n\tdepthBuffer?: boolean | undefined; // true;\n\tstencilBuffer?: boolean | undefined; // false;\n\tgenerateMipmaps?: boolean | undefined; // true;\n\tdepthTexture?: DepthTexture | undefined;\n\tencoding?: TextureEncoding | undefined;\n\tcolorSpace?: ColorSpace | undefined;\n}\n\nexport interface NgtsFBOParams {\n\twidth?: number | FBOSettings;\n\theight?: number;\n\tsettings?: FBOSettings;\n}\n\nexport function injectFBO(params: () => NgtsFBOParams = () => ({}), { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectFBO, injector, () => {\n\t\tconst store = injectStore();\n\t\tconst size = store.select('size');\n\t\tconst viewport = store.select('viewport');\n\n\t\tconst width = computed(() => {\n\t\t\tconst { width } = params();\n\t\t\treturn typeof width === 'number' ? width : size().width * viewport().dpr;\n\t\t});\n\t\tconst height = computed(() => {\n\t\t\tconst { height } = params();\n\t\t\treturn typeof height === 'number' ? height : size().height * viewport().dpr;\n\t\t});\n\t\tconst settings = computed(() => {\n\t\t\tconst { width, settings } = params();\n\t\t\tconst _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\t\t\tif (_settings.samples === undefined) {\n\t\t\t\t_settings.samples = 0;\n\t\t\t}\n\t\t\treturn _settings;\n\t\t});\n\n\t\tconst target = computed(() => {\n\t\t\tconst [{ samples = 0, depth, ...targetSettings }, _width, _height] = [\n\t\t\t\tuntracked(settings),\n\t\t\t\tuntracked(width),\n\t\t\t\tuntracked(height),\n\t\t\t];\n\t\t\tconst target = new WebGLRenderTarget(_width, _height, {\n\t\t\t\tminFilter: LinearFilter,\n\t\t\t\tmagFilter: LinearFilter,\n\t\t\t\ttype: HalfFloatType,\n\t\t\t\t...targetSettings,\n\t\t\t});\n\n\t\t\tif (depth) {\n\t\t\t\ttarget.depthTexture = new DepthTexture(_width, _height, FloatType);\n\t\t\t}\n\n\t\t\ttarget.samples = samples;\n\t\t\treturn target;\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [{ samples = 0 }, _width, _height, _target] = [settings(), width(), height(), target()];\n\t\t\t_target.setSize(_width, _height);\n\t\t\tif (samples) _target.samples = samples;\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => target().dispose());\n\n\t\treturn target;\n\t});\n}\n\n@Directive({ selector: 'ng-template[fbo]', standalone: true })\nexport class NgtsFBO {\n\tfbo = input({} as { width: NgtsFBOParams['width']; height: NgtsFBOParams['height'] } & FBOSettings);\n\n\tprivate template = inject(TemplateRef);\n\tprivate viewContainerRef = inject(ViewContainerRef);\n\n\tconstructor() {\n\t\tlet ref: EmbeddedViewRef<{ $implicit: ReturnType<typeof injectFBO> }>;\n\n\t\tconst fboTarget = injectFBO(() => {\n\t\t\tconst { width, height, ...settings } = this.fbo();\n\t\t\treturn { width, height, settings };\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\t// TODO: double check if we need untracked\n\t\t\tuntracked(() => {\n\t\t\t\tref = this.viewContainerRef.createEmbeddedView(this.template, { $implicit: fboTarget });\n\t\t\t\tref.detectChanges();\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(_: NgtsFBO, ctx: unknown): ctx is { $implicit: ReturnType<typeof injectFBO> } {\n\t\treturn true;\n\t}\n}\n","import { computed, Injector } from '@angular/core';\nimport { injectBeforeRender, injectStore, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { DepthFormat, DepthTexture, UnsignedShortType } from 'three';\nimport { injectFBO } from './fbo';\n\nexport function injectDepthBuffer(\n\tparams: () => { size?: number; frames?: number } = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectDepthBuffer, injector, () => {\n\t\tconst size = computed(() => params().size || 256);\n\t\tconst frames = computed(() => params().frames || Infinity);\n\n\t\tconst store = injectStore();\n\t\tconst width = store.select('size', 'width');\n\t\tconst height = store.select('size', 'height');\n\t\tconst dpr = store.select('viewport', 'dpr');\n\n\t\tconst w = computed(() => size() || width() * dpr());\n\t\tconst h = computed(() => size() || height() * dpr());\n\n\t\tconst depthConfig = computed(() => {\n\t\t\tconst depthTexture = new DepthTexture(w(), h());\n\t\t\tdepthTexture.format = DepthFormat;\n\t\t\tdepthTexture.type = UnsignedShortType;\n\t\t\treturn { depthTexture };\n\t\t});\n\n\t\tconst depthFBO = injectFBO(() => ({\n\t\t\twidth: w(),\n\t\t\theight: h(),\n\t\t\tsettings: depthConfig(),\n\t\t}));\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(({ gl, scene, camera }) => {\n\t\t\tif (frames() === Infinity || count < frames()) {\n\t\t\t\tgl.setRenderTarget(depthFBO());\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\n\t\treturn pick(depthFBO, 'depthTexture');\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, is, NgtGroup, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { DoubleSide, Group, Mesh, Object3D, PlaneGeometry, ShaderMaterial } from 'three';\n\nexport interface NgtsHTMLOptions extends Partial<NgtGroup> {\n\tocclude: ElementRef<Object3D>[] | Object3D[] | boolean | 'raycast' | 'blending';\n\ttransform: boolean;\n\tcastShadow: boolean;\n\treceiveShadow: boolean;\n}\n\nconst defaultHtmlOptions: NgtsHTMLOptions = {\n\tocclude: false,\n\ttransform: false,\n\tcastShadow: false,\n\treceiveShadow: false,\n};\n\n@Component({\n\tselector: 'ngts-html',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t@if (occlude() && !isRaycastOcclusion()) {\n\t\t\t\t<ngt-mesh #occlusionMesh [castShadow]=\"castShadow()\" [receiveShadow]=\"receiveShadow()\">\n\t\t\t\t\t<ng-content select=\"[data-occlusion-geometry]\">\n\t\t\t\t\t\t<ngt-plane-geometry #occlusionGeometry />\n\t\t\t\t\t</ng-content>\n\t\t\t\t\t<ng-content select=\"[data-occlusion-material]\">\n\t\t\t\t\t\t<ngt-shader-material\n\t\t\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t\t\t[vertexShader]=\"vertexShader()\"\n\t\t\t\t\t\t\t[fragmentShader]=\"fragmentShader()\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ng-content>\n\t\t\t\t</ngt-mesh>\n\t\t\t}\n\t\t</ngt-group>\n\n\t\t<ng-content />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsHTML {\n\toptions = input(defaultHtmlOptions, { transform: mergeInputs(defaultHtmlOptions) });\n\tparameters = omit(this.options, ['occlude', 'castShadow', 'receiveShadow', 'transform']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tocclusionMeshRef = viewChild<ElementRef<Mesh>>('occlusionMesh');\n\tocclusionGeometryRef = viewChild<ElementRef<PlaneGeometry>>('occlusionGeometry');\n\n\tocclude = pick(this.options, 'occlude');\n\ttransform = pick(this.options, 'transform');\n\tcastShadow = pick(this.options, 'castShadow');\n\treceiveShadow = pick(this.options, 'receiveShadow');\n\tscale = pick(this.options, 'scale');\n\n\tisRaycastOcclusion = computed(() => {\n\t\tconst occlude = this.occlude();\n\t\treturn (occlude && occlude !== 'blending') || (Array.isArray(occlude) && occlude.length && is.ref(occlude[0]));\n\t});\n\n\tprivate shaders = computed(() => {\n\t\tconst transform = this.transform();\n\t\tconst vertexShader = !transform\n\t\t\t? /* language=glsl glsl */ `\n /*\n This shader is from the THREE's SpriteMaterial.\n We need to turn the backing plane into a Sprite\n (make it always face the camera) if \"transfrom\"\n is false.\n */\n #include <common>\n\n void main() {\n vec2 center = vec2(0., 1.);\n float rotation = 0.0;\n\n // This is somewhat arbitrary, but it seems to work well\n // Need to figure out how to derive this dynamically if it even matters\n float size = 0.03;\n\n vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n vec2 scale;\n scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n\n gl_Position = projectionMatrix * mvPosition;\n }\n `\n\t\t\t: undefined;\n\n\t\tconst fragmentShader = /* language=glsl glsl */ `\n void main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `;\n\n\t\treturn { vertexShader, fragmentShader };\n\t});\n\n\tvertexShader = pick(this.shaders, 'vertexShader');\n\tfragmentShader = pick(this.shaders, 'fragmentShader');\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry, ShaderMaterial });\n\t}\n\n\tprotected readonly DoubleSide = DoubleSide;\n}\n","import { Camera, Matrix4, Object3D, OrthographicCamera, PerspectiveCamera, Raycaster, Vector2, Vector3 } from 'three';\n\nconst v1 = new Vector3();\nconst v2 = new Vector3();\nconst v3 = new Vector3();\nconst v4 = new Vector2();\n\nexport function defaultCalculatePosition(el: Object3D, camera: Camera, size: { width: number; height: number }) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tobjectPos.project(camera);\n\tconst widthHalf = size.width / 2;\n\tconst heightHalf = size.height / 2;\n\treturn [objectPos.x * widthHalf + widthHalf, -(objectPos.y * heightHalf) + heightHalf];\n}\n\nexport type CalculatePosition = typeof defaultCalculatePosition;\n\nexport function isObjectBehindCamera(el: Object3D, camera: Camera) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\tconst deltaCamObj = objectPos.sub(cameraPos);\n\tconst camDir = camera.getWorldDirection(v3);\n\treturn deltaCamObj.angleTo(camDir) > Math.PI / 2;\n}\n\nexport function isObjectVisible(el: Object3D, camera: Camera, raycaster: Raycaster, occlude: Object3D[]) {\n\tconst elPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst screenPos = elPos.clone();\n\tscreenPos.project(camera);\n\tv4.set(screenPos.x, screenPos.y);\n\traycaster.setFromCamera(v4, camera);\n\tconst intersects = raycaster.intersectObjects(occlude, true);\n\tif (intersects.length) {\n\t\tconst intersectionDistance = intersects[0].distance;\n\t\tconst pointDistance = elPos.distanceTo(raycaster.ray.origin);\n\t\treturn pointDistance < intersectionDistance;\n\t}\n\treturn true;\n}\n\nexport function objectScale(el: Object3D, camera: Camera) {\n\tif (camera instanceof OrthographicCamera) return camera.zoom;\n\tif (camera instanceof PerspectiveCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst vFOV = (camera.fov * Math.PI) / 180;\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst scaleFOV = 2 * Math.tan(vFOV / 2) * dist;\n\t\treturn 1 / scaleFOV;\n\t}\n\treturn 1;\n}\n\nexport function objectZIndex(el: Object3D, camera: Camera, zIndexRange: Array<number>) {\n\tif (camera instanceof PerspectiveCamera || camera instanceof OrthographicCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);\n\t\tconst B = zIndexRange[1] - A * camera.far;\n\t\treturn Math.round(A * dist + B);\n\t}\n\treturn undefined;\n}\n\nexport function epsilon(value: number) {\n\treturn Math.abs(value) < 1e-10 ? 0 : value;\n}\n\nexport function getCSSMatrix(matrix: Matrix4, multipliers: number[], prepend = '') {\n\tlet matrix3d = 'matrix3d(';\n\tfor (let i = 0; i !== 16; i++) {\n\t\tmatrix3d += epsilon(multipliers[i] * matrix.elements[i]) + (i !== 15 ? ',' : ')');\n\t}\n\treturn prepend + matrix3d;\n}\n\nexport const getCameraCSSMatrix = ((multipliers: number[]) => {\n\treturn (matrix: Matrix4) => getCSSMatrix(matrix, multipliers);\n})([1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1]);\n\nexport const getObjectCSSMatrix = ((scaleMultipliers: (n: number) => number[]) => {\n\treturn (matrix: Matrix4, factor: number) => getCSSMatrix(matrix, scaleMultipliers(factor), 'translate(-50%,-50%)');\n})((f: number) => [1 / f, 1 / f, 1 / f, 1, -1 / f, -1 / f, -1 / f, -1, 1 / f, 1 / f, 1 / f, 1, 1, 1, 1, 1]);\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\toutput,\n\tRenderer2,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { injectBeforeRender, NgtHTML, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Object3D, OrthographicCamera, Vector3 } from 'three';\nimport { NgtsHTML } from './html';\nimport {\n\tCalculatePosition,\n\tdefaultCalculatePosition,\n\tepsilon,\n\tgetCameraCSSMatrix,\n\tgetObjectCSSMatrix,\n\tisObjectBehindCamera,\n\tisObjectVisible,\n\tobjectScale,\n\tobjectZIndex,\n} from './utils';\n\ntype PointerEventsProperties =\n\t| 'auto'\n\t| 'none'\n\t| 'visiblePainted'\n\t| 'visibleFill'\n\t| 'visibleStroke'\n\t| 'visible'\n\t| 'painted'\n\t| 'fill'\n\t| 'stroke'\n\t| 'all'\n\t| 'inherit';\n\nexport interface NgtsHTMLContentOptions {\n\teps: number;\n\tzIndexRange: [number, number];\n\tcenter: boolean;\n\tprepend: boolean;\n\tfullscreen: boolean;\n\tcontainerClass: string;\n\tcontainerStyle: Partial<CSSStyleDeclaration>;\n\tpointerEvents: PointerEventsProperties;\n\tcalculatePosition: CalculatePosition;\n\tsprite: boolean;\n\tdistanceFactor?: number;\n\tparent?: HTMLElement | ElementRef<HTMLElement>;\n}\n\nconst defaultHtmlContentOptions: NgtsHTMLContentOptions = {\n\teps: 0.001,\n\tzIndexRange: [16777271, 0],\n\tpointerEvents: 'auto',\n\tcalculatePosition: defaultCalculatePosition,\n\tcontainerClass: '',\n\tcontainerStyle: {},\n\tcenter: false,\n\tprepend: false,\n\tfullscreen: false,\n\tsprite: false,\n};\n\n@Component({\n\tselector: '[ngtsHTMLContent]',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (html.transform()) {\n\t\t\t<div\n\t\t\t\t#transformOuter\n\t\t\t\tstyle=\"position: absolute; top: 0; left: 0; transform-style: preserve-3d; pointer-events: none;\"\n\t\t\t\t[style.width.px]=\"size().width\"\n\t\t\t\t[style.height.px]=\"size().height\"\n\t\t\t>\n\t\t\t\t<div #transformInner style=\"position: absolute\" [style.pointer-events]=\"pointerEvents()\">\n\t\t\t\t\t<div #container [class]=\"containerClass()\" [style]=\"containerStyle()\">\n\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"content\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div\n\t\t\t\t#container\n\t\t\t\tstyle=\"position:absolute\"\n\t\t\t\t[style.transform]=\"center() ? 'translate3d(-50%,-50%,0)' : 'none'\"\n\t\t\t\t[style.top]=\"fullscreen() ? -size().height / 2 + 'px' : 'unset'\"\n\t\t\t\t[style.left]=\"fullscreen() ? -size().width / 2 + 'px' : 'unset'\"\n\t\t\t\t[style.width]=\"fullscreen() ? size().width : 'unset'\"\n\t\t\t\t[style.height]=\"fullscreen() ? size().height : 'unset'\"\n\t\t\t\t[class]=\"containerClass()\"\n\t\t\t\t[style]=\"containerStyle()\"\n\t\t\t>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"content\" />\n\t\t\t</div>\n\t\t}\n\n\t\t<ng-template #content>\n\t\t\t<ng-content />\n\t\t</ng-template>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgTemplateOutlet],\n\thost: { 'data-ngts-html-content': '' },\n})\nexport class NgtsHTMLContent extends NgtHTML {\n\toptions = input(defaultHtmlContentOptions, {\n\t\ttransform: mergeInputs(defaultHtmlContentOptions),\n\t\talias: 'ngtsHTMLContent',\n\t});\n\toccluded = output<boolean>();\n\n\thtml = inject(NgtsHTML);\n\n\ttransformOuterRef = viewChild<ElementRef<HTMLDivElement>>('transformOuter');\n\ttransformInnerRef = viewChild<ElementRef<HTMLDivElement>>('transformInner');\n\tcontainerRef = viewChild<ElementRef<HTMLDivElement>>('container');\n\n\tprivate gl = this.store.select('gl');\n\tprivate events = this.store.select('events');\n\tprivate camera = this.store.select('camera');\n\tprivate scene = this.store.select('scene');\n\tprotected size = this.store.select('size');\n\n\tprivate parent = pick(this.options, 'parent');\n\tprivate zIndexRange = pick(this.options, 'zIndexRange');\n\tprivate calculatePosition = pick(this.options, 'calculatePosition');\n\tprivate prepend = pick(this.options, 'prepend');\n\tprotected center = pick(this.options, 'center');\n\tprotected fullscreen = pick(this.options, 'fullscreen');\n\tprotected pointerEvents = pick(this.options, 'pointerEvents');\n\tprotected containerClass = pick(this.options, 'containerClass');\n\tprotected containerStyle = pick(this.options, 'containerStyle');\n\n\tprivate target = computed(() => {\n\t\tconst parent = resolveRef(this.parent());\n\t\tif (parent) return parent;\n\t\treturn (this.events().connected || this.gl().domElement.parentNode) as HTMLElement;\n\t});\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst renderer = inject(Renderer2);\n\n\t\tlet isMeshSizeSet = false;\n\n\t\teffect(() => {\n\t\t\tconst [occlude, canvasEl, zIndexRange] = [\n\t\t\t\tthis.html.occlude(),\n\t\t\t\tuntracked(this.gl).domElement,\n\t\t\t\tuntracked(this.zIndexRange),\n\t\t\t];\n\n\t\t\tif (occlude && occlude === 'blending') {\n\t\t\t\trenderer.setStyle(canvasEl, 'z-index', `${Math.floor(zIndexRange[0] / 2)}`);\n\t\t\t\trenderer.setStyle(canvasEl, 'position', 'absolute');\n\t\t\t\trenderer.setStyle(canvasEl, 'pointer-events', 'none');\n\t\t\t} else {\n\t\t\t\trenderer.removeStyle(canvasEl, 'z-index');\n\t\t\t\trenderer.removeStyle(canvasEl, 'position');\n\t\t\t\trenderer.removeStyle(canvasEl, 'pointer-events');\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [transform, target, hostEl, prepend, scene, calculatePosition, group, size, camera] = [\n\t\t\t\tthis.html.transform(),\n\t\t\t\tthis.target(),\n\t\t\t\tthis.host.nativeElement,\n\t\t\t\tuntracked(this.prepend),\n\t\t\t\tuntracked(this.scene),\n\t\t\t\tuntracked(this.calculatePosition),\n\t\t\t\tuntracked(this.html.groupRef).nativeElement,\n\t\t\t\tuntracked(this.size),\n\t\t\t\tuntracked(this.camera),\n\t\t\t];\n\n\t\t\tscene.updateMatrixWorld();\n\t\t\trenderer.setStyle(hostEl, 'position', 'absolute');\n\t\t\trenderer.setStyle(hostEl, 'top', '0');\n\t\t\trenderer.setStyle(hostEl, 'left', '0');\n\n\t\t\tif (transform) {\n\t\t\t\trenderer.setStyle(hostEl, 'pointer-events', 'none');\n\t\t\t\trenderer.setStyle(hostEl, 'overflow', 'hidden');\n\t\t\t\trenderer.removeStyle(hostEl, 'transform');\n\t\t\t\trenderer.removeStyle(hostEl, 'transform-origin');\n\t\t\t} else {\n\t\t\t\tconst vec = calculatePosition(group, camera, size);\n\t\t\t\trenderer.setStyle(hostEl, 'transform', `translate3d(${vec[0]}px,${vec[1]}px,0)`);\n\t\t\t\trenderer.setStyle(hostEl, 'transform-origin', '0 0');\n\t\t\t\trenderer.removeStyle(hostEl, 'pointer-events');\n\t\t\t\trenderer.removeStyle(hostEl, 'overflow');\n\t\t\t}\n\n\t\t\tif (prepend) target.prepend(hostEl);\n\t\t\telse target.appendChild(hostEl);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tif (target) target.removeChild(hostEl);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst _ = [this.options(), this.html.options()];\n\t\t\tisMeshSizeSet = false;\n\t\t});\n\n\t\tlet visible = true;\n\t\tlet oldZoom = 0;\n\t\tlet oldPosition = [0, 0];\n\n\t\tinjectBeforeRender(({ camera: rootCamera }) => {\n\t\t\tconst [\n\t\t\t\thostEl,\n\t\t\t\ttransformOuterEl,\n\t\t\t\ttransformInnerEl,\n\t\t\t\tgroup,\n\t\t\t\tocclusionMesh,\n\t\t\t\tocclusionGeometry,\n\t\t\t\tisRaycastOcclusion,\n\t\t\t\t{ camera, size, viewport, raycaster, scene },\n\t\t\t\t{ calculatePosition, eps, zIndexRange, sprite, distanceFactor },\n\t\t\t\t{ transform, occlude, scale },\n\t\t\t] = [\n\t\t\t\tthis.host.nativeElement,\n\t\t\t\tthis.transformOuterRef()?.nativeElement,\n\t\t\t\tthis.transformInnerRef()?.nativeElement,\n\t\t\t\tthis.html.groupRef().nativeElement,\n\t\t\t\tthis.html.occlusionMeshRef()?.nativeElement,\n\t\t\t\tthis.html.occlusionGeometryRef()?.nativeElement,\n\t\t\t\tthis.html.isRaycastOcclusion(),\n\t\t\t\tthis.store.snapshot,\n\t\t\t\tthis.options(),\n\t\t\t\tthis.html.options(),\n\t\t\t];\n\n\t\t\tif (group) {\n\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\tgroup.updateWorldMatrix(true, false);\n\t\t\t\tconst vec = transform ? oldPosition : calculatePosition(group, camera, size);\n\n\t\t\t\tif (\n\t\t\t\t\ttransform ||\n\t\t\t\t\tMath.abs(oldZoom - camera.zoom) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[0] - vec[0]) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[1] - vec[1]) > eps\n\t\t\t\t) {\n\t\t\t\t\tconst isBehindCamera = isObjectBehindCamera(group, camera);\n\t\t\t\t\tlet raytraceTarget: null | undefined | boolean | Object3D[] = false;\n\n\t\t\t\t\tif (isRaycastOcclusion) {\n\t\t\t\t\t\tif (Array.isArray(occlude)) {\n\t\t\t\t\t\t\traytraceTarget = occlude.map((item) => resolveRef(item)) as Object3D[];\n\t\t\t\t\t\t} else if (occlude !== 'blending') {\n\t\t\t\t\t\t\traytraceTarget = [scene];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst previouslyVisible = visible;\n\t\t\t\t\tif (raytraceTarget) {\n\t\t\t\t\t\tconst isVisible = isObjectVisible(group, camera, raycaster, raytraceTarget);\n\t\t\t\t\t\tvisible = isVisible && !isBehindCamera;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvisible = !isBehindCamera;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (previouslyVisible !== visible) {\n\t\t\t\t\t\tif (this.occluded['listeners']) this.occluded.emit(!visible);\n\t\t\t\t\t\telse renderer.setStyle(hostEl, 'display', visible ? 'block' : 'none');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfRange = Math.floor(zIndexRange[0] / 2);\n\t\t\t\t\tconst zRange = occlude\n\t\t\t\t\t\t? isRaycastOcclusion //\n\t\t\t\t\t\t\t? [zIndexRange[0], halfRange]\n\t\t\t\t\t\t\t: [halfRange - 1, 0]\n\t\t\t\t\t\t: zIndexRange;\n\n\t\t\t\t\trenderer.setStyle(hostEl, 'z-index', `${objectZIndex(group, camera, zRange)}`);\n\n\t\t\t\t\tif (transform) {\n\t\t\t\t\t\tconst [widthHalf, heightHalf] = [size.width / 2, size.height / 2];\n\t\t\t\t\t\tconst fov = camera.projectionMatrix.elements[5] * heightHalf;\n\t\t\t\t\t\tconst { isOrthographicCamera, top, left, bottom, right } = camera as OrthographicCamera;\n\t\t\t\t\t\tconst cameraMatrix = getCameraCSSMatrix(camera.matrixWorldInverse);\n\t\t\t\t\t\tconst cameraTransform = isOrthographicCamera\n\t\t\t\t\t\t\t? `scale(${fov})translate(${epsilon(-(right + left) / 2)}px,${epsilon((top + bottom) / 2)}px)`\n\t\t\t\t\t\t\t: `translateZ(${fov}px)`;\n\t\t\t\t\t\tlet matrix = group.matrixWorld;\n\t\t\t\t\t\tif (sprite) {\n\t\t\t\t\t\t\tmatrix = camera.matrixWorldInverse.clone().transpose().copyPosition(matrix).scale(group.scale);\n\t\t\t\t\t\t\tmatrix.elements[3] = matrix.elements[7] = matrix.elements[11] = 0;\n\t\t\t\t\t\t\tmatrix.elements[15] = 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'width', size.width + 'px');\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'height', size.height + 'px');\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'perspective', isOrthographicCamera ? '' : `${fov}px`);\n\n\t\t\t\t\t\tif (transformOuterEl && transformInnerEl) {\n\t\t\t\t\t\t\trenderer.setStyle(\n\t\t\t\t\t\t\t\ttransformOuterEl,\n\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\t`${cameraTransform}${cameraMatrix}translate(${widthHalf}px,${heightHalf}px)`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\trenderer.setStyle(\n\t\t\t\t\t\t\t\ttransformInnerEl,\n\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\tgetObjectCSSMatrix(matrix, 1 / ((distanceFactor || 10) / 400)),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst scale = distanceFactor === undefined ? 1 : objectScale(group, camera) * distanceFactor;\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'transform', `translate3d(${vec[0]}px,${vec[1]}px,0) scale(${scale})`);\n\t\t\t\t\t}\n\t\t\t\t\toldPosition = vec;\n\t\t\t\t\toldZoom = camera.zoom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isRaycastOcclusion && occlusionMesh && !isMeshSizeSet) {\n\t\t\t\tif (transform) {\n\t\t\t\t\tif (transformOuterEl) {\n\t\t\t\t\t\tconst el = transformOuterEl.children[0];\n\n\t\t\t\t\t\tif (el?.clientWidth && el?.clientHeight) {\n\t\t\t\t\t\t\tconst { isOrthographicCamera } = camera as OrthographicCamera;\n\n\t\t\t\t\t\t\tif (isOrthographicCamera || occlusionGeometry) {\n\t\t\t\t\t\t\t\tif (scale) {\n\t\t\t\t\t\t\t\t\tif (!Array.isArray(scale)) {\n\t\t\t\t\t\t\t\t\t\tocclusionMesh.scale.setScalar(1 / (scale as number));\n\t\t\t\t\t\t\t\t\t} else if (scale instanceof Vector3) {\n\t\t\t\t\t\t\t\t\t\tocclusionMesh.scale.copy(scale.clone().divideScalar(1));\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tocclusionMesh.scale.set(1 / scale[0], 1 / scale[1], 1 / scale[2]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst ratio = (distanceFactor || 10) / 400;\n\t\t\t\t\t\t\t\tconst w = el.clientWidth * ratio;\n\t\t\t\t\t\t\t\tconst h = el.clientHeight * ratio;\n\n\t\t\t\t\t\t\t\tocclusionMesh.scale.set(w, h, 1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tisMeshSizeSet = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst ele = hostEl.children[0];\n\n\t\t\t\t\tif (ele?.clientWidth && ele?.clientHeight) {\n\t\t\t\t\t\tconst ratio = 1 / viewport.factor;\n\t\t\t\t\t\tconst w = ele.clientWidth * ratio;\n\t\t\t\t\t\tconst h = ele.clientHeight * ratio;\n\n\t\t\t\t\t\tocclusionMesh.scale.set(w, h, 1);\n\n\t\t\t\t\t\tisMeshSizeSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tocclusionMesh.lookAt(rootCamera.position);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, effect, ElementRef, inject, Injector, model, signal, WritableSignal } from '@angular/core';\nimport { addAfterEffect, addEffect, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Object3D } from 'three';\n\nexport function injectIntersect<TObject extends Object3D>(\n\tobject: () => ElementRef<TObject> | TObject | undefined | null,\n\t{ injector, source = signal(false) }: { injector?: Injector; source?: WritableSignal<boolean> } = {},\n) {\n\treturn assertInjector(injectIntersect, injector, () => {\n\t\tlet check = false;\n\t\tlet temp = false;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst obj = resolveRef(object());\n\t\t\tif (!obj) return;\n\n\t\t\t// Stamp out frustum check pre-emptively\n\t\t\tconst unsub1 = addEffect(() => {\n\t\t\t\tcheck = false;\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\t// If the object is inside the frustum three will call onRender\n\t\t\tconst oldOnRender = obj.onBeforeRender.bind(obj);\n\t\t\tobj.onBeforeRender = () => (check = true);\n\n\t\t\t// Compare the check value against the temp value, if it differs set state\n\t\t\tconst unsub2 = addAfterEffect(() => {\n\t\t\t\tif (check !== temp) source.set((temp = check));\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tonCleanup(() => {\n\t\t\t\tobj.onBeforeRender = oldOnRender;\n\t\t\t\tunsub1();\n\t\t\t\tunsub2();\n\t\t\t});\n\t\t});\n\n\t\treturn source.asReadonly();\n\t});\n}\n\n@Directive({ standalone: true, selector: '[intersect]' })\nexport class NgtsIntersect {\n\tintersect = model(false);\n\n\tconstructor() {\n\t\tconst host = inject<ElementRef<Object3D>>(ElementRef);\n\t\tinjectIntersect(() => host, { source: this.intersect });\n\t}\n}\n","import { afterNextRender, computed, Directive, ElementRef, model } from '@angular/core';\nimport { injectStore, resolveRef } from 'angular-three';\nimport { Camera, CubeCamera, Object3D, WebGLCubeRenderTarget } from 'three';\n\n@Directive({ selector: 'ngts-preload', standalone: true })\nexport class NgtsPreload {\n\tall = model<boolean>();\n\tscene = model<Object3D | ElementRef<Object3D>>();\n\tcamera = model<Camera | ElementRef<Camera>>();\n\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\tprivate defaultScene = this.store.select('scene');\n\tprivate defaultCamera = this.store.select('camera');\n\n\tprivate trueScene = computed(() => {\n\t\tconst scene = this.scene();\n\t\tif (scene) return resolveRef(scene);\n\t\treturn this.defaultScene();\n\t});\n\tprivate trueCamera = computed(() => {\n\t\tconst camera = this.camera();\n\t\tif (camera) return resolveRef(camera);\n\t\treturn this.defaultCamera();\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tconst invisible: Object3D[] = [];\n\n\t\t\tconst [all, scene, camera, gl] = [this.all(), this.trueScene(), this.trueCamera(), this.gl()];\n\n\t\t\tif (!scene || !camera) return;\n\n\t\t\tif (all) {\n\t\t\t\t// Find all invisible objects, store and then flip them\n\t\t\t\tscene.traverse((object) => {\n\t\t\t\t\tif (!object.visible) {\n\t\t\t\t\t\tinvisible.push(object);\n\t\t\t\t\t\tobject.visible = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Now compile the scene\n\t\t\tgl.compile(scene, camera);\n\n\t\t\t// And for good measure, hit it with a cube camera\n\t\t\tconst cubeRenderTarget = new WebGLCubeRenderTarget(128);\n\t\t\tconst cubeCamera = new CubeCamera(0.01, 100000, cubeRenderTarget);\n\t\t\tcubeCamera.update(gl, scene);\n\t\t\tcubeRenderTarget.dispose();\n\n\t\t\t// Flips these objects back\n\t\t\tinvisible.forEach((object) => (object.visible = false));\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, getLocalState, NgtGroup, omit, pick, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BufferGeometry, Color, Group, InstancedBufferAttribute, InstancedMesh, Mesh, Object3D, Vector3 } from 'three';\nimport { MeshSurfaceSampler } from 'three-stdlib';\n\ninterface SamplePayload {\n\t/**\n\t * The position of the sample.\n\t */\n\tposition: Vector3;\n\t/**\n\t * The normal of the mesh at the sampled position.\n\t */\n\tnormal: Vector3;\n\t/**\n\t * The vertex color of the mesh at the sampled position.\n\t */\n\tcolor: Color;\n}\n\nexport type TransformFn = (payload: TransformPayload, i: number) => void;\n\ninterface TransformPayload extends SamplePayload {\n\t/**\n\t * The dummy object used to transform each instance.\n\t * This object's matrix will be updated after transforming & it will be used\n\t * to set the instance's matrix.\n\t */\n\tdummy: Object3D;\n\t/**\n\t * The mesh that's initially passed to the sampler.\n\t * Use this if you need to apply transforms from your mesh to your instances\n\t * or if you need to grab attributes from the geometry.\n\t */\n\tsampledMesh: Mesh;\n}\n\nexport function injectSurfaceSampler(\n\tmesh: () => ElementRef<Mesh> | Mesh | null | undefined,\n\toptions: () => {\n\t\tcount?: number;\n\t\ttransform?: TransformFn;\n\t\tweight?: string;\n\t\tinstanceMesh?: ElementRef<InstancedMesh> | InstancedMesh | null;\n\t} = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectSurfaceSampler, injector, () => {\n\t\tconst initialBufferAttribute = (() => {\n\t\t\tconst arr = Array.from({ length: options().count ?? 16 }, () => [\n\t\t\t\t1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,\n\t\t\t]).flat();\n\t\t\treturn new InstancedBufferAttribute(Float32Array.from(arr), 16);\n\t\t})();\n\n\t\treturn computed(() => {\n\t\t\tconst currentMesh = resolveRef(mesh());\n\t\t\tif (!currentMesh) return initialBufferAttribute;\n\n\t\t\tconst localState = getLocalState(currentMesh);\n\t\t\tif (!localState) return initialBufferAttribute;\n\n\t\t\tconst nonObjects = localState.nonObjects();\n\t\t\tif (\n\t\t\t\t!nonObjects ||\n\t\t\t\t!nonObjects.length ||\n\t\t\t\tnonObjects.every((nonObject) => !(nonObject as BufferGeometry).isBufferGeometry)\n\t\t\t) {\n\t\t\t\treturn initialBufferAttribute;\n\t\t\t}\n\n\t\t\tconst sampler = new MeshSurfaceSampler(currentMesh);\n\t\t\tconst { weight, count = 16, transform, instanceMesh } = options();\n\n\t\t\tif (weight) {\n\t\t\t\tsampler.setWeightAttribute(weight);\n\t\t\t}\n\n\t\t\tsampler.build();\n\n\t\t\tconst position = new Vector3();\n\t\t\tconst normal = new Vector3();\n\t\t\tconst color = new Color();\n\t\t\tconst dummy = new Object3D();\n\t\t\tconst instance = resolveRef(instanceMesh);\n\n\t\t\tcurrentMesh.updateMatrixWorld(true);\n\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tsampler.sample(position, normal, color);\n\n\t\t\t\tif (typeof transform === 'function') {\n\t\t\t\t\ttransform({ dummy, sampledMesh: currentMesh, position, normal, color }, i);\n\t\t\t\t} else {\n\t\t\t\t\tdummy.position.copy(position);\n\t\t\t\t}\n\n\t\t\t\tdummy.updateMatrix();\n\n\t\t\t\tif (instance) {\n\t\t\t\t\tinstance.setMatrixAt(i, dummy.matrix);\n\t\t\t\t}\n\n\t\t\t\tdummy.matrix.toArray(initialBufferAttribute.array, i * 16);\n\t\t\t}\n\n\t\t\tif (instance) {\n\t\t\t\tcheckUpdate(instance.instanceMatrix);\n\t\t\t}\n\n\t\t\tcheckUpdate(initialBufferAttribute);\n\n\t\t\treturn new InstancedBufferAttribute(initialBufferAttribute.array, initialBufferAttribute.itemSize).copy(\n\t\t\t\tinitialBufferAttribute,\n\t\t\t);\n\t\t});\n\t});\n}\n\nexport interface NgtsSamplerOptions extends Partial<NgtGroup> {\n\t/**\n\t * The NAME of the weight attribute to use when sampling.\n\t *\n\t * @see https://threejs.org/docs/#examples/en/math/MeshSurfaceSampler.setWeightAttribute\n\t */\n\tweight?: string;\n\t/**\n\t * Transformation to be applied to each instance.\n\t * Receives a dummy object3D with all the sampled data ( @see TransformPayload ).\n\t * It should mutate `transformPayload.dummy`.\n\t *\n\t * @see ( @todo add link to example )\n\t *\n\t * There is no need to update the dummy's matrix\n\t */\n\ttransform?: TransformFn;\n\tcount: number;\n}\n\nconst defaultOptions: NgtsSamplerOptions = {\n\tcount: 16,\n};\n\n@Component({\n\tselector: 'ngts-sampler',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSampler {\n\tmesh = input<ElementRef<Mesh> | Mesh | null>(null);\n\tinstances = input<ElementRef<InstancedMesh> | InstancedMesh | null>(null);\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['weight', 'transform', 'count']);\n\n\t// NOTE: this could have been a viewChild.required, but we need to _try_ to consume\n\t// this Signal earlier than when a viewChild.required would resolve.\n\tgroupRef = viewChild<ElementRef<Group>>('group');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst sampleState = computed(() => {\n\t\t\tconst group = this.groupRef()?.nativeElement;\n\t\t\tconst localState = getLocalState(group);\n\t\t\tif (!localState) return { mesh: null, instanced: null };\n\n\t\t\tconst [mesh, instances] = [resolveRef(this.mesh()), resolveRef(this.instances())];\n\t\t\tconst objects = localState.objects();\n\n\t\t\treturn {\n\t\t\t\tmesh: mesh ?? (objects.find((c) => c.type === 'Mesh') as Mesh),\n\t\t\t\tinstanced:\n\t\t\t\t\tinstances ?? (objects.find((c) => !!Object.getOwnPropertyDescriptor(c, 'instanceMatrix')) as InstancedMesh),\n\t\t\t};\n\t\t});\n\n\t\tconst meshToSample = pick(sampleState, 'mesh');\n\t\tconst instancedToSample = pick(sampleState, 'instanced');\n\n\t\t// NOTE: because injectSurfaceSampler returns a computed, we need to consume\n\t\t// this computed in a Reactive Context (an effect) to ensure the inner logic of\n\t\t// injectSurfaceSampler is run properly.\n\t\tconst sampler = injectSurfaceSampler(meshToSample, () => ({\n\t\t\tcount: this.options().count,\n\t\t\ttransform: this.options().transform,\n\t\t\tweight: this.options().weight,\n\t\t\tinstanceMesh: instancedToSample(),\n\t\t}));\n\t\teffect(sampler);\n\t}\n}\n","import { NgtSize } from 'angular-three';\nimport { Camera, Vector3 } from 'three';\n\nconst tV0 = new Vector3();\nconst tV1 = new Vector3();\nconst tV2 = new Vector3();\n\nfunction getPoint2(point3: Vector3, camera: Camera, size: NgtSize) {\n\tconst widthHalf = size.width / 2;\n\tconst heightHalf = size.height / 2;\n\tcamera.updateMatrixWorld(false);\n\tconst vector = point3.project(camera);\n\tvector.x = vector.x * widthHalf + widthHalf;\n\tvector.y = -(vector.y * heightHalf) + heightHalf;\n\treturn vector;\n}\n\nfunction getPoint3(point2: Vector3, camera: Camera, size: NgtSize, zValue: number = 1) {\n\tconst vector = tV0.set((point2.x / size.width) * 2 - 1, -(point2.y / size.height) * 2 + 1, zValue);\n\tvector.unproject(camera);\n\treturn vector;\n}\n\nexport function calculateScaleFactor(point3: Vector3, radiusPx: number, camera: Camera, size: NgtSize) {\n\tconst point2 = getPoint2(tV2.copy(point3), camera, size);\n\tlet scale = 0;\n\tfor (let i = 0; i < 2; ++i) {\n\t\tconst point2off = tV1.copy(point2).setComponent(i, point2.getComponent(i) + radiusPx);\n\t\tconst point3off = getPoint3(point2off, camera, size, point2off.z);\n\t\tscale = Math.max(scale, point3.distanceTo(point3off));\n\t}\n\treturn scale;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/soba/misc/src/lib/animations.ts","../../../../libs/soba/misc/src/lib/bake-shadows.ts","../../../../libs/soba/misc/src/lib/computed-attribute.ts","../../../../libs/soba/misc/src/lib/constants.ts","../../../../libs/soba/misc/src/lib/decal.ts","../../../../libs/soba/misc/src/lib/deprecated.ts","../../../../libs/soba/misc/src/lib/fbo.ts","../../../../libs/soba/misc/src/lib/depth-buffer.ts","../../../../libs/soba/misc/src/lib/html/html.ts","../../../../libs/soba/misc/src/lib/html/utils.ts","../../../../libs/soba/misc/src/lib/html/html-content.ts","../../../../libs/soba/misc/src/lib/intersect.ts","../../../../libs/soba/misc/src/lib/preload.ts","../../../../libs/soba/misc/src/lib/sampler.ts","../../../../libs/soba/misc/src/lib/scale-factor.ts","../../../../libs/soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { computed, effect, ElementRef, Injector, isSignal, Signal, signal, untracked } from '@angular/core';\nimport { injectBeforeRender, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { AnimationAction, AnimationClip, AnimationMixer, Object3D } from 'three';\n\n/**\n * name: any to allow consumers to pass in type-safe animation clips\n */\ntype NgtsAnimationClipWithoutName = Omit<AnimationClip, 'name'> & { name: any };\nexport type NgtsAnimationClip = Omit<NgtsAnimationClipWithoutName, 'clone'> & { clone: () => NgtsAnimationClip };\nexport type NgtsAnimationClips<TAnimationNames extends string> = {\n\t[Name in TAnimationNames]: Omit<NgtsAnimationClip, 'name'> & { name: Name };\n}[TAnimationNames];\nexport type NgtsAnimationApi<T extends NgtsAnimationClip> = {\n\tready: Signal<boolean>;\n\tclips: T[];\n\tmixer: AnimationMixer;\n\tnames: T['name'][];\n\tactions: { [key in T['name']]: AnimationAction | null };\n};\n\nexport type NgtsAnimation<TAnimation extends NgtsAnimationClip = NgtsAnimationClip> =\n\t| TAnimation[]\n\t| { animations: TAnimation[] };\n\n/**\n * Use afterNextRender\n */\nexport function injectAnimations<TAnimation extends NgtsAnimationClip>(\n\tanimations: () => NgtsAnimation<TAnimation> | undefined | null,\n\tobject: ElementRef<Object3D> | Object3D | (() => ElementRef<Object3D> | Object3D | undefined | null),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectAnimations, injector, () => {\n\t\tconst mixer = new AnimationMixer(null!);\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tif (!mixer.getRoot()) return;\n\t\t\tmixer.update(delta);\n\t\t});\n\n\t\tlet cached = {} as Record<string, AnimationAction>;\n\t\tconst actions = {} as NgtsAnimationApi<TAnimation>['actions'];\n\t\tconst clips = [] as NgtsAnimationApi<TAnimation>['clips'];\n\t\tconst names = [] as NgtsAnimationApi<TAnimation>['names'];\n\n\t\tconst actualObject = computed(() => {\n\t\t\tif (isSignal(object) || typeof object === 'function') {\n\t\t\t\treturn resolveRef(object());\n\t\t\t}\n\n\t\t\treturn resolveRef(object);\n\t\t});\n\n\t\tconst ready = signal(false);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst obj = actualObject() as Object3D | undefined;\n\t\t\tif (!obj) return;\n\t\t\tObject.assign(mixer, { _root: obj });\n\n\t\t\tconst maybeAnimationClips = animations();\n\t\t\tif (!maybeAnimationClips) return;\n\n\t\t\tconst animationClips = Array.isArray(maybeAnimationClips) ? maybeAnimationClips : maybeAnimationClips.animations;\n\n\t\t\tfor (let i = 0; i < animationClips.length; i++) {\n\t\t\t\tconst clip = animationClips[i];\n\n\t\t\t\tnames.push(clip.name);\n\t\t\t\tclips.push(clip);\n\n\t\t\t\tif (!actions[clip.name as TAnimation['name']]) {\n\t\t\t\t\tObject.defineProperty(actions, clip.name, {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tget: () => {\n\t\t\t\t\t\t\tif (!cached[clip.name]) {\n\t\t\t\t\t\t\t\tcached[clip.name] = mixer.clipAction(clip, obj);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn cached[clip.name];\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuntracked(() => {\n\t\t\t\tif (!ready()) {\n\t\t\t\t\tready.set(true);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tonCleanup(() => {\n\t\t\t\t// clear cached\n\t\t\t\tcached = {};\n\t\t\t\t// stop all actions\n\t\t\t\tmixer.stopAllAction();\n\t\t\t\t// uncache actions\n\t\t\t\tObject.values(actions).forEach((action) => {\n\t\t\t\t\tmixer.uncacheAction(action as AnimationClip, obj);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\treturn { clips, mixer, actions, names, ready };\n\t});\n}\n","import { Directive, effect } from '@angular/core';\nimport { injectStore } from 'angular-three';\n\n@Directive({ standalone: true, selector: 'ngts-bake-shadows' })\nexport class NgtsBakeShadows {\n\tconstructor() {\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\t\teffect((onCleanup) => {\n\t\t\tconst _gl = gl();\n\t\t\t_gl.shadowMap.autoUpdate = false;\n\t\t\t_gl.shadowMap.needsUpdate = true;\n\t\t\tonCleanup(() => {\n\t\t\t\t_gl.shadowMap.autoUpdate = _gl.shadowMap.needsUpdate = true;\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtBufferAttribute, getLocalState } from 'angular-three';\nimport { BufferAttribute, BufferGeometry } from 'three';\n\n@Component({\n\tselector: 'ngts-computed-attribute',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive #attribute *args=\"[bufferAttribute]\" [attach]=\"['attributes', name()]\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\n/**\n * Used exclusively as a child of a BufferGeometry.\n * Computes the BufferAttribute by calling the `compute` function\n * and attaches the attribute to the geometry.\n */\nexport class NgtsComputedAttribute {\n\tcompute = input.required<(geometry: BufferGeometry) => BufferAttribute>();\n\tname = input.required<string>();\n\toptions = input({} as Partial<NgtBufferAttribute>);\n\n\tbufferAttribute = new BufferAttribute(new Float32Array(0), 1);\n\tattributeRef = viewChild<ElementRef<BufferAttribute>>('attribute');\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst bufferAttribute = this.attributeRef()?.nativeElement;\n\t\t\tif (!bufferAttribute) return;\n\n\t\t\tconst localState = getLocalState(bufferAttribute);\n\t\t\tif (!localState) return;\n\n\t\t\tconst geometry = ((bufferAttribute as any).parent as BufferGeometry) ?? localState.parent();\n\n\t\t\tconst attribute = this.compute()(geometry);\n\t\t\tbufferAttribute.copy(attribute);\n\t\t});\n\t}\n}\n","import { REVISION } from 'three';\n\nexport function getVersion() {\n\treturn parseInt(REVISION.replace(/\\D+/g, ''));\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { applyProps, extend, getLocalState, NgtMesh, omit, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { AxesHelper, BoxGeometry, Euler, Mesh, MeshNormalMaterial, Object3D, Texture, Vector3 } from 'three';\nimport { DecalGeometry } from 'three-stdlib';\n\nexport interface NgtsDecalOptions extends Partial<NgtMesh> {\n\tpolygonOffsetFactor: number;\n\tdepthTest: boolean;\n\tdebug: boolean;\n\tmap?: Texture | null;\n}\n\nconst defaultOptions: NgtsDecalOptions = {\n\tpolygonOffsetFactor: -10,\n\tdebug: false,\n\tdepthTest: false,\n};\n\n@Component({\n\tselector: 'ngts-decal',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.transparent\" />\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.polygonOffset\" />\n\t\t\t<ngt-value [rawValue]=\"map()\" attach=\"material.map\" />\n\n\t\t\t<ng-content>\n\t\t\t\t<!-- we only want to pass through these material properties if they don't use a custom material -->\n\t\t\t\t<ngt-value [rawValue]=\"polygonOffsetFactor()\" attach=\"material.polygonOffsetFactor\" />\n\t\t\t\t<ngt-value [rawValue]=\"depthTest()\" attach=\"material.depthTest\" />\n\t\t\t</ng-content>\n\n\t\t\t@if (debug()) {\n\t\t\t\t<ngt-mesh #helper>\n\t\t\t\t\t<ngt-box-geometry />\n\t\t\t\t\t<ngt-mesh-normal-material [wireframe]=\"true\" />\n\t\t\t\t\t<ngt-axes-helper />\n\t\t\t\t</ngt-mesh>\n\t\t\t}\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsDecal {\n\tmesh = input<ElementRef<Mesh> | Mesh | null>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'debug',\n\t\t'map',\n\t\t'depthTest',\n\t\t'polygonOffsetFactor',\n\t\t'position',\n\t\t'scale',\n\t\t'rotation',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\thelperRef = viewChild<ElementRef<Mesh>>('helper');\n\n\tprotected map = pick(this.options, 'map');\n\tprotected depthTest = pick(this.options, 'depthTest');\n\tprotected polygonOffsetFactor = pick(this.options, 'polygonOffsetFactor');\n\tprotected debug = pick(this.options, 'debug');\n\tprivate position = pick(this.options, 'position');\n\tprivate rotation = pick(this.options, 'rotation');\n\tprivate scale = pick(this.options, 'scale');\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry, MeshNormalMaterial, AxesHelper });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst thisMesh = this.meshRef().nativeElement;\n\t\t\tconst localState = getLocalState(thisMesh);\n\t\t\tif (!localState) return;\n\n\t\t\tconst parent = resolveRef(this.mesh()) || localState.parent();\n\n\t\t\tif (parent && !(parent as Mesh).isMesh) {\n\t\t\t\tthrow new Error('<ngts-decal> must have a Mesh as parent or specify its \"mesh\" input');\n\t\t\t}\n\n\t\t\tif (!parent) return;\n\n\t\t\tconst parentLocalState = getLocalState(parent);\n\t\t\tif (!parentLocalState) return;\n\n\t\t\t// track parent's children\n\t\t\tconst parentNonObjects = parentLocalState.nonObjects();\n\t\t\tif (!parentNonObjects || !parentNonObjects.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if parent geometry doesn't have its attributes populated properly, we skip\n\t\t\tif (!parent.geometry?.attributes?.['position']) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst [position, rotation, scale] = [this.position(), this.rotation(), this.scale()];\n\t\t\tconst state = { position: new Vector3(), rotation: new Euler(), scale: new Vector3(1, 1, 1) };\n\n\t\t\tapplyProps(state, { position, scale });\n\n\t\t\t// zero out the parents matrix world for this operation\n\t\t\tconst matrixWorld = parent.matrixWorld.clone();\n\t\t\tparent.matrixWorld.identity();\n\n\t\t\tif (!rotation || typeof rotation === 'number') {\n\t\t\t\tconst o = new Object3D();\n\t\t\t\to.position.copy(state.position);\n\t\t\t\to.lookAt(parent.position);\n\t\t\t\tif (typeof rotation === 'number') o.rotateZ(rotation);\n\t\t\t\tapplyProps(state, { rotation: o.rotation });\n\t\t\t} else {\n\t\t\t\tapplyProps(state, { rotation });\n\t\t\t}\n\n\t\t\tthisMesh.geometry = new DecalGeometry(parent, state.position, state.rotation, state.scale);\n\t\t\tconst helper = this.helperRef()?.nativeElement;\n\t\t\tif (helper) {\n\t\t\t\tapplyProps(helper, state);\n\t\t\t\t// Prevent the helpers from blocking rays\n\t\t\t\thelper.traverse((child) => (child.raycast = () => null));\n\t\t\t}\n\n\t\t\t// Reset parents matrix-world\n\t\t\tparent.matrixWorld = matrixWorld;\n\n\t\t\tonCleanup(() => {\n\t\t\t\tthisMesh.geometry.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { BufferAttribute } from 'three';\n\n/**\n * NOTE: Sets `BufferAttribute.updateRange` since r159.\n */\nexport const setUpdateRange = (attribute: BufferAttribute, updateRange: { offset: number; count: number }): void => {\n\tif ('updateRanges' in attribute) {\n\t\t// attribute.updateRanges[0] = updateRange;\n\t\tattribute.addUpdateRange(updateRange.offset, updateRange.count);\n\t} else {\n\t\tObject.assign(attribute, { updateRange });\n\t}\n};\n\nexport const LinearEncoding = 3000;\nexport const sRGBEncoding = 3001;\n\n/**\n * NOTE: TextureEncoding was deprecated in r152, and removed in r162.\n */\nexport type TextureEncoding = typeof LinearEncoding | typeof sRGBEncoding;\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tTemplateRef,\n\tViewContainerRef,\n\tafterNextRender,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport {\n\tColorSpace,\n\tDepthTexture,\n\tFloatType,\n\tHalfFloatType,\n\tLinearFilter,\n\tMagnificationTextureFilter,\n\tMinificationTextureFilter,\n\tTextureDataType,\n\tWebGLRenderTarget,\n\tWrapping,\n} from 'three';\nimport { TextureEncoding } from './deprecated';\n\ninterface FBOSettings {\n\t/** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n\tsamples?: number;\n\t/** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n\tdepth?: boolean;\n\n\t// WebGLRenderTargetOptions => RenderTargetOptions\n\twrapS?: Wrapping | undefined;\n\twrapT?: Wrapping | undefined;\n\tmagFilter?: MagnificationTextureFilter | undefined;\n\tminFilter?: MinificationTextureFilter | undefined;\n\tformat?: number | undefined; // RGBAFormat;\n\ttype?: TextureDataType | undefined; // UnsignedByteType;\n\tanisotropy?: number | undefined; // 1;\n\tdepthBuffer?: boolean | undefined; // true;\n\tstencilBuffer?: boolean | undefined; // false;\n\tgenerateMipmaps?: boolean | undefined; // true;\n\tdepthTexture?: DepthTexture | undefined;\n\tencoding?: TextureEncoding | undefined;\n\tcolorSpace?: ColorSpace | undefined;\n}\n\nexport interface NgtsFBOParams {\n\twidth?: number | FBOSettings;\n\theight?: number;\n\tsettings?: FBOSettings;\n}\n\nexport function injectFBO(params: () => NgtsFBOParams = () => ({}), { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectFBO, injector, () => {\n\t\tconst store = injectStore();\n\t\tconst size = store.select('size');\n\t\tconst viewport = store.select('viewport');\n\n\t\tconst width = computed(() => {\n\t\t\tconst { width } = params();\n\t\t\treturn typeof width === 'number' ? width : size().width * viewport().dpr;\n\t\t});\n\t\tconst height = computed(() => {\n\t\t\tconst { height } = params();\n\t\t\treturn typeof height === 'number' ? height : size().height * viewport().dpr;\n\t\t});\n\t\tconst settings = computed(() => {\n\t\t\tconst { width, settings } = params();\n\t\t\tconst _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\t\t\tif (_settings.samples === undefined) {\n\t\t\t\t_settings.samples = 0;\n\t\t\t}\n\t\t\treturn _settings;\n\t\t});\n\n\t\tconst target = computed(() => {\n\t\t\tconst [{ samples = 0, depth, ...targetSettings }, _width, _height] = [\n\t\t\t\tuntracked(settings),\n\t\t\t\tuntracked(width),\n\t\t\t\tuntracked(height),\n\t\t\t];\n\t\t\tconst target = new WebGLRenderTarget(_width, _height, {\n\t\t\t\tminFilter: LinearFilter,\n\t\t\t\tmagFilter: LinearFilter,\n\t\t\t\ttype: HalfFloatType,\n\t\t\t\t...targetSettings,\n\t\t\t});\n\n\t\t\tif (depth) {\n\t\t\t\ttarget.depthTexture = new DepthTexture(_width, _height, FloatType);\n\t\t\t}\n\n\t\t\ttarget.samples = samples;\n\t\t\treturn target;\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [{ samples = 0 }, _width, _height, _target] = [settings(), width(), height(), target()];\n\t\t\t_target.setSize(_width, _height);\n\t\t\tif (samples) _target.samples = samples;\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => target().dispose());\n\n\t\treturn target;\n\t});\n}\n\n@Directive({ selector: 'ng-template[fbo]', standalone: true })\nexport class NgtsFBO {\n\tfbo = input({} as { width: NgtsFBOParams['width']; height: NgtsFBOParams['height'] } & FBOSettings);\n\n\tprivate template = inject(TemplateRef);\n\tprivate viewContainerRef = inject(ViewContainerRef);\n\n\tconstructor() {\n\t\tlet ref: EmbeddedViewRef<{ $implicit: ReturnType<typeof injectFBO> }>;\n\n\t\tconst fboTarget = injectFBO(() => {\n\t\t\tconst { width, height, ...settings } = this.fbo();\n\t\t\treturn { width, height, settings };\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\t// TODO: double check if we need untracked\n\t\t\tuntracked(() => {\n\t\t\t\tref = this.viewContainerRef.createEmbeddedView(this.template, { $implicit: fboTarget });\n\t\t\t\tref.detectChanges();\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(_: NgtsFBO, ctx: unknown): ctx is { $implicit: ReturnType<typeof injectFBO> } {\n\t\treturn true;\n\t}\n}\n","import { computed, Injector } from '@angular/core';\nimport { injectBeforeRender, injectStore, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { DepthFormat, DepthTexture, UnsignedShortType } from 'three';\nimport { injectFBO } from './fbo';\n\nexport function injectDepthBuffer(\n\tparams: () => { size?: number; frames?: number } = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectDepthBuffer, injector, () => {\n\t\tconst size = computed(() => params().size || 256);\n\t\tconst frames = computed(() => params().frames || Infinity);\n\n\t\tconst store = injectStore();\n\t\tconst width = store.select('size', 'width');\n\t\tconst height = store.select('size', 'height');\n\t\tconst dpr = store.select('viewport', 'dpr');\n\n\t\tconst w = computed(() => size() || width() * dpr());\n\t\tconst h = computed(() => size() || height() * dpr());\n\n\t\tconst depthConfig = computed(() => {\n\t\t\tconst depthTexture = new DepthTexture(w(), h());\n\t\t\tdepthTexture.format = DepthFormat;\n\t\t\tdepthTexture.type = UnsignedShortType;\n\t\t\treturn { depthTexture };\n\t\t});\n\n\t\tconst depthFBO = injectFBO(() => ({\n\t\t\twidth: w(),\n\t\t\theight: h(),\n\t\t\tsettings: depthConfig(),\n\t\t}));\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(({ gl, scene, camera }) => {\n\t\t\tif (frames() === Infinity || count < frames()) {\n\t\t\t\tgl.setRenderTarget(depthFBO());\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\n\t\treturn pick(depthFBO, 'depthTexture');\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, is, NgtGroup, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { DoubleSide, Group, Mesh, Object3D, PlaneGeometry, ShaderMaterial } from 'three';\n\nexport interface NgtsHTMLOptions extends Partial<NgtGroup> {\n\tocclude: ElementRef<Object3D>[] | Object3D[] | boolean | 'raycast' | 'blending';\n\ttransform: boolean;\n\tcastShadow: boolean;\n\treceiveShadow: boolean;\n}\n\nconst defaultHtmlOptions: NgtsHTMLOptions = {\n\tocclude: false,\n\ttransform: false,\n\tcastShadow: false,\n\treceiveShadow: false,\n};\n\n@Component({\n\tselector: 'ngts-html',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t@if (occlude() && !isRaycastOcclusion()) {\n\t\t\t\t<ngt-mesh #occlusionMesh [castShadow]=\"castShadow()\" [receiveShadow]=\"receiveShadow()\">\n\t\t\t\t\t<ng-content select=\"[data-occlusion-geometry]\">\n\t\t\t\t\t\t<ngt-plane-geometry #occlusionGeometry />\n\t\t\t\t\t</ng-content>\n\t\t\t\t\t<ng-content select=\"[data-occlusion-material]\">\n\t\t\t\t\t\t<ngt-shader-material\n\t\t\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t\t\t[vertexShader]=\"vertexShader()\"\n\t\t\t\t\t\t\t[fragmentShader]=\"fragmentShader()\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ng-content>\n\t\t\t\t</ngt-mesh>\n\t\t\t}\n\t\t</ngt-group>\n\n\t\t<ng-content />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsHTML {\n\toptions = input(defaultHtmlOptions, { transform: mergeInputs(defaultHtmlOptions) });\n\tparameters = omit(this.options, ['occlude', 'castShadow', 'receiveShadow', 'transform']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tocclusionMeshRef = viewChild<ElementRef<Mesh>>('occlusionMesh');\n\tocclusionGeometryRef = viewChild<ElementRef<PlaneGeometry>>('occlusionGeometry');\n\n\tocclude = pick(this.options, 'occlude');\n\ttransform = pick(this.options, 'transform');\n\tcastShadow = pick(this.options, 'castShadow');\n\treceiveShadow = pick(this.options, 'receiveShadow');\n\tscale = pick(this.options, 'scale');\n\n\tisRaycastOcclusion = computed(() => {\n\t\tconst occlude = this.occlude();\n\t\treturn (occlude && occlude !== 'blending') || (Array.isArray(occlude) && occlude.length && is.ref(occlude[0]));\n\t});\n\n\tprivate shaders = computed(() => {\n\t\tconst transform = this.transform();\n\t\tconst vertexShader = !transform\n\t\t\t? /* language=glsl glsl */ `\n /*\n This shader is from the THREE's SpriteMaterial.\n We need to turn the backing plane into a Sprite\n (make it always face the camera) if \"transfrom\"\n is false.\n */\n #include <common>\n\n void main() {\n vec2 center = vec2(0., 1.);\n float rotation = 0.0;\n\n // This is somewhat arbitrary, but it seems to work well\n // Need to figure out how to derive this dynamically if it even matters\n float size = 0.03;\n\n vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n vec2 scale;\n scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n\n gl_Position = projectionMatrix * mvPosition;\n }\n `\n\t\t\t: undefined;\n\n\t\tconst fragmentShader = /* language=glsl glsl */ `\n void main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `;\n\n\t\treturn { vertexShader, fragmentShader };\n\t});\n\n\tvertexShader = pick(this.shaders, 'vertexShader');\n\tfragmentShader = pick(this.shaders, 'fragmentShader');\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry, ShaderMaterial });\n\t}\n\n\tprotected readonly DoubleSide = DoubleSide;\n}\n","import { Camera, Matrix4, Object3D, OrthographicCamera, PerspectiveCamera, Raycaster, Vector2, Vector3 } from 'three';\n\nconst v1 = new Vector3();\nconst v2 = new Vector3();\nconst v3 = new Vector3();\nconst v4 = new Vector2();\n\nexport function defaultCalculatePosition(el: Object3D, camera: Camera, size: { width: number; height: number }) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tobjectPos.project(camera);\n\tconst widthHalf = size.width / 2;\n\tconst heightHalf = size.height / 2;\n\treturn [objectPos.x * widthHalf + widthHalf, -(objectPos.y * heightHalf) + heightHalf];\n}\n\nexport type CalculatePosition = typeof defaultCalculatePosition;\n\nexport function isObjectBehindCamera(el: Object3D, camera: Camera) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\tconst deltaCamObj = objectPos.sub(cameraPos);\n\tconst camDir = camera.getWorldDirection(v3);\n\treturn deltaCamObj.angleTo(camDir) > Math.PI / 2;\n}\n\nexport function isObjectVisible(el: Object3D, camera: Camera, raycaster: Raycaster, occlude: Object3D[]) {\n\tconst elPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst screenPos = elPos.clone();\n\tscreenPos.project(camera);\n\tv4.set(screenPos.x, screenPos.y);\n\traycaster.setFromCamera(v4, camera);\n\tconst intersects = raycaster.intersectObjects(occlude, true);\n\tif (intersects.length) {\n\t\tconst intersectionDistance = intersects[0].distance;\n\t\tconst pointDistance = elPos.distanceTo(raycaster.ray.origin);\n\t\treturn pointDistance < intersectionDistance;\n\t}\n\treturn true;\n}\n\nexport function objectScale(el: Object3D, camera: Camera) {\n\tif (camera instanceof OrthographicCamera) return camera.zoom;\n\tif (camera instanceof PerspectiveCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst vFOV = (camera.fov * Math.PI) / 180;\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst scaleFOV = 2 * Math.tan(vFOV / 2) * dist;\n\t\treturn 1 / scaleFOV;\n\t}\n\treturn 1;\n}\n\nexport function objectZIndex(el: Object3D, camera: Camera, zIndexRange: Array<number>) {\n\tif (camera instanceof PerspectiveCamera || camera instanceof OrthographicCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);\n\t\tconst B = zIndexRange[1] - A * camera.far;\n\t\treturn Math.round(A * dist + B);\n\t}\n\treturn undefined;\n}\n\nexport function epsilon(value: number) {\n\treturn Math.abs(value) < 1e-10 ? 0 : value;\n}\n\nexport function getCSSMatrix(matrix: Matrix4, multipliers: number[], prepend = '') {\n\tlet matrix3d = 'matrix3d(';\n\tfor (let i = 0; i !== 16; i++) {\n\t\tmatrix3d += epsilon(multipliers[i] * matrix.elements[i]) + (i !== 15 ? ',' : ')');\n\t}\n\treturn prepend + matrix3d;\n}\n\nexport const getCameraCSSMatrix = ((multipliers: number[]) => {\n\treturn (matrix: Matrix4) => getCSSMatrix(matrix, multipliers);\n})([1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1]);\n\nexport const getObjectCSSMatrix = ((scaleMultipliers: (n: number) => number[]) => {\n\treturn (matrix: Matrix4, factor: number) => getCSSMatrix(matrix, scaleMultipliers(factor), 'translate(-50%,-50%)');\n})((f: number) => [1 / f, 1 / f, 1 / f, 1, -1 / f, -1 / f, -1 / f, -1, 1 / f, 1 / f, 1 / f, 1, 1, 1, 1, 1]);\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\toutput,\n\tRenderer2,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { injectBeforeRender, NgtHTML, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Object3D, OrthographicCamera, Vector3 } from 'three';\nimport { NgtsHTML } from './html';\nimport {\n\tCalculatePosition,\n\tdefaultCalculatePosition,\n\tepsilon,\n\tgetCameraCSSMatrix,\n\tgetObjectCSSMatrix,\n\tisObjectBehindCamera,\n\tisObjectVisible,\n\tobjectScale,\n\tobjectZIndex,\n} from './utils';\n\ntype PointerEventsProperties =\n\t| 'auto'\n\t| 'none'\n\t| 'visiblePainted'\n\t| 'visibleFill'\n\t| 'visibleStroke'\n\t| 'visible'\n\t| 'painted'\n\t| 'fill'\n\t| 'stroke'\n\t| 'all'\n\t| 'inherit';\n\nexport interface NgtsHTMLContentOptions {\n\teps: number;\n\tzIndexRange: [number, number];\n\tcenter: boolean;\n\tprepend: boolean;\n\tfullscreen: boolean;\n\tcontainerClass: string;\n\tcontainerStyle: Partial<CSSStyleDeclaration>;\n\tpointerEvents: PointerEventsProperties;\n\tcalculatePosition: CalculatePosition;\n\tsprite: boolean;\n\tdistanceFactor?: number;\n\tparent?: HTMLElement | ElementRef<HTMLElement>;\n}\n\nconst defaultHtmlContentOptions: NgtsHTMLContentOptions = {\n\teps: 0.001,\n\tzIndexRange: [16777271, 0],\n\tpointerEvents: 'auto',\n\tcalculatePosition: defaultCalculatePosition,\n\tcontainerClass: '',\n\tcontainerStyle: {},\n\tcenter: false,\n\tprepend: false,\n\tfullscreen: false,\n\tsprite: false,\n};\n\n@Component({\n\tselector: '[ngtsHTMLContent]',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (html.transform()) {\n\t\t\t<div\n\t\t\t\t#transformOuter\n\t\t\t\tstyle=\"position: absolute; top: 0; left: 0; transform-style: preserve-3d; pointer-events: none;\"\n\t\t\t\t[style.width.px]=\"size().width\"\n\t\t\t\t[style.height.px]=\"size().height\"\n\t\t\t>\n\t\t\t\t<div #transformInner style=\"position: absolute\" [style.pointer-events]=\"pointerEvents()\">\n\t\t\t\t\t<div #container [class]=\"containerClass()\" [style]=\"containerStyle()\">\n\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"content\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div\n\t\t\t\t#container\n\t\t\t\tstyle=\"position:absolute\"\n\t\t\t\t[style.transform]=\"center() ? 'translate3d(-50%,-50%,0)' : 'none'\"\n\t\t\t\t[style.top]=\"fullscreen() ? -size().height / 2 + 'px' : 'unset'\"\n\t\t\t\t[style.left]=\"fullscreen() ? -size().width / 2 + 'px' : 'unset'\"\n\t\t\t\t[style.width]=\"fullscreen() ? size().width : 'unset'\"\n\t\t\t\t[style.height]=\"fullscreen() ? size().height : 'unset'\"\n\t\t\t\t[class]=\"containerClass()\"\n\t\t\t\t[style]=\"containerStyle()\"\n\t\t\t>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"content\" />\n\t\t\t</div>\n\t\t}\n\n\t\t<ng-template #content>\n\t\t\t<ng-content />\n\t\t</ng-template>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgTemplateOutlet],\n\thost: { 'data-ngts-html-content': '' },\n})\nexport class NgtsHTMLContent extends NgtHTML {\n\toptions = input(defaultHtmlContentOptions, {\n\t\ttransform: mergeInputs(defaultHtmlContentOptions),\n\t\talias: 'ngtsHTMLContent',\n\t});\n\toccluded = output<boolean>();\n\n\thtml = inject(NgtsHTML);\n\n\ttransformOuterRef = viewChild<ElementRef<HTMLDivElement>>('transformOuter');\n\ttransformInnerRef = viewChild<ElementRef<HTMLDivElement>>('transformInner');\n\tcontainerRef = viewChild<ElementRef<HTMLDivElement>>('container');\n\n\tprivate gl = this.store.select('gl');\n\tprivate events = this.store.select('events');\n\tprivate camera = this.store.select('camera');\n\tprivate scene = this.store.select('scene');\n\tprotected size = this.store.select('size');\n\n\tprivate parent = pick(this.options, 'parent');\n\tprivate zIndexRange = pick(this.options, 'zIndexRange');\n\tprivate calculatePosition = pick(this.options, 'calculatePosition');\n\tprivate prepend = pick(this.options, 'prepend');\n\tprotected center = pick(this.options, 'center');\n\tprotected fullscreen = pick(this.options, 'fullscreen');\n\tprotected pointerEvents = pick(this.options, 'pointerEvents');\n\tprotected containerClass = pick(this.options, 'containerClass');\n\tprotected containerStyle = pick(this.options, 'containerStyle');\n\n\tprivate target = computed(() => {\n\t\tconst parent = resolveRef(this.parent());\n\t\tif (parent) return parent;\n\t\treturn (this.events().connected || this.gl().domElement.parentNode) as HTMLElement;\n\t});\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst renderer = inject(Renderer2);\n\n\t\tlet isMeshSizeSet = false;\n\n\t\teffect(() => {\n\t\t\tconst [occlude, canvasEl, zIndexRange] = [\n\t\t\t\tthis.html.occlude(),\n\t\t\t\tuntracked(this.gl).domElement,\n\t\t\t\tuntracked(this.zIndexRange),\n\t\t\t];\n\n\t\t\tif (occlude && occlude === 'blending') {\n\t\t\t\trenderer.setStyle(canvasEl, 'z-index', `${Math.floor(zIndexRange[0] / 2)}`);\n\t\t\t\trenderer.setStyle(canvasEl, 'position', 'absolute');\n\t\t\t\trenderer.setStyle(canvasEl, 'pointer-events', 'none');\n\t\t\t} else {\n\t\t\t\trenderer.removeStyle(canvasEl, 'z-index');\n\t\t\t\trenderer.removeStyle(canvasEl, 'position');\n\t\t\t\trenderer.removeStyle(canvasEl, 'pointer-events');\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [transform, target, hostEl, prepend, scene, calculatePosition, group, size, camera] = [\n\t\t\t\tthis.html.transform(),\n\t\t\t\tthis.target(),\n\t\t\t\tthis.host.nativeElement,\n\t\t\t\tuntracked(this.prepend),\n\t\t\t\tuntracked(this.scene),\n\t\t\t\tuntracked(this.calculatePosition),\n\t\t\t\tuntracked(this.html.groupRef).nativeElement,\n\t\t\t\tuntracked(this.size),\n\t\t\t\tuntracked(this.camera),\n\t\t\t];\n\n\t\t\tscene.updateMatrixWorld();\n\t\t\trenderer.setStyle(hostEl, 'position', 'absolute');\n\t\t\trenderer.setStyle(hostEl, 'top', '0');\n\t\t\trenderer.setStyle(hostEl, 'left', '0');\n\n\t\t\tif (transform) {\n\t\t\t\trenderer.setStyle(hostEl, 'pointer-events', 'none');\n\t\t\t\trenderer.setStyle(hostEl, 'overflow', 'hidden');\n\t\t\t\trenderer.removeStyle(hostEl, 'transform');\n\t\t\t\trenderer.removeStyle(hostEl, 'transform-origin');\n\t\t\t} else {\n\t\t\t\tconst vec = calculatePosition(group, camera, size);\n\t\t\t\trenderer.setStyle(hostEl, 'transform', `translate3d(${vec[0]}px,${vec[1]}px,0)`);\n\t\t\t\trenderer.setStyle(hostEl, 'transform-origin', '0 0');\n\t\t\t\trenderer.removeStyle(hostEl, 'pointer-events');\n\t\t\t\trenderer.removeStyle(hostEl, 'overflow');\n\t\t\t}\n\n\t\t\tif (prepend) target.prepend(hostEl);\n\t\t\telse target.appendChild(hostEl);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tif (target) target.removeChild(hostEl);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst _ = [this.options(), this.html.options()];\n\t\t\tisMeshSizeSet = false;\n\t\t});\n\n\t\tlet visible = true;\n\t\tlet oldZoom = 0;\n\t\tlet oldPosition = [0, 0];\n\n\t\tinjectBeforeRender(({ camera: rootCamera }) => {\n\t\t\tconst [\n\t\t\t\thostEl,\n\t\t\t\ttransformOuterEl,\n\t\t\t\ttransformInnerEl,\n\t\t\t\tgroup,\n\t\t\t\tocclusionMesh,\n\t\t\t\tocclusionGeometry,\n\t\t\t\tisRaycastOcclusion,\n\t\t\t\t{ camera, size, viewport, raycaster, scene },\n\t\t\t\t{ calculatePosition, eps, zIndexRange, sprite, distanceFactor },\n\t\t\t\t{ transform, occlude, scale },\n\t\t\t] = [\n\t\t\t\tthis.host.nativeElement,\n\t\t\t\tthis.transformOuterRef()?.nativeElement,\n\t\t\t\tthis.transformInnerRef()?.nativeElement,\n\t\t\t\tthis.html.groupRef().nativeElement,\n\t\t\t\tthis.html.occlusionMeshRef()?.nativeElement,\n\t\t\t\tthis.html.occlusionGeometryRef()?.nativeElement,\n\t\t\t\tthis.html.isRaycastOcclusion(),\n\t\t\t\tthis.store.snapshot,\n\t\t\t\tthis.options(),\n\t\t\t\tthis.html.options(),\n\t\t\t];\n\n\t\t\tif (group) {\n\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\tgroup.updateWorldMatrix(true, false);\n\t\t\t\tconst vec = transform ? oldPosition : calculatePosition(group, camera, size);\n\n\t\t\t\tif (\n\t\t\t\t\ttransform ||\n\t\t\t\t\tMath.abs(oldZoom - camera.zoom) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[0] - vec[0]) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[1] - vec[1]) > eps\n\t\t\t\t) {\n\t\t\t\t\tconst isBehindCamera = isObjectBehindCamera(group, camera);\n\t\t\t\t\tlet raytraceTarget: null | undefined | boolean | Object3D[] = false;\n\n\t\t\t\t\tif (isRaycastOcclusion) {\n\t\t\t\t\t\tif (Array.isArray(occlude)) {\n\t\t\t\t\t\t\traytraceTarget = occlude.map((item) => resolveRef(item)) as Object3D[];\n\t\t\t\t\t\t} else if (occlude !== 'blending') {\n\t\t\t\t\t\t\traytraceTarget = [scene];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst previouslyVisible = visible;\n\t\t\t\t\tif (raytraceTarget) {\n\t\t\t\t\t\tconst isVisible = isObjectVisible(group, camera, raycaster, raytraceTarget);\n\t\t\t\t\t\tvisible = isVisible && !isBehindCamera;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvisible = !isBehindCamera;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (previouslyVisible !== visible) {\n\t\t\t\t\t\tif (this.occluded['listeners']) this.occluded.emit(!visible);\n\t\t\t\t\t\telse renderer.setStyle(hostEl, 'display', visible ? 'block' : 'none');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfRange = Math.floor(zIndexRange[0] / 2);\n\t\t\t\t\tconst zRange = occlude\n\t\t\t\t\t\t? isRaycastOcclusion //\n\t\t\t\t\t\t\t? [zIndexRange[0], halfRange]\n\t\t\t\t\t\t\t: [halfRange - 1, 0]\n\t\t\t\t\t\t: zIndexRange;\n\n\t\t\t\t\trenderer.setStyle(hostEl, 'z-index', `${objectZIndex(group, camera, zRange)}`);\n\n\t\t\t\t\tif (transform) {\n\t\t\t\t\t\tconst [widthHalf, heightHalf] = [size.width / 2, size.height / 2];\n\t\t\t\t\t\tconst fov = camera.projectionMatrix.elements[5] * heightHalf;\n\t\t\t\t\t\tconst { isOrthographicCamera, top, left, bottom, right } = camera as OrthographicCamera;\n\t\t\t\t\t\tconst cameraMatrix = getCameraCSSMatrix(camera.matrixWorldInverse);\n\t\t\t\t\t\tconst cameraTransform = isOrthographicCamera\n\t\t\t\t\t\t\t? `scale(${fov})translate(${epsilon(-(right + left) / 2)}px,${epsilon((top + bottom) / 2)}px)`\n\t\t\t\t\t\t\t: `translateZ(${fov}px)`;\n\t\t\t\t\t\tlet matrix = group.matrixWorld;\n\t\t\t\t\t\tif (sprite) {\n\t\t\t\t\t\t\tmatrix = camera.matrixWorldInverse.clone().transpose().copyPosition(matrix).scale(group.scale);\n\t\t\t\t\t\t\tmatrix.elements[3] = matrix.elements[7] = matrix.elements[11] = 0;\n\t\t\t\t\t\t\tmatrix.elements[15] = 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'width', size.width + 'px');\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'height', size.height + 'px');\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'perspective', isOrthographicCamera ? '' : `${fov}px`);\n\n\t\t\t\t\t\tif (transformOuterEl && transformInnerEl) {\n\t\t\t\t\t\t\trenderer.setStyle(\n\t\t\t\t\t\t\t\ttransformOuterEl,\n\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\t`${cameraTransform}${cameraMatrix}translate(${widthHalf}px,${heightHalf}px)`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\trenderer.setStyle(\n\t\t\t\t\t\t\t\ttransformInnerEl,\n\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\tgetObjectCSSMatrix(matrix, 1 / ((distanceFactor || 10) / 400)),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst scale = distanceFactor === undefined ? 1 : objectScale(group, camera) * distanceFactor;\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'transform', `translate3d(${vec[0]}px,${vec[1]}px,0) scale(${scale})`);\n\t\t\t\t\t}\n\t\t\t\t\toldPosition = vec;\n\t\t\t\t\toldZoom = camera.zoom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isRaycastOcclusion && occlusionMesh && !isMeshSizeSet) {\n\t\t\t\tif (transform) {\n\t\t\t\t\tif (transformOuterEl) {\n\t\t\t\t\t\tconst el = transformOuterEl.children[0];\n\n\t\t\t\t\t\tif (el?.clientWidth && el?.clientHeight) {\n\t\t\t\t\t\t\tconst { isOrthographicCamera } = camera as OrthographicCamera;\n\n\t\t\t\t\t\t\tif (isOrthographicCamera || occlusionGeometry) {\n\t\t\t\t\t\t\t\tif (scale) {\n\t\t\t\t\t\t\t\t\tif (!Array.isArray(scale)) {\n\t\t\t\t\t\t\t\t\t\tocclusionMesh.scale.setScalar(1 / (scale as number));\n\t\t\t\t\t\t\t\t\t} else if (scale instanceof Vector3) {\n\t\t\t\t\t\t\t\t\t\tocclusionMesh.scale.copy(scale.clone().divideScalar(1));\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tocclusionMesh.scale.set(1 / scale[0], 1 / scale[1], 1 / scale[2]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst ratio = (distanceFactor || 10) / 400;\n\t\t\t\t\t\t\t\tconst w = el.clientWidth * ratio;\n\t\t\t\t\t\t\t\tconst h = el.clientHeight * ratio;\n\n\t\t\t\t\t\t\t\tocclusionMesh.scale.set(w, h, 1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tisMeshSizeSet = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst ele = hostEl.children[0];\n\n\t\t\t\t\tif (ele?.clientWidth && ele?.clientHeight) {\n\t\t\t\t\t\tconst ratio = 1 / viewport.factor;\n\t\t\t\t\t\tconst w = ele.clientWidth * ratio;\n\t\t\t\t\t\tconst h = ele.clientHeight * ratio;\n\n\t\t\t\t\t\tocclusionMesh.scale.set(w, h, 1);\n\n\t\t\t\t\t\tisMeshSizeSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tocclusionMesh.lookAt(rootCamera.position);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, effect, ElementRef, inject, Injector, model, signal, WritableSignal } from '@angular/core';\nimport { addAfterEffect, addEffect, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Object3D } from 'three';\n\nexport function injectIntersect<TObject extends Object3D>(\n\tobject: () => ElementRef<TObject> | TObject | undefined | null,\n\t{ injector, source = signal(false) }: { injector?: Injector; source?: WritableSignal<boolean> } = {},\n) {\n\treturn assertInjector(injectIntersect, injector, () => {\n\t\tlet check = false;\n\t\tlet temp = false;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst obj = resolveRef(object());\n\t\t\tif (!obj) return;\n\n\t\t\t// Stamp out frustum check pre-emptively\n\t\t\tconst unsub1 = addEffect(() => {\n\t\t\t\tcheck = false;\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\t// If the object is inside the frustum three will call onRender\n\t\t\tconst oldOnRender = obj.onBeforeRender.bind(obj);\n\t\t\tobj.onBeforeRender = () => (check = true);\n\n\t\t\t// Compare the check value against the temp value, if it differs set state\n\t\t\tconst unsub2 = addAfterEffect(() => {\n\t\t\t\tif (check !== temp) source.set((temp = check));\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tonCleanup(() => {\n\t\t\t\tobj.onBeforeRender = oldOnRender;\n\t\t\t\tunsub1();\n\t\t\t\tunsub2();\n\t\t\t});\n\t\t});\n\n\t\treturn source.asReadonly();\n\t});\n}\n\n@Directive({ standalone: true, selector: '[intersect]' })\nexport class NgtsIntersect {\n\tintersect = model(false);\n\n\tconstructor() {\n\t\tconst host = inject<ElementRef<Object3D>>(ElementRef);\n\t\tinjectIntersect(() => host, { source: this.intersect });\n\t}\n}\n","import { afterNextRender, computed, Directive, ElementRef, model } from '@angular/core';\nimport { injectStore, resolveRef } from 'angular-three';\nimport { Camera, CubeCamera, Object3D, WebGLCubeRenderTarget } from 'three';\n\n@Directive({ selector: 'ngts-preload', standalone: true })\nexport class NgtsPreload {\n\tall = model<boolean>();\n\tscene = model<Object3D | ElementRef<Object3D>>();\n\tcamera = model<Camera | ElementRef<Camera>>();\n\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\tprivate defaultScene = this.store.select('scene');\n\tprivate defaultCamera = this.store.select('camera');\n\n\tprivate trueScene = computed(() => {\n\t\tconst scene = this.scene();\n\t\tif (scene) return resolveRef(scene);\n\t\treturn this.defaultScene();\n\t});\n\tprivate trueCamera = computed(() => {\n\t\tconst camera = this.camera();\n\t\tif (camera) return resolveRef(camera);\n\t\treturn this.defaultCamera();\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tconst invisible: Object3D[] = [];\n\n\t\t\tconst [all, scene, camera, gl] = [this.all(), this.trueScene(), this.trueCamera(), this.gl()];\n\n\t\t\tif (!scene || !camera) return;\n\n\t\t\tif (all) {\n\t\t\t\t// Find all invisible objects, store and then flip them\n\t\t\t\tscene.traverse((object) => {\n\t\t\t\t\tif (!object.visible) {\n\t\t\t\t\t\tinvisible.push(object);\n\t\t\t\t\t\tobject.visible = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Now compile the scene\n\t\t\tgl.compile(scene, camera);\n\n\t\t\t// And for good measure, hit it with a cube camera\n\t\t\tconst cubeRenderTarget = new WebGLCubeRenderTarget(128);\n\t\t\tconst cubeCamera = new CubeCamera(0.01, 100000, cubeRenderTarget);\n\t\t\tcubeCamera.update(gl, scene);\n\t\t\tcubeRenderTarget.dispose();\n\n\t\t\t// Flips these objects back\n\t\t\tinvisible.forEach((object) => (object.visible = false));\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, getLocalState, NgtGroup, omit, pick, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BufferGeometry, Color, Group, InstancedBufferAttribute, InstancedMesh, Mesh, Object3D, Vector3 } from 'three';\nimport { MeshSurfaceSampler } from 'three-stdlib';\n\ninterface SamplePayload {\n\t/**\n\t * The position of the sample.\n\t */\n\tposition: Vector3;\n\t/**\n\t * The normal of the mesh at the sampled position.\n\t */\n\tnormal: Vector3;\n\t/**\n\t * The vertex color of the mesh at the sampled position.\n\t */\n\tcolor: Color;\n}\n\nexport type TransformFn = (payload: TransformPayload, i: number) => void;\n\ninterface TransformPayload extends SamplePayload {\n\t/**\n\t * The dummy object used to transform each instance.\n\t * This object's matrix will be updated after transforming & it will be used\n\t * to set the instance's matrix.\n\t */\n\tdummy: Object3D;\n\t/**\n\t * The mesh that's initially passed to the sampler.\n\t * Use this if you need to apply transforms from your mesh to your instances\n\t * or if you need to grab attributes from the geometry.\n\t */\n\tsampledMesh: Mesh;\n}\n\nexport function injectSurfaceSampler(\n\tmesh: () => ElementRef<Mesh> | Mesh | null | undefined,\n\toptions: () => {\n\t\tcount?: number;\n\t\ttransform?: TransformFn;\n\t\tweight?: string;\n\t\tinstanceMesh?: ElementRef<InstancedMesh> | InstancedMesh | null;\n\t} = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectSurfaceSampler, injector, () => {\n\t\tconst initialBufferAttribute = (() => {\n\t\t\tconst arr = Array.from({ length: options().count ?? 16 }, () => [\n\t\t\t\t1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,\n\t\t\t]).flat();\n\t\t\treturn new InstancedBufferAttribute(Float32Array.from(arr), 16);\n\t\t})();\n\n\t\treturn computed(() => {\n\t\t\tconst currentMesh = resolveRef(mesh());\n\t\t\tif (!currentMesh) return initialBufferAttribute;\n\n\t\t\tconst localState = getLocalState(currentMesh);\n\t\t\tif (!localState) return initialBufferAttribute;\n\n\t\t\tconst nonObjects = localState.nonObjects();\n\t\t\tif (\n\t\t\t\t!nonObjects ||\n\t\t\t\t!nonObjects.length ||\n\t\t\t\tnonObjects.every((nonObject) => !(nonObject as BufferGeometry).isBufferGeometry)\n\t\t\t) {\n\t\t\t\treturn initialBufferAttribute;\n\t\t\t}\n\n\t\t\tconst sampler = new MeshSurfaceSampler(currentMesh);\n\t\t\tconst { weight, count = 16, transform, instanceMesh } = options();\n\n\t\t\tif (weight) {\n\t\t\t\tsampler.setWeightAttribute(weight);\n\t\t\t}\n\n\t\t\tsampler.build();\n\n\t\t\tconst position = new Vector3();\n\t\t\tconst normal = new Vector3();\n\t\t\tconst color = new Color();\n\t\t\tconst dummy = new Object3D();\n\t\t\tconst instance = resolveRef(instanceMesh);\n\n\t\t\tcurrentMesh.updateMatrixWorld(true);\n\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tsampler.sample(position, normal, color);\n\n\t\t\t\tif (typeof transform === 'function') {\n\t\t\t\t\ttransform({ dummy, sampledMesh: currentMesh, position, normal, color }, i);\n\t\t\t\t} else {\n\t\t\t\t\tdummy.position.copy(position);\n\t\t\t\t}\n\n\t\t\t\tdummy.updateMatrix();\n\n\t\t\t\tif (instance) {\n\t\t\t\t\tinstance.setMatrixAt(i, dummy.matrix);\n\t\t\t\t}\n\n\t\t\t\tdummy.matrix.toArray(initialBufferAttribute.array, i * 16);\n\t\t\t}\n\n\t\t\tif (instance) {\n\t\t\t\tcheckUpdate(instance.instanceMatrix);\n\t\t\t}\n\n\t\t\tcheckUpdate(initialBufferAttribute);\n\n\t\t\treturn new InstancedBufferAttribute(initialBufferAttribute.array, initialBufferAttribute.itemSize).copy(\n\t\t\t\tinitialBufferAttribute,\n\t\t\t);\n\t\t});\n\t});\n}\n\nexport interface NgtsSamplerOptions extends Partial<NgtGroup> {\n\t/**\n\t * The NAME of the weight attribute to use when sampling.\n\t *\n\t * @see https://threejs.org/docs/#examples/en/math/MeshSurfaceSampler.setWeightAttribute\n\t */\n\tweight?: string;\n\t/**\n\t * Transformation to be applied to each instance.\n\t * Receives a dummy object3D with all the sampled data ( @see TransformPayload ).\n\t * It should mutate `transformPayload.dummy`.\n\t *\n\t * @see ( @todo add link to example )\n\t *\n\t * There is no need to update the dummy's matrix\n\t */\n\ttransform?: TransformFn;\n\tcount: number;\n}\n\nconst defaultOptions: NgtsSamplerOptions = {\n\tcount: 16,\n};\n\n@Component({\n\tselector: 'ngts-sampler',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSampler {\n\tmesh = input<ElementRef<Mesh> | Mesh | null>(null);\n\tinstances = input<ElementRef<InstancedMesh> | InstancedMesh | null>(null);\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['weight', 'transform', 'count']);\n\n\t// NOTE: this could have been a viewChild.required, but we need to _try_ to consume\n\t// this Signal earlier than when a viewChild.required would resolve.\n\tgroupRef = viewChild<ElementRef<Group>>('group');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst sampleState = computed(() => {\n\t\t\tconst group = this.groupRef()?.nativeElement;\n\t\t\tconst localState = getLocalState(group);\n\t\t\tif (!localState) return { mesh: null, instanced: null };\n\n\t\t\tconst [mesh, instances] = [resolveRef(this.mesh()), resolveRef(this.instances())];\n\t\t\tconst objects = localState.objects();\n\n\t\t\treturn {\n\t\t\t\tmesh: mesh ?? (objects.find((c) => c.type === 'Mesh') as Mesh),\n\t\t\t\tinstanced:\n\t\t\t\t\tinstances ?? (objects.find((c) => !!Object.getOwnPropertyDescriptor(c, 'instanceMatrix')) as InstancedMesh),\n\t\t\t};\n\t\t});\n\n\t\tconst meshToSample = pick(sampleState, 'mesh');\n\t\tconst instancedToSample = pick(sampleState, 'instanced');\n\n\t\t// NOTE: because injectSurfaceSampler returns a computed, we need to consume\n\t\t// this computed in a Reactive Context (an effect) to ensure the inner logic of\n\t\t// injectSurfaceSampler is run properly.\n\t\tconst sampler = injectSurfaceSampler(meshToSample, () => ({\n\t\t\tcount: this.options().count,\n\t\t\ttransform: this.options().transform,\n\t\t\tweight: this.options().weight,\n\t\t\tinstanceMesh: instancedToSample(),\n\t\t}));\n\t\teffect(sampler);\n\t}\n}\n","import { NgtSize } from 'angular-three';\nimport { Camera, Vector3 } from 'three';\n\nconst tV0 = new Vector3();\nconst tV1 = new Vector3();\nconst tV2 = new Vector3();\n\nfunction getPoint2(point3: Vector3, camera: Camera, size: NgtSize) {\n\tconst widthHalf = size.width / 2;\n\tconst heightHalf = size.height / 2;\n\tcamera.updateMatrixWorld(false);\n\tconst vector = point3.project(camera);\n\tvector.x = vector.x * widthHalf + widthHalf;\n\tvector.y = -(vector.y * heightHalf) + heightHalf;\n\treturn vector;\n}\n\nfunction getPoint3(point2: Vector3, camera: Camera, size: NgtSize, zValue: number = 1) {\n\tconst vector = tV0.set((point2.x / size.width) * 2 - 1, -(point2.y / size.height) * 2 + 1, zValue);\n\tvector.unproject(camera);\n\treturn vector;\n}\n\nexport function calculateScaleFactor(point3: Vector3, radiusPx: number, camera: Camera, size: NgtSize) {\n\tconst point2 = getPoint2(tV2.copy(point3), camera, size);\n\tlet scale = 0;\n\tfor (let i = 0; i < 2; ++i) {\n\t\tconst point2off = tV1.copy(point2).setComponent(i, point2.getComponent(i) + radiusPx);\n\t\tconst point3off = getPoint3(point2off, camera, size, point2off.z);\n\t\tscale = Math.max(scale, point3.distanceTo(point3off));\n\t}\n\treturn scale;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
@@ -131,7 +131,7 @@ export interface NgtsMeshPortalMaterialOptions extends Partial<NgtShaderMaterial
131
131
  export declare class NgtsMeshPortalMaterial {
132
132
  attach: import("@angular/core").InputSignal<NgtAttachable>;
133
133
  options: import("@angular/core").InputSignalWithTransform<NgtsMeshPortalMaterialOptions, "" | Partial<NgtsMeshPortalMaterialOptions>>;
134
- parameters: import("@angular/core").Signal<Omit<NgtsMeshPortalMaterialOptions, "resolution" | "blur" | "worldUnits" | "eventPriority" | "renderPriority" | "events">>;
134
+ parameters: import("@angular/core").Signal<Omit<NgtsMeshPortalMaterialOptions, "resolution" | "blur" | "events" | "worldUnits" | "eventPriority" | "renderPriority">>;
135
135
  blur: import("@angular/core").Signal<number>;
136
136
  eventPriority: import("@angular/core").Signal<number>;
137
137
  renderPriority: import("@angular/core").Signal<number>;
@@ -24,7 +24,7 @@ export declare class NgtsMeshRefractionMaterial {
24
24
  private fastChroma;
25
25
  aberrationStrength: import("@angular/core").Signal<number>;
26
26
  materialRef: import("@angular/core").Signal<ElementRef<import("three").ShaderMaterial & {
27
- [name: string]: number | boolean | any[] | import("three").Color | Texture | import("three").Vector2 | import("three").Vector3 | import("three").Quaternion | import("three").Matrix4 | import("three").Matrix3 | import("three").Vector4 | CubeTexture | Int32Array | Float32Array | null;
27
+ [name: string]: number | boolean | any[] | import("three").Color | Texture | import("three").Vector3 | import("three").Quaternion | import("three").Matrix4 | import("three").Matrix3 | import("three").Vector2 | import("three").Vector4 | CubeTexture | Int32Array | Float32Array | null;
28
28
  }> | undefined>;
29
29
  private store;
30
30
  private size;
@@ -34,7 +34,7 @@ export declare class NgtsMeshRefractionMaterial {
34
34
  }>;
35
35
  private defineKeys;
36
36
  material: import("@angular/core").Signal<import("three").ShaderMaterial & {
37
- [name: string]: number | boolean | any[] | import("three").Color | Texture | import("three").Vector2 | import("three").Vector3 | import("three").Quaternion | import("three").Matrix4 | import("three").Matrix3 | import("three").Vector4 | CubeTexture | Int32Array | Float32Array | null;
37
+ [name: string]: number | boolean | any[] | import("three").Color | Texture | import("three").Vector3 | import("three").Quaternion | import("three").Matrix4 | import("three").Matrix3 | import("three").Vector2 | import("three").Vector4 | CubeTexture | Int32Array | Float32Array | null;
38
38
  }>;
39
39
  constructor();
40
40
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsMeshRefractionMaterial, never>;
@@ -1,17 +1,41 @@
1
- import { ElementRef, Injector } from '@angular/core';
1
+ import { ElementRef, Injector, Signal } from '@angular/core';
2
2
  import { AnimationAction, AnimationClip, AnimationMixer, Object3D } from 'three';
3
- export type NgtsAnimation<TAnimation extends AnimationClip = AnimationClip> = TAnimation[] | {
3
+ /**
4
+ * name: any to allow consumers to pass in type-safe animation clips
5
+ */
6
+ type NgtsAnimationClipWithoutName = Omit<AnimationClip, 'name'> & {
7
+ name: any;
8
+ };
9
+ export type NgtsAnimationClip = Omit<NgtsAnimationClipWithoutName, 'clone'> & {
10
+ clone: () => NgtsAnimationClip;
11
+ };
12
+ export type NgtsAnimationClips<TAnimationNames extends string> = {
13
+ [Name in TAnimationNames]: Omit<NgtsAnimationClip, 'name'> & {
14
+ name: Name;
15
+ };
16
+ }[TAnimationNames];
17
+ export type NgtsAnimationApi<T extends NgtsAnimationClip> = {
18
+ ready: Signal<boolean>;
19
+ clips: T[];
20
+ mixer: AnimationMixer;
21
+ names: T['name'][];
22
+ actions: {
23
+ [key in T['name']]: AnimationAction | null;
24
+ };
25
+ };
26
+ export type NgtsAnimation<TAnimation extends NgtsAnimationClip = NgtsAnimationClip> = TAnimation[] | {
4
27
  animations: TAnimation[];
5
28
  };
6
29
  /**
7
30
  * Use afterNextRender
8
31
  */
9
- export declare function injectAnimations<TAnimation extends AnimationClip>(animations: () => NgtsAnimation<TAnimation> | undefined | null, object: ElementRef<Object3D> | Object3D | (() => ElementRef<Object3D> | Object3D | undefined | null), { injector }?: {
32
+ export declare function injectAnimations<TAnimation extends NgtsAnimationClip>(animations: () => NgtsAnimation<TAnimation> | undefined | null, object: ElementRef<Object3D> | Object3D | (() => ElementRef<Object3D> | Object3D | undefined | null), { injector }?: {
10
33
  injector?: Injector;
11
34
  }): {
12
- clips: AnimationClip[];
35
+ clips: TAnimation[];
13
36
  mixer: AnimationMixer;
14
37
  actions: { [key in TAnimation["name"]]: AnimationAction | null; };
15
38
  names: TAnimation["name"][];
16
39
  ready: import("@angular/core").WritableSignal<boolean>;
17
40
  };
41
+ export {};
@@ -5,9 +5,8 @@ export declare class NgtsComputedAttribute {
5
5
  compute: import("@angular/core").InputSignal<(geometry: BufferGeometry) => BufferAttribute>;
6
6
  name: import("@angular/core").InputSignal<string>;
7
7
  options: import("@angular/core").InputSignal<Partial<import("angular-three").NgtExtendedColors<import("angular-three").NgtOverwrite<Partial<{
8
- clone: () => BufferAttribute;
9
- copy: (source: BufferAttribute) => BufferAttribute;
10
8
  name: string;
9
+ clone: () => BufferAttribute;
11
10
  toJSON: () => import("three").BufferAttributeJSON;
12
11
  array: import("three").TypedArray;
13
12
  itemSize: number;
@@ -27,6 +26,7 @@ export declare class NgtsComputedAttribute {
27
26
  setUsage: (usage: import("three").Usage) => BufferAttribute;
28
27
  addUpdateRange: (start: number, count: number) => void;
29
28
  clearUpdateRanges: () => void;
29
+ copy: (source: BufferAttribute) => BufferAttribute;
30
30
  copyAt: (index1: number, attribute: BufferAttribute, index2: number) => BufferAttribute;
31
31
  copyArray: (array: ArrayLike<number>) => BufferAttribute;
32
32
  applyMatrix3: (m: import("three").Matrix3) => BufferAttribute;
@@ -14,7 +14,7 @@ export declare class NgtsHTML {
14
14
  groupRef: import("@angular/core").Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
15
15
  occlusionMeshRef: import("@angular/core").Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>> | undefined>;
16
16
  occlusionGeometryRef: import("@angular/core").Signal<ElementRef<PlaneGeometry> | undefined>;
17
- occlude: import("@angular/core").Signal<boolean | Object3D<import("three").Object3DEventMap>[] | "raycast" | ElementRef<Object3D<import("three").Object3DEventMap>>[] | "blending">;
17
+ occlude: import("@angular/core").Signal<boolean | "raycast" | Object3D<import("three").Object3DEventMap>[] | ElementRef<Object3D<import("three").Object3DEventMap>>[] | "blending">;
18
18
  transform: import("@angular/core").Signal<boolean>;
19
19
  castShadow: import("@angular/core").Signal<boolean>;
20
20
  receiveShadow: import("@angular/core").Signal<boolean>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three-soba",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -69,12 +69,6 @@
69
69
  "esm": "./esm2022/gizmos/angular-three-soba-gizmos.mjs",
70
70
  "default": "./fesm2022/angular-three-soba-gizmos.mjs"
71
71
  },
72
- "./cameras": {
73
- "types": "./cameras/index.d.ts",
74
- "esm2022": "./esm2022/cameras/angular-three-soba-cameras.mjs",
75
- "esm": "./esm2022/cameras/angular-three-soba-cameras.mjs",
76
- "default": "./fesm2022/angular-three-soba-cameras.mjs"
77
- },
78
72
  "./controls": {
79
73
  "types": "./controls/index.d.ts",
80
74
  "esm2022": "./esm2022/controls/angular-three-soba-controls.mjs",
@@ -87,6 +81,12 @@
87
81
  "esm": "./esm2022/materials/angular-three-soba-materials.mjs",
88
82
  "default": "./fesm2022/angular-three-soba-materials.mjs"
89
83
  },
84
+ "./cameras": {
85
+ "types": "./cameras/index.d.ts",
86
+ "esm2022": "./esm2022/cameras/angular-three-soba-cameras.mjs",
87
+ "esm": "./esm2022/cameras/angular-three-soba-cameras.mjs",
88
+ "default": "./fesm2022/angular-three-soba-cameras.mjs"
89
+ },
90
90
  "./performances": {
91
91
  "types": "./performances/index.d.ts",
92
92
  "esm2022": "./esm2022/performances/angular-three-soba-performances.mjs",