{"version":3,"file":"js/app.a7e72fa1.js","mappings":"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S,GAAI,mBACJ+qB,QAAS,eACTttB,MAAO,CACLkxE,QAAS,GACTd,SAAU79D,EAAKwrF,IAAI,CACnBhuE,MAAO,EACPkN,OAAQ,EACRnrB,MAAO,MACP4d,KAAM,gBACNwuE,OAAQ,CACV,EACA90F,SAAU,EAAE,EAEf,EAEJ,CAEL,CACF,CACF,CAoBA,IAAMgzF,GAAY,CAChB,OAAU,CAAMwB,GAAqB,CAC/B95F,KAAM,UACNg6F,MAAOK,EACP93C,QAAS+3C,EACTL,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,UACNg6F,MAAOO,EACPh4C,QAASi4C,EACTP,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,UACNg6F,MAAOS,EACPl4C,QAASm4C,EACTT,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,UACNg6F,MAAOW,EACPp4C,QAASq4C,EACTX,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,UACNg6F,MAAOa,EACPt4C,QAASu4C,EACTb,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,UACNg6F,MAAOe,EACPx4C,QAASy4C,EACTf,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,UACNg6F,MAAOiB,EACP14C,QAAS24C,EACTjB,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,UACNg6F,MAAOmB,EACP54C,QAAS64C,EACTnB,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,UACNg6F,MAAOqB,EACP94C,QAAS+4C,EACTrB,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuB,EACPh5C,QAASi5C,EACTvB,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyB,EACPl5C,QAASm5C,EACTzB,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2B,EACPp5C,QAASq5C,EACT3B,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6B,EACPt5C,QAASu5C,EACT7B,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+B,EACPx5C,QAASy5C,EACT/B,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiC,EACP15C,QAAS25C,EACTjC,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmC,EACP55C,QAAS65C,EACTnC,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqC,EACP95C,QAAS+5C,EACTrC,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuC,EACPh6C,QAASi6C,EACTvC,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyC,GACPl6C,QAASm6C,GACTzC,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2C,GACPp6C,QAASq6C,GACT3C,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6C,GACPt6C,QAASu6C,GACT7C,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+C,GACPx6C,QAASy6C,GACT/C,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiD,GACP16C,QAAS26C,GACTjD,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmD,GACP56C,QAAS66C,GACTnD,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqD,GACP96C,QAAS+6C,GACTrD,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuD,GACPh7C,QAASi7C,GACTvD,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyD,GACPl7C,QAASm7C,GACTzD,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2D,GACPp7C,QAASq7C,GACT3D,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6D,GACPt7C,QAASu7C,GACT7D,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+D,GACPx7C,QAASy7C,GACT/D,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiE,GACP17C,QAAS27C,GACTjE,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmE,GACP57C,QAAS67C,GACTnE,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqE,GACP97C,QAAS+7C,GACTrE,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuE,GACPh8C,QAASi8C,GACTvE,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyE,GACPl8C,QAASm8C,GACTzE,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2E,GACPp8C,QAASq8C,GACT3E,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6E,GACPt8C,QAASu8C,GACT7E,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+E,GACPx8C,QAASy8C,GACT/E,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiF,GACP18C,QAAS28C,GACTjF,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmF,GACP58C,QAAS68C,GACTnF,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqF,GACP98C,QAAS+8C,GACTrF,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuF,GACPh9C,QAASi9C,GACTvF,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyF,GACPl9C,QAASm9C,GACTzF,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2F,GACPp9C,QAASq9C,GACT3F,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6F,GACPt9C,QAASu9C,GACT7F,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+F,GACPx9C,QAASy9C,GACT/F,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiG,GACP19C,QAAS29C,GACTjG,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmG,GACP59C,QAAS69C,GACTnG,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqG,GACP99C,QAAS+9C,GACTrG,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuG,GACPh+C,QAASi+C,GACTvG,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyG,GACPl+C,QAASm+C,GACTzG,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2G,GACPp+C,QAASq+C,GACT3G,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6G,GACPt+C,QAASu+C,GACT7G,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+G,GACPx+C,QAASy+C,GACT/G,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiH,GACP1+C,QAAS2+C,GACTjH,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmH,GACP5+C,QAAS6+C,GACTnH,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqH,GACP9+C,QAAS++C,GACTrH,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuH,GACPh/C,QAASi/C,GACTvH,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyH,GACPl/C,QAASm/C,GACTzH,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2H,GACPp/C,QAASq/C,GACT3H,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6H,GACPt/C,QAASu/C,GACT7H,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+H,GACPx/C,QAASy/C,GACT/H,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiI,GACP1/C,QAAS2/C,GACTjI,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmI,GACP5/C,QAAS6/C,GACTnI,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqI,GACP9/C,QAAS+/C,GACTrI,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuI,GACPhgD,QAASigD,GACTvI,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyI,GACPlgD,QAASmgD,GACTzI,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2I,GACPpgD,QAASqgD,GACT3I,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6I,GACPtgD,QAASugD,GACT7I,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+I,GACPxgD,QAASygD,GACT/I,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiJ,GACP1gD,QAAS2gD,GACTjJ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmJ,GACP5gD,QAAS6gD,GACTnJ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqJ,GACP9gD,QAAS+gD,GACTrJ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuJ,GACPhhD,QAASihD,GACTvJ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyJ,GACPlhD,QAASmhD,GACTzJ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2J,GACPphD,QAASqhD,GACT3J,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6J,GACPthD,QAASuhD,GACT7J,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+J,GACPxhD,QAASyhD,GACT/J,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiK,GACP1hD,QAAS2hD,GACTjK,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmK,GACP5hD,QAAS6hD,GACTnK,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqK,GACP9hD,QAAS+hD,GACTrK,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuK,GACPhiD,QAASiiD,GACTvK,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyK,GACPliD,QAASmiD,GACTzK,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2K,GACPpiD,QAASqiD,GACT3K,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6K,GACPtiD,QAASuiD,GACT7K,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+K,GACPxiD,QAASyiD,GACT/K,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiL,GACP1iD,QAAS2iD,GACTjL,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmL,GACP5iD,QAAS6iD,GACTnL,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqL,GACP9iD,QAAS+iD,GACTrL,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuL,GACPhjD,QAASijD,GACTvL,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyL,GACPljD,QAASmjD,GACTzL,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO2L,GACPpjD,QAASqjD,GACT3L,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6L,GACPtjD,QAASujD,GACT7L,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+L,GACPxjD,QAASyjD,GACT/L,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOiM,GACP1jD,QAAS2jD,GACTjM,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOmM,GACP5jD,QAAS6jD,GACTnM,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOqM,GACP9jD,QAAS+jD,GACTrM,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOuM,GACPhkD,QAASikD,GACTvM,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAOyM,GACPlkD,QAASmkD,GACTzM,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2M,GACPpkD,QAASqkD,GACT3M,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6M,GACPtkD,QAASukD,GACT7M,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+M,GACPxkD,QAASykD,GACT/M,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiN,GACP1kD,QAAS2kD,GACTjN,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmN,GACP5kD,QAAS6kD,GACTnN,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqN,GACP9kD,QAAS+kD,GACTrN,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuN,GACPhlD,QAASilD,GACTvN,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyN,GACPllD,QAASmlD,GACTzN,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2N,GACPplD,QAASqlD,GACT3N,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6N,GACPtlD,QAASulD,GACT7N,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+N,GACPxlD,QAASylD,GACT/N,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiO,GACP1lD,QAAS2lD,GACTjO,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmO,GACP5lD,QAAS6lD,GACTnO,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqO,GACP9lD,QAAS+lD,GACTrO,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuO,GACPhmD,QAASimD,GACTvO,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyO,GACPlmD,QAASmmD,GACTzO,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2O,GACPpmD,QAASqmD,GACT3O,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6O,GACPtmD,QAASumD,GACT7O,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+O,GACPxmD,QAASymD,GACT/O,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiP,GACP1mD,QAAS2mD,GACTjP,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmP,GACP5mD,QAAS6mD,GACTnP,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqP,GACP9mD,QAAS+mD,GACTrP,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuP,GACPhnD,QAASinD,GACTvP,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyP,GACPlnD,QAASmnD,GACTzP,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2P,GACPpnD,QAASqnD,GACT3P,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6P,GACPtnD,QAASunD,GACT7P,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+P,GACPxnD,QAASynD,GACT/P,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiQ,GACP1nD,QAAS2nD,GACTjQ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmQ,GACP5nD,QAAS6nD,GACTnQ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqQ,GACP9nD,QAAS+nD,GACTrQ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuQ,GACPhoD,QAASioD,GACTvQ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyQ,GACPloD,QAASmoD,GACTzQ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2Q,GACPpoD,QAASqoD,GACT3Q,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6Q,GACPtoD,QAASuoD,GACT7Q,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+Q,GACPxoD,QAASyoD,GACT/Q,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiR,GACP1oD,QAAS2oD,GACTjR,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmR,GACP5oD,QAAS6oD,GACTnR,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqR,GACP9oD,QAAS+oD,GACTrR,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuR,GACPhpD,QAASipD,GACTvR,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyR,GACPlpD,QAASmpD,GACTzR,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2R,GACPppD,QAASqpD,GACT3R,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6R,GACPtpD,QAASupD,GACT7R,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+R,GACPxpD,QAASypD,GACT/R,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiS,GACP1pD,QAAS2pD,GACTjS,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmS,GACP5pD,QAAS6pD,GACTnS,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqS,GACP9pD,QAAS+pD,GACTrS,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuS,GACPhqD,QAASiqD,GACTvS,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyS,GACPlqD,QAASmqD,GACTzS,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2S,GACPpqD,QAASqqD,GACT3S,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6S,GACPtqD,QAASuqD,GACT7S,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+S,GACPxqD,QAASyqD,GACT/S,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiT,GACP1qD,QAAS2qD,GACTjT,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmT,GACP5qD,QAAS6qD,GACTnT,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqT,GACP9qD,QAAS+qD,GACTrT,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuT,GACPhrD,QAASirD,GACTvT,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyT,GACPlrD,QAASmrD,GACTzT,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2T,GACPprD,QAASqrD,GACT3T,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6T,GACPtrD,QAASurD,GACT7T,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+T,GACPxrD,QAASyrD,GACT/T,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiU,GACP1rD,QAAS2rD,GACTjU,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmU,GACP5rD,QAAS6rD,GACTnU,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqU,GACP9rD,QAAS+rD,GACTrU,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuU,GACPhsD,QAASisD,GACTvU,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyU,GACPlsD,QAASmsD,GACTzU,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2U,GACPpsD,QAASqsD,GACT3U,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6U,GACPtsD,QAASusD,GACT7U,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+U,GACPxsD,QAASysD,GACT/U,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiV,GACP1sD,QAAS2sD,GACTjV,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmV,GACP5sD,QAAS6sD,GACTnV,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqV,GACP9sD,QAAS+sD,GACTrV,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuV,GACPhtD,QAASitD,GACTvV,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyV,GACPltD,QAASmtD,GACTzV,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2V,GACPptD,QAASqtD,GACT3V,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6V,GACPttD,QAASutD,GACT7V,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+V,GACPxtD,QAASytD,GACT/V,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiW,GACP1tD,QAAS2tD,GACTjW,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmW,GACP5tD,QAAS6tD,GACTnW,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqW,GACP9tD,QAAS+tD,GACTrW,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOuW,GACPhuD,QAASiuD,GACTvW,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyW,GACPluD,QAASmuD,GACTzW,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2W,GACPpuD,QAASquD,GACT3W,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO6W,GACPtuD,QAASuuD,GACT7W,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO+W,GACPxuD,QAASyuD,GACT/W,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiX,GACP1uD,QAAS2uD,GACTjX,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmX,GACP5uD,QAAS6uD,GACTnX,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOqX,GACP9uD,QAAS+uD,GACTrX,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,SACNg6F,MAAOuX,GACPhvD,QAASivD,GACTvX,KAAM,8CACR,GAAI,CACV,iBAAkB,CAAMH,GAAqB,CACrC95F,KAAM,UACNg6F,MAAOyX,GACPlvD,QAASmvD,GACTzX,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,QACNg6F,MAAO2X,GACPpvD,QAASqvD,GACT3X,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,SACNg6F,MAAO6X,GACPtvD,QAASuvD,GACT7X,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,MACNg6F,MAAO+X,GACPxvD,QAASyvD,GACT/X,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,gBACNg6F,MAAOiY,GACP1vD,QAAS2vD,GACTjY,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,aACNg6F,MAAOmY,GACP5vD,QAAS6vD,GACTnY,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,cACNg6F,MAAOqY,GACP9vD,QAAS+vD,GACTrY,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,KACNg6F,MAAOuY,GACPhwD,QAASiwD,GACTvY,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,cACNg6F,MAAOyY,GACPlwD,QAASmwD,GACTzY,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAO2Y,GACPpwD,QAASqwD,GACT3Y,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,eACNg6F,MAAO6Y,GACPtwD,QAASuwD,GACT7Y,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,OACNg6F,MAAO+Y,GACPxwD,QAASywD,GACT/Y,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOiZ,GACP1wD,QAAS2wD,GACTjZ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOmZ,GACP5wD,QAAS6wD,GACTnZ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,QACNg6F,MAAOqZ,GACP9wD,QAAS+wD,GACTrZ,KAAM,8CACR,GAAI,CACV,qBAAsB,CAAMH,GAAqB,CACzC95F,KAAM,SACNg6F,MAAOuZ,GACPhxD,QAASixD,GACTvZ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,KACNg6F,MAAOyZ,GACPlxD,QAASmxD,GACTzZ,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,MACNg6F,MAAO2Z,GACPpxD,QAASqxD,GACT3Z,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,SACNg6F,MAAO6Z,GACPtxD,QAASuxD,GACT7Z,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,OACNg6F,MAAO+Z,GACPxxD,QAASyxD,GACT/Z,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,OACNg6F,MAAOia,GACP1xD,QAAS2xD,GACTja,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,OACNg6F,MAAOma,GACP5xD,QAAS6xD,GACTna,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,OACNg6F,MAAOqa,GACP9xD,QAAS+xD,GACTra,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOua,GACPhyD,QAASiyD,GACTva,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,OACNg6F,MAAOya,GACPlyD,QAASmyD,GACTza,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,SACNg6F,MAAO2a,GACPpyD,QAASqyD,GACT3a,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,MACNg6F,MAAO6a,GACPtyD,QAASuyD,GACT7a,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO+a,GACPxyD,QAASyyD,GACT/a,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,aACNg6F,MAAOib,GACP1yD,QAAS2yD,GACTjb,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,OACNg6F,MAAOmb,GACP5yD,QAAS6yD,GACTnb,KAAM,8CACR,GAAI,CACV,MAAS,CAAMH,GAAqB,CAC5B95F,KAAM,KACNg6F,MAAOqb,GACP9yD,QAAS+yD,GACTrb,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,oBACNg6F,MAAOub,GACPhzD,QAASizD,GACTvb,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,YACNg6F,MAAOyb,GACPlzD,QAASmzD,GACTzb,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,QACNg6F,MAAO2b,GACPpzD,QAASqzD,GACT3b,KAAM,8CACR,GACDH,GAAqB,CAClB95F,KAAM,WACNg6F,MAAO6b,GA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,EAAIq2B,CAAAA,EAAAA,EAAAA,EAAAA,IACJ7kB,EAAU1N,CAAAA,EAAAA,EAAAA,EAAAA,EAAWwiH,EAAAA,EAA0BA,EAC/CjlH,EAAQmD,CAAAA,EAAAA,EAAAA,OAAAA,EAAQ,KACpB,IAAM+hH,EAAU,IAAIC,EAAAA,EAAyBA,CAACh1G,GAC9C,OAAO+0G,EAAQE,uBAAuB,CAAC5kD,EAAStkE,EAAE,GAAGkE,MAAQ,CAC/D,EAAG,CAAC+P,EAASqwD,EAAStkE,EAAE,CAAC,EAEzB,MACE,UAACsmC,EAAAA,EAAYA,CAAAA,CACXhpB,KAAMwrG,EACNn2D,mBAAoB,CAClB/4B,QAAS65B,CACX,EACAvrD,MAAOzF,CAAC,CAAC,yDAAyD,GAClElG,YACE,WAACkiH,EAAAA,EAAKA,CAAAA,CACJh+G,OAAQ,CACNc,KAAM+iE,EAAS/iE,IAAI,CACnBuC,MAAAA,CACF,EACA6hH,QAAQ,gE,UACT,OACK,UAACxnF,SAAAA,C,SAAQ,CAAE58B,KAAM+iE,EAAS/iE,IAAI,C,GAAmB,6E,GAIzDilC,YAAa/jC,EAAE,OAAU,GACzB+wD,UAAWA,EACXF,oBAAqB,CACnB15B,QAAS65B,CACX,EACAhtB,qBAAsB,CACpB7mC,QAAS,OACX,C,EAGN,C,qGC3CO,IAAMupH,EAAY,CACvB,KACA,QACA,OACA,WACA,WACA,MACA,UACA,WACA,QACA,MACA,aACA,SACA,SACA,eACA,WACA,eACA,YACA,WACA,eACA,mBACA,OACA,UACA,SACA,cACA,iBACA,QACA,sBACA,cACA,aACA,OACA,iBACA,cACA,YACA,QACA,OACA,WACA,iBACA,QACA,YACA,OACA,OACA,MACA,gBACA,SACA,cACA,OACA,cACA,QACA,MACA,QACA,gBACA,OACA,MACA,UACA,WACA,WACA,SACA,YACA,qBACA,QACA,eACA,OACA,mBACA,QACA,QACA,aACA,oBACA,OACA,OACA,aACA,SACA,QACA,QACA,aACA,WACA,UACA,UACD,CAIYC,EAAqB,IAGhC,OAAQ/2G,GACN,IAAK,OAYL,QAXE,MAAO,MACT,KAAK,OAC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M,GACNC,aAAc,KACd/4I,IAAKy5I,CACP,EACA,CACEltN,GAAI,WACJuB,KAAM,UACNi7G,IAAK,KACLD,aAAc,SACd+vG,UAAW,OACXC,KAAM,GACNC,aAAc,KACd/4I,IAAK05I,CACP,EACA,CACEntN,GAAI,WACJuB,KAAM,SACNi7G,IAAK,KACLD,aAAc,QACd+vG,UAAW,OACXC,KAAM,GACNC,aAAc,KACd/4I,IAAK25I,CACP,EACA,CACEptN,GAAI,WACJuB,KAAM,0BACNi7G,IAAK,QACLD,aAAc,0BACd+vG,UAAW,OACXC,KAAM,GACNC,aAAc,KACd/4I,IAAK45I,CACP,EACA,CACErtN,GAAI,WACJuB,KAAM,kBACNi7G,IAAK,QACLD,aAAc,kBACd+vG,UAAW,OACXC,KAAM,GACNC,aAAc,KACd/4I,IAAK65I,CACP,EACA,CACEttN,GAAI,WACJuB,KAAM,QACNi7G,IAAK,KACLD,aAAc,SACd+vG,UAAW,OACXC,KAAM,GACNC,aAAc,KACd/4I,IAAK85I,CACP,EACA,CACEvtN,GAAI,WACJuB,KAAM,mBACNi7G,IAAK,QACLD,aAAc,oBACd+vG,UAAW,OACXC,KAAM,GACNC,aAAc,KACd/4I,IAAK+5I,CACP,EACA,CACExtN,GAAI,WACJuB,KAAM,sBACNi7G,IAAK,QACLD,aAAc,sBACd+vG,UAAW,OACXC,KAAM,GACNC,aAAc,KACd/4I,IAAKg6I,CACP,EACA,CACEztN,GAAI,WACJuB,KAAM,OACNi7G,IAAK,KACLD,aAAc,OACd+vG,UAAW,OACXC,KAAM,GACNC,aAAc,KACd/4I,IAAKi6I,CACP,EACA,CACE1tN,GAAI,WACJuB,KAAM,SACNi7G,IAAK,KACLD,aAAc,UACd+vG,UAAW,OACXC,KAAM,GACNC,aAAc,KACd/4I,IAAKk6I,CACP,EACD,C,eCxMM,IAAMpjB,EAAe,GAExB,iBAAOhxM,GAAuB,iBAAOA,GAAsB,QAASA,EAIxE,SAASq0N,EACPC,CAA2C,CAC3CC,CAA+C,EAwB/C,OAAO,IAAI5iF,MAtBQ,CACjBzoI,EAAEsrN,CAAmB,EACnB,IAAM3jB,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","sources":["webpack://@affine/web/../core/src/components/affine/auth/style.css.ts","webpack://@affine/web/../core/src/components/affine/page-properties/styles.css.ts","webpack://@affine/web/../core/src/components/page-list/filter/index.css.ts","webpack://@affine/web/../core/src/components/page-list/list.css.ts","webpack://@affine/web/../core/src/components/page-list/view/edit-collection/edit-collection.css.ts","webpack://@affine/web/../../common/debug/src/index.ts","webpack://@affine/web/../../common/env/src/constant.ts","webpack://@affine/web/../../common/env/src/ua-helper.ts","webpack://@affine/web/../../common/env/src/global.ts","webpack://@affine/web/../../common/env/src/workspace.ts","webpack://@affine/web/../../common/infra/src/atom/root-store.ts","webpack://@affine/web/../../common/infra/src/atom/settings.ts","webpack://@affine/web/../../common/infra/src/framework/core/components/component.ts","webpack://@affine/web/../../common/infra/src/framework/core/components/entity.ts","webpack://@affine/web/../../common/infra/src/framework/core/components/scope.ts","webpack://@affine/web/../../common/infra/src/framework/core/components/service.ts","webpack://@affine/web/../../common/infra/src/framework/core/components/store.ts","webpack://@affine/web/../../common/infra/src/framework/core/constructor-context.ts","webpack://@affine/web/../../common/infra/src/framework/core/consts.ts","webpack://@affine/web/../../common/infra/src/framework/core/error.ts","webpack://@affine/web/../../common/infra/src/framework/core/event.ts","webpack://@affine/web/../../common/infra/src/framework/core/provider.ts","webpack://@affine/web/../../common/infra/src/framework/core/scope.ts","webpack://@affine/web/../../common/infra/src/framework/core/framework.ts","webpack://@affine/web/../../common/infra/src/framework/core/identifier.ts","webpack://@affine/web/../../common/infra/src/framework/react/index.tsx","webpack://@affine/web/../../common/infra/src/framework/react/scope-root-components.tsx","webpack://@affine/web/../../common/infra/src/initialization/index.ts","webpack://@affine/web/../../common/infra/src/livedata/effect/index.ts","webpack://@affine/web/../../common/infra/src/livedata/livedata.ts","webpack://@affine/web/../../common/infra/src/livedata/ops.ts","webpack://@affine/web/../../common/infra/src/livedata/react.ts","webpack://@affine/web/../../common/infra/src/modules/db/entities/db.ts","webpack://@affine/web/../../common/infra/src/modules/db/entities/table.ts","webpack://@affine/web/../../common/infra/src/orm/core/validators/data.ts","webpack://@affine/web/../../common/infra/src/orm/core/validators/yjs.ts","webpack://@affine/web/../../common/infra/src/orm/core/validators/index.ts","webpack://@affine/web/../../common/infra/src/orm/core/validators/schema.ts","webpack://@affine/web/../../common/infra/src/orm/core/table.ts","webpack://@affine/web/../../common/infra/src/orm/core/client.ts","webpack://@affine/web/../../common/infra/src/orm/core/adapters/mixins/hook.ts","webpack://@affine/web/../../common/infra/src/orm/core/adapters/yjs/table.ts","webpack://@affine/web/../../common/infra/src/orm/core/adapters/yjs/db.ts","webpack://@affine/web/../../common/infra/src/orm/core/schema.ts","webpack://@affine/web/../../common/infra/src/modules/db/schema/schema.ts","webpack://@affine/web/../../common/infra/src/modules/db/services/db.ts","webpack://@affine/web/../../common/infra/src/modules/doc/entities/doc.ts","webpack://@affine/web/../../common/infra/src/modules/doc/entities/record-list.ts","webpack://@affine/web/../../common/infra/src/modules/doc/entities/record.ts","webpack://@affine/web/../../common/infra/src/modules/doc/scopes/doc.ts","webpack://@affine/web/../../common/infra/src/modules/doc/services/doc.ts","webpack://@affine/web/../../common/infra/src/modules/doc/services/docs.ts","webpack://@affine/web/../../common/infra/src/modules/global-context/entities/global-context.ts","webpack://@affine/web/../../common/infra/src/modules/global-context/services/global-context.ts","webpack://@affine/web/../../common/infra/src/modules/lifecycle/service/lifecycle.ts","webpack://@affine/web/../../common/infra/src/modules/storage/providers/global.ts","webpack://@affine/web/../../common/infra/src/modules/storage/services/global.ts","webpack://@affine/web/../../common/infra/src/sync/doc/priority-queue.ts","webpack://@affine/web/../../common/infra/src/sync/doc/async-priority-queue.ts","webpack://@affine/web/../../common/infra/src/sync/doc/local.ts","webpack://@affine/web/../../common/infra/src/sync/doc/clock.ts","webpack://@affine/web/../../common/infra/src/sync/doc/remote.ts","webpack://@affine/web/../../common/infra/src/sync/doc/index.ts","webpack://@affine/web/../../common/infra/src/sync/awareness.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/entities/engine.ts","webpack://@affine/web/../../common/infra/src/blocksuite/migration/workspace.ts","webpack://@affine/web/../../common/infra/src/blocksuite/migration/subdoc.ts","webpack://@affine/web/../../common/infra/src/blocksuite/migration/blocksuite.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/entities/upgrade.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/entities/workspace.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/events/index.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/global-schema.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/providers/flavour.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/providers/storage.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/scopes/workspace.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/engine.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/upgrade.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/workspace.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/workspaces.ts","webpack://@affine/web/../../common/infra/src/storage/memento.ts","webpack://@affine/web/../../common/infra/src/sync/blob/blob.ts","webpack://@affine/web/../../common/infra/src/sync/blob/error.ts","webpack://@affine/web/../../common/infra/src/utils/async-lock.ts","webpack://@affine/web/../../common/infra/src/storage/kv.ts","webpack://@affine/web/../../common/infra/src/sync/doc/event.ts","webpack://@affine/web/../../common/infra/src/sync/doc/storage.ts","webpack://@affine/web/../../common/infra/src/sync/doc/utils.ts","webpack://@affine/web/../../common/infra/src/utils/object-pool.ts","webpack://@affine/web/../../common/infra/src/utils/stable-hash.ts","webpack://@affine/web/../../common/infra/src/utils/throw-if-aborted.ts","webpack://@affine/web/../component/src/components/affine-other-page-layout/use-nav-config.ts","webpack://@affine/web/../component/src/components/affine-other-page-layout/desktop-navbar.tsx","webpack://@affine/web/../component/src/components/affine-other-page-layout/index.css.ts","webpack://@affine/web/../component/src/components/affine-other-page-layout/mobile-navbar.tsx","webpack://@affine/web/../component/src/components/affine-other-page-layout/layout.tsx","webpack://@affine/web/../component/src/components/auth-components/share.css.ts","webpack://@affine/web/../component/src/components/auth-components/auth-content.tsx","webpack://@affine/web/../component/src/components/auth-components/auth-input.tsx","webpack://@affine/web/../component/src/components/auth-components/auth-page-container.tsx","webpack://@affine/web/../component/src/components/auth-components/back-button.tsx","webpack://@affine/web/../component/src/components/auth-components/change-email-page.tsx","webpack://@affine/web/../component/src/components/auth-components/password-input/error.tsx","webpack://@affine/web/../component/src/components/auth-components/password-input/style.css.ts","webpack://@affine/web/../component/src/components/auth-components/password-input/success.tsx","webpack://@affine/web/../component/src/components/auth-components/password-input/tag.tsx","webpack://@affine/web/../component/src/components/auth-components/password-input/index.tsx","webpack://@affine/web/../component/src/components/auth-components/set-password.tsx","webpack://@affine/web/../component/src/components/auth-components/change-password-page.tsx","webpack://@affine/web/../component/src/components/auth-components/confirm-change-email.tsx","webpack://@affine/web/../component/src/components/auth-components/count-down-render.tsx","webpack://@affine/web/../component/src/components/auth-components/modal.tsx","webpack://@affine/web/../component/src/components/auth-components/modal-header.tsx","webpack://@affine/web/../component/src/components/auth-components/onboarding-page.css.ts","webpack://@affine/web/../component/src/components/auth-components/onboarding-page.tsx","webpack://@affine/web/../component/src/components/auth-components/set-password-page.tsx","webpack://@affine/web/../component/src/components/auth-components/sign-in-page-container.tsx","webpack://@affine/web/../component/src/components/auth-components/sign-in-success-page.tsx","webpack://@affine/web/../component/src/components/auth-components/sign-up-page.tsx","webpack://@affine/web/../component/src/components/auth-components/utils.ts","webpack://@affine/web/../component/src/components/disable-public-link/index.tsx","webpack://@affine/web/../component/src/components/global-loading/index.jotai.ts","webpack://@affine/web/../component/src/components/global-loading/index.tsx","webpack://@affine/web/../component/src/components/global-loading/index.css.ts","webpack://@affine/web/../component/src/components/page-detail-skeleton/index.tsx","webpack://@affine/web/../component/src/components/page-detail-skeleton/index.css.ts","webpack://@affine/web/../component/src/components/resize-panel/resize-panel.tsx","webpack://@affine/web/../component/src/components/resize-panel/resize-panel.css.ts","webpack://@affine/web/../component/src/components/workspace-avatar/index.tsx","webpack://@affine/web/../component/src/hooks/focus-and-select.ts","webpack://@affine/web/../component/src/lit-react/create-component.ts","webpack://@affine/web/../component/src/lit-react/lit-portal/lite-portal.tsx","webpack://@affine/web/../component/src/lit-react/to-react-node.ts","webpack://@affine/web/../component/src/ui/date-picker/calendar/calendar.css.ts","webpack://@affine/web/../component/src/ui/date-picker/calendar/constants.ts","webpack://@affine/web/../component/src/ui/date-picker/calendar/items.tsx","webpack://@affine/web/../component/src/ui/date-picker/calendar/day-picker.tsx","webpack://@affine/web/../component/src/ui/date-picker/calendar/month-picker.tsx","webpack://@affine/web/../component/src/ui/date-picker/calendar/types.tsx","webpack://@affine/web/../component/src/ui/date-picker/calendar/year-picker.tsx","webpack://@affine/web/../component/src/ui/date-picker/calendar/calendar.tsx","webpack://@affine/web/../component/src/utils/observe-resize.ts","webpack://@affine/web/../component/src/ui/date-picker/week-date-picker.tsx","webpack://@affine/web/../component/src/ui/date-picker/week-date-picker.css.tsx","webpack://@affine/web/../component/src/ui/dnd/draggable.ts","webpack://@affine/web/../component/src/ui/dnd/drop-indicator.css.ts","webpack://@affine/web/../component/src/ui/dnd/drop-indicator.tsx","webpack://@affine/web/../component/src/ui/dnd/drop-target.ts","webpack://@affine/web/../component/src/ui/editable/inline-edit.tsx","webpack://@affine/web/../component/src/ui/editable/inline-edit.css.ts","webpack://@affine/web/../component/src/ui/error-message/style.css.ts","webpack://@affine/web/../component/src/ui/error-message/error-message.tsx","webpack://@affine/web/../component/src/ui/lottie/styles.css.ts","webpack://@affine/web/../component/src/ui/lottie/collections-icon.tsx","webpack://@affine/web/../component/src/ui/lottie/delete-icon.tsx","webpack://@affine/web/../component/src/ui/lottie/folder-icon.tsx","webpack://@affine/web/../component/src/ui/popover/popover.tsx","webpack://@affine/web/../component/src/ui/popover/styles.css.ts","webpack://@affine/web/../component/src/ui/switch/switch.tsx","webpack://@affine/web/../component/src/ui/switch/index.css.ts","webpack://@affine/web/../component/src/ui/table/styles.ts","webpack://@affine/web/../component/src/ui/toast/toast.ts","webpack://@affine/web/../component/src/styles/helper.ts","webpack://@affine/web/../component/src/ui/avatar/style.css.ts","webpack://@affine/web/../component/src/ui/avatar/colorful-fallback.tsx","webpack://@affine/web/../component/src/ui/avatar/avatar.tsx","webpack://@affine/web/../component/src/ui/button/button.tsx","webpack://@affine/web/../component/src/ui/button/button.css.ts","webpack://@affine/web/../component/src/ui/button/dropdown-button.tsx","webpack://@affine/web/../component/src/ui/button/styles.css.ts","webpack://@affine/web/../component/src/ui/button/icon-button.tsx","webpack://@affine/web/../component/src/ui/button/radio.tsx","webpack://@affine/web/../component/src/ui/checkbox/icons.tsx","webpack://@affine/web/../component/src/ui/checkbox/checkbox.tsx","webpack://@affine/web/../component/src/ui/checkbox/index.css.ts","webpack://@affine/web/../component/src/ui/divider/divider.tsx","webpack://@affine/web/../component/src/ui/divider/style.css.ts","webpack://@affine/web/../component/src/ui/empty/empty-svg.tsx","webpack://@affine/web/../component/src/ui/empty/empty.tsx","webpack://@affine/web/../component/src/ui/empty/index.css.ts","webpack://@affine/web/../component/src/ui/input/input.tsx","webpack://@affine/web/../component/src/ui/input/style.css.ts","webpack://@affine/web/../component/src/ui/input/index.ts","webpack://@affine/web/../component/src/ui/layout/content.tsx","webpack://@affine/web/../component/src/ui/layout/wrapper.tsx","webpack://@affine/web/../component/src/ui/loading/loading.tsx","webpack://@affine/web/../component/src/ui/loading/styles.css.ts","webpack://@affine/web/../component/src/ui/menu/styles.css.ts","webpack://@affine/web/../component/src/ui/menu/menu.tsx","webpack://@affine/web/../component/src/ui/menu/menu-icon.tsx","webpack://@affine/web/../component/src/ui/menu/use-menu-item.tsx","webpack://@affine/web/../component/src/ui/menu/menu-item.tsx","webpack://@affine/web/../component/src/ui/menu/menu-separator.tsx","webpack://@affine/web/../component/src/ui/menu/menu-sub.tsx","webpack://@affine/web/../component/src/ui/menu/menu-trigger.tsx","webpack://@affine/web/../component/src/ui/modal/modal.tsx","webpack://@affine/web/../component/src/ui/modal/styles.css.ts","webpack://@affine/web/../component/src/ui/modal/confirm-modal.tsx","webpack://@affine/web/../component/src/ui/modal/overlay-modal.tsx","webpack://@affine/web/../component/src/ui/modal/overlay-modal.css.ts","webpack://@affine/web/../component/src/ui/notification/styles.css.ts","webpack://@affine/web/../component/src/ui/notification/utils.ts","webpack://@affine/web/../component/src/ui/notification/notification-card.tsx","webpack://@affine/web/../component/src/ui/notification/notification-center.tsx","webpack://@affine/web/../component/src/ui/radio/radio.tsx","webpack://@affine/web/../component/src/ui/radio/styles.css.ts","webpack://@affine/web/../component/src/ui/scrollbar/index.css.ts","webpack://@affine/web/../component/src/ui/scrollbar/scrollable.tsx","webpack://@affine/web/../component/src/ui/scrollbar/use-has-scroll-top.tsx","webpack://@affine/web/../component/src/ui/scrollbar/scrollbar.tsx","webpack://@affine/web/../component/src/ui/skeleton/index.css.ts","webpack://@affine/web/../component/src/ui/skeleton/skeleton.tsx","webpack://@affine/web/../component/src/utils/keyboard-mapping.ts","webpack://@affine/web/../component/src/utils/platform.ts","webpack://@affine/web/../component/src/ui/tooltip/tooltip.tsx","webpack://@affine/web/../component/src/ui/tooltip/styles.css.ts","webpack://@affine/web/../component/src/utils/with-unit.ts","webpack://@affine/web/../core/src/atoms/index.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/messages/text.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/messages/slides-renderer.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/messages/wrapper.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/_common/components/ask-ai-panel.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/_common/components/ask-ai-button.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/chat-panel-input.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/ai-loading.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/actions/action-wrapper.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/actions/text.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/actions/make-real.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/actions/slides.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/actions/mindmap.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/actions/chat-text.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/actions/image-to-text.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/actions/image.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/chat-cards.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/_common/components/chat-action-list.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/_common/components/copy-more.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/messages/error.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/chat-panel-messages.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/index.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/peek-view/chat-block-input.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/peek-view/date-time.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/peek-view/chat-block-peek-view.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/_common/icons.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/actions/consts.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/utils/custom-specs.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/utils/markdown-utils.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/provider.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/utils/action-reporter.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/utils/edgeless.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/utils/editor-actions.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/utils/selection-utils.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/ai-panel.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/actions/doc-handler.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/messages/mindmap.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/_common/markdown-utils.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/_common/selection-utils.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/slides/template.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/slides/index.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/utils/html.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/utils/image.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/actions/edgeless-response.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/actions/edgeless-handler.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/actions/types.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/entries/edgeless/actions-config.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/entries/edgeless/index.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/entries/format-bar/setup-format-bar.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/_common/config.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/entries/image-toolbar/setup-image-toolbar.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/entries/slash-menu/setup-slash-menu.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/ai-spec.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/components/images.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/const.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/_common/chat-actions-handle.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/chat-panel/preload-config.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/peek-view/styles.ts","webpack://@affine/web/../core/src/blocksuite/presets/ai/peek-view/utils.ts","webpack://@affine/web/../templates/edgeless-templates.gen.ts","webpack://@affine/web/../templates/stickers-templates.gen.ts","webpack://@affine/web/../core/src/bootstrap/edgeless-template.ts","webpack://@affine/web/../core/src/bootstrap/preload.ts","webpack://@affine/web/../core/src/commands/registry/command.ts","webpack://@affine/web/../core/src/commands/registry/registry.ts","webpack://@affine/web/../core/src/commands/affine-creation.tsx","webpack://@affine/web/../core/src/commands/affine-help.tsx","webpack://@affine/web/../core/src/commands/affine-layout.tsx","webpack://@affine/web/../core/src/commands/affine-navigation.tsx","webpack://@affine/web/../core/src/commands/affine-settings.tsx","webpack://@affine/web/../core/src/commands/affine-updates.tsx","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/error-basic/fallback-creator.tsx","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/error-basic/info-logger.tsx","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/error-basic/error-detail.tsx","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/error-basic/error-detail.css.ts","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/error-fallbacks/any-error-fallback.tsx","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/error-fallbacks/no-page-root-fallback.tsx","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/error-fallbacks/page-not-found-fallback.tsx","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/affine-error-fallback.tsx","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/error-fallbacks/recoverable-error-fallback.tsx","webpack://@affine/web/../core/src/unexpected-application-state/errors.ts","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/affine-error-fallback.css.ts","webpack://@affine/web/../core/src/components/affine/affine-error-boundary/index.tsx","webpack://@affine/web/../core/src/components/affine/app-container.tsx","webpack://@affine/web/../core/src/components/affine/auth/ai-login-required.tsx","webpack://@affine/web/../core/src/components/affine/auth/use-captcha.tsx","webpack://@affine/web/../core/src/components/affine/auth/send-email.tsx","webpack://@affine/web/../core/src/utils/email-regex.ts","webpack://@affine/web/../core/src/components/affine/auth/oauth.tsx","webpack://@affine/web/../core/src/components/affine/auth/index.tsx","webpack://@affine/web/../core/src/components/affine/auth/sign-in.tsx","webpack://@affine/web/../core/src/components/affine/auth/after-sign-up-send-email.tsx","webpack://@affine/web/../core/src/components/affine/auth/after-sign-in-send-email.tsx","webpack://@affine/web/../core/src/components/affine/auth/sign-in-with-password.tsx","webpack://@affine/web/../core/src/components/affine/auth/user-plan-button.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/confirm-delete-property-modal.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/icons-mapping.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/common.ts","webpack://@affine/web/../core/src/components/affine/page-properties/tags-inline-editor.css.ts","webpack://@affine/web/../core/src/components/affine/page-properties/tags-inline-editor.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/property-row-value-renderer.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/table.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/info-modal/back-links-row.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/info-modal/back-links-row.css.ts","webpack://@affine/web/../core/src/components/affine/page-properties/info-modal/tags-row.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/info-modal/tags-row.css.ts","webpack://@affine/web/../core/src/components/affine/page-properties/info-modal/time-row.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/info-modal/time-row.css.ts","webpack://@affine/web/../core/src/components/affine/page-properties/info-modal/info-modal.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/info-modal/info-modal.css.ts","webpack://@affine/web/../core/src/components/affine/page-properties/icons-selector.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/icons-selector.css.ts","webpack://@affine/web/../core/src/components/affine/page-properties/menu-items.tsx","webpack://@affine/web/../core/src/components/affine/page-properties/page-properties-manager.ts","webpack://@affine/web/../core/src/components/affine/reference-link/styles.css.ts","webpack://@affine/web/../core/src/components/affine/reference-link/index.tsx","webpack://@affine/web/../core/src/components/affine/sign-out-modal/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/index.jotai.ts","webpack://@affine/web/../core/src/components/app-sidebar/index.css.ts","webpack://@affine/web/../core/src/components/app-sidebar/sidebar-header/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/add-page-button/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/add-page-button/index.css.ts","webpack://@affine/web/../core/src/components/app-sidebar/app-updater-button/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/category-divider/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/category-divider/index.css.ts","webpack://@affine/web/../core/src/components/app-sidebar/menu-item/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/menu-item/index.css.ts","webpack://@affine/web/../core/src/components/app-sidebar/spolight/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/spolight/index.css.ts","webpack://@affine/web/../core/src/components/app-sidebar/quick-search-input/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/quick-search-input/index.css.ts","webpack://@affine/web/../core/src/components/app-sidebar/sidebar-containers/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/sidebar-containers/index.css.ts","webpack://@affine/web/../core/src/components/app-sidebar/index.tsx","webpack://@affine/web/../core/src/components/app-sidebar/fallback.css.ts","webpack://@affine/web/../core/src/components/app-sidebar/sidebar-header/sidebar-switch.tsx","webpack://@affine/web/../core/src/components/app-sidebar/sidebar-header/sidebar-switch.css.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/specs/preview.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/specs/custom/spec-patchers.tsx","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/bi-directional-link-panel.css.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/bi-directional-link-panel.tsx","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/journal-doc-title.tsx","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/styles.css.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/specs/custom/attachment-block.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/specs/common.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/specs/custom/linked-widget.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/specs/custom/root-block.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/specs/edgeless.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/specs/page.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/blocksuite-editor-container.tsx","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/blocksuite-editor.tsx","webpack://@affine/web/../core/src/components/affine/ai-onboarding/type.ts","webpack://@affine/web/../core/src/components/affine/ai-onboarding/apis.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/ai/copilot-client.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/ai/event-source.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/ai/request.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/ai/tracker.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx","webpack://@affine/web/../core/src/components/blocksuite/block-suite-editor/no-page-error.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-header/title/index.tsx","webpack://@affine/web/../core/src/components/blocksuite/block-suite-header/title/style.css.ts","webpack://@affine/web/../core/src/components/blocksuite/block-suite-page-list/utils.tsx","webpack://@affine/web/../core/src/components/blocksuite/outline-viewer/index.tsx","webpack://@affine/web/../core/src/components/blocksuite/outline-viewer/outline-viewer.css.ts","webpack://@affine/web/../core/src/components/page-list/collections/collection-list-item.css.ts","webpack://@affine/web/../core/src/components/page-list/collections/collection-list-item.tsx","webpack://@affine/web/../core/src/components/page-list/collections/collection-list-header.tsx","webpack://@affine/web/../core/src/components/page-list/collections/collection-list-header.css.ts","webpack://@affine/web/../core/src/components/page-list/collections/select-collection.tsx","webpack://@affine/web/../core/src/components/page-list/collections/virtualized-collection-list.tsx","webpack://@affine/web/../core/src/components/page-list/components/favorite-tag.tsx","webpack://@affine/web/../core/src/components/page-list/components/floating-toolbar.tsx","webpack://@affine/web/../core/src/components/page-list/components/floating-toolbar.css.ts","webpack://@affine/web/../core/src/components/page-list/components/list-floating-toolbar.tsx","webpack://@affine/web/../core/src/components/page-list/components/list-floating-toolbar.css.ts","webpack://@affine/web/../core/src/components/page-list/docs/page-list-item.css.ts","webpack://@affine/web/../core/src/components/page-list/docs/page-list-item.tsx","webpack://@affine/web/../core/src/components/page-list/docs/page-tags.css.ts","webpack://@affine/web/../core/src/components/page-list/docs/page-tags.tsx","webpack://@affine/web/../core/src/components/page-list/filter/filter-tag-translation.tsx","webpack://@affine/web/../core/src/components/page-list/filter/eval.ts","webpack://@affine/web/../core/src/components/page-list/filter/date-select.tsx","webpack://@affine/web/../core/src/components/page-list/filter/date-select.css.ts","webpack://@affine/web/../core/src/components/page-list/filter/multi-select.css.ts","webpack://@affine/web/../core/src/components/page-list/filter/multi-select.tsx","webpack://@affine/web/../core/src/components/page-list/filter/literal-matcher.tsx","webpack://@affine/web/../core/src/components/page-list/filter/condition.tsx","webpack://@affine/web/../core/src/components/page-list/filter/filter-list.tsx","webpack://@affine/web/../core/src/components/page-list/filter/logical/custom-type.ts","webpack://@affine/web/../core/src/components/page-list/filter/logical/matcher.ts","webpack://@affine/web/../core/src/components/page-list/filter/logical/typesystem.ts","webpack://@affine/web/../core/src/components/page-list/filter/shared-types.tsx","webpack://@affine/web/../core/src/components/page-list/filter/vars.tsx","webpack://@affine/web/../core/src/components/page-list/header-col-def.tsx","webpack://@affine/web/../component/src/components/card/block-card/styles.css.ts","webpack://@affine/web/../component/src/components/card/block-card/index.tsx","webpack://@affine/web/../core/src/components/page-list/components/new-page-button.tsx","webpack://@affine/web/../core/src/components/page-list/components/new-page-button.css.ts","webpack://@affine/web/../core/src/components/page-list/components/page-display-menu.tsx","webpack://@affine/web/../core/src/components/page-list/components/page-display-menu.css.ts","webpack://@affine/web/../core/src/components/page-list/filter/utils.ts","webpack://@affine/web/../core/src/components/page-list/docs/page-list-header.css.ts","webpack://@affine/web/../core/src/components/page-list/docs/page-list-new-page-button.tsx","webpack://@affine/web/../core/src/components/page-list/docs/page-list-new-page-button.css.ts","webpack://@affine/web/../core/src/components/page-list/docs/page-list-header.tsx","webpack://@affine/web/../core/src/components/page-list/group-definitions.tsx","webpack://@affine/web/../core/src/components/page-list/group-definitions.css.ts","webpack://@affine/web/../core/src/components/page-list/use-filtered-page-metas.tsx","webpack://@affine/web/../core/src/components/page-list/docs/virtualized-page-list.tsx","webpack://@affine/web/../core/src/components/page-list/virtualized-trash-list.tsx","webpack://@affine/web/../core/src/components/page-list/list.tsx","webpack://@affine/web/../core/src/components/page-list/operation-cell.tsx","webpack://@affine/web/../core/src/components/page-list/operation-menu-items/disable-public-sharing.tsx","webpack://@affine/web/../core/src/components/page-list/operation-menu-items/index.css.ts","webpack://@affine/web/../core/src/components/page-list/operation-menu-items/export.tsx","webpack://@affine/web/../core/src/components/page-list/operation-menu-items/move-to-trash.tsx","webpack://@affine/web/../core/src/components/page-list/use-block-suite-page-preview.ts","webpack://@affine/web/../core/src/components/page-list/use-block-suite-workspace-page.ts","webpack://@affine/web/../core/src/components/page-list/page-content-preview.tsx","webpack://@affine/web/../core/src/components/page-list/page-group.css.ts","webpack://@affine/web/../core/src/components/page-list/page-group.tsx","webpack://@affine/web/../core/src/components/page-list/components/list-header-cell.tsx","webpack://@affine/web/../core/src/components/page-list/components/list-header-cell.css.ts","webpack://@affine/web/../core/src/components/page-list/page-header.tsx","webpack://@affine/web/../core/src/components/page-list/page-header.css.ts","webpack://@affine/web/../core/src/components/page-list/scoped-atoms.tsx","webpack://@affine/web/../core/src/components/page-list/items-to-item-group.tsx","webpack://@affine/web/../core/src/components/page-list/selector/selector-layout.css.ts","webpack://@affine/web/../core/src/components/page-list/selector/selector-layout.tsx","webpack://@affine/web/../core/src/components/page-list/tags/create-tag.tsx","webpack://@affine/web/../core/src/components/page-list/tags/create-tag.css.ts","webpack://@affine/web/../core/src/components/page-list/tags/select-tag.tsx","webpack://@affine/web/../core/src/components/page-list/tags/tag-list-header.tsx","webpack://@affine/web/../core/src/components/page-list/tags/tag-list-header.css.ts","webpack://@affine/web/../core/src/components/page-list/tags/virtualized-tag-list.tsx","webpack://@affine/web/../core/src/components/page-list/tags/tag-list-item.css.ts","webpack://@affine/web/../core/src/components/page-list/tags/tag-list-item.tsx","webpack://@affine/web/../core/src/components/page-list/use-all-doc-display-properties.ts","webpack://@affine/web/../core/src/components/page-list/use-collection-manager.ts","webpack://@affine/web/../core/src/components/page-list/utils.tsx","webpack://@affine/web/../core/src/components/page-list/view/affine-shape.tsx","webpack://@affine/web/../core/src/components/page-list/view/create-collection.tsx","webpack://@affine/web/../core/src/components/page-list/view/create-collection.css.ts","webpack://@affine/web/../core/src/hooks/affine/use-all-page-list-config.tsx","webpack://@affine/web/../core/src/components/page-list/view/edit-collection/rules-mode.tsx","webpack://@affine/web/../core/src/components/page-list/view/edit-collection/edit-collection.tsx","webpack://@affine/web/../core/src/components/page-list/view/edit-collection/use-filter.tsx","webpack://@affine/web/../core/src/components/page-list/view/edit-collection/use-search.tsx","webpack://@affine/web/../core/src/components/page-list/view/edit-collection/select-page.tsx","webpack://@affine/web/../core/src/components/page-list/view/collection-list.tsx","webpack://@affine/web/../core/src/components/page-list/view/collection-list.css.ts","webpack://@affine/web/../core/src/components/page-list/view/save-as-collection-button.tsx","webpack://@affine/web/../core/src/components/page-list/view/save-as-collection-button.css.ts","webpack://@affine/web/../core/src/components/page-list/view/use-edit-collection.tsx","webpack://@affine/web/../core/src/components/page-list/virtualized-list.tsx","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/add-workspace/index.css.ts","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/add-workspace/index.tsx","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/user-account/index.tsx","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/user-account/index.css.ts","webpack://@affine/web/../component/src/components/card/workspace-card/styles.css.ts","webpack://@affine/web/../component/src/components/card/workspace-card/index.tsx","webpack://@affine/web/../component/src/components/workspace-list/index.tsx","webpack://@affine/web/../component/src/components/workspace-list/index.css.ts","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/workspace-list/index.css.ts","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/workspace-list/index.tsx","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/index.tsx","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/index.css.ts","webpack://@affine/web/../core/src/hooks/affine/use-doc-engine-status.tsx","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/workspace-card/styles.css.ts","webpack://@affine/web/../core/src/components/pure/workspace-slider-bar/workspace-card/index.tsx","webpack://@affine/web/../core/src/components/workspace-selector/index.tsx","webpack://@affine/web/../core/src/components/workspace/index.css.ts","webpack://@affine/web/../core/src/components/workspace/index.tsx","webpack://@affine/web/../core/src/hooks/affine-async-hooks.ts","webpack://@affine/web/../core/src/hooks/affine/use-app-setting-helper.ts","webpack://@affine/web/../core/src/hooks/affine/use-block-suite-meta-helper.ts","webpack://@affine/web/../core/src/hooks/affine/use-delete-collection-info.ts","webpack://@affine/web/../core/src/hooks/affine/use-enable-cloud.tsx","webpack://@affine/web/../core/src/atoms/trash-modal.ts","webpack://@affine/web/../core/src/hooks/affine/use-trash-modal-helper.ts","webpack://@affine/web/../core/src/hooks/use-affine-adapter.ts","webpack://@affine/web/../core/src/hooks/use-app-updater.ts","webpack://@affine/web/../core/src/hooks/use-all-block-suite-page-meta.ts","webpack://@affine/web/../core/src/hooks/use-block-suite-page-meta.ts","webpack://@affine/web/../core/src/hooks/use-block-suite-workspace-helper.ts","webpack://@affine/web/../core/src/hooks/use-catch-event-hook.ts","webpack://@affine/web/../core/src/hooks/use-journal.ts","webpack://@affine/web/../core/src/hooks/use-mutation.ts","webpack://@affine/web/../core/src/hooks/use-navigate-helper.ts","webpack://@affine/web/../core/src/hooks/use-system-online.ts","webpack://@affine/web/../core/src/hooks/use-workspace-info.ts","webpack://@affine/web/../core/src/mixpanel/auto.ts","webpack://@affine/web/../core/src/mixpanel/mixpanel.ts","webpack://@affine/web/../core/src/mixpanel/index.ts","webpack://@affine/web/../core/src/modules/cloud/entities/session.ts","webpack://@affine/web/../core/src/modules/cloud/entities/user-feature.ts","webpack://@affine/web/../core/src/modules/cloud/entities/user-quota.ts","webpack://@affine/web/../core/src/modules/cloud/error.ts","webpack://@affine/web/../core/src/modules/cloud/services/server-config.ts","webpack://@affine/web/../core/src/modules/cloud/services/subscription.ts","webpack://@affine/web/../core/src/modules/cloud/services/user-copilot-quota.ts","webpack://@affine/web/../core/src/modules/cloud/services/websocket.ts","webpack://@affine/web/../core/src/modules/cloud/services/graphql.ts","webpack://@affine/web/../core/src/modules/cloud/entities/server-config.ts","webpack://@affine/web/../core/src/modules/cloud/entities/subscription.ts","webpack://@affine/web/../core/src/modules/cloud/entities/subscription-prices.ts","webpack://@affine/web/../core/src/modules/cloud/entities/user-copilot-quota.ts","webpack://@affine/web/../core/src/modules/cloud/stores/auth.ts","webpack://@affine/web/../core/src/modules/cloud/stores/server-config.ts","webpack://@affine/web/../core/src/modules/cloud/stores/subscription.ts","webpack://@affine/web/../core/src/modules/cloud/stores/user-copilot-quota.ts","webpack://@affine/web/../core/src/modules/cloud/stores/user-feature.ts","webpack://@affine/web/../core/src/modules/cloud/stores/user-quota.ts","webpack://@affine/web/../core/src/modules/cloud/index.ts","webpack://@affine/web/../core/src/modules/cloud/services/auth.ts","webpack://@affine/web/../core/src/modules/cloud/services/fetch.ts","webpack://@affine/web/../core/src/modules/cloud/services/user-feature.ts","webpack://@affine/web/../core/src/modules/cloud/services/user-quota.ts","webpack://@affine/web/../core/src/modules/collection/services/collection.ts","webpack://@affine/web/../core/src/modules/collection/index.ts","webpack://@affine/web/../core/src/modules/doc-link/entities/doc-backlinks.ts","webpack://@affine/web/../core/src/modules/doc-link/entities/doc-links.ts","webpack://@affine/web/../core/src/modules/doc-link/services/doc-links.ts","webpack://@affine/web/../core/src/modules/doc-link/index.ts","webpack://@affine/web/../core/src/modules/docs-search/services/docs-search.ts","webpack://@affine/web/../../common/infra/src/utils/exhaustmap-with-trailing.ts","webpack://@affine/web/../../common/infra/src/sync/job/impl/indexeddb/index.ts","webpack://@affine/web/../../common/infra/src/sync/job/runner.ts","webpack://@affine/web/../../common/infra/src/sync/indexer/impl/indexeddb/bm25.ts","webpack://@affine/web/../../common/infra/src/sync/indexer/impl/indexeddb/match.ts","webpack://@affine/web/../../common/infra/src/sync/indexer/impl/indexeddb/tokenizer.ts","webpack://@affine/web/../../common/infra/src/sync/indexer/impl/indexeddb/inverted-index.ts","webpack://@affine/web/../../common/infra/src/sync/indexer/impl/indexeddb/data-struct.ts","webpack://@affine/web/../../common/infra/src/sync/indexer/impl/indexeddb/highlighter.ts","webpack://@affine/web/../../common/infra/src/sync/indexer/impl/indexeddb/index.ts","webpack://@affine/web/../core/src/modules/docs-search/schema.ts","webpack://@affine/web/../core/src/modules/docs-search/worker/out-worker.ts","webpack://@affine/web/../core/src/modules/docs-search/entities/docs-indexer.ts","webpack://@affine/web/../core/src/modules/docs-search/index.ts","webpack://@affine/web/../core/src/modules/explorer/entities/explore-section.ts","webpack://@affine/web/../core/src/modules/explorer/views/nodes/collection/empty.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/collection/operations.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/collection/index.tsx","webpack://@affine/web/../core/src/modules/explorer/views/sections/collections/empty.tsx","webpack://@affine/web/../core/src/modules/explorer/views/sections/collections/index.tsx","webpack://@affine/web/../core/src/components/page-list/selector/use-select-dialog.tsx","webpack://@affine/web/../core/src/components/page-list/selector/index.ts","webpack://@affine/web/../core/src/modules/explorer/views/nodes/folder/empty.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/folder/empty.css.ts","webpack://@affine/web/../core/src/modules/explorer/views/nodes/folder/operations.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/folder/index.tsx","webpack://@affine/web/../core/src/modules/explorer/views/sections/favorites/dnd.ts","webpack://@affine/web/../core/src/modules/explorer/views/sections/favorites/empty.tsx","webpack://@affine/web/../core/src/modules/explorer/views/sections/favorites/index.tsx","webpack://@affine/web/../core/src/modules/explorer/views/sections/migration-favorites/styles.css.ts","webpack://@affine/web/../core/src/modules/explorer/views/sections/migration-favorites/index.tsx","webpack://@affine/web/../core/src/modules/organize/constants.ts","webpack://@affine/web/../core/src/modules/explorer/views/sections/organize/dnd.ts","webpack://@affine/web/../core/src/modules/explorer/views/sections/organize/empty.tsx","webpack://@affine/web/../core/src/modules/explorer/views/sections/organize/index.tsx","webpack://@affine/web/../core/src/modules/explorer/index.ts","webpack://@affine/web/../core/src/modules/explorer/services/explorer.ts","webpack://@affine/web/../core/src/modules/explorer/views/layouts/collapsible-section.tsx","webpack://@affine/web/../core/src/modules/explorer/views/layouts/collapsible-section.css.ts","webpack://@affine/web/../core/src/modules/explorer/views/layouts/empty-node-children.tsx","webpack://@affine/web/../core/src/modules/explorer/views/layouts/empty-node-children.css.ts","webpack://@affine/web/../core/src/modules/explorer/views/layouts/empty-section.css.ts","webpack://@affine/web/../core/src/modules/explorer/views/layouts/empty-section.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/doc/empty.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/doc/operations.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/doc/index.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/doc/styles.css.ts","webpack://@affine/web/../core/src/modules/explorer/views/nodes/tag/empty.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/tag/operations.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/tag/index.tsx","webpack://@affine/web/../core/src/modules/explorer/views/nodes/tag/styles.css.ts","webpack://@affine/web/../core/src/modules/explorer/views/tree/drop-effect.css.ts","webpack://@affine/web/../core/src/modules/explorer/views/tree/drop-effect.tsx","webpack://@affine/web/../component/src/components/rename-modal/index.tsx","webpack://@affine/web/../core/src/modules/explorer/views/tree/context.tsx","webpack://@affine/web/../core/src/modules/explorer/views/tree/node.tsx","webpack://@affine/web/../core/src/modules/explorer/views/tree/node.css.ts","webpack://@affine/web/../core/src/modules/explorer/views/tree/root.tsx","webpack://@affine/web/../core/src/modules/explorer/views/tree/root.css.ts","webpack://@affine/web/../core/src/modules/favorite/entities/favorite-list.ts","webpack://@affine/web/../core/src/modules/favorite/services/favorite.ts","webpack://@affine/web/../core/src/modules/favorite/constant.ts","webpack://@affine/web/../core/src/modules/favorite/stores/favorite.ts","webpack://@affine/web/../core/src/modules/favorite/index.ts","webpack://@affine/web/../core/src/modules/find-in-page/entities/find-in-page.ts","webpack://@affine/web/../core/src/modules/find-in-page/services/find-in-page.ts","webpack://@affine/web/../core/src/modules/navigation/entities/navigator.ts","webpack://@affine/web/../core/src/modules/navigation/utils.ts","webpack://@affine/web/../core/src/modules/navigation/view/navigation-buttons.css.ts","webpack://@affine/web/../core/src/modules/navigation/view/navigation-buttons.tsx","webpack://@affine/web/../core/src/modules/navigation/index.ts","webpack://@affine/web/../core/src/modules/navigation/services/navigator.ts","webpack://@affine/web/../core/src/modules/organize/entities/folder-node.ts","webpack://@affine/web/../core/src/modules/organize/entities/folder-tree.ts","webpack://@affine/web/../core/src/modules/organize/services/organize.ts","webpack://@affine/web/../core/src/modules/organize/stores/folder.ts","webpack://@affine/web/../core/src/modules/organize/index.ts","webpack://@affine/web/../core/src/modules/peek-view/services/peek-view.ts","webpack://@affine/web/../core/src/modules/peek-view/entities/peek-view.ts","webpack://@affine/web/../core/src/modules/peek-view/view/modal-container.tsx","webpack://@affine/web/../core/src/modules/peek-view/view/modal-container.css.ts","webpack://@affine/web/../core/src/modules/peek-view/view/utils.ts","webpack://@affine/web/../core/src/modules/peek-view/view/doc-preview/doc-peek-view.tsx","webpack://@affine/web/../core/src/modules/peek-view/view/doc-preview/doc-peek-view.css.ts","webpack://@affine/web/../core/src/modules/peek-view/view/image-preview/hooks/use-zoom.tsx","webpack://@affine/web/../core/src/modules/peek-view/view/image-preview/index.css.ts","webpack://@affine/web/../core/src/modules/peek-view/view/image-preview/index.tsx","webpack://@affine/web/../core/src/modules/peek-view/view/peek-view-controls.css.ts","webpack://@affine/web/../core/src/modules/peek-view/view/peek-view-controls.tsx","webpack://@affine/web/../core/src/modules/peek-view/view/peek-view-manager.tsx","webpack://@affine/web/../core/src/modules/peek-view/index.ts","webpack://@affine/web/../core/src/modules/permissions/entities/permission.ts","webpack://@affine/web/../core/src/modules/permissions/services/permission.ts","webpack://@affine/web/../core/src/modules/permissions/stores/permission.ts","webpack://@affine/web/../core/src/modules/permissions/index.ts","webpack://@affine/web/../core/src/modules/properties/services/adapter.ts","webpack://@affine/web/../core/src/modules/properties/services/legacy-properties.ts","webpack://@affine/web/../core/src/modules/properties/index.ts","webpack://@affine/web/../core/src/modules/properties/services/schema.ts","webpack://@affine/web/../core/src/modules/quicksearch/impls/collections.ts","webpack://@affine/web/../core/src/modules/quicksearch/impls/commands.ts","webpack://@affine/web/../core/src/modules/quicksearch/impls/creation.ts","webpack://@affine/web/../core/src/modules/quicksearch/impls/docs.ts","webpack://@affine/web/../core/src/modules/quicksearch/impls/recent-docs.ts","webpack://@affine/web/../core/src/modules/quicksearch/entities/quick-search.ts","webpack://@affine/web/../core/src/modules/quicksearch/services/doc-display-meta.ts","webpack://@affine/web/../core/src/modules/quicksearch/services/quick-search.ts","webpack://@affine/web/../core/src/modules/quicksearch/services/recent-pages.ts","webpack://@affine/web/../core/src/modules/quicksearch/views/highlight-text.tsx","webpack://@affine/web/../core/src/modules/quicksearch/views/highlight-text.css.ts","webpack://@affine/web/../core/src/modules/quicksearch/views/cmdk.tsx","webpack://@affine/web/../core/src/modules/quicksearch/views/cmdk.css.ts","webpack://@affine/web/../core/src/modules/quicksearch/views/modal.tsx","webpack://@affine/web/../core/src/modules/quicksearch/views/modal.css.ts","webpack://@affine/web/../core/src/modules/quicksearch/views/container.tsx","webpack://@affine/web/../core/src/modules/quicksearch/index.ts","webpack://@affine/web/../core/src/modules/quicksearch/services/cmdk.ts","webpack://@affine/web/../core/src/modules/quicksearch/utils/highlighter.ts","webpack://@affine/web/../core/src/modules/quota/entities/quota.ts","webpack://@affine/web/../core/src/modules/quota/services/quota.ts","webpack://@affine/web/../core/src/modules/quota/stores/quota.ts","webpack://@affine/web/../core/src/modules/quota/index.ts","webpack://@affine/web/../core/src/modules/share-doc/entities/share-info.ts","webpack://@affine/web/../core/src/modules/share-doc/services/share.ts","webpack://@affine/web/../core/src/modules/share-doc/entities/share-docs-list.ts","webpack://@affine/web/../core/src/modules/share-doc/services/share-docs.ts","webpack://@affine/web/../core/src/modules/share-doc/stores/share.ts","webpack://@affine/web/../core/src/modules/share-doc/stores/share-docs.ts","webpack://@affine/web/../core/src/modules/share-doc/index.ts","webpack://@affine/web/../core/src/modules/tag/entities/utils.ts","webpack://@affine/web/../core/src/modules/tag/entities/tag.ts","webpack://@affine/web/../core/src/modules/tag/entities/tag-list.ts","webpack://@affine/web/../core/src/modules/tag/service/tag.ts","webpack://@affine/web/../core/src/modules/tag/view/delete-tag-modal.tsx","webpack://@affine/web/../core/src/modules/tag/stores/tag.ts","webpack://@affine/web/../core/src/modules/tag/index.ts","webpack://@affine/web/../core/src/modules/theme-editor/services/theme-editor.ts","webpack://@affine/web/../core/src/modules/theme-editor/views/custom-theme.tsx","webpack://@affine/web/../core/src/modules/theme-editor/views/components/empty.tsx","webpack://@affine/web/../core/src/modules/theme-editor/views/theme-editor.css.ts","webpack://@affine/web/../core/src/modules/theme-editor/views/components/tree-node.tsx","webpack://@affine/web/../core/src/modules/theme-editor/views/utils.ts","webpack://@affine/web/../core/src/modules/theme-editor/views/components/simple-color-picker.tsx","webpack://@affine/web/../core/src/modules/theme-editor/views/components/simple-color-picker.css.ts","webpack://@affine/web/../core/src/modules/theme-editor/views/components/color-cell.tsx","webpack://@affine/web/../core/src/modules/theme-editor/views/components/string-cell.tsx","webpack://@affine/web/../core/src/modules/theme-editor/views/components/string-cell.css.ts","webpack://@affine/web/../core/src/modules/theme-editor/views/components/variable-list.tsx","webpack://@affine/web/../core/src/modules/theme-editor/views/resource.ts","webpack://@affine/web/../core/src/modules/theme-editor/views/theme-editor.tsx","webpack://@affine/web/../core/src/modules/theme-editor/index.ts","webpack://@affine/web/../core/src/modules/workbench/entities/sidebar-tab.ts","webpack://@affine/web/../core/src/utils/navigable-history.ts","webpack://@affine/web/../core/src/modules/workbench/entities/view.ts","webpack://@affine/web/../core/src/modules/workbench/entities/workbench.ts","webpack://@affine/web/../core/src/modules/workbench/view/use-is-active-view.tsx","webpack://@affine/web/../core/src/utils/island.tsx","webpack://@affine/web/../core/src/modules/workbench/view/view-islands.tsx","webpack://@affine/web/../core/src/modules/workbench/view/sidebar/sidebar-header.tsx","webpack://@affine/web/../core/src/modules/workbench/view/sidebar/sidebar-header.css.ts","webpack://@affine/web/../core/src/modules/workbench/view/sidebar/sidebar-header-switcher.tsx","webpack://@affine/web/../core/src/modules/workbench/view/sidebar/sidebar-header-switcher.css.ts","webpack://@affine/web/../core/src/modules/workbench/view/sidebar/sidebar-container.tsx","webpack://@affine/web/../core/src/modules/workbench/view/sidebar/sidebar-container.css.ts","webpack://@affine/web/../core/src/modules/workbench/view/split-view/indicator.tsx","webpack://@affine/web/../core/src/modules/workbench/view/split-view/indicator.css.ts","webpack://@affine/web/../core/src/modules/workbench/view/split-view/panel.tsx","webpack://@affine/web/../core/src/modules/workbench/view/split-view/split-view.css.ts","webpack://@affine/web/../core/src/modules/workbench/view/split-view/resize-handle.tsx","webpack://@affine/web/../core/src/modules/workbench/view/split-view/split-view.tsx","webpack://@affine/web/../core/src/modules/workbench/view/route-container.tsx","webpack://@affine/web/../core/src/modules/workbench/view/route-container.css.ts","webpack://@affine/web/../core/src/modules/workbench/view/view-root.tsx","webpack://@affine/web/../core/src/modules/workbench/view/workbench-root.tsx","webpack://@affine/web/../core/src/modules/workbench/view/desktop-adapter.ts","webpack://@affine/web/../core/src/modules/workbench/view/browser-adapter.ts","webpack://@affine/web/../core/src/modules/workbench/view/workbench-root.css.ts","webpack://@affine/web/../core/src/modules/workbench/services/workbench-new-tab-handler.ts","webpack://@affine/web/../core/src/modules/workbench/services/workbench-view-state.ts","webpack://@affine/web/../core/src/modules/workbench/index.ts","webpack://@affine/web/../core/src/modules/workbench/scopes/view.ts","webpack://@affine/web/../core/src/modules/workbench/services/desktop-state-synchronizer.ts","webpack://@affine/web/../core/src/modules/workbench/services/view.ts","webpack://@affine/web/../core/src/modules/workbench/services/workbench.ts","webpack://@affine/web/../core/src/modules/workbench/view/use-view-position.tsx","webpack://@affine/web/../core/src/modules/workbench/view/view-meta.tsx","webpack://@affine/web/../core/src/modules/workbench/view/workbench-link.tsx","webpack://@affine/web/../core/src/modules/workspace-engine/impls/engine/blob-cloud.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/cloud.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/engine/awareness-broadcast-channel.ts","webpack://@affine/web/../core/src/modules/workspace-engine/utils/base64.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/engine/awareness-cloud.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/engine/blob-static.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/engine/doc-cloud.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/engine/doc-cloud-static.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/engine/blob-indexeddb.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/engine/doc-broadcast-channel.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/engine/doc-indexeddb.ts","webpack://@affine/web/../core/src/modules/workspace-engine/impls/local.ts","webpack://@affine/web/../core/src/modules/workspace-engine/providers/engine.ts","webpack://@affine/web/../core/src/modules/workspace-engine/index.ts","webpack://@affine/web/../core/src/modules/workspace-engine/utils/buffer-to-blob.ts","webpack://@affine/web/../component/src/components/not-found-page/not-found-pattern.tsx","webpack://@affine/web/../component/src/components/not-found-page/styles.css.ts","webpack://@affine/web/../component/src/components/not-found-page/not-found-page.tsx","webpack://@affine/web/../core/src/pages/404.tsx","webpack://@affine/web/../core/src/pages/sign-in.tsx","webpack://@affine/web/../core/src/router.tsx","webpack://@affine/web/../core/src/shared/index.ts","webpack://@affine/web/../core/src/utils/create-emotion-cache.ts","webpack://@affine/web/../core/src/utils/fractional-indexing.ts","webpack://@affine/web/../core/src/utils/event.ts","webpack://@affine/web/../core/src/utils/popup.ts","webpack://@affine/web/../core/src/utils/toast.ts","webpack://@affine/web/../core/src/utils/reduce-image.ts","webpack://@affine/web/../electron-api/src/index.ts","webpack://@affine/web/../graphql/src/error.ts","webpack://@affine/web/../graphql/src/fetcher.ts","webpack://@affine/web/../graphql/src/graphql/index.ts","webpack://@affine/web/../graphql/src/index.ts","webpack://@affine/web/../graphql/src/schema.ts","webpack://@affine/web/../i18n/src/resources/index.ts","webpack://@affine/web/../i18n/src/i18n.ts","webpack://@affine/web/../i18n/src/utils/time.ts","webpack://@affine/web/../i18n/src/index.ts","webpack://@affine/web/../core/src/modules/telemetry/services/telemetry.ts","webpack://@affine/web/../component/src/components/provider-composer/index.tsx","webpack://@affine/web/../component/src/components/theme-provider/index.tsx","webpack://@affine/web/../component/src/components/context/index.tsx","webpack://@affine/web/../../common/infra/src/modules/doc/stores/docs.ts","webpack://@affine/web/../../common/infra/src/modules/storage/index.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/entities/list.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/entities/profile.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/impls/storage.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/destroy.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/factory.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/list.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/profile.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/repo.ts","webpack://@affine/web/../../common/infra/src/blocksuite/migration/fixing.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/services/transform.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/stores/profile-cache.ts","webpack://@affine/web/../core/src/modules/storage/impls/local-storage.ts","webpack://@affine/web/../core/src/telemetry.tsx","webpack://@affine/web/./src/app.tsx","webpack://@affine/web/../core/src/modules/index.ts","webpack://@affine/web/../../common/infra/src/index.ts","webpack://@affine/web/../../common/infra/src/modules/workspace/index.ts","webpack://@affine/web/../../common/infra/src/modules/doc/index.ts","webpack://@affine/web/../../common/infra/src/modules/db/index.ts","webpack://@affine/web/../../common/infra/src/modules/global-context/index.ts","webpack://@affine/web/../../common/infra/src/modules/lifecycle/index.ts","webpack://@affine/web/../core/src/modules/telemetry/index.ts","webpack://@affine/web/../core/src/modules/find-in-page/index.ts","webpack://@affine/web/../core/src/modules/storage/index.ts","webpack://@affine/web/./src/index.tsx","webpack://@affine/web/./src/polyfill/intl-segmenter.ts","webpack://@affine/web/./src/polyfill/request-idle-callback.ts"],"sourcesContent":["import \"../core/src/components/affine/auth/style.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/auth/style.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA5VV226jMBB9z1eMui/bB0ckIaTraL9ktVoZPBC3xka+NOmu+u8rm9ACISl5QvLczpwzMyz/rNKDzHKZwL8FQM1MJRRxuqGwSZrTfvG+WHYuq54LBead3n+G5No5XVNIQxCAw5MjTIpKUShQOTSDVOsr1QAKLbWh8MrMd0JYWQqFJCazWGjFmXkj0eUxOJdaOWLFXxwFxPeTjT4yPBxQVAdHYbXcjnCwiGSqqhTq5aPWIGYZTG2cNzYENlq0Pd6XahOTNNoKJ3TgNLdaeochj2kRJ/sRUWSdjXRJ+2R2Olyot53XKEDOipfKaK84BWeYsg0zqFw0acPRkHOSkfFuMdbrVnJv0RCLEgtHQWmFA9xZxH0zua0f7x6dr0nvmEwGcHYRTtfCbte2wIVtJHujUEqMD+FLuDBYtEUKLX2tguXZWyfKAEU5VO5zPQDivhDhsLb955tL+RTxXNS/UaViDYWnFvekHl9z3av/4+pYReobI+qJnT2eS2bJkN12G4+CuwOFdDvrluSDmOR6zLwpOrMtsQz3Irt+lXLp8bKjdNRREdFNw7lHtSuzMWfpBvi2ycVFyc48jy/5eNT49KjNgfAxYklvxEaQZt7Sxhskx4NwOLpWZFIkwzpLu/aMc6EqCkn3pzrfNMO48Pbj/3WvEn2afnHmGBGW5CgFvqL5+eCMx4ffkb9LwN82u3S1Xe0X7/8BkCqy644HAAA=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var accessMessage = '_14hl6blc';\nexport var authMessage = '_14hl6bl2';\nexport var authModalContent = '_14hl6bl0';\nexport var captchaWrapper = '_14hl6bl1';\nexport var forgetPasswordButton = '_14hl6bl6';\nexport var forgetPasswordButtonRow = '_14hl6bl3';\nexport var linkButton = '_14hl6bl5';\nexport var resendCountdown = '_14hl6bla';\nexport var resendCountdownInButton = '_14hl6blb';\nexport var resendWrapper = '_14hl6bl7';\nexport var sendMagicLinkButtonRow = '_14hl6bl4';\nexport var sentMessage = '_14hl6bl9';\nexport var sentRow = '_14hl6bl8';\nexport var userPlanButton = '_14hl6bld';","import \"../core/src/components/affine/page-properties/styles.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/page-properties/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#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\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var addPropertyButton = 'rmastff';\nexport var backlinksList = 'rmastfa';\nexport var checkboxProperty = 'rmastf13';\nexport var collapsedIcon = 'rmastfg';\nexport var draggableItem = 'rmastfj';\nexport var draggableRowSetting = 'rmastfk rmastfj';\nexport var editablePropertyRowCell = 'rmastfm rmastfl';\nexport var menuHeader = 'rmastfx';\nexport var menuItemIconContainer = 'rmastf11';\nexport var menuItemList = 'rmastf10';\nexport var menuItemListScrollable = 'rmastfy';\nexport var menuItemListScrollbar = 'rmastfz';\nexport var menuItemName = 'rmastf12';\nexport var pageInfoDimmed = 'rmastf7';\nexport var propertyRow = 'rmastfh';\nexport var propertyRowCell = 'rmastfl';\nexport var propertyRowIconContainer = 'rmastfp';\nexport var propertyRowName = 'rmastfr';\nexport var propertyRowNameCell = 'rmastfn rmastfl';\nexport var propertyRowNameContainer = 'rmastfq';\nexport var propertyRowNamePopupRow = 'rmastf14';\nexport var propertyRowTypeItem = 'rmastf18';\nexport var propertyRowValueCell = 'rmastfs rmastfl rmastfm';\nexport var propertyRowValueNumberCell = 'rmastfw rmastft rmastfs rmastfl rmastfm';\nexport var propertyRowValueTextCell = 'rmastft rmastfs rmastfl rmastfm';\nexport var propertyRowValueTextarea = 'rmastfu rmastfs rmastfl rmastfm';\nexport var propertyRowValueTextareaInvisible = 'rmastfv rmastfs rmastfl rmastfm';\nexport var propertySettingRow = 'rmastf15 rmastfk rmastfj';\nexport var propertySettingRowName = 'rmastf16';\nexport var propertyTypeName = 'rmastf19';\nexport var root = 'rmastf1';\nexport var rootCentered = 'rmastf2';\nexport var selectorButton = 'rmastf17';\nexport var sortablePropertyRowNameCell = 'rmastfn rmastfl rmastfj rmastfm';\nexport var spacer = 'rmastf8';\nexport var tableBodyRoot = 'rmastfd';\nexport var tableBodySortable = 'rmastfe';\nexport var tableHeader = 'rmastf3';\nexport var tableHeaderBacklinksHint = 'rmastf9';\nexport var tableHeaderCollapseButtonWrapper = 'rmastf6';\nexport var tableHeaderDivider = 'rmastfc';\nexport var tableHeaderInfoRow = 'rmastf4';\nexport var tableHeaderSecondaryRow = 'rmastf5';\nexport var tableHeaderTimestamp = 'rmastfb';\nexport var tagsPropertyRow = 'rmastfi rmastfh';","import \"../core/src/components/page-list/filter/index.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/filter/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA71Vy3bjIAzd5yu0nC7IsfMe8jXYlmN1CHAAx+709N97wHnYidMmXXTJRY+rKyGmh1e3nosE3icABTkjxRuHUmK7nQDUDi1zKDH3HJRWGEAhaacYedw7DjkqjzbA+oC2lLrhUFFRoNpOPibTLnoao5daeeboP3I4CPuHMVGWpJBFvHUvPYdZdNgLuyPFYW1aSFcmMorGDdKu8hyWSRIwGaJUR2yW9Ay/zAaQa6nt1b3H1jOHuVaFsG8smvSpzXvUmNeGw6xLeIQy7b3eX6MSS88hHYK2Y7zpwFMBaXfMRP5vZ3WtiiuCmbYF2ltii2dFXo73vIsfeYDTkoov05/smRUF1e5czV36TUUeo6MRRUFqx2Fh2pPb7RABvNbOUxlaoTwqz8EZkSPL0Dc4GLPVeEF35vUm7OUqr60Lg2E0naBBHxeB7Dnt+kHhexXPTNsFAfBWKEeetOIgpIRkmi4doHDISDFd+34mXgWBYr4Rjnc1j173WzYsZ/NwOU88nx/X/ng/wzWHOaQgaq9jz0ixhgpfcZhthjX+hpB/vxfS7V+eKfHHGg4XzmmVRsFSSI6CXYj/hjrie3Uy4bpNMUr/LEZYVMkzMo7NLeVa3e7UrL/se2//6h9adf/QXUHzGGZst8VtyOJCCx9sY4WJTQ2v6GKPUpJx5LaTj0/naTRjsAcAAA==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var argStyle = 'vjs73ab';\nexport var ellipsisTextStyle = 'vjs73ac';\nexport var filterContainerStyle = 'vjs73a0';\nexport var filterItemCloseStyle = 'vjs73a6';\nexport var filterItemStyle = 'vjs73a5';\nexport var filterTypeIconStyle = 'vjs73aa';\nexport var filterTypeStyle = 'vjs73a9';\nexport var inputStyle = 'vjs73a7';\nexport var menuItemStyle = 'vjs73a1';\nexport var menuItemTextStyle = 'vjs73a4';\nexport var switchStyle = 'vjs73a8';\nexport var variableSelectDividerStyle = 'vjs73a3';\nexport var variableSelectTitleStyle = 'vjs73a2';","import \"../core/src/components/page-list/collections/collection-list-item.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/collections/collection-list-item.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA8VWbWvbMBD+nl8hCoUGquK8rlPY/scYYyjS2dYqS0aSm3Sj/31IshPZcZplK+xbfLmX5557fOeH7zMuqtkeMvRrghAXtpb0haBcwn4zQYhpqQ1Bz9TcYUzzXCjADvYO10ZU1Lzg4DD1riWIonQErZZ1CPUpsC2NUE8EZd6yE9yVBM2y7NY/UikKhYWDyhJknQHHSm93hiornNCKoC1lT4XRjeKxEsoe5vYe6Zoy4V7Ckw/Rz2ByqXcElYJzUAF6Y6zHziGnjXQRgJSYlVQVQLocm8nr5OHAAil9qsDFsPSAheB4aD/N8ZVTRzGTgj3RrYRPzjTwLaTsINVaKAemFzYLHh2Jy1UkcasNB4MN5aKxnrpoPplTj0sGMXvaw3n0OBdSAp/Gcn5klHsme/4VqKb9JzhWdI/bcS7WLahKqM42j7akvXlor9bdYA1I6sQzxGSmEApLyB1B+DFm65jo1KIbJ4UCgpRWIaqmnAtVtGGPsV7knhtaFAn3RxRkC7k2EKehlQPlCLq52fSw0a3VsnGhitM1QasIIQgz16Yi8aekDr7c4VV2GziJQFKlL/uttI+pvuNfZ1R9QYG1pAxKLXmiwxPFzGPNNvUBXvIeRAj36ftwkcUgn5TLw7SG9WZn8yVGoYqTGiHtEfbD6m8TjcFctDA7uY6BPr7Q6DMiuTDWYVYKyaOSe+qbrQdyDzGSjoaYiOFxELJInQjK0Oq6d72gdbcgkqzL8b1+Jsfpzs61ctiKnzAQX7CXeNHffavxaiEtFwZYVD3TsqnUCY5Y3VHjNn0mIr29rcOoZHd+NyCM1st6P+3qhOkhtCuFA2xrysLK2Blae3NjwWALEpjrNkkCfx1FN3JM3qTBVtODz65V2DrL3oCRAA3X9FgSpBS1FfZIjgWZJ/cxgfvhLNyzZ9sC04r3D/ebve3tHzL7D308XqfRy4ocJ0AwrdK2B1pPAH18P0Atf1cNJFH+4Bh2p7b3JZUAp/8X+Mj68BYvkVQqw/6SBrZXNfCjsU7kHkF7yUM5UPzCfNn7VYmrDIflux7/8H39DY+5qINlCwAA\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nimport \"../core/src/components/page-list/docs/page-list-item.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/docs/page-list-item.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA71W247bIBB9z1eglVbaSEvkXJsStf9RVVVFYGzTxWABTrKt9t8rg51gx0madtU3ezzMnDlzmPHk+3Sh+DTdJejXCCEubCnpK0GphMNmhBDTUhuCdtQ8YUzTVCjADg4Ol0YU1Lxi7zCuXXMQWe4IWi5Kf7QOgW1uhHohKKkte8FdTtA0SR7rVypFprBwUFiCrDPgWF7bnaHKCie0ImhL2UtmdKV4yISSycw+I11SJtyrf6uP6B2YVOo9QbngHJSHXhlbY+eQ0kq6AEBKzHKqMiBtjM3obTQ5skDyOpTnop+6x4J3PJYfx/jKqaOYScFe6FbCJ2cq+OZDtpBKLZQD0zk29R4tiYtlIHGrDQeDDeWisgStg/WsTR0qGYTgcQmXweNUSAl8HLLVHaO8JrLjX4Cqmi/esaAH3HRzvkoCqEKo1jYLtqi6ma+u1G1fDUjqxA5CMJMJhSWkjiDclNgS0YpFV04KBQQprfypknIuVNYcW4d8gXpuaJZF1J9QkC2k2kBohlYOlCPo4WHTwUa3VsvK+SxOlwQtAwSvy1SbgoRHSR18ecLL5NFzEoDEQl90S2leY3mHTxdEfUOApaQMci15JMMzwcxCzib0EV50DQKE5/g63GTRyyfm8titfr7pxXiRUajsLIcPe4I9Wf5toCGY8wZmK9ch0Kf7jD4jkgpjHWa5kDwouaO+6aond39G0sEjJmBY947MYyeCErS8765ntKxvSy/qYnisX4hxPrJTrRy24if0xOftOZ53R99yOJsPy4UBFlTPtKwKdYYjZHfUuE2XiUBvZ+owKtlTPRsQRqtFeRi3eXz3ENrnwgG2JWV+ZOwNLWtzZcFgCxKYaydJBH8VRDewS67SYIvx0WffKGyVJFdgRED9Mj2lBClFaYU9kWNBptF6jOB+uAj34ta2wLTi3b19tbaD/UNm/6GO9X0ava3IYQIE0youu6f1CNDH9wPU8HdXQyLl95Zhu2o7P1IRcPr/gJ///w0Mj9pSCyQWynl11y/l9q6aflTWibSG1Sx3jwEUv9Fy9n5ZwnTDfh6vhn+F334DRtyk13cLAAA=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nimport \"../core/src/components/page-list/tags/tag-list-item.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/tags/tag-list-item.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA8VWbW/bIBD+nl+BKlVqpBI5r0uJtv8xTdNE4GyzYLAAN+mm/ffJYCfYsZu1qrRv8eW4e+65hztmP+Zb6Q5PIkG/JwhxYUtJXwhKJZx2E4SYltoQ9EzNA8Y0TYUC7ODkcGlEQc0L9g7T2jUHkeWOoPWq9EfrENjmRqgDQUltOQrucoLmSXJff1IpMoWFg8ISZJ0Bx/La7gxVVjihFUF7yg6Z0ZXiIRNKZgv7iHRJmXAv/qs+op/BpFIfCcoF56A89MrYGjuHlFbSBQBSYpZTlQFpY+wmfyazMwskr0N5Lvqpeyx4x3P5cYxvnDqKmRTsQPcSPjtTwXcfsoVUaqEcmM6xufdoSVytA4l7bTgYbCgXla2pC+arPnW4ZBCixzWMo8epkBL4NKSrW0Z5zWTHvwBVNf94x4KecNPO5aYBVQjV2hbBFpW38OWVum2sAUmdeIYQzGRCYQmpIwhvQ7SWiVYtunJSKCBIaeVPlZRzobLm2DbkC9xzQ7Ms4v6Cguwh1QZCN7RyoBxBd3e7Dja6t1pWzmdxuiRoHSB4YabaFCT8lNTB1we8Tu49JwFIrPRVt5TmM9Z3+GtE1TcUWErKINeSRzq8Uswi5GxCn+FF9yBAeIzvw00WvXxiLs/d6uebj8aLjEJlVzl82Avs2fq9gYZgLhuYrVyHQF8uNPqCSCqMdZjlQvKg5I765pue3P0ZSQePmIBh2zuyjJ0IWr/tpme0bMdDFHM1PNVHYlxP7FQrh634BT3peXuOl93Jt/6HbCGHo8bt4mqThsLOZGFUsof6/iOMNqvyNG1B+g4hdMyFA2xLyvxYOBpa1ubKgsEWJDDXTosI5CYIa2BhvFqsLaZnn2Ojok2SvALDr8lLHpBSlFbYCyMWZBrT39PHqtfLT6PAR5e0BaYV767pV6vcUwvTYSl8TJVRPdu3afO2EoeJEEyruPxeYRGgp48DdLKjeEYbE92F3gpsF2zn/RQBp/8X+MDYqC21QmKl9OuLCti/qYCflXUirRE0+9unA8Vv9Jd9XBamZVUo7IfuZvi5GyUO47/dNb1HQfv9blwDVwvihD0xbQcfls0L56qIvz+nlA4gDAAA\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nimport \"../core/src/components/page-list/list.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/list.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA6VU2W7bMBB811cQAQIkQGlIPRybQYD+RxEEa3JlbS2RKrWS5Rb+90JUfNBHeuRRnOHs7M6Kk5cMHqofsz4TvxIh1mS4UCJL09vHRIi8xF6J7DHZJpMd8eMlYgW9PDnSzjKQRS8tVKjE7n4ag7ypUQmyJVmUDf3EAV6AXi29a61RogN/JyXk+UA4ALL2VIHfSO1K5+8ji5+CRUNNXcJGhS523UhDHjWTs0poV7aVHRDv1nIJtRLZtO4jqS+XpaCkpZXEWDVKaLSMfl+hKTzZlRKhUdehz0u3VqIgY9BG4g+xuHUWI3z2T8W/tw1TPgzEMloe+RKtueKsBk28CV/HNb8ZYJA5dM4T4/MHMXnJPluT5V2qiqEdceAG0FCV9XgFnJW8mtM5GDrbW4g3bB7AkOuwGQV64sExY8/SoHYexgDPBjZXHTXEaC4qRETQTB3+iQeBULuGxoqwaFzZclhST8uCX4d5svsFjtg0rUNi1yOGcdxN4dZP7Ft8DgX/Z//fsSgHSLe+GWYBLbvI5+J4UpEl0s5e+gkXr5n/bT/ovfNvCe0P9FUvpxpf9+/M4fkRd0eP1SxN6/4+6O3lp2MkBRkMs3u6GYK5GZM5y1KIbbL9DX8jfKlGBQAA\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var clearLinkStyle = '_1a7mq8x9';\nexport var colWrapper = '_1a7mq8x5';\nexport var deleteButton = '_1a7mq8xb';\nexport var deleteIcon = '_1a7mq8xc';\nexport var editTagWrapper = '_1a7mq8xa';\nexport var favoriteCell = '_1a7mq8x8';\nexport var groupsContainer = '_1a7mq8x3';\nexport var heading = '_1a7mq8x4';\nexport var hidden = '_1a7mq8x7';\nexport var hideInSmallContainer = '_1a7mq8x6';\nexport var listRootContainer = '_1a7mq8x0';\nexport var pageListScrollContainer = '_1a7mq8x1';\nexport var root = '_1a7mq8x2';","import \"../core/src/components/page-list/view/edit-collection/edit-collection.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/view/edit-collection/edit-collection.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA81W0ZabIBB9z1fw0nPaB/aoddOU/ZgeIqOyQXCBbEx7+u89IrpgTDbmqS8xAsPM3Llzx6dfaSaeM/uWoD8bhNQ76FKoE0E1ZwzkywYhC53FHxsgBG8NN/3WqeYWsGlpAQRJddK0fdn83TyNl6buUsZNK+iZoFJA15u9Ho3l5RkXSlqQliB3A96DPcHgs6ItQbvWnaaCVxJzC40hqABpQffLLWWMy4qgdNt2w8/O/4liyJZj6J+YcQ2F5UoSVChxbJzvE2e2JihNki/9aw28qu3H+yVEgbPv150RlH5qni+bf4pGcMXzo5BPeGZJ26EsH9ztlWagsVUtQWnbIaMEZ+id6q8Y07LkErA/Uiih9LcJ2p4LBA2M8Bmk2aw0WxdrqaTFhv8GglLv1S2dPPB5kvRrovc1FiPLhoPOKYnjcXw1UCjJqD4HcU0Z5hNPHkkwSODHkICrbnabVf4SAaW9H8mRLLgLG3JaPRNEj1ZFIe2u9nEE6rYHNTD76cwmhJKRbisADm6jyyS80smOHGHlPRl8jePCJ8PizTbar3Lv+72h3dgdrl60OFRaHSXDSxgE263mTUy0JfSHDvCkW9TNkSP308MvaMr40UwKEdG8l8R81nbF+uqkyWV58qXyzFucXaXjCkUO9c+dMrXm8kBQzGGIOdzz52M4rHR5r2KX/8GEqwIVSlfmeTO5ejm5RXEZvQfmfO3kjUdtcNOru6mhuuLSS+ggBMGZgzsTDe9gV9zcbdzuUp/PmzswkhfT65ZgPSak6u7AxkjsWQBB3FLBiwvV381Uv407xs3FLJqLkbYElm9DRbjEHtPdvB7anfhERuueS8MOLrkQwOL8TRxg9GlyNKCxAQGF7UVUwkygRuTjcuQPfDh4LPbKWtXc/ZnwD2iTbIVbCwAA\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var actionButton = '_12l52tqq';\nexport var bottomButton = '_12l52tqp';\nexport var bottomLeft = '_12l52tq4';\nexport var collectionEditContainer = '_12l52tqi';\nexport var confirmButton = '_12l52tqj';\nexport var ellipsis = '_12l52tq0';\nexport var includeItem = '_12l52tqb';\nexport var includeItemContent = '_12l52tqa';\nexport var includeItemContentIs = '_12l52tq9';\nexport var includeItemTitle = '_12l52tq8';\nexport var includeListTitle = '_12l52tq6';\nexport var includeTitle = '_12l52tqc';\nexport var pageList = '_12l52tql';\nexport var pagesList = '_12l52tq3';\nexport var pagesTab = '_12l52tq2';\nexport var pagesTabContent = '_12l52tq1';\nexport var previewActive = '_12l52tqr';\nexport var previewCountTips = '_12l52tqn';\nexport var previewCountTipsHighlight = '_12l52tqm';\nexport var resultPages = '_12l52tqk';\nexport var rulesBottom = '_12l52tq5';\nexport var rulesContainer = '_12l52tqh';\nexport var rulesContainerLeft = '_12l52tqg';\nexport var rulesContainerLeftContent = '_12l52tqe';\nexport var rulesContainerLeftContentInclude = '_12l52tqd';\nexport var rulesContainerLeftTab = '_12l52tqf';\nexport var rulesContainerRight = '_12l52tq7';\nexport var rulesTitle = '_12l52tqs';\nexport var rulesTitleHighlight = '_12l52tqo';","import debug from 'debug';\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nconst SESSION_KEY = 'affine:debug';\n\nif (typeof window !== 'undefined') {\n // enable debug logs if the URL search string contains `debug`\n // e.g. http://localhost:3000/?debug\n if (window.location.search.includes('debug')) {\n // enable debug logs for the current session\n // since the query string may be removed by the browser after navigations,\n // we need to store the debug flag in sessionStorage\n sessionStorage.setItem(SESSION_KEY, 'true');\n }\n if (sessionStorage.getItem(SESSION_KEY) === 'true') {\n // enable all debug logs by default\n debug.enable('*');\n console.warn('Debug logs enabled');\n }\n if (process.env.NODE_ENV === 'development') {\n debug.enable('*,-micromark');\n console.warn('Debug logs enabled');\n }\n}\n\nexport class DebugLogger {\n private readonly _debug: debug.Debugger;\n\n constructor(namespace: string) {\n this._debug = debug(namespace);\n }\n\n set enabled(enabled: boolean) {\n this._debug.enabled = enabled;\n }\n\n get enabled() {\n return this._debug.enabled;\n }\n\n debug(message: string, ...args: any[]) {\n this.log('debug', message, ...args);\n }\n\n info(message: string, ...args: any[]) {\n this.log('info', message, ...args);\n }\n\n warn(message: string, ...args: any[]) {\n this.log('warn', message, ...args);\n }\n\n error(message: string, ...args: any[]) {\n this.log('error', message, ...args);\n }\n\n log(level: LogLevel, message: string, ...args: any[]) {\n this._debug.log = console[level].bind(console);\n this._debug(`[${level.toUpperCase()}] ${message}`, ...args);\n }\n\n namespace(extra: string) {\n const currentNamespace = this._debug.namespace;\n return new DebugLogger(`${currentNamespace}:${extra}`);\n }\n}\n","// This file should has not side effect\nimport type { DocCollection } from '@blocksuite/store';\n\ndeclare global {\n interface Window {\n appInfo: {\n electron: boolean;\n schema: string;\n windowName: string;\n };\n }\n}\n\n//#region runtime variables\nexport const isBrowser = typeof window !== 'undefined';\nexport const isServer = !isBrowser && typeof navigator === 'undefined';\nexport const isDesktop = isBrowser && !!window.appInfo?.electron;\n//#endregion\nexport const DEFAULT_WORKSPACE_NAME = 'ARMS';\nexport const UNTITLED_WORKSPACE_NAME = 'Untitled';\n\nexport const DEFAULT_SORT_KEY = 'updatedDate';\nexport const MessageCode = {\n loginError: 0,\n noPermission: 1,\n loadListFailed: 2,\n getDetailFailed: 3,\n createWorkspaceFailed: 4,\n getMembersFailed: 5,\n updateWorkspaceFailed: 6,\n deleteWorkspaceFailed: 7,\n inviteMemberFailed: 8,\n removeMemberFailed: 9,\n acceptInvitingFailed: 10,\n getBlobFailed: 11,\n leaveWorkspaceFailed: 12,\n downloadWorkspaceFailed: 13,\n refreshTokenError: 14,\n blobTooLarge: 15,\n} as const;\n\nexport const Messages = {\n [MessageCode.loginError]: {\n message: 'Login failed',\n },\n [MessageCode.noPermission]: {\n message: 'No permission',\n },\n [MessageCode.loadListFailed]: {\n message: 'Load list failed',\n },\n [MessageCode.getDetailFailed]: {\n message: 'Get detail failed',\n },\n [MessageCode.createWorkspaceFailed]: {\n message: 'Create workspace failed',\n },\n [MessageCode.getMembersFailed]: {\n message: 'Get members failed',\n },\n [MessageCode.updateWorkspaceFailed]: {\n message: 'Update workspace failed',\n },\n [MessageCode.deleteWorkspaceFailed]: {\n message: 'Delete workspace failed',\n },\n [MessageCode.inviteMemberFailed]: {\n message: 'Invite member failed',\n },\n [MessageCode.removeMemberFailed]: {\n message: 'Remove member failed',\n },\n [MessageCode.acceptInvitingFailed]: {\n message: 'Accept inviting failed',\n },\n [MessageCode.getBlobFailed]: {\n message: 'Get blob failed',\n },\n [MessageCode.leaveWorkspaceFailed]: {\n message: 'Leave workspace failed',\n },\n [MessageCode.downloadWorkspaceFailed]: {\n message: 'Download workspace failed',\n },\n [MessageCode.refreshTokenError]: {\n message: 'Refresh token failed',\n },\n [MessageCode.blobTooLarge]: {\n message: 'Blob too large',\n },\n} as const satisfies {\n [key in (typeof MessageCode)[keyof typeof MessageCode]]: {\n message: string;\n };\n};\n\nexport class PageNotFoundError extends TypeError {\n readonly docCollection: DocCollection;\n readonly pageId: string;\n\n constructor(docCollection: DocCollection, pageId: string) {\n super();\n this.docCollection = docCollection;\n this.pageId = pageId;\n }\n}\n\nexport class WorkspaceNotFoundError extends TypeError {\n readonly workspaceId: string;\n\n constructor(workspaceId: string) {\n super();\n this.workspaceId = workspaceId;\n }\n}\n\nexport class QueryParamError extends TypeError {\n readonly targetKey: string;\n readonly query: unknown;\n\n constructor(targetKey: string, query: unknown) {\n super();\n this.targetKey = targetKey;\n this.query = query;\n }\n}\n\nexport class Unreachable extends Error {\n constructor(message?: string) {\n super(message);\n }\n}\n","export class UaHelper {\n private readonly uaMap;\n public isLinux = false;\n public isMacOs = false;\n public isSafari = false;\n public isWindows = false;\n public isFireFox = false;\n public isMobile = false;\n public isChrome = false;\n public isIOS = false;\n\n getChromeVersion = (): number => {\n let raw = this.navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\n if (!raw) {\n raw = this.navigator.userAgent.match(/(CriOS)\\/([0-9]+)/);\n }\n if (!raw) {\n console.error('Cannot get chrome version');\n return 0;\n }\n return parseInt(raw[2], 10);\n };\n\n constructor(private readonly navigator: Navigator) {\n this.uaMap = getUa(navigator);\n this.initUaFlags();\n }\n\n public checkUseragent(isUseragent: keyof ReturnType) {\n return Boolean(this.uaMap[isUseragent]);\n }\n\n private initUaFlags() {\n this.isLinux = this.checkUseragent('linux');\n this.isMacOs = this.checkUseragent('mac');\n this.isSafari = this.checkUseragent('safari');\n this.isWindows = this.checkUseragent('win');\n this.isFireFox = this.checkUseragent('firefox');\n this.isMobile = this.checkUseragent('mobile');\n this.isChrome = this.checkUseragent('chrome');\n this.isIOS = this.checkUseragent('ios');\n }\n}\n\nconst getUa = (navigator: Navigator) => {\n const ua = navigator.userAgent;\n const uas = ua.toLowerCase();\n const mobile = /iPhone|iPad|iPod|Android/i.test(ua);\n const android =\n (mobile && (uas.indexOf('android') > -1 || uas.indexOf('linux') > -1)) ||\n uas.indexOf('adr') > -1;\n const ios = mobile && !android && /Mac OS/i.test(ua);\n const mac = !mobile && /Mac OS/i.test(ua);\n const iphone = ios && uas.indexOf('iphone') > -1;\n const ipad = ios && !iphone;\n const wx = /MicroMessenger/i.test(ua);\n const chrome = /CriOS/i.test(ua) || /Chrome/i.test(ua);\n const tiktok = mobile && /aweme/i.test(ua);\n const weibo = mobile && /Weibo/i.test(ua);\n const safari =\n ios && !chrome && !wx && !weibo && !tiktok && /Safari|Macintosh/i.test(ua);\n const firefox = /Firefox/.test(ua);\n const win = /windows|win32|win64|wow32|wow64/.test(uas);\n const linux = /linux/.test(uas);\n return {\n ua,\n mobile,\n android,\n ios,\n mac,\n wx,\n chrome,\n iphone,\n ipad,\n safari,\n tiktok,\n weibo,\n win,\n linux,\n firefox,\n };\n};\n","/// \nimport { assertEquals } from '@blocksuite/global/utils';\nimport { z } from 'zod';\n\nimport { isDesktop, isServer } from './constant.js';\nimport { UaHelper } from './ua-helper.js';\n\nexport const runtimeFlagsSchema = z.object({\n // this is for the electron app\n serverUrlPrefix: z.string(),\n appVersion: z.string(),\n editorVersion: z.string(),\n appBuildType: z.union([\n z.literal('stable'),\n z.literal('beta'),\n z.literal('internal'),\n z.literal('canary'),\n ]),\n isSelfHosted: z.boolean().optional(),\n githubUrl: z.string(),\n changelogUrl: z.string(),\n downloadUrl: z.string(),\n // see: tools/workers\n imageProxyUrl: z.string(),\n linkPreviewUrl: z.string(),\n allowLocalWorkspace: z.boolean(),\n enablePreloading: z.boolean(),\n enableNewSettingUnstableApi: z.boolean(),\n enableCaptcha: z.boolean(),\n enableEnhanceShareMode: z.boolean(),\n enableExperimentalFeature: z.boolean(),\n enableInfoModal: z.boolean(),\n enableOrganize: z.boolean(),\n enableThemeEditor: z.boolean(),\n});\n\nexport type RuntimeConfig = z.infer;\n\ntype BrowserBase = {\n /**\n * @example https://app.affine.pro\n * @example http://localhost:3000\n */\n origin: string;\n isDesktop: boolean;\n isBrowser: true;\n isServer: false;\n isDebug: boolean;\n\n // browser special properties\n isLinux: boolean;\n isMacOs: boolean;\n isIOS: boolean;\n isSafari: boolean;\n isWindows: boolean;\n isFireFox: boolean;\n isMobile: boolean;\n isChrome: boolean;\n};\n\ntype NonChromeBrowser = BrowserBase & {\n isChrome: false;\n};\n\ntype ChromeBrowser = BrowserBase & {\n isSafari: false;\n isFireFox: false;\n isChrome: true;\n chromeVersion: number;\n};\n\ntype Browser = NonChromeBrowser | ChromeBrowser;\n\ntype Server = {\n isDesktop: false;\n isBrowser: false;\n isServer: true;\n isDebug: boolean;\n};\n\ninterface Desktop extends ChromeBrowser {\n isDesktop: true;\n isBrowser: true;\n isServer: false;\n isDebug: boolean;\n}\n\nexport type Environment = Browser | Server | Desktop;\n\nexport function setupGlobal() {\n if (globalThis.$AFFINE_SETUP) {\n return;\n }\n runtimeFlagsSchema.parse(runtimeConfig);\n\n let environment: Environment;\n const isDebug = process.env.NODE_ENV === 'development';\n if (isServer) {\n environment = {\n isDesktop: false,\n isBrowser: false,\n isServer: true,\n isDebug,\n } satisfies Server;\n } else {\n const uaHelper = new UaHelper(navigator);\n\n environment = {\n origin: window.location.origin,\n isDesktop,\n isBrowser: true,\n isServer: false,\n isDebug,\n isLinux: uaHelper.isLinux,\n isMacOs: uaHelper.isMacOs,\n isSafari: uaHelper.isSafari,\n isWindows: uaHelper.isWindows,\n isFireFox: uaHelper.isFireFox,\n isMobile: uaHelper.isMobile,\n isChrome: uaHelper.isChrome,\n isIOS: uaHelper.isIOS,\n } as Browser;\n // Chrome on iOS is still Safari\n if (environment.isChrome && !environment.isIOS) {\n assertEquals(environment.isSafari, false);\n assertEquals(environment.isFireFox, false);\n environment = {\n ...environment,\n isSafari: false,\n isFireFox: false,\n isChrome: true,\n chromeVersion: uaHelper.getChromeVersion(),\n } satisfies ChromeBrowser;\n }\n }\n globalThis.environment = environment;\n\n globalThis.$AFFINE_SETUP = true;\n}\n","export enum WorkspaceFlavour {\n /**\n * New AFFiNE Cloud Workspace using Nest.js Server.\n */\n AFFINE_CLOUD = 'affine-cloud',\n LOCAL = 'local',\n}\n","import { createStore } from 'jotai';\n\n// global store\nlet rootStore = createStore();\n\nexport function getCurrentStore() {\n return rootStore;\n}\n\n/**\n * @internal do not use this function unless you know what you are doing\n */\nexport function _setCurrentStore(store: ReturnType) {\n rootStore = store;\n}\n","import { DebugLogger } from '@affine/debug';\nimport { setupGlobal } from '@affine/env/global';\nimport type { DocCollection } from '@blocksuite/store';\nimport { atom } from 'jotai';\nimport { atomWithStorage } from 'jotai/utils';\nimport { atomEffect } from 'jotai-effect';\n\nimport { getCurrentStore } from './root-store';\n\nsetupGlobal();\n\nconst logger = new DebugLogger('affine:settings');\n\nexport type DateFormats =\n | 'MM/dd/YYYY'\n | 'dd/MM/YYYY'\n | 'YYYY-MM-dd'\n | 'YYYY.MM.dd'\n | 'YYYY/MM/dd'\n | 'dd-MMM-YYYY'\n | 'dd MMMM YYYY';\n\nexport type AppSetting = {\n clientBorder: boolean;\n fullWidthLayout: boolean;\n windowFrameStyle: 'frameless' | 'NativeTitleBar';\n fontStyle: FontFamily;\n dateFormat: DateFormats;\n startWeekOnMonday: boolean;\n enableBlurBackground: boolean;\n enableNoisyBackground: boolean;\n autoCheckUpdate: boolean;\n autoDownloadUpdate: boolean;\n enableMultiView: boolean;\n enableTelemetry: boolean;\n editorFlags: Partial>;\n};\nexport const windowFrameStyleOptions: AppSetting['windowFrameStyle'][] = [\n 'frameless',\n 'NativeTitleBar',\n];\n\nexport const dateFormatOptions: DateFormats[] = [\n 'MM/dd/YYYY',\n 'dd/MM/YYYY',\n 'YYYY-MM-dd',\n 'YYYY.MM.dd',\n 'YYYY/MM/dd',\n 'dd-MMM-YYYY',\n 'dd MMMM YYYY',\n];\n\nexport type FontFamily = 'Sans' | 'Serif' | 'Mono';\n\nexport const fontStyleOptions = [\n { key: 'Sans', value: 'var(--affine-font-sans-family)' },\n { key: 'Serif', value: 'var(--affine-font-serif-family)' },\n { key: 'Mono', value: 'var(--affine-font-mono-family)' },\n] satisfies {\n key: FontFamily;\n value: string;\n}[];\n\nconst appSettingBaseAtom = atomWithStorage('affine-settings', {\n clientBorder: environment.isDesktop && !environment.isWindows,\n fullWidthLayout: false,\n windowFrameStyle: 'frameless',\n fontStyle: 'Sans',\n dateFormat: dateFormatOptions[0],\n startWeekOnMonday: false,\n enableBlurBackground: true,\n enableNoisyBackground: true,\n autoCheckUpdate: true,\n autoDownloadUpdate: true,\n enableTelemetry: true,\n enableMultiView: false,\n editorFlags: {},\n});\n\nexport function setupEditorFlags(docCollection: DocCollection) {\n const store = getCurrentStore();\n const syncEditorFlags = () => {\n try {\n const editorFlags = getCurrentStore().get(appSettingBaseAtom).editorFlags;\n Object.entries(editorFlags ?? {}).forEach(([key, value]) => {\n docCollection.awarenessStore.setFlag(\n key as keyof BlockSuiteFlags,\n value\n );\n });\n\n // override this flag in app settings\n // TODO(@eyhn): need a better way to manage block suite flags\n Object.entries(blocksuiteFeatureFlags).forEach(([key, value]) => {\n if (value.defaultState !== undefined) {\n docCollection.awarenessStore.setFlag(\n key as keyof BlockSuiteFlags,\n value.defaultState\n );\n }\n });\n } catch (err) {\n logger.error('syncEditorFlags', err);\n }\n };\n store.sub(appSettingBaseAtom, syncEditorFlags);\n syncEditorFlags();\n}\n\ntype SetStateAction = Value | ((prev: Value) => Value);\n\n// todo(@pengx17): use global state instead\nconst appSettingEffect = atomEffect(get => {\n const settings = get(appSettingBaseAtom);\n // some values in settings should be synced into electron side\n if (environment.isDesktop) {\n logger.debug('sync settings to electron', settings);\n // this api type in @affine/electron-api, but it is circular dependency this package, use any here\n (window as any).apis?.updater\n .setConfig({\n autoCheckUpdate: settings.autoCheckUpdate,\n autoDownloadUpdate: settings.autoDownloadUpdate,\n })\n .catch((err: any) => {\n console.error(err);\n });\n }\n});\n\nexport const appSettingAtom = atom<\n AppSetting,\n [SetStateAction>],\n void\n>(\n get => {\n get(appSettingEffect);\n return get(appSettingBaseAtom);\n },\n (_get, set, apply) => {\n set(appSettingBaseAtom, prev => {\n const next = typeof apply === 'function' ? apply(prev) : apply;\n return { ...prev, ...next };\n });\n }\n);\n\nexport type BuildChannel = 'stable' | 'beta' | 'canary' | 'internal';\n\nexport type FeedbackType = 'discord' | 'email' | 'github';\n\nexport type PreconditionType = () => boolean | undefined;\n\nexport type Flag = Partial<{\n [key in K]: {\n displayName: string;\n description?: string;\n precondition?: PreconditionType;\n defaultState?: boolean; // default to open and not controlled by user\n feedbackType?: FeedbackType;\n };\n}>;\n\nconst isNotStableBuild: PreconditionType = () => {\n return runtimeConfig.appBuildType !== 'stable';\n};\nconst isDesktopEnvironment: PreconditionType = () => environment.isDesktop;\nconst neverShow: PreconditionType = () => false;\n\nexport const blocksuiteFeatureFlags: Flag = {\n enable_database_attachment_note: {\n displayName: 'Database Attachment Note',\n description: 'Allows adding notes to database attachments.',\n precondition: isNotStableBuild,\n },\n enable_database_statistics: {\n displayName: 'Database Block Statistics',\n description: 'Shows statistics for database blocks.',\n precondition: isNotStableBuild,\n },\n enable_block_query: {\n displayName: 'Todo Block Query',\n description: 'Enables querying of todo blocks.',\n precondition: isNotStableBuild,\n },\n enable_synced_doc_block: {\n displayName: 'Synced Doc Block',\n description: 'Enables syncing of doc blocks.',\n precondition: neverShow,\n defaultState: true,\n },\n enable_edgeless_text: {\n displayName: 'Edgeless Text',\n description: 'Enables edgeless text blocks.',\n precondition: neverShow,\n defaultState: true,\n },\n enable_color_picker: {\n displayName: 'Color Picker',\n description: 'Enables color picker blocks.',\n precondition: neverShow,\n defaultState: true,\n },\n enable_ai_chat_block: {\n displayName: 'AI Chat Block',\n description: 'Enables AI chat blocks.',\n precondition: neverShow,\n defaultState: true,\n },\n enable_ai_onboarding: {\n displayName: 'AI Onboarding',\n description: 'Enables AI onboarding.',\n precondition: neverShow,\n defaultState: true,\n },\n enable_expand_database_block: {\n displayName: 'Expand Database Block',\n description: 'Enables expanding of database blocks.',\n precondition: neverShow,\n defaultState: true,\n },\n};\n\nexport const affineFeatureFlags: Flag = {\n enableMultiView: {\n displayName: 'Split View',\n description:\n 'The Split View feature in AFFiNE allows users to divide their workspace into multiple sections, enabling simultaneous viewing and editing of different documents.The Split View feature in AFFiNE allows users to divide their workspace into multiple sections, enabling simultaneous viewing and editing of different documents.',\n feedbackType: 'discord',\n precondition: isDesktopEnvironment,\n },\n};\n","import { CONSTRUCTOR_CONTEXT } from '../constructor-context';\nimport type { FrameworkProvider } from '../provider';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class Component {\n readonly framework: FrameworkProvider;\n readonly props: Props;\n\n get eventBus() {\n return this.framework.eventBus;\n }\n\n constructor() {\n if (!CONSTRUCTOR_CONTEXT.current.provider) {\n throw new Error('Component must be created in the context of a provider');\n }\n this.framework = CONSTRUCTOR_CONTEXT.current.provider;\n this.props = CONSTRUCTOR_CONTEXT.current.props;\n CONSTRUCTOR_CONTEXT.current = {};\n }\n\n dispose() {}\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n","import { Component } from './component';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class Entity extends Component {\n readonly __isEntity = true;\n}\n","import { Component } from './component';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class Scope extends Component {\n readonly __injectable = true;\n\n get collection() {\n return this.framework.collection;\n }\n\n get scope() {\n return this.framework.scope;\n }\n\n get get() {\n return this.framework.get;\n }\n\n get getAll() {\n return this.framework.getAll;\n }\n\n get getOptional() {\n return this.framework.getOptional;\n }\n\n get createEntity() {\n return this.framework.createEntity;\n }\n\n get createScope() {\n return this.framework.createScope;\n }\n\n get emitEvent() {\n return this.framework.emitEvent;\n }\n\n override dispose(): void {\n super.dispose();\n this.framework.dispose();\n }\n}\n","import { Component } from './component';\n\nexport class Service extends Component {\n readonly __isService = true;\n readonly __injectable = true;\n}\n","import { Component } from './component';\n\nexport class Store extends Component {\n readonly __isStore = true;\n readonly __injectable = true;\n}\n","import type { FrameworkProvider } from './provider';\n\ninterface Context {\n provider?: FrameworkProvider;\n props?: any;\n}\n\nexport const CONSTRUCTOR_CONTEXT: {\n current: Context;\n} = { current: {} };\n\n/**\n * @internal\n */\nexport function withContext(cb: () => T, context: Context): T {\n const pre = CONSTRUCTOR_CONTEXT.current;\n try {\n CONSTRUCTOR_CONTEXT.current = context;\n return cb();\n } finally {\n CONSTRUCTOR_CONTEXT.current = pre;\n }\n}\n","import type { ComponentVariant } from './types';\n\nexport const DEFAULT_VARIANT: ComponentVariant = 'default';\nexport const ROOT_SCOPE = [];\n\nexport const SUB_COMPONENTS = Symbol('subComponents');\n","import { DEFAULT_VARIANT } from './consts';\nimport type { IdentifierValue } from './types';\n\nexport class RecursionLimitError extends Error {\n constructor() {\n super('Dynamic resolve recursion limit reached');\n }\n}\n\nexport class CircularDependencyError extends Error {\n constructor(public readonly dependencyStack: IdentifierValue[]) {\n super(\n `A circular dependency was detected.\\n` +\n stringifyDependencyStack(dependencyStack)\n );\n }\n}\n\nexport class ComponentNotFoundError extends Error {\n constructor(public readonly identifier: IdentifierValue) {\n super(\n `Component ${stringifyIdentifier(identifier)} not found in container`\n );\n }\n}\n\nexport class MissingDependencyError extends Error {\n constructor(\n public readonly from: IdentifierValue,\n public readonly target: IdentifierValue,\n public readonly dependencyStack: IdentifierValue[]\n ) {\n super(\n `Missing dependency ${stringifyIdentifier(\n target\n )} in creating ${stringifyIdentifier(\n from\n )}.\\n${stringifyDependencyStack(dependencyStack)}`\n );\n }\n}\n\nexport class DuplicateDefinitionError extends Error {\n constructor(public readonly identifier: IdentifierValue) {\n super(`${stringifyIdentifier(identifier)} already exists`);\n }\n}\n\nfunction stringifyIdentifier(identifier: IdentifierValue) {\n return `[${identifier.identifierName}]${\n identifier.variant !== DEFAULT_VARIANT ? `(${identifier.variant})` : ''\n }`;\n}\n\nfunction stringifyDependencyStack(dependencyStack: IdentifierValue[]) {\n return dependencyStack\n .map(identifier => `${stringifyIdentifier(identifier)}`)\n .join(' -> ');\n}\n","import { DebugLogger } from '@affine/debug';\n\nimport { stableHash } from '../../utils';\nimport type { FrameworkProvider } from '.';\nimport type { Service } from './components/service';\nimport { SUB_COMPONENTS } from './consts';\nimport { createIdentifier } from './identifier';\nimport type { SubComponent } from './types';\n\nexport interface FrameworkEvent {\n id: string;\n _type: T;\n}\n\nexport function createEvent(id: string): FrameworkEvent {\n return { id, _type: {} as T };\n}\n\nexport type FrameworkEventType =\n T extends FrameworkEvent ? E : never;\n\nconst logger = new DebugLogger('affine:event-bus');\n\nexport class EventBus {\n private listeners: Record void>> = {};\n\n constructor(\n provider: FrameworkProvider,\n private readonly parent?: EventBus\n ) {\n const handlers = provider.getAll(EventHandler, {\n sameScope: true,\n });\n\n for (const handler of handlers.values()) {\n this.on(handler.event.id, handler.handler);\n }\n }\n\n get root(): EventBus {\n return this.parent?.root ?? this;\n }\n\n on(id: string, listener: (event: FrameworkEvent) => void) {\n if (!this.listeners[id]) {\n this.listeners[id] = [];\n }\n this.listeners[id].push(listener);\n const off = this.parent?.on(id, listener);\n return () => {\n this.off(id, listener);\n off?.();\n };\n }\n\n off(id: string, listener: (event: FrameworkEvent) => void) {\n if (!this.listeners[id]) {\n return;\n }\n this.listeners[id] = this.listeners[id].filter(l => l !== listener);\n }\n\n emit(event: FrameworkEvent, payload: T) {\n logger.debug('Emitting event', event.id, payload);\n const listeners = this.listeners[event.id];\n if (!listeners) {\n return;\n }\n listeners.forEach(listener => {\n try {\n listener(payload);\n } catch (e) {\n console.error(e);\n }\n });\n }\n}\n\ninterface EventHandler {\n event: FrameworkEvent;\n handler: (payload: any) => void;\n}\n\nexport const EventHandler = createIdentifier('EventHandler');\n\nexport const OnEvent = <\n E extends FrameworkEvent,\n C extends abstract new (...args: any) => any,\n I = InstanceType,\n>(\n e: E,\n pick: I extends Service ? (i: I) => (e: FrameworkEventType) => void : never\n) => {\n return (target: C): C => {\n const handlers = (target as any)[SUB_COMPONENTS] ?? [];\n (target as any)[SUB_COMPONENTS] = [\n ...handlers,\n {\n identifier: EventHandler(\n target.name + stableHash(e) + stableHash(pick)\n ),\n factory: provider => {\n return {\n event: e,\n handler: (payload: any) => {\n const i = provider.get(target);\n pick(i).apply(i, [payload]);\n },\n } satisfies EventHandler;\n },\n } satisfies SubComponent,\n ];\n return target;\n };\n};\n","import type { Component } from './components/component';\nimport type { Entity } from './components/entity';\nimport type { Scope } from './components/scope';\nimport { withContext } from './constructor-context';\nimport {\n CircularDependencyError,\n ComponentNotFoundError,\n MissingDependencyError,\n RecursionLimitError,\n} from './error';\nimport { EventBus, type FrameworkEvent } from './event';\nimport type { Framework } from './framework';\nimport { parseIdentifier } from './identifier';\nimport type {\n ComponentVariant,\n FrameworkScopeStack,\n GeneralIdentifier,\n IdentifierValue,\n} from './types';\n\nexport interface ResolveOptions {\n sameScope?: boolean;\n optional?: boolean;\n noCache?: boolean;\n props?: any;\n}\n\nexport abstract class FrameworkProvider {\n abstract collection: Framework;\n abstract scope: FrameworkScopeStack;\n abstract getRaw(identifier: IdentifierValue, options?: ResolveOptions): any;\n abstract getAllRaw(\n identifier: IdentifierValue,\n options?: ResolveOptions\n ): Map;\n abstract dispose(): void;\n abstract eventBus: EventBus;\n\n get = (identifier: GeneralIdentifier, options?: ResolveOptions): T => {\n return this.getRaw(parseIdentifier(identifier), {\n ...options,\n optional: false,\n });\n };\n\n getAll = (\n identifier: GeneralIdentifier,\n options?: ResolveOptions\n ): Map => {\n return this.getAllRaw(parseIdentifier(identifier), {\n ...options,\n });\n };\n\n getOptional = (\n identifier: GeneralIdentifier,\n options?: ResolveOptions\n ): T | null => {\n return this.getRaw(parseIdentifier(identifier), {\n ...options,\n optional: true,\n });\n };\n\n createEntity = <\n T extends Entity,\n Props extends T extends Component ? P : never,\n >(\n identifier: GeneralIdentifier,\n ...[props]: Props extends Record ? [] : [Props]\n ): T => {\n return this.getRaw(parseIdentifier(identifier), {\n noCache: true,\n sameScope: true,\n props,\n });\n };\n\n createScope = <\n T extends Scope,\n Props extends T extends Component ? P : never,\n >(\n root: GeneralIdentifier,\n ...[props]: Props extends Record ? [] : [Props]\n ): T => {\n const newProvider = this.collection.provider(\n [...this.scope, parseIdentifier(root).identifierName],\n this\n );\n return newProvider.getRaw(parseIdentifier(root), {\n sameScope: true,\n props,\n });\n };\n\n emitEvent = (event: FrameworkEvent, payload: T) => {\n this.eventBus.emit(event, payload);\n };\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n\nexport class ComponentCachePool {\n cache: Map> = new Map();\n\n getOrInsert(identifier: IdentifierValue, insert: () => any) {\n const cache = this.cache.get(identifier.identifierName) ?? new Map();\n if (!cache.has(identifier.variant)) {\n cache.set(identifier.variant, insert());\n }\n const cached = cache.get(identifier.variant);\n this.cache.set(identifier.identifierName, cache);\n return cached;\n }\n\n dispose() {\n for (const t of this.cache.values()) {\n for (const i of t.values()) {\n if (typeof i === 'object' && typeof i[Symbol.dispose] === 'function') {\n try {\n i[Symbol.dispose]();\n } catch (err) {\n setImmediate(() => {\n throw err;\n });\n }\n }\n }\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n\nclass Resolver extends FrameworkProvider {\n constructor(\n public readonly provider: BasicFrameworkProvider,\n public readonly depth = 0,\n public readonly stack: IdentifierValue[] = []\n ) {\n super();\n }\n\n scope = this.provider.scope;\n collection = this.provider.collection;\n eventBus = this.provider.eventBus;\n\n getRaw(\n identifier: IdentifierValue,\n {\n sameScope = false,\n optional = false,\n noCache = false,\n props,\n }: ResolveOptions = {}\n ) {\n const factory = this.provider.collection.getFactory(\n identifier,\n this.provider.scope\n );\n if (!factory) {\n if (this.provider.parent && !sameScope) {\n return this.provider.parent.getRaw(identifier, {\n sameScope: sameScope,\n optional,\n noCache,\n props,\n });\n }\n\n if (optional) {\n return undefined;\n }\n throw new ComponentNotFoundError(identifier);\n }\n\n const runFactory = () => {\n const nextResolver = this.track(identifier);\n try {\n return withContext(() => factory(nextResolver), {\n provider: this.provider,\n props,\n });\n } catch (err) {\n if (err instanceof ComponentNotFoundError) {\n throw new MissingDependencyError(\n identifier,\n err.identifier,\n this.stack\n );\n }\n throw err;\n }\n };\n\n if (noCache) {\n return runFactory();\n }\n\n return this.provider.cache.getOrInsert(identifier, runFactory);\n }\n\n getAllRaw(\n identifier: IdentifierValue,\n { sameScope = false, noCache, props }: ResolveOptions = {}\n ): Map {\n const vars = this.provider.collection.getFactoryAll(\n identifier,\n this.provider.scope\n );\n\n if (vars === undefined) {\n if (this.provider.parent && !sameScope) {\n return this.provider.parent.getAllRaw(identifier);\n }\n\n return new Map();\n }\n\n const result = new Map();\n\n for (const [variant, factory] of vars) {\n // eslint-disable-next-line sonarjs/no-identical-functions\n const runFactory = () => {\n const nextResolver = this.track(identifier);\n try {\n return withContext(() => factory(nextResolver), {\n provider: this.provider,\n props,\n });\n } catch (err) {\n if (err instanceof ComponentNotFoundError) {\n throw new MissingDependencyError(\n identifier,\n err.identifier,\n this.stack\n );\n }\n throw err;\n }\n };\n let service;\n if (noCache) {\n service = runFactory();\n } else {\n service = this.provider.cache.getOrInsert(\n {\n identifierName: identifier.identifierName,\n variant,\n },\n runFactory\n );\n }\n result.set(variant, service);\n }\n\n return result;\n }\n\n track(identifier: IdentifierValue): Resolver {\n const depth = this.depth + 1;\n if (depth >= 100) {\n throw new RecursionLimitError();\n }\n const circular = this.stack.find(\n i =>\n i.identifierName === identifier.identifierName &&\n i.variant === identifier.variant\n );\n if (circular) {\n throw new CircularDependencyError([...this.stack, identifier]);\n }\n\n return new Resolver(this.provider, depth, [...this.stack, identifier]);\n }\n\n override dispose(): void {}\n}\n\nexport class BasicFrameworkProvider extends FrameworkProvider {\n public readonly cache = new ComponentCachePool();\n public readonly collection: Framework;\n public readonly eventBus: EventBus;\n\n disposed = false;\n\n constructor(\n collection: Framework,\n public readonly scope: string[],\n public readonly parent: FrameworkProvider | null\n ) {\n super();\n this.collection = collection;\n this.eventBus = new EventBus(this, this.parent?.eventBus);\n }\n\n getRaw(identifier: IdentifierValue, options?: ResolveOptions) {\n const resolver = new Resolver(this);\n return resolver.getRaw(identifier, options);\n }\n\n getAllRaw(\n identifier: IdentifierValue,\n options?: ResolveOptions\n ): Map {\n const resolver = new Resolver(this);\n return resolver.getAllRaw(identifier, options);\n }\n\n dispose(): void {\n if (this.disposed) {\n return;\n }\n this.disposed = true;\n this.cache.dispose();\n }\n}\n","import type { FrameworkScopeStack } from './types';\n\nexport function stringifyScope(scope: FrameworkScopeStack): string {\n return scope.join('/');\n}\n","import type { Component } from './components/component';\nimport type { Entity } from './components/entity';\nimport type { Scope } from './components/scope';\nimport type { Service } from './components/service';\nimport type { Store } from './components/store';\nimport { DEFAULT_VARIANT, ROOT_SCOPE, SUB_COMPONENTS } from './consts';\nimport { DuplicateDefinitionError } from './error';\nimport { parseIdentifier } from './identifier';\nimport type { FrameworkProvider } from './provider';\nimport { BasicFrameworkProvider } from './provider';\nimport { stringifyScope } from './scope';\nimport type {\n ComponentFactory,\n ComponentVariant,\n FrameworkScopeStack,\n GeneralIdentifier,\n Identifier,\n IdentifierType,\n IdentifierValue,\n SubComponent,\n Type,\n TypesToDeps,\n} from './types';\n\nexport class Framework {\n private readonly components: Map<\n string,\n Map>\n > = new Map();\n\n /**\n * Create an empty framework.\n *\n * same as `new Framework()`\n */\n static get EMPTY() {\n return new Framework();\n }\n\n /**\n * The number of components in the framework.\n */\n get componentCount() {\n let count = 0;\n for (const [, identifiers] of this.components) {\n for (const [, variants] of identifiers) {\n count += variants.size;\n }\n }\n return count;\n }\n\n /**\n * @see {@link FrameworkEditor.service}\n */\n get service() {\n return new FrameworkEditor(this).service;\n }\n\n /**\n * @see {@link FrameworkEditor.impl}\n */\n get impl() {\n return new FrameworkEditor(this).impl;\n }\n\n /**\n * @see {@link FrameworkEditor.entity}\n */\n get entity() {\n return new FrameworkEditor(this).entity;\n }\n\n /**\n * @see {@link FrameworkEditor.scope}\n */\n get scope() {\n return new FrameworkEditor(this).scope;\n }\n\n /**\n * @see {@link FrameworkEditor.override}\n */\n get override() {\n return new FrameworkEditor(this).override;\n }\n\n /**\n * @see {@link FrameworkEditor.store}\n */\n get store() {\n return new FrameworkEditor(this).store;\n }\n\n /**\n * @internal Use {@link impl} instead.\n */\n addValue(\n identifier: GeneralIdentifier,\n value: T,\n {\n scope,\n override,\n }: { scope?: FrameworkScopeStack; override?: boolean } = {}\n ) {\n this.addFactory(parseIdentifier(identifier) as Identifier, () => value, {\n scope,\n override,\n });\n }\n\n /**\n * @internal Use {@link impl} instead.\n */\n addFactory(\n identifier: GeneralIdentifier,\n factory: ComponentFactory,\n {\n scope,\n override,\n }: { scope?: FrameworkScopeStack; override?: boolean } = {}\n ) {\n // convert scope to string\n const normalizedScope = stringifyScope(scope ?? ROOT_SCOPE);\n const normalizedIdentifier = parseIdentifier(identifier);\n const normalizedVariant = normalizedIdentifier.variant ?? DEFAULT_VARIANT;\n\n const services =\n this.components.get(normalizedScope) ??\n new Map>();\n\n const variants =\n services.get(normalizedIdentifier.identifierName) ??\n new Map();\n\n // throw if service already exists, unless it is an override\n if (variants.has(normalizedVariant) && !override) {\n throw new DuplicateDefinitionError(normalizedIdentifier);\n }\n variants.set(normalizedVariant, factory);\n services.set(normalizedIdentifier.identifierName, variants);\n this.components.set(normalizedScope, services);\n }\n\n remove(identifier: IdentifierValue, scope: FrameworkScopeStack = ROOT_SCOPE) {\n const normalizedScope = stringifyScope(scope);\n const normalizedIdentifier = parseIdentifier(identifier);\n const normalizedVariant = normalizedIdentifier.variant ?? DEFAULT_VARIANT;\n\n const services = this.components.get(normalizedScope);\n if (!services) {\n return;\n }\n\n const variants = services.get(normalizedIdentifier.identifierName);\n if (!variants) {\n return;\n }\n\n variants.delete(normalizedVariant);\n }\n\n /**\n * Create a service provider from the collection.\n *\n * @example\n * ```ts\n * provider() // create a service provider for root scope\n * provider(ScopeA, parentProvider) // create a service provider for scope A\n * ```\n *\n * @param scope The scope of the service provider, default to the root scope.\n * @param parent The parent service provider, it is required if the scope is not the root scope.\n */\n provider(\n scope: FrameworkScopeStack = ROOT_SCOPE,\n parent: FrameworkProvider | null = null\n ): FrameworkProvider {\n return new BasicFrameworkProvider(this, scope, parent);\n }\n\n /**\n * @internal\n */\n getFactory(\n identifier: IdentifierValue,\n scope: FrameworkScopeStack = ROOT_SCOPE\n ): ComponentFactory | undefined {\n return this.components\n .get(stringifyScope(scope))\n ?.get(identifier.identifierName)\n ?.get(identifier.variant ?? DEFAULT_VARIANT);\n }\n\n /**\n * @internal\n */\n getFactoryAll(\n identifier: IdentifierValue,\n scope: FrameworkScopeStack = ROOT_SCOPE\n ): Map {\n return new Map(\n this.components.get(stringifyScope(scope))?.get(identifier.identifierName)\n );\n }\n\n /**\n * Clone the entire service collection.\n *\n * This method is quite cheap as it only clones the references.\n *\n * @returns A new service collection with the same services.\n */\n clone(): Framework {\n const di = new Framework();\n for (const [scope, identifiers] of this.components) {\n const s = new Map();\n for (const [identifier, variants] of identifiers) {\n s.set(identifier, new Map(variants));\n }\n di.components.set(scope, s);\n }\n return di;\n }\n}\n\n/**\n * A helper class to edit a framework.\n */\nclass FrameworkEditor {\n private currentScopeStack: FrameworkScopeStack = ROOT_SCOPE;\n\n constructor(private readonly collection: Framework) {}\n\n /**\n * Add a service to the framework.\n *\n * @see {@link Framework}\n *\n * @example\n * ```ts\n * service(ServiceClass, [dependencies, ...])\n * ```\n */\n service = <\n Arg1 extends Type,\n Arg2 extends Deps | ComponentFactory | ServiceType,\n ServiceType = IdentifierType,\n Deps = Arg1 extends Type\n ? TypesToDeps>\n : [],\n >(\n service: Arg1,\n ...[arg2]: Arg2 extends [] ? [] : [Arg2]\n ): this => {\n if (arg2 instanceof Function) {\n this.collection.addFactory(service as any, arg2 as any, {\n scope: this.currentScopeStack,\n });\n } else if (arg2 instanceof Array || arg2 === undefined) {\n this.collection.addFactory(\n service as any,\n dependenciesToFactory(service, arg2 as any),\n { scope: this.currentScopeStack }\n );\n } else {\n this.collection.addValue(service as any, arg2, {\n scope: this.currentScopeStack,\n });\n }\n\n if (SUB_COMPONENTS in service) {\n const subComponents = (service as any)[SUB_COMPONENTS] as SubComponent[];\n for (const { identifier, factory } of subComponents) {\n this.collection.addFactory(identifier, factory, {\n scope: this.currentScopeStack,\n });\n }\n }\n\n return this;\n };\n\n /**\n * Add a store to the framework.\n *\n * @see {@link Framework}\n *\n * @example\n * ```ts\n * store(StoreClass, [dependencies, ...])\n * ```\n */\n store = <\n Arg1 extends Type,\n Arg2 extends Deps | ComponentFactory | StoreType,\n StoreType = IdentifierType,\n Deps = Arg1 extends Type\n ? TypesToDeps>\n : [],\n >(\n store: Arg1,\n ...[arg2]: Arg2 extends [] ? [] : [Arg2]\n ): this => {\n if (arg2 instanceof Function) {\n this.collection.addFactory(store as any, arg2 as any, {\n scope: this.currentScopeStack,\n });\n } else if (arg2 instanceof Array || arg2 === undefined) {\n this.collection.addFactory(\n store as any,\n dependenciesToFactory(store, arg2 as any),\n { scope: this.currentScopeStack }\n );\n } else {\n this.collection.addValue(store as any, arg2, {\n scope: this.currentScopeStack,\n });\n }\n\n if (SUB_COMPONENTS in store) {\n const subComponents = (store as any)[SUB_COMPONENTS] as SubComponent[];\n for (const { identifier, factory } of subComponents) {\n this.collection.addFactory(identifier, factory, {\n scope: this.currentScopeStack,\n });\n }\n }\n\n return this;\n };\n\n /**\n * Add an entity to the framework.\n */\n entity = <\n Arg1 extends Type>,\n Arg2 extends Deps | ComponentFactory,\n EntityType = IdentifierType,\n Deps = Arg1 extends Type\n ? TypesToDeps>\n : [],\n >(\n entity: Arg1,\n ...[arg2]: Arg2 extends [] ? [] : [Arg2]\n ): this => {\n if (arg2 instanceof Function) {\n this.collection.addFactory(entity as any, arg2 as any, {\n scope: this.currentScopeStack,\n });\n } else {\n this.collection.addFactory(\n entity as any,\n dependenciesToFactory(entity, arg2 as any),\n { scope: this.currentScopeStack }\n );\n }\n\n return this;\n };\n\n /**\n * Add an implementation for identifier to the collection.\n *\n * @see {@link Framework}\n *\n * @example\n * ```ts\n * addImpl(Identifier, Class, [dependencies, ...])\n * or\n * addImpl(Identifier, Instance)\n * or\n * addImpl(Identifier, Factory)\n * ```\n */\n impl = <\n Arg1 extends Identifier,\n Arg2 extends Type | ComponentFactory | Trait,\n Arg3 extends Deps,\n Trait = IdentifierType,\n Deps = Arg2 extends Type\n ? TypesToDeps>\n : [],\n >(\n identifier: Arg1,\n arg2: Arg2,\n ...[arg3]: Arg3 extends [] ? [] : [Arg3]\n ): this => {\n if (arg2 instanceof Function) {\n this.collection.addFactory(\n identifier,\n dependenciesToFactory(arg2, arg3 as any[]),\n { scope: this.currentScopeStack }\n );\n } else {\n this.collection.addValue(identifier, arg2 as any, {\n scope: this.currentScopeStack,\n });\n }\n\n return this;\n };\n\n /**\n * same as {@link impl} but this method will override the component if it exists.\n *\n * @see {@link Framework}\n *\n * @example\n * ```ts\n * override(OriginClass, NewClass, [dependencies, ...])\n * or\n * override(Identifier, Class, [dependencies, ...])\n * or\n * override(Identifier, Instance)\n * or\n * override(Identifier, Factory)\n * ```\n */\n override = <\n Arg1 extends GeneralIdentifier,\n Arg2 extends Type | ComponentFactory | Trait | null,\n Arg3 extends Deps,\n Trait extends Component = IdentifierType,\n Deps = Arg2 extends Type\n ? TypesToDeps>\n : [],\n >(\n identifier: Arg1,\n arg2: Arg2,\n ...[arg3]: Arg3 extends [] ? [] : [Arg3]\n ): this => {\n if (arg2 === null) {\n this.collection.remove(\n parseIdentifier(identifier),\n this.currentScopeStack\n );\n return this;\n } else if (arg2 instanceof Function) {\n this.collection.addFactory(\n identifier,\n dependenciesToFactory(arg2, arg3 as any[]),\n { scope: this.currentScopeStack, override: true }\n );\n } else {\n this.collection.addValue(identifier, arg2 as any, {\n scope: this.currentScopeStack,\n override: true,\n });\n }\n\n return this;\n };\n\n /**\n * Set the scope for the service registered subsequently\n *\n * @example\n *\n * ```ts\n * const ScopeA = createScope('a');\n *\n * services.scope(ScopeA).add(XXXService, ...);\n * ```\n */\n scope = (scope: Type>): this => {\n this.currentScopeStack = [\n ...this.currentScopeStack,\n parseIdentifier(scope).identifierName,\n ];\n\n this.collection.addFactory(\n scope as any,\n dependenciesToFactory(scope, [] as any),\n { scope: this.currentScopeStack, override: true }\n );\n\n return this;\n };\n}\n\n/**\n * Convert dependencies definition to a factory function.\n */\nfunction dependenciesToFactory(\n cls: any,\n deps: any[] = []\n): ComponentFactory {\n return (provider: FrameworkProvider) => {\n const args = [];\n for (const dep of deps) {\n let isAll;\n let identifier;\n if (Array.isArray(dep)) {\n if (dep.length !== 1) {\n throw new Error('Invalid dependency');\n }\n isAll = true;\n identifier = dep[0];\n } else {\n isAll = false;\n identifier = dep;\n }\n if (isAll) {\n args.push(Array.from(provider.getAll(identifier).values()));\n } else {\n args.push(provider.get(identifier));\n }\n }\n if (isConstructor(cls)) {\n return new cls(...args, provider);\n } else {\n return cls(...args, provider);\n }\n };\n}\n\n// a hack to check if a function is a constructor\n// https://github.com/zloirock/core-js/blob/232c8462c26c75864b4397b7f643a4f57c6981d5/packages/core-js/internals/is-constructor.js#L15\nfunction isConstructor(cls: any) {\n try {\n Reflect.construct(function () {}, [], cls);\n return true;\n } catch (error) {\n return false;\n }\n}\n","import { stableHash } from '../../utils/stable-hash';\nimport type { Component } from './components/component';\nimport { DEFAULT_VARIANT } from './consts';\nimport type {\n ComponentVariant,\n Identifier,\n IdentifierValue,\n Type,\n} from './types';\n\n/**\n * create a Identifier.\n *\n * Identifier is used to identify a certain type of service. With the identifier, you can reference one or more services\n * without knowing the specific implementation, thereby achieving\n * [inversion of control](https://en.wikipedia.org/wiki/Inversion_of_control).\n *\n * @example\n * ```ts\n * // define a interface\n * interface Storage {\n * get(key: string): string | null;\n * set(key: string, value: string): void;\n * }\n *\n * // create a identifier\n * // NOTICE: Highly recommend to use the interface name as the identifier name,\n * // so that it is easy to understand. and it is legal to do so in TypeScript.\n * const Storage = createIdentifier('Storage');\n *\n * // create a implementation\n * class LocalStorage implements Storage {\n * get(key: string): string | null {\n * return localStorage.getItem(key);\n * }\n * set(key: string, value: string): void {\n * localStorage.setItem(key, value);\n * }\n * }\n *\n * // register the implementation to the identifier\n * framework.impl(Storage, LocalStorage);\n *\n * // get the implementation from the identifier\n * const storage = framework.provider().get(Storage);\n * storage.set('foo', 'bar');\n * ```\n *\n * With identifier:\n *\n * * You can easily replace the implementation of a `Storage` without changing the code that uses it.\n * * You can easily mock a `Storage` for testing.\n *\n * # Variant\n *\n * Sometimes, you may want to register multiple implementations for the same interface.\n * For example, you may want have both `LocalStorage` and `SessionStorage` for `Storage`,\n * and use them in same time.\n *\n * In this case, you can use `variant` to distinguish them.\n *\n * ```ts\n * const Storage = createIdentifier('Storage');\n * const LocalStorage = Storage('local');\n * const SessionStorage = Storage('session');\n *\n * framework.impl(LocalStorage, LocalStorageImpl);\n * framework.impl(SessionStorage, SessionStorageImpl);\n *\n * // get the implementation from the identifier\n * const localStorage = framework.provider().get(LocalStorage);\n * const sessionStorage = framework.provider().get(SessionStorage);\n * const storage = framework.provider().getAll(Storage); // { local: LocalStorageImpl, session: SessionStorageImpl }\n * ```\n *\n * @param name unique name of the identifier.\n * @param variant The default variant name of the identifier, can be overridden by `identifier(\"variant\")`.\n */\nexport function createIdentifier(\n name: string,\n variant: ComponentVariant = DEFAULT_VARIANT\n): Identifier & ((variant: ComponentVariant) => Identifier) {\n return Object.assign(\n (variant: ComponentVariant) => {\n return createIdentifier(name, variant);\n },\n {\n identifierName: name,\n variant,\n }\n ) as any;\n}\n\n/**\n * Convert the constructor into a ServiceIdentifier.\n * As we always deal with ServiceIdentifier in the DI container.\n *\n * @internal\n */\nexport function createIdentifierFromConstructor(\n target: Type\n): Identifier {\n return createIdentifier(`${target.name}${stableHash(target)}`);\n}\n\nexport function parseIdentifier(input: any): IdentifierValue {\n if (input.identifierName) {\n return input as IdentifierValue;\n } else if (typeof input === 'function' && input.name) {\n return createIdentifierFromConstructor(input);\n } else {\n throw new Error('Input is not a service identifier.');\n }\n}\n","import React, { useContext, useMemo } from 'react';\n\nimport type { FrameworkProvider, Scope, Service } from '../core';\nimport { ComponentNotFoundError, Framework } from '../core';\nimport { parseIdentifier } from '../core/identifier';\nimport type { GeneralIdentifier, IdentifierType, Type } from '../core/types';\nimport { MountPoint } from './scope-root-components';\n\nexport { useMount } from './scope-root-components';\n\nexport const FrameworkStackContext = React.createContext([\n Framework.EMPTY.provider(),\n]);\n\nexport function useFramework(): FrameworkProvider {\n const stack = useContext(FrameworkStackContext);\n\n return stack[stack.length - 1]; // never null, because the default value\n}\n\nexport function useService(\n identifier: GeneralIdentifier\n): T {\n const stack = useContext(FrameworkStackContext);\n\n let service: T | null = null;\n\n for (let i = stack.length - 1; i >= 0; i--) {\n service = stack[i].getOptional(identifier, {\n sameScope: true,\n });\n\n if (service) {\n break;\n }\n }\n\n if (!service) {\n throw new ComponentNotFoundError(parseIdentifier(identifier));\n }\n\n return service;\n}\n\n/**\n * Hook to get services from the current framework stack.\n *\n * Automatically converts the service name to camelCase.\n *\n * @example\n * ```ts\n * const { authService, userService } = useServices({ AuthService, UserService });\n * ```\n */\nexport function useServices<\n const T extends { [key in string]: GeneralIdentifier },\n>(\n identifiers: T\n): keyof T extends string\n ? { [key in Uncapitalize]: IdentifierType]> }\n : never {\n const stack = useContext(FrameworkStackContext);\n\n const services: any = {};\n\n for (const [key, value] of Object.entries(identifiers)) {\n let service;\n for (let i = stack.length - 1; i >= 0; i--) {\n service = stack[i].getOptional(value, {\n sameScope: true,\n });\n\n if (service) {\n break;\n }\n }\n\n if (!service) {\n throw new ComponentNotFoundError(parseIdentifier(value));\n }\n\n services[key.charAt(0).toLowerCase() + key.slice(1)] = service;\n }\n\n return services;\n}\n\nexport function useServiceOptional(\n identifier: Type\n): T | null {\n const stack = useContext(FrameworkStackContext);\n\n let service: T | null = null;\n\n for (let i = stack.length - 1; i >= 0; i--) {\n service = stack[i].getOptional(identifier, {\n sameScope: true,\n });\n\n if (service) {\n break;\n }\n }\n\n return service;\n}\n\nexport const FrameworkRoot = ({\n framework,\n children,\n}: React.PropsWithChildren<{ framework: FrameworkProvider }>) => {\n return (\n \n {children}\n \n );\n};\n\nexport const FrameworkScope = ({\n scope,\n children,\n}: React.PropsWithChildren<{ scope?: Scope }>) => {\n const stack = useContext(FrameworkStackContext);\n\n const nextStack = useMemo(() => {\n if (!scope) return stack;\n return [...stack, scope.framework];\n }, [stack, scope]);\n\n return (\n \n {children}\n \n );\n};\n","import React from 'react';\n\ntype NodesMap = Map<\n number,\n {\n node: React.ReactNode;\n debugKey?: string;\n }\n>;\n\nconst ScopeRootComponentsContext = React.createContext<{\n nodes: NodesMap;\n setNodes: React.Dispatch>;\n}>({ nodes: new Map(), setNodes: () => {} });\n\nlet _id = 0;\n/**\n * A hook to add nodes to the nearest scope's root\n */\nexport const useMount = (debugKey?: string) => {\n const [id] = React.useState(_id++);\n const { setNodes } = React.useContext(ScopeRootComponentsContext);\n\n const unmount = React.useCallback(() => {\n setNodes(prev => {\n if (!prev.has(id)) {\n return prev;\n }\n const next = new Map(prev);\n next.delete(id);\n return next;\n });\n }, [id, setNodes]);\n\n const mount = React.useCallback(\n (node: React.ReactNode) => {\n setNodes(prev => new Map(prev).set(id, { node, debugKey }));\n return unmount;\n },\n [setNodes, id, debugKey, unmount]\n );\n\n return React.useMemo(() => {\n return {\n /**\n * Add a node to the nearest scope root\n * ```tsx\n * const { mount } = useMount();\n * useEffect(() => {\n * const unmount = mount(
Node
);\n * return unmount;\n * }, [])\n * ```\n * @return A function to unmount the added node.\n */\n mount,\n };\n }, [mount]);\n};\n\nexport const MountPoint = ({ children }: React.PropsWithChildren) => {\n const [nodes, setNodes] = React.useState(new Map());\n\n return (\n \n {children}\n {Array.from(nodes.entries()).map(([id, { node, debugKey }]) => (\n
\n {node}\n
\n ))}\n
\n );\n};\n","import type { Doc } from '@blocksuite/store';\n\nexport function initEmptyPage(page: Doc, title?: string) {\n page.load(() => {\n const pageBlockId = page.addBlock(\n 'affine:page' as keyof BlockSuite.BlockModels,\n {\n title: new page.Text(title ?? ''),\n }\n );\n page.addBlock(\n 'affine:surface' as keyof BlockSuite.BlockModels,\n {},\n pageBlockId\n );\n const noteBlockId = page.addBlock(\n 'affine:note' as keyof BlockSuite.BlockModels,\n {},\n pageBlockId\n );\n page.addBlock(\n 'affine:paragraph' as keyof BlockSuite.BlockModels,\n {},\n noteBlockId\n );\n page.history.clear();\n });\n}\n","import { DebugLogger } from '@affine/debug';\nimport { Unreachable } from '@affine/env/constant';\nimport { type OperatorFunction, Subject } from 'rxjs';\n\nconst logger = new DebugLogger('effect');\n\nexport type Effect = (T | undefined extends T // hack to detect if T is unknown\n ? () => void\n : (value: T) => void) & {\n // unsubscribe effect, all ongoing effects will be cancelled.\n unsubscribe: () => void;\n};\n\n/**\n * Create an effect.\n *\n * `effect( op1, op2, op3, ... )`\n *\n * You can think of an effect as a pipeline. When the effect is called, argument will be sent to the pipeline,\n * and the operators in the pipeline can be triggered.\n *\n *\n *\n * @example\n * ```ts\n * const loadUser = effect(\n * switchMap((id: number) =>\n * from(fetchUser(id)).pipe(\n * mapInto(user$),\n * catchErrorInto(error$),\n * onStart(() => isLoading$.next(true)),\n * onComplete(() => isLoading$.next(false))\n * )\n * )\n * );\n *\n * // emit value to effect\n * loadUser(1);\n *\n * // unsubscribe effect, will stop all ongoing processes\n * loadUser.unsubscribe();\n * ```\n */\nexport function effect(op1: OperatorFunction): Effect;\nexport function effect(\n op1: OperatorFunction,\n op2: OperatorFunction\n): Effect;\nexport function effect(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction\n): Effect;\nexport function effect(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n): Effect;\nexport function effect(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n): Effect;\nexport function effect(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n): Effect;\nexport function effect(...args: any[]) {\n const subject$ = new Subject();\n\n const effectLocation = environment.isDebug\n ? `(${new Error().stack?.split('\\n')[2].trim()})`\n : '';\n\n class EffectError extends Unreachable {\n constructor(message: string, value?: any) {\n logger.error(`effect ${effectLocation} ${message}`, value);\n super(\n `effect ${effectLocation} ${message}` +\n ` ${value ? (value instanceof Error ? (value.stack ?? value.message) : value + '') : ''}`\n );\n }\n }\n\n // eslint-disable-next-line prefer-spread\n const subscription = subject$.pipe.apply(subject$, args as any).subscribe({\n next(value) {\n const error = new EffectError('should not emit value', value);\n setImmediate(() => {\n throw error;\n });\n },\n complete() {\n const error = new EffectError('effect unexpected complete');\n setImmediate(() => {\n throw error;\n });\n },\n error(error) {\n const effectError = new EffectError('effect uncaught error', error);\n setImmediate(() => {\n throw effectError;\n });\n },\n });\n\n const fn = (value: unknown) => {\n subject$.next(value);\n };\n\n fn.unsubscribe = () => subscription.unsubscribe();\n\n return fn as never;\n}\n","import { DebugLogger } from '@affine/debug';\nimport type {\n InteropObservable,\n Observer,\n OperatorFunction,\n Subscription,\n TeardownLogic,\n ThrottleConfig,\n} from 'rxjs';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n EMPTY,\n map,\n mergeMap,\n Observable,\n of,\n scan,\n skip,\n Subject,\n switchMap,\n throttleTime,\n} from 'rxjs';\n\nconst logger = new DebugLogger('livedata');\n\n/**\n * LiveData is a reactive data type.\n *\n * ## basic usage\n *\n * @example\n * ```ts\n * const livedata = new LiveData(0); // create livedata with initial value\n *\n * livedata.next(1); // update value\n *\n * console.log(livedata.value); // get current value\n *\n * livedata.subscribe(v => { // subscribe to value changes\n * console.log(v); // 1\n * });\n * ```\n *\n * ## observable\n *\n * LiveData is a rxjs observable, you can use rxjs operators.\n *\n * @example\n * ```ts\n * new LiveData(0).pipe(\n * map(v => v + 1),\n * filter(v => v > 1),\n * ...\n * )\n * ```\n *\n * NOTICE: different from normal observable, LiveData will always emit the latest value when you subscribe to it.\n *\n * ## from observable\n *\n * LiveData can be created from observable or from other livedata.\n *\n * @example\n * ```ts\n * const A = LiveData.from(\n * of(1, 2, 3, 4), // from observable\n * 0 // initial value\n * );\n *\n * const B = LiveData.from(\n * A.pipe(map(v => 'from a ' + v)), // from other livedata\n * '' // initial value\n * );\n * ```\n *\n * ## Why is it called LiveData\n *\n * This API is very similar to LiveData in Android, as both are based on Observable, so I named it LiveData.\n *\n * @see {@link https://rxjs.dev/api/index/class/BehaviorSubject}\n * @see {@link https://developer.android.com/topic/libraries/architecture/livedata}\n */\nexport class LiveData\n extends Observable\n implements InteropObservable\n{\n static from(\n upstream$:\n | Observable\n | InteropObservable\n | ((stream: Observable) => Observable),\n initialValue: T\n ): LiveData {\n const data$ = new LiveData(\n initialValue,\n typeof upstream$ === 'function'\n ? upstream$\n : stream$ =>\n stream$.pipe(\n mergeMap(v => {\n if (v === 'set') {\n return EMPTY;\n } else if (v === 'get') {\n return of('watch' as const, 'unwatch' as const);\n } else {\n return of(v);\n }\n }),\n scan((acc, op) => {\n if (op === 'watch') {\n return acc + 1;\n } else if (op === 'unwatch') {\n return acc - 1;\n } else {\n return acc;\n }\n }, 0),\n map(count => {\n if (count > 0) {\n return 'watch';\n } else {\n return 'unwatch';\n }\n }),\n distinctUntilChanged(),\n switchMap(op => {\n if (op === 'watch') {\n return upstream$;\n } else {\n return EMPTY;\n }\n })\n )\n );\n\n return data$;\n }\n\n private static GLOBAL_COMPUTED_RECURSIVE_COUNT = 0;\n\n /**\n * @example\n * ```ts\n * const a = new LiveData('v1');\n * const v1 = new LiveData(100);\n * const v2 = new LiveData(200);\n *\n * const v = LiveData.computed(get => {\n * return get(a) === 'v1' ? get(v1) : get(v2);\n * });\n *\n * expect(v.value).toBe(100);\n * ```\n */\n static computed(\n compute: (get: (data: LiveData) => L) => T\n ): LiveData {\n return LiveData.from(\n new Observable(subscribe => {\n const execute = (next: () => void) => {\n const subscriptions: Subscription[] = [];\n const getfn = (data$: LiveData) => {\n let value = null as L;\n let first = true;\n subscriptions.push(\n data$.subscribe({\n error(err) {\n subscribe.error(err);\n },\n next(v) {\n value = v;\n if (!first) {\n next();\n }\n first = false;\n },\n })\n );\n return value;\n };\n\n LiveData.GLOBAL_COMPUTED_RECURSIVE_COUNT++;\n\n try {\n if (LiveData.GLOBAL_COMPUTED_RECURSIVE_COUNT > 10) {\n subscribe.error(new Error('computed recursive limit exceeded'));\n } else {\n subscribe.next(compute(getfn));\n }\n } catch (err) {\n subscribe.error(err);\n } finally {\n LiveData.GLOBAL_COMPUTED_RECURSIVE_COUNT--;\n }\n\n return () => {\n subscriptions.forEach(s => s.unsubscribe());\n };\n };\n\n let prev = () => {};\n\n const looper = () => {\n const dispose = execute(looper);\n prev();\n prev = dispose;\n };\n\n looper();\n\n return () => {\n prev();\n };\n }),\n null as any\n );\n }\n\n private readonly raw$: BehaviorSubject;\n private readonly ops$ = new Subject();\n private readonly upstreamSubscription: Subscription | undefined;\n\n /**\n * When the upstream Observable of livedata throws an error, livedata will enter poisoned state. This is an\n * unrecoverable abnormal state. Any operation on livedata will throw a PoisonedError.\n *\n * Since the development specification for livedata is not to throw any error, entering the poisoned state usually\n * means a programming error.\n */\n private isPoisoned = false;\n private poisonedError: PoisonedError | null = null;\n\n constructor(\n initialValue: T,\n upstream:\n | ((upstream: Observable) => Observable)\n | undefined = undefined\n ) {\n super();\n this.raw$ = new BehaviorSubject(initialValue);\n if (upstream) {\n this.upstreamSubscription = upstream(this.ops$).subscribe({\n next: v => {\n this.raw$.next(v);\n },\n complete: () => {\n if (!this.raw$.closed) {\n logger.error('livedata upstream unexpected complete');\n }\n },\n error: err => {\n logger.error('uncatched error in livedata', err);\n this.isPoisoned = true;\n this.poisonedError = new PoisonedError(err);\n this.raw$.error(this.poisonedError);\n },\n });\n }\n }\n\n getValue = (): T => {\n if (this.isPoisoned) {\n throw this.poisonedError;\n }\n this.ops$.next('get');\n return this.raw$.value;\n };\n\n setValue = (v: T) => {\n if (this.isPoisoned) {\n throw this.poisonedError;\n }\n this.raw$.next(v);\n this.ops$.next('set');\n };\n\n get value(): T {\n return this.getValue();\n }\n\n set value(v: T) {\n this.next(v);\n }\n\n next = (v: T) => {\n if (this.isPoisoned) {\n throw this.poisonedError;\n }\n return this.setValue(v);\n };\n\n override subscribe(\n observerOrNext?: Partial> | ((value: T) => void)\n ): Subscription;\n override subscribe(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription;\n override subscribe(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n this.ops$.next('watch');\n const subscription = this.raw$.subscribe(\n observerOrNext as any,\n error,\n complete\n );\n subscription.add(() => {\n this.ops$.next('unwatch');\n });\n return subscription;\n }\n\n map(mapper: (v: T) => R): LiveData {\n const sub$ = LiveData.from(\n new Observable(subscriber =>\n this.subscribe({\n next: v => {\n subscriber.next(mapper(v));\n },\n complete: () => {\n sub$.complete();\n },\n })\n ),\n undefined as R // is safe\n );\n\n return sub$;\n }\n\n distinctUntilChanged(comparator?: (previous: T, current: T) => boolean) {\n return LiveData.from(\n this.pipe(distinctUntilChanged(comparator)),\n null as T\n );\n }\n\n throttleTime(\n duration: number,\n { trailing = true, leading = true }: ThrottleConfig = {}\n ) {\n return LiveData.from(\n this.pipe(throttleTime(duration, undefined, { trailing, leading })),\n null as any\n );\n }\n\n // eslint-disable-next-line rxjs/finnish\n asObservable(): Observable {\n return new Observable(subscriber => {\n return this.subscribe(subscriber);\n });\n }\n\n override pipe(): Observable;\n override pipe(op1: OperatorFunction): Observable;\n override pipe(\n op1: OperatorFunction,\n op2: OperatorFunction\n ): Observable;\n override pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction\n ): Observable;\n override pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n ): Observable;\n override pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n ): Observable;\n override pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n ): Observable;\n override pipe(...args: any[]) {\n return new Observable(subscriber => {\n this.ops$.next('watch');\n // eslint-disable-next-line prefer-spread\n const subscription = this.raw$.pipe\n .apply(this.raw$, args as any)\n .subscribe(subscriber);\n subscription.add(() => {\n this.ops$.next('unwatch');\n });\n return subscription;\n });\n }\n\n complete() {\n this.ops$.complete();\n this.raw$.complete();\n this.upstreamSubscription?.unsubscribe();\n }\n\n /**\n * flatten the livedata\n *\n * ```\n * new LiveData(new LiveData(0)).flat() // LiveData\n * ```\n *\n * ```\n * new LiveData([new LiveData(0)]).flat() // LiveData\n * ```\n */\n flat(): Flat {\n return LiveData.from(\n this.pipe(\n switchMap(v => {\n if (v instanceof LiveData) {\n return (v as LiveData).flat();\n } else if (Array.isArray(v)) {\n if (v.length === 0) {\n return of([]);\n }\n return combineLatest(\n v.map(v => {\n if (v instanceof LiveData) {\n return v.flat();\n } else {\n return of(v);\n }\n })\n );\n } else {\n return of(v);\n }\n })\n ),\n null as any\n ) as any;\n }\n\n static flat(v: T): Flat> {\n return new LiveData(v).flat();\n }\n\n waitFor(predicate: (v: T) => unknown, signal?: AbortSignal): Promise {\n return new Promise((resolve, reject) => {\n const subscription = this.subscribe(v => {\n if (predicate(v)) {\n resolve(v as any);\n setImmediate(() => {\n subscription.unsubscribe();\n });\n }\n });\n signal?.addEventListener('abort', reason => {\n subscription.unsubscribe();\n reject(reason);\n });\n });\n }\n\n waitForNonNull(signal?: AbortSignal) {\n return this.waitFor(v => v !== null && v !== undefined, signal) as Promise<\n NonNullable\n >;\n }\n\n reactSubscribe = (cb: () => void) => {\n if (this.isPoisoned) {\n throw this.poisonedError;\n }\n this.ops$.next('watch');\n const subscription = this.raw$\n .pipe(distinctUntilChanged(), skip(1))\n .subscribe(cb);\n subscription.add(() => {\n this.ops$.next('unwatch');\n });\n return () => subscription.unsubscribe();\n };\n\n reactGetSnapshot = () => {\n if (this.isPoisoned) {\n throw this.poisonedError;\n }\n this.ops$.next('watch');\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- never throw\n Promise.resolve().then(() => {\n this.ops$.next('unwatch');\n });\n return this.raw$.value;\n };\n\n protected _subscribe(): TeardownLogic {\n throw new Error('Method not implemented.');\n }\n\n [Symbol.observable || '@@observable']() {\n return this;\n }\n\n [Symbol.observable]() {\n return this;\n }\n}\n\nexport type LiveDataOperation = 'set' | 'get' | 'watch' | 'unwatch';\n\nexport type Unwrap =\n T extends LiveData\n ? Unwrap\n : T extends LiveData[]\n ? Unwrap[]\n : T;\n\nexport type Flat = T extends LiveData ? LiveData> : T;\n\nexport class PoisonedError extends Error {\n constructor(originalError: any) {\n super(\n 'The livedata is poisoned, original error: ' +\n (originalError instanceof Error ? originalError.stack : originalError)\n );\n }\n}\n","import {\n catchError,\n connect,\n distinctUntilChanged,\n EMPTY,\n exhaustMap,\n merge,\n mergeMap,\n Observable,\n type ObservableInput,\n type ObservedValueOf,\n of,\n type OperatorFunction,\n pipe,\n retry,\n switchMap,\n throwError,\n timer,\n} from 'rxjs';\n\nimport { MANUALLY_STOP } from '../utils';\nimport type { LiveData } from './livedata';\n\n/**\n * An operator that maps the value to the `LiveData`.\n */\nexport function mapInto(l$: LiveData) {\n return pipe(\n mergeMap((value: T) => {\n l$.next(value);\n return EMPTY;\n })\n );\n}\n\n/**\n * An operator that catches the error and sends it to the `LiveData`.\n *\n * The `LiveData` will be set to `null` when the observable completes. This is useful for error state recovery.\n *\n * @param cb A callback that will be called when an error occurs.\n */\nexport function catchErrorInto(\n l$: LiveData,\n cb?: (error: Error) => void\n) {\n return pipe(\n onComplete(() => l$.next(null)),\n catchError((error: any) => {\n l$.next(error);\n cb?.(error);\n return EMPTY;\n })\n );\n}\n\n/**\n * An operator that calls the callback when the observable starts.\n */\nexport function onStart(cb: () => void): OperatorFunction {\n return observable$ =>\n new Observable(subscribe => {\n cb();\n return observable$.subscribe(subscribe);\n });\n}\n\n/**\n * An operator that calls the callback when the observable completes.\n */\nexport function onComplete(cb: () => void): OperatorFunction {\n return observable$ =>\n new Observable(subscribe => {\n return observable$.subscribe({\n complete() {\n cb();\n subscribe.complete();\n },\n error(err) {\n subscribe.error(err);\n },\n next(value) {\n subscribe.next(value);\n },\n });\n });\n}\n\n/**\n * Convert a promise to an observable.\n *\n * like `from` but support `AbortSignal`.\n */\nexport function fromPromise(\n promise: Promise | ((signal: AbortSignal) => Promise)\n): Observable {\n return new Observable(subscriber => {\n const abortController = new AbortController();\n\n const rawPromise =\n promise instanceof Function ? promise(abortController.signal) : promise;\n\n rawPromise\n .then(value => {\n subscriber.next(value);\n subscriber.complete();\n })\n .catch(error => {\n subscriber.error(error);\n });\n\n return () => abortController.abort(MANUALLY_STOP);\n });\n}\n\n/**\n * An operator that retries the source observable when an error occurs.\n *\n * https://en.wikipedia.org/wiki/Exponential_backoff\n */\nexport function backoffRetry({\n when,\n count = 3,\n delay = 200,\n maxDelay = 15000,\n}: {\n when?: (err: any) => boolean;\n count?: number;\n delay?: number;\n maxDelay?: number;\n} = {}) {\n return (obs$: Observable) =>\n obs$.pipe(\n retry({\n count,\n delay: (err, retryIndex) => {\n if (when && !when(err)) {\n return throwError(() => err);\n }\n const d = Math.pow(2, retryIndex - 1) * delay;\n return timer(Math.min(d, maxDelay));\n },\n })\n );\n}\n\n/**\n * An operator that combines `exhaustMap` and `switchMap`.\n *\n * This operator executes the `comparator` on each input, acting as an `exhaustMap` when the `comparator` returns `true`\n * and acting as a `switchMap` when the comparator returns `false`.\n *\n * It is more useful for async processes that are relatively stable in results but sensitive to input.\n * For example, when requesting the user's subscription status, `exhaustMap` is used because the user's subscription\n * does not change often, but when switching users, the request should be made immediately like `switchMap`.\n *\n * @param onSwitch callback will be executed when `switchMap` occurs (including the first execution).\n */\nexport function exhaustMapSwitchUntilChanged>(\n comparator: (previous: T, current: T) => boolean,\n project: (value: T, index: number) => O,\n onSwitch?: (value: T) => void\n): OperatorFunction> {\n return pipe(\n connect(shared$ =>\n shared$.pipe(\n distinctUntilChanged(comparator),\n switchMap(value => {\n onSwitch?.(value);\n return merge(of(value), shared$).pipe(\n exhaustMap((value, index) => {\n return project(value, index);\n })\n );\n })\n )\n )\n );\n}\n","import { use } from 'foxact/use';\nimport { useSyncExternalStore } from 'react';\n\nimport type { LiveData } from './livedata';\n\nfunction noopSubscribe() {\n return () => {};\n}\n\nfunction nullGetSnapshot() {\n return null;\n}\n\nfunction undefinedGetSnapshot() {\n return undefined;\n}\n\n/**\n * subscribe LiveData and return the value.\n */\nexport function useLiveData | null | undefined>(\n liveData: Input\n): NonNullable extends LiveData\n ? Input extends undefined\n ? T | undefined\n : Input extends null\n ? T | null\n : T\n : never {\n return useSyncExternalStore(\n liveData ? liveData.reactSubscribe : noopSubscribe,\n liveData\n ? liveData.reactGetSnapshot\n : liveData === undefined\n ? undefinedGetSnapshot\n : nullGetSnapshot\n );\n}\n\n/**\n * subscribe LiveData and return the value. If the value is nullish, will suspends until the value is not nullish.\n */\nexport function useEnsureLiveData(liveData$: LiveData): NonNullable {\n const data = useLiveData(liveData$);\n\n if (data === null || data === undefined) {\n return use(\n new Promise((resolve, reject) => {\n const subscription = liveData$.subscribe({\n next(value) {\n if (value === null || value === undefined) {\n resolve(value);\n subscription.unsubscribe();\n }\n },\n error(err) {\n reject(err);\n },\n complete() {\n reject(new Error('Unexpected completion'));\n },\n });\n })\n );\n }\n\n return data;\n}\n","import { Entity } from '../../../framework';\nimport type { DBSchemaBuilder, TableMap } from '../../../orm';\nimport { Table } from './table';\n\nexport class DB extends Entity<{\n db: TableMap;\n schema: Schema;\n storageDocId: (tableName: string) => string;\n}> {\n readonly db = this.props.db;\n\n constructor() {\n super();\n Object.entries(this.props.schema).forEach(([tableName]) => {\n const table = this.framework.createEntity(Table, {\n table: this.db[tableName],\n storageDocId: this.props.storageDocId(tableName),\n });\n Object.defineProperty(this, tableName, {\n get: () => table,\n });\n });\n }\n}\n\nexport type DBWithTables = DB & {\n [K in keyof Schema]: Table;\n};\n","import { Entity } from '../../../framework';\nimport type { Table as OrmTable, TableSchemaBuilder } from '../../../orm/core';\nimport type { WorkspaceService } from '../../workspace';\n\nexport class Table extends Entity<{\n table: OrmTable;\n storageDocId: string;\n}> {\n readonly table = this.props.table;\n\n constructor(private readonly workspaceService: WorkspaceService) {\n super();\n }\n\n isSyncing$ = this.workspaceService.workspace.engine.doc\n .docState$(this.props.storageDocId)\n .map(docState => docState.syncing);\n\n isLoading$ = this.workspaceService.workspace.engine.doc\n .docState$(this.props.storageDocId)\n .map(docState => docState.loading);\n\n create = this.table.create.bind(this.table);\n update = this.table.update.bind(this.table);\n get = this.table.get.bind(this.table);\n // eslint-disable-next-line rxjs/finnish\n get$ = this.table.get$.bind(this.table);\n find = this.table.find.bind(this.table);\n // eslint-disable-next-line rxjs/finnish\n find$ = this.table.find$.bind(this.table);\n keys = this.table.keys.bind(this.table);\n delete = this.table.delete.bind(this.table);\n}\n","import { pick as lodashPick } from 'lodash-es';\n\nimport type { FieldType } from '../schema';\nimport type { DataValidator } from './types';\n\nfunction inputType(val: any) {\n return val === null ||\n Array.isArray(val) ||\n val.constructor === 'Object' ||\n !val.constructor /* Object.create(null) */\n ? 'json'\n : typeof val;\n}\n\nfunction typeMatches(typeWant: FieldType, typeGet: string) {\n if (typeWant === 'json') {\n switch (typeGet) {\n case 'bigint':\n case 'function':\n case 'object': // we've already converted available types into 'json'\n case 'symbol':\n case 'undefined':\n return false;\n }\n }\n\n return typeWant === typeGet;\n}\n\nexport const dataValidators = {\n PrimaryKeyShouldExist: {\n validate(table, data) {\n const val = data[table.keyField];\n\n if (val === undefined || val === null) {\n throw new Error(\n `[Table(${table.name})]: Primary key field '${table.keyField}' is required but not set.`\n );\n }\n },\n },\n PrimaryKeyShouldNotBeUpdated: {\n validate(table, data) {\n if (data[table.keyField] !== undefined) {\n throw new Error(\n `[Table(${table.name})]: Primary key field '${table.keyField}' can't be updated.`\n );\n }\n },\n },\n DataTypeShouldMatch: {\n validate(table, data) {\n for (const key in data) {\n const field = table.schema[key];\n if (!field) {\n throw new Error(\n `[Table(${table.name})]: Field '${key}' is not defined but set in entity.`\n );\n }\n\n const val = data[key];\n\n if (val === undefined) {\n delete data[key];\n continue;\n }\n\n if (val === null) {\n if (!field.optional) {\n throw new Error(\n `[Table(${table.name})]: Field '${key}' is required but not set.`\n );\n }\n continue;\n }\n\n const typeGet = inputType(val);\n if (!typeMatches(field.type, typeGet)) {\n throw new Error(\n `[Table(${table.name})]: Field '${key}' type mismatch. Expected ${field.type} got ${typeGet}.`\n );\n }\n }\n },\n },\n DataTypeShouldExactlyMatch: {\n validate(table, data) {\n const keys: Set = new Set();\n for (const key in data) {\n const field = table.schema[key];\n if (!field) {\n throw new Error(\n `[Table(${table.name})]: Field '${key}' is not defined but set in entity.`\n );\n }\n\n const val = data[key];\n\n if (val === undefined || val === null) {\n if (!field.optional) {\n throw new Error(\n `[Table(${table.name})]: Field '${key}' is required but not set.`\n );\n }\n continue;\n }\n\n const typeGet = inputType(val);\n if (!typeMatches(field.type, typeGet)) {\n throw new Error(\n `[Table(${table.name})]: Field '${key}' type mismatch. Expected type '${field.type}' but got '${typeGet}'.`\n );\n }\n\n keys.add(key);\n }\n\n for (const key in table.schema) {\n if (!keys.has(key) && table.schema[key].optional === false) {\n throw new Error(\n `[Table(${table.name})]: Field '${key}' is required but not set.`\n );\n }\n }\n },\n },\n} satisfies Record;\n\n// lodash pick's signature is not typesafe\nconst pick = lodashPick as >(\n obj: T,\n ...keys: Array\n) => Pick;\n\nexport const createEntityDataValidators = pick(\n dataValidators,\n 'PrimaryKeyShouldExist',\n 'DataTypeShouldExactlyMatch'\n);\nexport const updateEntityDataValidators = pick(\n dataValidators,\n 'PrimaryKeyShouldNotBeUpdated',\n 'DataTypeShouldMatch'\n);\n","import type { TableSchemaValidator } from './types';\n\nconst PRESERVED_FIELDS = ['$$DELETED'];\n\ninterface DataValidator {\n validate(tableName: string, data: any): void;\n}\n\nexport const yjsTableSchemaValidators: Record = {\n UsePreservedFields: {\n validate(tableName, table) {\n for (const name in table) {\n if (PRESERVED_FIELDS.includes(name)) {\n throw new Error(\n `[Table(${tableName})]: Field '${name}' is reserved keyword and can't be used.`\n );\n }\n }\n },\n },\n};\n\nexport const yjsDataValidators: Record = {\n SetPreservedFields: {\n validate(tableName, data) {\n for (const name of PRESERVED_FIELDS) {\n if (data[name] !== undefined) {\n throw new Error(\n `[Table(${tableName})]: Field '${name}' is reserved keyword and can't be set.`\n );\n }\n }\n },\n },\n};\n","import { createEntityDataValidators, updateEntityDataValidators } from './data';\nimport { tableSchemaValidators } from './schema';\nimport { yjsDataValidators, yjsTableSchemaValidators } from './yjs';\n\ninterface ValidationError {\n code: string;\n error: Error;\n}\n\nfunction throwIfError(errors: ValidationError[]) {\n if (errors.length) {\n const message = errors\n .map(({ code, error }) => `${code}: ${error.stack ?? error.message}`)\n .join('\\n');\n\n throw new Error('Validation Failed Error\\n' + message);\n }\n}\n\nfunction validate void }>(\n rules: Record,\n ...payload: Parameters\n) {\n const errors: ValidationError[] = [];\n\n for (const [code, validator] of Object.entries(rules)) {\n try {\n validator.validate(...payload);\n } catch (e) {\n errors.push({ code, error: e as Error });\n }\n }\n\n throwIfError(errors);\n}\n\nfunction use void }>(\n rules: Record\n) {\n return (...payload: Parameters) =>\n validate(rules, ...payload);\n}\n\nexport const validators = {\n validateTableSchema: use(tableSchemaValidators),\n validateCreateEntityData: use(createEntityDataValidators),\n validateUpdateEntityData: use(updateEntityDataValidators),\n validateYjsTableSchema: use(yjsTableSchemaValidators),\n validateYjsEntityData: use(yjsDataValidators),\n};\n","import type { TableSchemaValidator } from './types';\n\nexport const tableSchemaValidators: Record = {\n PrimaryKeyShouldExist: {\n validate(tableName, table) {\n if (!Object.values(table).some(field => field.schema.isPrimaryKey)) {\n throw new Error(\n `[Table(${tableName})]: There should be at least one field marked as primary key.`\n );\n }\n },\n },\n OnlyOnePrimaryKey: {\n validate(tableName, table) {\n const primaryFields = [];\n\n for (const name in table) {\n if (table[name].schema.isPrimaryKey) {\n primaryFields.push(name);\n }\n }\n\n if (primaryFields.length > 1) {\n throw new Error(\n `[Table(${tableName})]: There should be only one field marked as primary key. Found [${primaryFields.join(', ')}].`\n );\n }\n },\n },\n PrimaryKeyShouldNotBeOptional: {\n validate(tableName, table) {\n for (const name in table) {\n const opts = table[name].schema;\n if (opts.isPrimaryKey && opts.optional && !opts.default) {\n throw new Error(\n `[Table(${tableName})]: Field '${name}' can't be marked primary key and optional with no default value provider at the same time.`\n );\n }\n }\n },\n },\n};\n","import { isUndefined, omitBy } from 'lodash-es';\nimport { Observable, shareReplay } from 'rxjs';\n\nimport type { DBAdapter, TableAdapter } from './adapters';\nimport type {\n DBSchemaBuilder,\n FieldSchemaBuilder,\n TableSchema,\n TableSchemaBuilder,\n} from './schema';\nimport type { Key, TableOptions } from './types';\nimport { validators } from './validators';\n\ntype Pretty = T extends any\n ? {\n -readonly [P in keyof T]: T[P];\n }\n : never;\n\ntype RequiredFields = {\n [K in keyof T as T[K] extends FieldSchemaBuilder\n ? Optional extends false\n ? K\n : never\n : never]: T[K] extends FieldSchemaBuilder ? Type : never;\n};\n\ntype OptionalFields = {\n [K in keyof T as T[K] extends FieldSchemaBuilder\n ? Optional extends true\n ? K\n : never\n : never]?: T[K] extends FieldSchemaBuilder\n ? Type | null\n : never;\n};\n\ntype PrimaryKeyField = {\n [K in keyof T]: T[K] extends FieldSchemaBuilder\n ? PrimaryKey extends true\n ? K\n : never\n : never;\n}[keyof T];\n\nexport type NonPrimaryKeyFields = {\n [K in keyof T]: T[K] extends FieldSchemaBuilder\n ? PrimaryKey extends false\n ? K\n : never\n : never;\n}[keyof T];\n\nexport type PrimaryKeyFieldType =\n T[PrimaryKeyField] extends FieldSchemaBuilder\n ? Type extends Key\n ? Type\n : never\n : never;\n\nexport type CreateEntityInput = Pretty<\n RequiredFields & OptionalFields\n>;\n\n// @TODO(@forehalo): return value need to be specified with `Default` inference\nexport type Entity = Pretty<\n CreateEntityInput & {\n [key in PrimaryKeyField]: PrimaryKeyFieldType;\n }\n>;\n\nexport type UpdateEntityInput = Pretty<{\n [key in NonPrimaryKeyFields]?: key extends keyof Entity\n ? Entity[key]\n : never;\n}>;\n\nexport type FindEntityInput = Pretty<{\n [key in keyof T]?: key extends keyof Entity ? Entity[key] : never;\n}>;\n\nexport class Table {\n readonly schema: TableSchema;\n readonly keyField: string = '';\n private readonly adapter: TableAdapter;\n\n private readonly subscribedKeys: Map> = new Map();\n\n constructor(\n db: DBAdapter,\n public readonly name: string,\n private readonly opts: TableOptions\n ) {\n this.adapter = db.table(name) as any;\n this.schema = Object.entries(this.opts.schema).reduce(\n (acc, [fieldName, fieldBuilder]) => {\n acc[fieldName] = fieldBuilder.schema;\n if (fieldBuilder.schema.isPrimaryKey) {\n // @ts-expect-error still in constructor\n this.keyField = fieldName;\n }\n return acc;\n },\n {} as TableSchema\n );\n this.adapter.setup({ ...opts, keyField: this.keyField });\n }\n\n create(input: CreateEntityInput): Entity {\n const data = Object.entries(this.schema).reduce(\n (acc, [key, schema]) => {\n const inputVal = acc[key];\n\n if (inputVal === undefined) {\n if (schema.optional) {\n acc[key] = null;\n }\n\n if (schema.default) {\n acc[key] = schema.default() ?? null;\n }\n }\n\n return acc;\n },\n omitBy(input, isUndefined) as any\n );\n\n validators.validateCreateEntityData(this, data);\n\n return this.adapter.insert({\n data: data,\n });\n }\n\n update(\n key: PrimaryKeyFieldType,\n input: UpdateEntityInput\n ): Entity | null {\n validators.validateUpdateEntityData(this, input);\n\n const [record] = this.adapter.update({\n where: {\n byKey: key,\n },\n data: input,\n });\n\n return record || null;\n }\n\n get(key: PrimaryKeyFieldType): Entity | null {\n const [record] = this.adapter.find({\n where: {\n byKey: key,\n },\n });\n\n return record || null;\n }\n\n get$(key: PrimaryKeyFieldType): Observable | null> {\n let ob$ = this.subscribedKeys.get(key);\n\n if (!ob$) {\n ob$ = new Observable>(subscriber => {\n const unsubscribe = this.adapter.observe({\n where: {\n byKey: key,\n },\n callback: ([data]) => {\n subscriber.next(data || null);\n },\n });\n\n return () => {\n unsubscribe();\n this.subscribedKeys.delete(key);\n };\n }).pipe(\n shareReplay({\n refCount: true,\n bufferSize: 1,\n })\n );\n\n this.subscribedKeys.set(key, ob$);\n }\n\n return ob$;\n }\n\n find(where?: FindEntityInput): Entity[] {\n return this.adapter.find({\n where: !where\n ? undefined\n : Object.entries(where)\n .map(([field, value]) => ({\n field,\n value,\n }))\n .filter(({ value }) => value !== undefined),\n });\n }\n\n find$(where?: FindEntityInput): Observable[]> {\n return new Observable[]>(subscriber => {\n const unsubscribe = this.adapter.observe({\n where: !where\n ? undefined\n : Object.entries(where)\n .map(([field, value]) => ({\n field,\n value,\n }))\n .filter(({ value }) => value !== undefined),\n callback: data => {\n subscriber.next(data);\n },\n });\n\n return unsubscribe;\n });\n }\n\n keys(): PrimaryKeyFieldType[] {\n return this.adapter.find({\n select: 'key',\n });\n }\n\n keys$(): Observable[]> {\n let ob$ = this.subscribedKeys.get('$$KEYS');\n\n if (!ob$) {\n ob$ = new Observable[]>(subscriber => {\n const unsubscribe = this.adapter.observe({\n select: 'key',\n callback: (keys: PrimaryKeyFieldType[]) => {\n subscriber.next(keys);\n },\n });\n\n return () => {\n unsubscribe();\n this.subscribedKeys.delete('$$KEYS');\n };\n }).pipe(\n shareReplay({\n refCount: true,\n bufferSize: 1,\n })\n );\n\n this.subscribedKeys.set('$$KEYS', ob$);\n }\n\n return ob$;\n }\n\n delete(key: PrimaryKeyFieldType) {\n this.adapter.delete({\n where: {\n byKey: key,\n },\n });\n }\n}\n\nexport type TableMap = {\n readonly [K in keyof Tables]: Table;\n};\n","import { type DBAdapter, type Hook } from './adapters';\nimport type { DBSchemaBuilder } from './schema';\nimport { type CreateEntityInput, Table, type TableMap } from './table';\nimport { validators } from './validators';\n\nexport class ORMClient {\n static hooksMap: Map[]> = new Map();\n readonly tables = new Map>();\n constructor(\n protected readonly db: DBSchemaBuilder,\n protected readonly adapter: DBAdapter\n ) {\n Object.entries(db).forEach(([tableName, tableSchema]) => {\n Object.defineProperty(this, tableName, {\n get: () => {\n let table = this.tables.get(tableName);\n if (!table) {\n table = new Table(this.adapter, tableName, {\n schema: tableSchema,\n hooks: ORMClient.hooksMap.get(tableName),\n });\n this.tables.set(tableName, table);\n }\n return table;\n },\n });\n });\n }\n\n static defineHook(tableName: string, _desc: string, hook: Hook) {\n let hooks = this.hooksMap.get(tableName);\n if (!hooks) {\n hooks = [];\n this.hooksMap.set(tableName, hooks);\n }\n\n hooks.push(hook);\n }\n}\n\nexport function createORMClient(\n db: Schema\n): ORMClientWithTablesClass {\n Object.entries(db).forEach(([tableName, schema]) => {\n validators.validateTableSchema(tableName, schema);\n });\n\n class ORMClientWithTables extends ORMClient {\n constructor(adapter: DBAdapter) {\n super(db, adapter);\n }\n }\n\n return ORMClientWithTables as any;\n}\n\nexport type ORMClientWithTablesClass = {\n new (adapter: DBAdapter): TableMap & ORMClient;\n\n defineHook(\n tableName: TableName,\n desc: string,\n hook: Hook>\n ): void;\n};\n","import type { TableAdapter, TableAdapterOptions } from '../types';\ndeclare module '../../types' {\n interface TableOptions {\n hooks?: Hook[];\n }\n}\n\nexport interface Hook {\n deserialize(dbVal: T): T;\n}\n\nexport interface TableAdapterWithHook extends Hook {}\n\nexport function HookAdapter(): ClassDecorator {\n // @ts-expect-error allow\n return (Class: { new (...args: any[]): TableAdapter }) => {\n return class TableAdapterExtensions\n extends Class\n implements TableAdapterWithHook\n {\n hooks: Hook[] = [];\n\n override setup(opts: TableAdapterOptions): void {\n super.setup(opts);\n this.hooks = opts.hooks ?? [];\n }\n\n deserialize(data: unknown) {\n if (!this.hooks.length) {\n return data;\n }\n\n return this.hooks.reduce(\n (acc, hook) => hook.deserialize(acc),\n Object.assign({} as any, data)\n );\n }\n\n override toObject(data: any): Record {\n return this.deserialize(super.toObject(data));\n }\n };\n };\n}\n","import { pick } from 'lodash-es';\nimport {\n type AbstractType,\n type Doc,\n Map as YMap,\n type Transaction,\n} from 'yjs';\n\nimport { validators } from '../../validators';\nimport { HookAdapter } from '../mixins';\nimport type {\n DeleteQuery,\n FindQuery,\n InsertQuery,\n ObserveQuery,\n Select,\n TableAdapter,\n TableAdapterOptions,\n UpdateQuery,\n WhereCondition,\n} from '../types';\n\n/**\n * Yjs Adapter for AFFiNE ORM\n *\n * Structure:\n *\n * Each table is a YDoc instance\n *\n * Table(YDoc)\n * Key(string): Row(YMap)({\n * FieldA(string): Value(Primitive)\n * FieldB(string): Value(Primitive)\n * FieldC(string): Value(Primitive)\n * })\n */\n@HookAdapter()\nexport class YjsTableAdapter implements TableAdapter {\n private readonly deleteFlagKey = '$$DELETED';\n private keyField: string = 'key';\n private fields: string[] = [];\n\n private readonly origin = 'YjsTableAdapter';\n\n constructor(\n private readonly tableName: string,\n private readonly doc: Doc\n ) {}\n\n setup(opts: TableAdapterOptions): void {\n this.keyField = opts.keyField;\n this.fields = Object.keys(opts.schema);\n }\n\n dispose() {\n this.doc.destroy();\n }\n\n insert(query: InsertQuery) {\n const { data, select } = query;\n validators.validateYjsEntityData(this.tableName, data);\n const key = data[this.keyField];\n const record = this.doc.getMap(key.toString());\n\n this.doc.transact(() => {\n for (const key in data) {\n record.set(key, data[key]);\n }\n\n record.delete(this.deleteFlagKey);\n }, this.origin);\n\n return this.value(record, select);\n }\n\n update(query: UpdateQuery) {\n const { data, select, where } = query;\n validators.validateYjsEntityData(this.tableName, data);\n\n const results: any[] = [];\n this.doc.transact(() => {\n for (const record of this.iterate(where)) {\n results.push(this.value(record, select));\n for (const key in data) {\n this.setField(record, key, data[key]);\n }\n }\n }, this.origin);\n\n return results;\n }\n\n find(query: FindQuery) {\n const { where, select } = query;\n const records: any[] = [];\n for (const record of this.iterate(where)) {\n records.push(this.value(record, select));\n }\n\n return records;\n }\n\n observe(query: ObserveQuery) {\n const { where, select, callback } = query;\n\n let listeningOnAll = false;\n const results = new Map();\n\n if (!where) {\n listeningOnAll = true;\n }\n\n for (const record of this.iterate(where)) {\n results.set(this.keyof(record), this.value(record, select));\n }\n\n callback(Array.from(results.values()));\n\n const ob = (tx: Transaction) => {\n let hasChanged = false;\n for (const [ty] of tx.changed) {\n const record = ty;\n const key = this.keyof(record);\n const isMatch =\n (listeningOnAll || (where && this.match(record, where))) &&\n !this.isDeleted(record);\n const prevMatch = results.get(key);\n const isPrevMatched = results.has(key);\n\n if (isMatch && isPrevMatched) {\n const newValue = this.value(record, select);\n if (prevMatch !== newValue) {\n results.set(key, newValue);\n hasChanged = true;\n }\n } else if (isMatch && !isPrevMatched) {\n results.set(this.keyof(record), this.value(record, select));\n hasChanged = true;\n } else if (!isMatch && isPrevMatched) {\n results.delete(key);\n hasChanged = true;\n }\n }\n\n if (hasChanged) {\n callback(Array.from(results.values()));\n }\n };\n\n this.doc.on('afterTransaction', ob);\n return () => {\n this.doc.off('afterTransaction', ob);\n };\n }\n\n delete(query: DeleteQuery) {\n const { where } = query;\n\n this.doc.transact(() => {\n for (const record of this.iterate(where)) {\n this.deleteTy(record);\n }\n }, this.origin);\n }\n\n toObject(ty: AbstractType): Record {\n return YMap.prototype.toJSON.call(ty);\n }\n\n private recordByKey(key: string): AbstractType | null {\n // detect if the record is there otherwise yjs will create an empty Map.\n if (this.doc.share.has(key)) {\n return this.doc.getMap(key);\n }\n\n return null;\n }\n\n private *iterate(where?: WhereCondition) {\n if (!where) {\n for (const map of this.doc.share.values()) {\n if (!this.isDeleted(map)) {\n yield map;\n }\n }\n }\n // fast pass for key lookup without iterating the whole table\n else if ('byKey' in where) {\n const record = this.recordByKey(where.byKey.toString());\n if (record) {\n yield record;\n }\n } else if (Array.isArray(where)) {\n for (const map of this.doc.share.values()) {\n if (this.match(map, where)) {\n yield map;\n }\n }\n }\n }\n\n private value(record: AbstractType, select: Select = '*') {\n if (this.isDeleted(record) || this.isEmpty(record)) {\n return null;\n }\n\n let selectedFields: string[];\n if (select === 'key') {\n return this.keyof(record);\n } else if (select === '*') {\n selectedFields = this.fields;\n } else {\n selectedFields = select;\n }\n\n return pick(this.toObject(record), selectedFields);\n }\n\n private match(record: AbstractType, where: WhereCondition) {\n return (\n !this.isDeleted(record) &&\n (Array.isArray(where)\n ? where.length === 0\n ? false\n : where.every(c => this.field(record, c.field) === c.value)\n : where.byKey === this.keyof(record))\n );\n }\n\n private isDeleted(record: AbstractType) {\n return (\n this.field(record, this.deleteFlagKey) === true || this.isEmpty(record)\n );\n }\n\n private keyof(record: AbstractType) {\n return this.field(record, this.keyField);\n }\n\n private field(ty: AbstractType, field: string) {\n return YMap.prototype.get.call(ty, field);\n }\n\n private setField(ty: AbstractType, field: string, value: any) {\n YMap.prototype.set.call(ty, field, value);\n }\n\n private isEmpty(ty: AbstractType) {\n return ty._map.size === 0;\n }\n\n private deleteTy(ty: AbstractType) {\n this.fields.forEach(field => {\n if (field !== this.keyField) {\n YMap.prototype.delete.call(ty, field);\n }\n });\n YMap.prototype.set.call(ty, this.deleteFlagKey, true);\n }\n}\n","import type { Doc } from 'yjs';\n\nimport type { DBSchemaBuilder } from '../../schema';\nimport { validators } from '../../validators';\nimport type { DBAdapter, TableAdapter } from '../types';\nimport { YjsTableAdapter } from './table';\n\nexport interface DocProvider {\n getDoc(guid: string): Doc;\n}\n\nexport class YjsDBAdapter implements DBAdapter {\n tables: Map = new Map();\n constructor(\n db: DBSchemaBuilder,\n private readonly provider: DocProvider\n ) {\n for (const [tableName, table] of Object.entries(db)) {\n validators.validateYjsTableSchema(tableName, table);\n const doc = this.provider.getDoc(tableName);\n\n this.tables.set(tableName, new YjsTableAdapter(tableName, doc));\n }\n }\n\n table(tableName: string) {\n const table = this.tables.get(tableName);\n\n if (!table) {\n throw new Error('Table not found');\n }\n\n return table;\n }\n}\n","export type FieldType = 'string' | 'number' | 'boolean' | 'json';\n\nexport interface FieldSchema {\n type: FieldType;\n optional: boolean;\n isPrimaryKey: boolean;\n default?: () => Type;\n}\n\nexport type TableSchema = Record;\nexport type TableSchemaBuilder = Record<\n string,\n FieldSchemaBuilder\n>;\nexport type DBSchemaBuilder = Record;\n\nexport class FieldSchemaBuilder<\n Type = unknown,\n Optional extends boolean = false,\n PrimaryKey extends boolean = false,\n> {\n schema: FieldSchema = {\n type: 'string',\n optional: false,\n isPrimaryKey: false,\n default: undefined,\n };\n\n constructor(type: FieldType) {\n this.schema.type = type;\n }\n\n optional() {\n this.schema.optional = true;\n return this as FieldSchemaBuilder;\n }\n\n default(value: () => Type) {\n this.schema.default = value;\n this.schema.optional = true;\n return this as FieldSchemaBuilder;\n }\n\n primaryKey() {\n this.schema.isPrimaryKey = true;\n return this as FieldSchemaBuilder;\n }\n}\n\nexport const f = {\n string: () => new FieldSchemaBuilder('string'),\n number: () => new FieldSchemaBuilder('number'),\n boolean: () => new FieldSchemaBuilder('boolean'),\n json: () => new FieldSchemaBuilder('json'),\n} satisfies Record FieldSchemaBuilder>;\n","import { nanoid } from 'nanoid';\n\nimport { type DBSchemaBuilder, f } from '../../../orm';\n\nexport const AFFiNE_WORKSPACE_DB_SCHEMA = {\n folders: {\n id: f.string().primaryKey().optional().default(nanoid),\n parentId: f.string().optional(),\n data: f.string(),\n type: f.string(),\n index: f.string(),\n },\n} as const satisfies DBSchemaBuilder;\nexport type AFFiNE_WORKSPACE_DB_SCHEMA = typeof AFFiNE_WORKSPACE_DB_SCHEMA;\n\nexport const AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA = {\n favorite: {\n key: f.string().primaryKey(),\n index: f.string(),\n },\n} as const satisfies DBSchemaBuilder;\nexport type AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA =\n typeof AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA;\n","import { Doc as YDoc } from 'yjs';\n\nimport { Service } from '../../../framework';\nimport { createORMClient, YjsDBAdapter } from '../../../orm';\nimport type { DocStorage } from '../../../sync';\nimport { ObjectPool } from '../../../utils';\nimport type { WorkspaceService } from '../../workspace';\nimport { DB, type DBWithTables } from '../entities/db';\nimport { AFFiNE_WORKSPACE_DB_SCHEMA } from '../schema';\nimport { AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA } from '../schema/schema';\n\nconst WorkspaceDBClient = createORMClient(AFFiNE_WORKSPACE_DB_SCHEMA);\nconst WorkspaceUserdataDBClient = createORMClient(\n AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA\n);\n\nexport class WorkspaceDBService extends Service {\n db: DBWithTables;\n userdataDBPool = new ObjectPool<\n string,\n DB\n >({\n onDangling() {\n return false; // never release\n },\n });\n\n constructor(private readonly workspaceService: WorkspaceService) {\n super();\n this.db = this.framework.createEntity(DB, {\n db: new WorkspaceDBClient(\n new YjsDBAdapter(AFFiNE_WORKSPACE_DB_SCHEMA, {\n getDoc: guid => {\n const ydoc = new YDoc({\n // guid format: db${workspaceId}${guid}\n guid: `db$${this.workspaceService.workspace.id}$${guid}`,\n });\n this.workspaceService.workspace.engine.doc.addDoc(ydoc, false);\n this.workspaceService.workspace.engine.doc.setPriority(\n ydoc.guid,\n 50\n );\n return ydoc;\n },\n })\n ),\n schema: AFFiNE_WORKSPACE_DB_SCHEMA,\n storageDocId: tableName =>\n `db$${this.workspaceService.workspace.id}$${tableName}`,\n }) as DBWithTables;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n userdataDB(userId: (string & {}) | '__local__') {\n // __local__ for local workspace\n const userdataDb = this.userdataDBPool.get(userId);\n if (userdataDb) {\n return userdataDb.obj as DBWithTables;\n }\n\n const newDB = this.framework.createEntity(\n DB,\n {\n db: new WorkspaceUserdataDBClient(\n new YjsDBAdapter(AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA, {\n getDoc: guid => {\n const ydoc = new YDoc({\n // guid format: userdata${userId}${workspaceId}${guid}\n guid: `userdata$${userId}$${this.workspaceService.workspace.id}$${guid}`,\n });\n this.workspaceService.workspace.engine.doc.addDoc(ydoc, false);\n this.workspaceService.workspace.engine.doc.setPriority(\n ydoc.guid,\n 50\n );\n return ydoc;\n },\n })\n ),\n schema: AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA,\n storageDocId: tableName =>\n `userdata$${userId}$${this.workspaceService.workspace.id}$${tableName}`,\n }\n );\n\n this.userdataDBPool.put(userId, newDB);\n return newDB as DBWithTables;\n }\n\n static isDBDocId(docId: string) {\n return docId.startsWith('db$') || docId.startsWith('userdata$');\n }\n}\n\nexport async function transformWorkspaceDBLocalToCloud(\n localWorkspaceId: string,\n cloudWorkspaceId: string,\n localDocStorage: DocStorage,\n cloudDocStorage: DocStorage,\n accountId: string\n) {\n for (const tableName of Object.keys(AFFiNE_WORKSPACE_DB_SCHEMA)) {\n const localDocName = `db$${localWorkspaceId}$${tableName}`;\n const localDoc = await localDocStorage.doc.get(localDocName);\n if (localDoc) {\n const cloudDocName = `db$${cloudWorkspaceId}$${tableName}`;\n await cloudDocStorage.doc.set(cloudDocName, localDoc);\n }\n }\n\n for (const tableName of Object.keys(AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA)) {\n const localDocName = `userdata$__local__$${localWorkspaceId}$${tableName}`;\n const localDoc = await localDocStorage.doc.get(localDocName);\n if (localDoc) {\n const cloudDocName = `userdata$${accountId}$${cloudWorkspaceId}$${tableName}`;\n await cloudDocStorage.doc.set(cloudDocName, localDoc);\n }\n }\n}\n","import { Entity } from '../../../framework';\nimport type { DocScope } from '../scopes/doc';\nimport type { DocsStore } from '../stores/docs';\nimport type { DocMode } from './record';\n\nexport class Doc extends Entity {\n constructor(\n public readonly scope: DocScope,\n private readonly store: DocsStore\n ) {\n super();\n }\n\n get id() {\n return this.scope.props.docId;\n }\n\n public readonly blockSuiteDoc = this.scope.props.blockSuiteDoc;\n public readonly record = this.scope.props.record;\n\n readonly meta$ = this.record.meta$;\n readonly mode$ = this.record.mode$;\n readonly title$ = this.record.title$;\n readonly trash$ = this.record.trash$;\n\n setMode(mode: DocMode) {\n return this.record.setMode(mode);\n }\n\n getMode() {\n return this.record.getMode();\n }\n\n toggleMode() {\n return this.record.toggleMode();\n }\n\n observeMode() {\n return this.record.observeMode();\n }\n\n moveToTrash() {\n return this.record.moveToTrash();\n }\n\n restoreFromTrash() {\n return this.record.restoreFromTrash();\n }\n\n waitForSyncReady() {\n return this.store.waitForDocLoadReady(this.id);\n }\n\n setPriorityLoad(priority: number) {\n return this.store.setPriorityLoad(this.id, priority);\n }\n}\n","import { map } from 'rxjs';\n\nimport { Entity } from '../../../framework';\nimport { LiveData } from '../../../livedata';\nimport type { DocsStore } from '../stores/docs';\nimport { type DocMode, DocRecord } from './record';\n\nexport class DocRecordList extends Entity {\n constructor(private readonly store: DocsStore) {\n super();\n }\n\n private readonly pool = new Map();\n\n public readonly docs$ = LiveData.from(\n this.store.watchDocIds().pipe(\n map(ids =>\n ids.map(id => {\n const exists = this.pool.get(id);\n if (exists) {\n return exists;\n }\n const record = this.framework.createEntity(DocRecord, { id });\n this.pool.set(id, record);\n return record;\n })\n )\n ),\n []\n );\n\n public readonly trashDocs$ = LiveData.from(\n this.store.watchTrashDocIds().pipe(\n map(ids =>\n ids.map(id => {\n const exists = this.pool.get(id);\n if (exists) {\n return exists;\n }\n const record = this.framework.createEntity(DocRecord, { id });\n this.pool.set(id, record);\n return record;\n })\n )\n ),\n []\n );\n\n public readonly isReady$ = LiveData.from(\n this.store.watchDocListReady(),\n false\n );\n\n public doc$(id: string) {\n return this.docs$.map(record => record.find(record => record.id === id));\n }\n\n public setMode(id: string, mode: DocMode) {\n return this.store.setDocModeSetting(id, mode);\n }\n\n public getMode(id: string) {\n return this.store.getDocModeSetting(id);\n }\n\n public toggleMode(id: string) {\n const mode = this.getMode(id) === 'edgeless' ? 'page' : 'edgeless';\n this.setMode(id, mode);\n return this.getMode(id);\n }\n\n public observeMode(id: string) {\n return this.store.watchDocModeSetting(id);\n }\n}\n","import type { DocMeta } from '@blocksuite/store';\n\nimport { Entity } from '../../../framework';\nimport { LiveData } from '../../../livedata';\nimport type { DocsStore } from '../stores/docs';\n\nexport type DocMode = 'edgeless' | 'page';\n\n/**\n * # DocRecord\n *\n * Some data you can use without open a doc.\n */\nexport class DocRecord extends Entity<{ id: string }> {\n id: string = this.props.id;\n constructor(private readonly docsStore: DocsStore) {\n super();\n }\n\n meta$ = LiveData.from>(\n this.docsStore.watchDocMeta(this.id),\n {}\n );\n\n setMeta(meta: Partial): void {\n this.docsStore.setDocMeta(this.id, meta);\n }\n\n mode$: LiveData = LiveData.from(\n this.docsStore.watchDocModeSetting(this.id),\n 'page'\n ).map(mode => (mode === 'edgeless' ? 'edgeless' : 'page'));\n\n setMode(mode: DocMode) {\n return this.docsStore.setDocModeSetting(this.id, mode);\n }\n\n getMode() {\n return this.docsStore.getDocModeSetting(this.id);\n }\n\n toggleMode() {\n const mode = this.getMode() === 'edgeless' ? 'page' : 'edgeless';\n this.setMode(mode);\n return this.getMode();\n }\n\n observeMode() {\n return this.docsStore.watchDocModeSetting(this.id);\n }\n\n moveToTrash() {\n return this.setMeta({ trash: true });\n }\n\n restoreFromTrash() {\n return this.setMeta({ trash: false });\n }\n\n title$ = this.meta$.map(meta => meta.title ?? '');\n\n trash$ = this.meta$.map(meta => meta.trash ?? false);\n}\n","import type { Doc as BlockSuiteDoc } from '@blocksuite/store';\n\nimport { Scope } from '../../../framework';\nimport type { DocRecord } from '../entities/record';\n\nexport class DocScope extends Scope<{\n docId: string;\n record: DocRecord;\n blockSuiteDoc: BlockSuiteDoc;\n}> {}\n","import { Service } from '../../../framework';\nimport { Doc } from '../entities/doc';\n\nexport class DocService extends Service {\n public readonly doc = this.framework.createEntity(Doc);\n}\n","import { Unreachable } from '@affine/env/constant';\nimport type { RootBlockModel } from '@blocksuite/blocks';\n\nimport { Service } from '../../../framework';\nimport { initEmptyPage } from '../../../initialization';\nimport { ObjectPool } from '../../../utils';\nimport type { Doc } from '../entities/doc';\nimport type { DocMode } from '../entities/record';\nimport { DocRecordList } from '../entities/record-list';\nimport { DocScope } from '../scopes/doc';\nimport type { DocsStore } from '../stores/docs';\nimport { DocService } from './doc';\n\nexport class DocsService extends Service {\n list = this.framework.createEntity(DocRecordList);\n\n pool = new ObjectPool({\n onDelete(obj) {\n obj.scope.dispose();\n },\n });\n\n constructor(private readonly store: DocsStore) {\n super();\n }\n\n open(docId: string) {\n const docRecord = this.list.doc$(docId).value;\n if (!docRecord) {\n throw new Error('Doc record not found');\n }\n const blockSuiteDoc = this.store.getBlockSuiteDoc(docId);\n if (!blockSuiteDoc) {\n throw new Error('Doc not found');\n }\n\n const exists = this.pool.get(docId);\n if (exists) {\n return { doc: exists.obj, release: exists.release };\n }\n\n const docScope = this.framework.createScope(DocScope, {\n docId,\n blockSuiteDoc,\n record: docRecord,\n });\n\n const doc = docScope.get(DocService).doc;\n\n const { obj, release } = this.pool.put(docId, doc);\n\n return { doc: obj, release };\n }\n\n createDoc(\n options: {\n mode?: DocMode;\n title?: string;\n } = {}\n ) {\n const doc = this.store.createBlockSuiteDoc();\n initEmptyPage(doc, options.title);\n this.store.markDocSyncStateAsReady(doc.id);\n const docRecord = this.list.doc$(doc.id).value;\n if (!docRecord) {\n throw new Unreachable();\n }\n if (options.mode) {\n docRecord.setMode(options.mode);\n }\n return docRecord;\n }\n\n async addLinkedDoc(targetDocId: string, linkedDocId: string) {\n const { doc, release } = this.open(targetDocId);\n doc.setPriorityLoad(10);\n await doc.waitForSyncReady();\n const text = doc.blockSuiteDoc.Text.fromDelta([\n {\n insert: ' ',\n attributes: {\n reference: {\n type: 'LinkedPage',\n pageId: linkedDocId,\n },\n },\n },\n ]);\n const [frame] = doc.blockSuiteDoc.getBlocksByFlavour('affine:note');\n frame &&\n doc.blockSuiteDoc.addBlock(\n 'affine:paragraph' as never, // TODO(eyhn): fix type\n { text },\n frame.id\n );\n release();\n }\n\n async changeDocTitle(docId: string, newTitle: string) {\n const { doc, release } = this.open(docId);\n doc.setPriorityLoad(10);\n await doc.waitForSyncReady();\n const pageBlock = doc.blockSuiteDoc.getBlocksByFlavour('affine:page').at(0)\n ?.model as RootBlockModel | undefined;\n if (pageBlock) {\n doc.blockSuiteDoc.transact(() => {\n pageBlock.title.delete(0, pageBlock.title.length);\n pageBlock.title.insert(newTitle, 0);\n });\n doc.record.setMeta({ title: newTitle });\n }\n release();\n }\n}\n","import { Entity } from '../../../framework';\nimport { LiveData } from '../../../livedata';\nimport { MemoryMemento } from '../../../storage';\nimport type { DocMode } from '../../doc';\n\nexport class GlobalContext extends Entity {\n memento = new MemoryMemento();\n\n workspaceId = this.define('workspaceId');\n\n /**\n * is in doc page\n */\n isDoc = this.define('isDoc');\n isTrashDoc = this.define('isTrashDoc');\n docId = this.define('docId');\n docMode = this.define('docMode');\n\n /**\n * is in collection page\n */\n isCollection = this.define('isCollection');\n collectionId = this.define('collectionId');\n\n /**\n * is in trash page\n */\n isTrash = this.define('isTrash');\n\n /**\n * is in tag page\n */\n isTag = this.define('isTag');\n tagId = this.define('tagId');\n\n /**\n * is in all docs page\n */\n isAllDocs = this.define('isAllDocs');\n\n define(key: string) {\n this.memento.set(key, null);\n const livedata$ = LiveData.from(this.memento.watch(key), null);\n return {\n get: () => this.memento.get(key) as T | null,\n set: (value: T | null) => this.memento.set(key, value),\n $: livedata$,\n };\n }\n}\n","import { Service } from '../../../framework';\nimport { GlobalContext } from '../entities/global-context';\n\nexport class GlobalContextService extends Service {\n globalContext = this.framework.createEntity(GlobalContext);\n}\n","import { createEvent, Service } from '../../../framework';\n\n/**\n * Event that is emitted when application is started.\n */\nexport const ApplicationStarted = createEvent('ApplicationStartup');\n\n/**\n * Event that is emitted when browser tab or windows is focused again, after being blurred.\n * Can be used to actively refresh some data.\n */\nexport const ApplicationFocused = createEvent('ApplicationFocused');\n\nexport class LifecycleService extends Service {\n constructor() {\n super();\n }\n\n applicationStart() {\n this.eventBus.emit(ApplicationStarted, true);\n }\n\n applicationFocus() {\n this.eventBus.emit(ApplicationFocused, true);\n }\n}\n","import { createIdentifier } from '../../../framework';\nimport type { Memento } from '../../../storage';\n\n/**\n * A memento object that stores the entire application state.\n *\n * State is persisted, even the application is closed.\n */\nexport interface GlobalState extends Memento {}\n\nexport const GlobalState = createIdentifier('GlobalState');\n\n/**\n * A memento object that stores the entire application cache.\n *\n * Cache may be deleted from time to time, business logic should not rely on cache.\n */\nexport interface GlobalCache extends Memento {}\n\nexport const GlobalCache = createIdentifier('GlobalCache');\n","import { Service } from '../../../framework';\nimport type { GlobalCache, GlobalState } from '../providers/global';\n\nexport class GlobalStateService extends Service {\n constructor(public readonly globalState: GlobalState) {\n super();\n }\n}\n\nexport class GlobalCacheService extends Service {\n constructor(public readonly globalCache: GlobalCache) {\n super();\n }\n}\n","import { BinarySearchTree } from '@datastructures-js/binary-search-tree';\n\nexport class PriorityQueue {\n tree = new BinarySearchTree<{ id: string; priority: number }>((a, b) => {\n return a.priority === b.priority\n ? a.id === b.id\n ? 0\n : a.id > b.id\n ? 1\n : -1\n : a.priority - b.priority;\n });\n priorityMap = new Map();\n\n push(id: string, priority: number = 0) {\n const oldPriority = this.priorityMap.get(id);\n if (oldPriority === priority) {\n return;\n }\n if (oldPriority !== undefined) {\n this.remove(id);\n }\n this.tree.insert({ id, priority });\n this.priorityMap.set(id, priority);\n }\n\n pop() {\n const node = this.tree.max();\n\n if (!node) {\n return null;\n }\n\n this.tree.removeNode(node);\n\n const { id } = node.getValue();\n this.priorityMap.delete(id);\n\n return id;\n }\n\n remove(id: string, priority?: number) {\n priority ??= this.priorityMap.get(id);\n if (priority === undefined) {\n return false;\n }\n const removed = this.tree.remove({ id, priority });\n if (removed) {\n this.priorityMap.delete(id);\n }\n\n return removed;\n }\n\n clear() {\n this.tree.clear();\n this.priorityMap.clear();\n }\n\n updatePriority(id: string, priority: number) {\n if (this.remove(id)) {\n this.push(id, priority);\n }\n }\n\n get length() {\n return this.tree.count;\n }\n}\n","import { PriorityQueue } from './priority-queue';\n\nexport class AsyncPriorityQueue extends PriorityQueue {\n private _resolveUpdate: (() => void) | null = null;\n private _waitForUpdate: Promise | null = null;\n\n async asyncPop(abort?: AbortSignal): Promise {\n const update = this.pop();\n if (update) {\n return update;\n } else {\n if (!this._waitForUpdate) {\n this._waitForUpdate = new Promise(resolve => {\n this._resolveUpdate = resolve;\n });\n }\n\n await Promise.race([\n this._waitForUpdate,\n new Promise((_, reject) => {\n if (abort?.aborted) {\n reject(abort?.reason);\n }\n abort?.addEventListener('abort', () => {\n reject(abort.reason);\n });\n }),\n ]);\n\n return this.asyncPop(abort);\n }\n }\n\n override push(id: string, priority: number = 0) {\n super.push(id, priority);\n if (this._resolveUpdate) {\n const resolve = this._resolveUpdate;\n this._resolveUpdate = null;\n this._waitForUpdate = null;\n resolve();\n }\n }\n}\n","import { DebugLogger } from '@affine/debug';\nimport { Unreachable } from '@affine/env/constant';\nimport { groupBy } from 'lodash-es';\nimport { Observable, Subject } from 'rxjs';\nimport type { Doc as YDoc } from 'yjs';\nimport { applyUpdate, encodeStateAsUpdate, mergeUpdates } from 'yjs';\n\nimport { LiveData } from '../../livedata';\nimport { throwIfAborted } from '../../utils';\nimport { AsyncPriorityQueue } from './async-priority-queue';\nimport type { DocEvent } from './event';\nimport type { DocStorageInner } from './storage';\nimport { isEmptyUpdate } from './utils';\n\ntype Job =\n | {\n type: 'load';\n docId: string;\n }\n | {\n type: 'save';\n docId: string;\n update: Uint8Array;\n }\n | {\n type: 'apply';\n docId: string;\n update: Uint8Array;\n isInitialize: boolean;\n };\n\nconst DOC_ENGINE_ORIGIN = 'doc-engine';\n\nconst logger = new DebugLogger('doc-engine:local');\n\nexport interface LocalEngineState {\n total: number;\n syncing: number;\n}\n\nexport interface LocalDocState {\n ready: boolean;\n loading: boolean;\n syncing: boolean;\n}\n\n/**\n * never fail\n */\nexport class DocEngineLocalPart {\n private readonly prioritySettings = new Map();\n private readonly statusUpdatedSubject$ = new Subject();\n\n private readonly status = {\n docs: new Map(),\n connectedDocs: new Set(),\n readyDocs: new Set(),\n jobDocQueue: new AsyncPriorityQueue(),\n jobMap: new Map(),\n currentJob: null as { docId: string; jobs: Job[] } | null,\n };\n\n engineState$ = LiveData.from(\n new Observable(subscribe => {\n const next = () => {\n subscribe.next({\n total: this.status.docs.size,\n syncing: this.status.jobMap.size + (this.status.currentJob ? 1 : 0),\n });\n };\n next();\n return this.statusUpdatedSubject$.subscribe(() => {\n next();\n });\n }),\n { syncing: 0, total: 0 }\n );\n\n docState$(docId: string) {\n return LiveData.from(\n new Observable(subscribe => {\n const next = () => {\n subscribe.next({\n ready: this.status.readyDocs.has(docId) ?? false,\n loading: this.status.connectedDocs.has(docId),\n syncing:\n (this.status.jobMap.get(docId)?.length ?? 0) > 0 ||\n this.status.currentJob?.docId === docId,\n });\n };\n next();\n return this.statusUpdatedSubject$.subscribe(updatedId => {\n if (updatedId === docId) next();\n });\n }),\n { ready: false, loading: false, syncing: false }\n );\n }\n\n constructor(\n private readonly clientId: string,\n private readonly storage: DocStorageInner\n ) {}\n\n async mainLoop(signal?: AbortSignal) {\n const dispose = this.storage.eventBus.on(event => {\n const handler = this.events[event.type];\n if (handler) {\n handler(event as any);\n }\n });\n try {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n throwIfAborted(signal);\n const docId = await this.status.jobDocQueue.asyncPop(signal);\n const jobs = this.status.jobMap.get(docId);\n this.status.jobMap.delete(docId);\n\n if (!jobs) {\n continue;\n }\n\n this.status.currentJob = { docId, jobs };\n this.statusUpdatedSubject$.next(docId);\n\n const { apply, load, save } = groupBy(jobs, job => job.type) as {\n [key in Job['type']]?: Job[];\n };\n\n if (load?.length) {\n await this.jobs.load(load[0] as any, signal);\n }\n\n for (const applyJob of apply ?? []) {\n await this.jobs.apply(applyJob as any, signal);\n }\n\n if (save?.length) {\n await this.jobs.save(docId, save as any, signal);\n }\n\n this.status.currentJob = null;\n this.statusUpdatedSubject$.next(docId);\n }\n } finally {\n dispose();\n\n for (const docs of this.status.connectedDocs) {\n const doc = this.status.docs.get(docs);\n if (doc) {\n doc.off('update', this.handleDocUpdate);\n }\n }\n }\n }\n\n readonly actions = {\n addDoc: (doc: YDoc) => {\n this.schedule({\n type: 'load',\n docId: doc.guid,\n });\n\n this.status.docs.set(doc.guid, doc);\n this.statusUpdatedSubject$.next(doc.guid);\n },\n markAsReady: (docId: string) => {\n this.status.readyDocs.add(docId);\n this.statusUpdatedSubject$.next(docId);\n },\n };\n\n readonly jobs = {\n load: async (job: Job & { type: 'load' }, signal?: AbortSignal) => {\n const doc = this.status.docs.get(job.docId);\n if (!doc) {\n throw new Unreachable('doc not found');\n }\n const existingData = encodeStateAsUpdate(doc);\n\n if (!isEmptyUpdate(existingData)) {\n this.schedule({\n type: 'save',\n docId: doc.guid,\n update: existingData,\n });\n }\n\n // mark doc as loaded\n doc.emit('sync', [true, doc]);\n doc.on('update', this.handleDocUpdate);\n\n this.status.connectedDocs.add(job.docId);\n this.statusUpdatedSubject$.next(job.docId);\n\n const docData = await this.storage.loadDocFromLocal(job.docId, signal);\n\n if (!docData || isEmptyUpdate(docData)) {\n return;\n }\n\n this.applyUpdate(job.docId, docData);\n this.status.readyDocs.add(job.docId);\n this.statusUpdatedSubject$.next(job.docId);\n },\n save: async (\n docId: string,\n jobs: (Job & { type: 'save' })[],\n signal?: AbortSignal\n ) => {\n if (this.status.connectedDocs.has(docId)) {\n const merged = mergeUpdates(\n jobs.map(j => j.update).filter(update => !isEmptyUpdate(update))\n );\n const newSeqNum = await this.storage.commitDocAsClientUpdate(\n docId,\n merged,\n signal\n );\n this.storage.eventBus.emit({\n type: 'ClientUpdateCommitted',\n seqNum: newSeqNum,\n docId: docId,\n clientId: this.clientId,\n update: merged,\n });\n }\n },\n apply: async (job: Job & { type: 'apply' }, signal?: AbortSignal) => {\n throwIfAborted(signal);\n if (this.status.connectedDocs.has(job.docId)) {\n this.applyUpdate(job.docId, job.update);\n }\n if (job.isInitialize && !isEmptyUpdate(job.update)) {\n this.status.readyDocs.add(job.docId);\n this.statusUpdatedSubject$.next(job.docId);\n }\n },\n };\n\n readonly events: {\n [key in DocEvent['type']]?: (event: DocEvent & { type: key }) => void;\n } = {\n ServerUpdateCommitted: ({ docId, update, clientId }) => {\n this.schedule({\n type: 'apply',\n docId,\n update,\n isInitialize: clientId === this.clientId,\n });\n },\n ClientUpdateCommitted: ({ docId, update, clientId }) => {\n if (clientId !== this.clientId) {\n this.schedule({\n type: 'apply',\n docId,\n update,\n isInitialize: false,\n });\n }\n },\n };\n\n handleDocUpdate = (update: Uint8Array, origin: any, doc: YDoc) => {\n if (origin === DOC_ENGINE_ORIGIN) {\n return;\n }\n\n this.schedule({\n type: 'save',\n docId: doc.guid,\n update,\n });\n };\n\n applyUpdate(docId: string, update: Uint8Array) {\n const doc = this.status.docs.get(docId);\n if (doc && !isEmptyUpdate(update)) {\n try {\n applyUpdate(doc, update, DOC_ENGINE_ORIGIN);\n } catch (err) {\n logger.error('failed to apply update yjs doc', err);\n }\n }\n }\n\n schedule(job: Job) {\n const priority = this.prioritySettings.get(job.docId) ?? 0;\n this.status.jobDocQueue.push(job.docId, priority);\n\n const existingJobs = this.status.jobMap.get(job.docId) ?? [];\n existingJobs.push(job);\n this.status.jobMap.set(job.docId, existingJobs);\n this.statusUpdatedSubject$.next(job.docId);\n }\n\n setPriority(docId: string, priority: number) {\n this.prioritySettings.set(docId, priority);\n this.status.jobDocQueue.updatePriority(docId, priority);\n }\n}\n","export class ClockMap {\n max: number = 0;\n constructor(private readonly map: Map) {\n for (const value of map.values()) {\n if (value > this.max) {\n this.max = value;\n }\n }\n }\n\n get(id: string): number {\n return this.map.get(id) ?? 0;\n }\n\n set(id: string, value: number) {\n this.map.set(id, value);\n if (value > this.max) {\n this.max = value;\n }\n }\n\n setIfBigger(id: string, value: number) {\n if (value > this.get(id)) {\n this.set(id, value);\n }\n }\n\n clear() {\n this.map.clear();\n this.max = 0;\n }\n}\n","import { DebugLogger } from '@affine/debug';\nimport { remove } from 'lodash-es';\nimport { Observable, Subject } from 'rxjs';\nimport { diffUpdate, encodeStateVectorFromUpdate, mergeUpdates } from 'yjs';\n\nimport { LiveData } from '../../livedata';\nimport { throwIfAborted } from '../../utils';\nimport { AsyncPriorityQueue } from './async-priority-queue';\nimport { ClockMap } from './clock';\nimport type { DocEvent } from './event';\nimport type { DocServer } from './server';\nimport type { DocStorageInner } from './storage';\nimport { isEmptyUpdate } from './utils';\n\nconst logger = new DebugLogger('doc-engine:remote');\n\ntype Job =\n | {\n type: 'connect';\n docId: string;\n }\n | {\n type: 'push';\n docId: string;\n update: Uint8Array;\n seqNum: number;\n }\n | {\n type: 'pull';\n docId: string;\n }\n | {\n type: 'pullAndPush';\n docId: string;\n }\n | {\n type: 'save';\n docId: string;\n update?: Uint8Array;\n serverClock: number;\n };\n\nexport interface Status {\n docs: Set;\n connectedDocs: Set;\n jobDocQueue: AsyncPriorityQueue;\n jobMap: Map;\n serverClocks: ClockMap;\n syncing: boolean;\n retrying: boolean;\n errorMessage: string | null;\n}\n\nexport interface RemoteEngineState {\n total: number;\n syncing: number;\n retrying: boolean;\n errorMessage: string | null;\n}\n\nexport interface RemoteDocState {\n syncing: boolean;\n retrying: boolean;\n serverClock: number | null;\n errorMessage: string | null;\n}\n\nexport class DocEngineRemotePart {\n private readonly prioritySettings = new Map();\n\n constructor(\n private readonly clientId: string,\n private readonly storage: DocStorageInner,\n private readonly server: DocServer\n ) {}\n\n private status: Status = {\n docs: new Set(),\n connectedDocs: new Set(),\n jobDocQueue: new AsyncPriorityQueue(),\n jobMap: new Map(),\n serverClocks: new ClockMap(new Map()),\n syncing: false,\n retrying: false,\n errorMessage: null,\n };\n private readonly statusUpdatedSubject$ = new Subject();\n\n engineState$ = LiveData.from(\n new Observable(subscribe => {\n const next = () => {\n if (!this.status.syncing) {\n // if syncing = false, jobMap is empty\n subscribe.next({\n total: this.status.docs.size,\n syncing: this.status.docs.size,\n retrying: this.status.retrying,\n errorMessage: this.status.errorMessage,\n });\n } else {\n const syncing = this.status.jobMap.size;\n subscribe.next({\n total: this.status.docs.size,\n syncing: syncing,\n retrying: this.status.retrying,\n errorMessage: this.status.errorMessage,\n });\n }\n };\n next();\n return this.statusUpdatedSubject$.subscribe(() => {\n next();\n });\n }),\n {\n syncing: 0,\n total: 0,\n retrying: false,\n errorMessage: null,\n }\n );\n\n docState$(docId: string) {\n return LiveData.from(\n new Observable(subscribe => {\n const next = () => {\n subscribe.next({\n syncing:\n !this.status.connectedDocs.has(docId) ||\n this.status.jobMap.has(docId),\n serverClock: this.status.serverClocks.get(docId),\n retrying: this.status.retrying,\n errorMessage: this.status.errorMessage,\n });\n };\n next();\n return this.statusUpdatedSubject$.subscribe(updatedId => {\n if (updatedId === true || updatedId === docId) next();\n });\n }),\n { syncing: false, retrying: false, errorMessage: null, serverClock: null }\n );\n }\n\n readonly jobs = {\n connect: async (docId: string, signal?: AbortSignal) => {\n const pushedSeqNum = await this.storage.loadDocSeqNumPushed(\n docId,\n signal\n );\n const seqNum = await this.storage.loadDocSeqNum(docId, signal);\n\n if (pushedSeqNum === null || pushedSeqNum !== seqNum) {\n await this.jobs.pullAndPush(docId, signal);\n } else {\n const pulled = await this.storage.loadDocServerClockPulled(docId);\n if (\n pulled === null ||\n pulled !== this.status.serverClocks.get(normalizeServerDocId(docId))\n ) {\n await this.jobs.pull(docId, signal);\n }\n }\n\n this.status.connectedDocs.add(docId);\n this.statusUpdatedSubject$.next(docId);\n },\n push: async (\n docId: string,\n jobs: (Job & { type: 'push' })[],\n signal?: AbortSignal\n ) => {\n if (this.status.connectedDocs.has(docId)) {\n const maxSeqNum = Math.max(...jobs.map(j => j.seqNum));\n const pushedSeqNum =\n (await this.storage.loadDocSeqNumPushed(docId, signal)) ?? 0;\n\n if (maxSeqNum - pushedSeqNum === jobs.length) {\n const merged = mergeUpdates(\n jobs.map(j => j.update).filter(update => !isEmptyUpdate(update))\n );\n if (!isEmptyUpdate(merged)) {\n const { serverClock } = await this.server.pushDoc(docId, merged);\n this.schedule({\n type: 'save',\n docId,\n serverClock,\n });\n }\n await this.storage.saveDocPushedSeqNum(\n docId,\n { add: jobs.length },\n signal\n );\n } else {\n // maybe other tab is modifying the doc, do full pull and push for safety\n await this.jobs.pullAndPush(docId, signal);\n }\n }\n },\n pullAndPush: async (docId: string, signal?: AbortSignal) => {\n const seqNum = await this.storage.loadDocSeqNum(docId, signal);\n const data = await this.storage.loadDocFromLocal(docId, signal);\n\n const stateVector =\n data && !isEmptyUpdate(data)\n ? encodeStateVectorFromUpdate(data)\n : new Uint8Array();\n const serverData = await this.server.pullDoc(docId, stateVector);\n\n if (serverData) {\n const {\n data: newData,\n stateVector: serverStateVector,\n serverClock,\n } = serverData;\n await this.storage.saveServerClock(\n new Map([[normalizeServerDocId(docId), serverClock]]),\n signal\n );\n this.actions.updateServerClock(\n normalizeServerDocId(docId),\n serverClock\n );\n await this.storage.commitDocAsServerUpdate(\n docId,\n newData,\n serverClock,\n signal\n );\n this.storage.eventBus.emit({\n type: 'ServerUpdateCommitted',\n docId,\n clientId: this.clientId,\n update: newData,\n });\n const diff =\n data && serverStateVector && serverStateVector.length > 0\n ? diffUpdate(data, serverStateVector)\n : data;\n if (diff && !isEmptyUpdate(diff)) {\n const { serverClock } = await this.server.pushDoc(docId, diff);\n this.schedule({\n type: 'save',\n docId,\n serverClock,\n });\n }\n await this.storage.saveDocPushedSeqNum(docId, seqNum, signal);\n } else {\n if (data && !isEmptyUpdate(data)) {\n const { serverClock } = await this.server.pushDoc(docId, data);\n await this.storage.saveDocServerClockPulled(\n docId,\n serverClock,\n signal\n );\n await this.storage.saveServerClock(\n new Map([[normalizeServerDocId(docId), serverClock]]),\n signal\n );\n this.actions.updateServerClock(\n normalizeServerDocId(docId),\n serverClock\n );\n }\n await this.storage.saveDocPushedSeqNum(docId, seqNum, signal);\n }\n },\n pull: async (docId: string, signal?: AbortSignal) => {\n const data = await this.storage.loadDocFromLocal(docId, signal);\n\n const stateVector =\n data && !isEmptyUpdate(data)\n ? encodeStateVectorFromUpdate(data)\n : new Uint8Array();\n const serverDoc = await this.server.pullDoc(docId, stateVector);\n if (!serverDoc) {\n return;\n }\n const { data: newData, serverClock } = serverDoc;\n await this.storage.commitDocAsServerUpdate(\n docId,\n newData,\n serverClock,\n signal\n );\n this.storage.eventBus.emit({\n type: 'ServerUpdateCommitted',\n docId,\n clientId: this.clientId,\n update: newData,\n });\n await this.storage.saveServerClock(\n new Map([[normalizeServerDocId(docId), serverClock]]),\n signal\n );\n this.actions.updateServerClock(normalizeServerDocId(docId), serverClock);\n },\n save: async (\n docId: string,\n jobs: (Job & { type: 'save' })[],\n signal?: AbortSignal\n ) => {\n const serverClock = jobs.reduce((a, b) => Math.max(a, b.serverClock), 0);\n await this.storage.saveServerClock(\n new Map([[normalizeServerDocId(docId), serverClock]]),\n signal\n );\n this.actions.updateServerClock(normalizeServerDocId(docId), serverClock);\n if (this.status.connectedDocs.has(docId)) {\n const data = jobs\n .map(j => j.update)\n .filter((update): update is Uint8Array =>\n update ? !isEmptyUpdate(update) : false\n );\n const update = data.length > 0 ? mergeUpdates(data) : new Uint8Array();\n await this.storage.commitDocAsServerUpdate(\n docId,\n update,\n serverClock,\n signal\n );\n this.storage.eventBus.emit({\n type: 'ServerUpdateCommitted',\n docId,\n clientId: this.clientId,\n update,\n });\n }\n },\n };\n\n readonly actions = {\n updateServerClock: (docId: string, serverClock: number) => {\n this.status.serverClocks.setIfBigger(docId, serverClock);\n this.statusUpdatedSubject$.next(docId);\n },\n addDoc: (docId: string) => {\n if (!this.status.docs.has(docId)) {\n this.status.docs.add(docId);\n this.statusUpdatedSubject$.next(docId);\n this.schedule({\n type: 'connect',\n docId,\n });\n }\n },\n };\n\n readonly events: {\n [key in DocEvent['type']]?: (event: DocEvent & { type: key }) => void;\n } = {\n ClientUpdateCommitted: ({ clientId, docId, seqNum, update }) => {\n if (clientId !== this.clientId) {\n return;\n }\n this.schedule({\n type: 'push',\n docId,\n update,\n seqNum,\n });\n },\n };\n\n async mainLoop(signal?: AbortSignal) {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n await this.retryLoop(signal);\n } catch (err) {\n if (signal?.aborted) {\n return;\n }\n logger.error('Remote sync error, retry in 5s', err);\n this.status.errorMessage =\n err instanceof Error ? err.message : `${err}`;\n this.statusUpdatedSubject$.next(true);\n } finally {\n this.status = {\n docs: this.status.docs,\n connectedDocs: new Set(),\n jobDocQueue: new AsyncPriorityQueue(),\n jobMap: new Map(),\n serverClocks: new ClockMap(new Map()),\n syncing: false,\n retrying: true,\n errorMessage: this.status.errorMessage,\n };\n this.statusUpdatedSubject$.next(true);\n }\n await Promise.race([\n new Promise(resolve => {\n setTimeout(resolve, 5 * 1000);\n }),\n new Promise((_, reject) => {\n // exit if manually stopped\n if (signal?.aborted) {\n reject(signal.reason);\n }\n signal?.addEventListener('abort', () => {\n reject(signal.reason);\n });\n }),\n ]);\n }\n }\n\n async retryLoop(signal?: AbortSignal) {\n throwIfAborted(signal);\n const abort = new AbortController();\n\n signal?.addEventListener('abort', reason => {\n abort.abort(reason);\n });\n\n signal = abort.signal;\n\n const disposes: (() => void)[] = [];\n\n try {\n disposes.push(\n this.storage.eventBus.on(event => {\n const handler = this.events[event.type];\n handler?.(event as any);\n })\n );\n throwIfAborted(signal);\n\n for (const doc of this.status.docs) {\n this.schedule({\n type: 'connect',\n docId: doc,\n });\n }\n\n logger.info('Remote sync started');\n this.status.syncing = true;\n this.statusUpdatedSubject$.next(true);\n\n this.server.onInterrupted(reason => {\n abort.abort(reason);\n });\n await Promise.race([\n this.server.waitForConnectingServer(signal),\n new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error('Connect to server timeout'));\n }, 1000 * 30);\n }),\n new Promise((_, reject) => {\n signal?.addEventListener('abort', reason => {\n reject(reason);\n });\n }),\n ]);\n\n // reset retrying flag after connected with server\n this.status.retrying = false;\n this.statusUpdatedSubject$.next(true);\n\n throwIfAborted(signal);\n disposes.push(\n await this.server.subscribeAllDocs(({ docId, data, serverClock }) => {\n this.schedule({\n type: 'save',\n docId: docId,\n serverClock,\n update: data,\n });\n })\n );\n const cachedClocks = await this.storage.loadServerClock(signal);\n for (const [id, v] of cachedClocks) {\n this.actions.updateServerClock(id, v);\n }\n const maxClockValue = this.status.serverClocks.max;\n const newClocks = await this.server.loadServerClock(maxClockValue);\n for (const [id, v] of newClocks) {\n this.actions.updateServerClock(id, v);\n }\n await this.storage.saveServerClock(newClocks, signal);\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n throwIfAborted(signal);\n\n const docId = await this.status.jobDocQueue.asyncPop(signal);\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const jobs = this.status.jobMap.get(docId);\n if (!jobs || jobs.length === 0) {\n this.status.jobMap.delete(docId);\n this.statusUpdatedSubject$.next(docId);\n break;\n }\n\n const connect = remove(jobs, j => j.type === 'connect');\n if (connect && connect.length > 0) {\n await this.jobs.connect(docId, signal);\n continue;\n }\n\n const pullAndPush = remove(jobs, j => j.type === 'pullAndPush');\n if (pullAndPush && pullAndPush.length > 0) {\n await this.jobs.pullAndPush(docId, signal);\n continue;\n }\n\n const pull = remove(jobs, j => j.type === 'pull');\n if (pull && pull.length > 0) {\n await this.jobs.pull(docId, signal);\n continue;\n }\n\n const push = remove(jobs, j => j.type === 'push');\n if (push && push.length > 0) {\n await this.jobs.push(\n docId,\n push as (Job & { type: 'push' })[],\n signal\n );\n continue;\n }\n\n const save = remove(jobs, j => j.type === 'save');\n if (save && save.length > 0) {\n await this.jobs.save(\n docId,\n save as (Job & { type: 'save' })[],\n signal\n );\n continue;\n }\n }\n }\n } finally {\n for (const dispose of disposes) {\n dispose();\n }\n try {\n this.server.disconnectServer();\n } catch (err) {\n logger.error('Error on disconnect server', err);\n }\n this.status.syncing = false;\n logger.info('Remote sync ended');\n }\n }\n\n schedule(job: Job) {\n const priority = this.prioritySettings.get(job.docId) ?? 0;\n this.status.jobDocQueue.push(job.docId, priority);\n\n const existingJobs = this.status.jobMap.get(job.docId) ?? [];\n existingJobs.push(job);\n this.status.jobMap.set(job.docId, existingJobs);\n this.statusUpdatedSubject$.next(job.docId);\n }\n\n setPriority(docId: string, priority: number) {\n this.prioritySettings.set(docId, priority);\n this.status.jobDocQueue.updatePriority(docId, priority);\n }\n}\n\n// use normalized id in server clock\nfunction normalizeServerDocId(raw: string) {\n enum DocVariant {\n Workspace = 'workspace',\n Page = 'page',\n Space = 'space',\n Settings = 'settings',\n Unknown = 'unknown',\n }\n\n try {\n if (!raw.length) {\n throw new Error('Invalid Empty Doc ID');\n }\n\n let parts = raw.split(':');\n\n if (parts.length > 3) {\n // special adapt case `wsId:space:page:pageId`\n if (parts[1] === DocVariant.Space && parts[2] === DocVariant.Page) {\n parts = [parts[0], DocVariant.Space, parts[3]];\n } else {\n throw new Error(`Invalid format of Doc ID: ${raw}`);\n }\n } else if (parts.length === 2) {\n // `${variant}:${guid}`\n throw new Error('not supported');\n } else if (parts.length === 1) {\n // ${ws} or ${pageId}\n parts = ['', DocVariant.Unknown, parts[0]];\n }\n\n const docId = parts.at(2);\n\n if (!docId) {\n throw new Error('ID is required');\n }\n\n return docId;\n } catch (err) {\n logger.error('Error on normalize docId ' + raw, err);\n return raw;\n }\n}\n","import { DebugLogger } from '@affine/debug';\nimport { nanoid } from 'nanoid';\nimport { map } from 'rxjs';\nimport type { Doc as YDoc } from 'yjs';\n\nimport { LiveData } from '../../livedata';\nimport { MANUALLY_STOP } from '../../utils';\nimport { DocEngineLocalPart } from './local';\nimport { DocEngineRemotePart } from './remote';\nimport type { DocServer } from './server';\nimport type { DocStorage } from './storage';\nimport { DocStorageInner } from './storage';\n\nconst logger = new DebugLogger('doc-engine');\n\nexport type { DocEvent, DocEventBus } from './event';\nexport { MemoryDocEventBus } from './event';\nexport type { DocServer } from './server';\nexport type { DocStorage } from './storage';\nexport {\n MemoryStorage as MemoryDocStorage,\n ReadonlyStorage as ReadonlyDocStorage,\n} from './storage';\n\nexport interface DocEngineDocState {\n /**\n * is syncing with the server\n */\n syncing: boolean;\n /**\n * is saving to local storage\n */\n saving: boolean;\n /**\n * is loading from local storage\n */\n loading: boolean;\n retrying: boolean;\n ready: boolean;\n errorMessage: string | null;\n serverClock: number | null;\n}\n\nexport class DocEngine {\n readonly clientId: string;\n localPart: DocEngineLocalPart;\n remotePart: DocEngineRemotePart | null;\n\n storage: DocStorageInner;\n\n engineState$ = LiveData.computed(get => {\n const localState = get(this.localPart.engineState$);\n if (this.remotePart) {\n const remoteState = get(this.remotePart?.engineState$);\n return {\n total: remoteState.total,\n syncing: remoteState.syncing,\n saving: localState.syncing,\n retrying: remoteState.retrying,\n errorMessage: remoteState.errorMessage,\n };\n }\n return {\n total: localState.total,\n syncing: localState.syncing,\n saving: localState.syncing,\n retrying: false,\n errorMessage: null,\n };\n });\n\n docState$(docId: string) {\n const localState$ = this.localPart.docState$(docId);\n const remoteState$ = this.remotePart?.docState$(docId);\n return LiveData.computed(get => {\n const localState = get(localState$);\n const remoteState = remoteState$ ? get(remoteState$) : null;\n if (remoteState) {\n return {\n syncing: remoteState.syncing,\n saving: localState.syncing,\n loading: localState.syncing,\n retrying: remoteState.retrying,\n ready: localState.ready,\n errorMessage: remoteState.errorMessage,\n serverClock: remoteState.serverClock,\n };\n }\n return {\n syncing: localState.syncing,\n saving: localState.syncing,\n loading: localState.syncing,\n ready: localState.ready,\n retrying: false,\n errorMessage: null,\n serverClock: null,\n };\n });\n }\n\n markAsReady(docId: string) {\n this.localPart.actions.markAsReady(docId);\n }\n\n constructor(\n storage: DocStorage,\n private readonly server?: DocServer | null\n ) {\n this.clientId = nanoid();\n this.storage = new DocStorageInner(storage);\n this.localPart = new DocEngineLocalPart(this.clientId, this.storage);\n this.remotePart = this.server\n ? new DocEngineRemotePart(this.clientId, this.storage, this.server)\n : null;\n }\n\n abort = new AbortController();\n\n start() {\n this.abort.abort(MANUALLY_STOP);\n this.abort = new AbortController();\n Promise.all([\n this.localPart.mainLoop(this.abort.signal),\n this.remotePart?.mainLoop(this.abort.signal),\n ]).catch(err => {\n if (err === MANUALLY_STOP) {\n return;\n }\n logger.error('Doc engine error', err);\n });\n return this;\n }\n\n stop() {\n this.abort.abort(MANUALLY_STOP);\n }\n\n async resetSyncStatus() {\n this.stop();\n await this.storage.clearSyncMetadata();\n await this.storage.clearServerClock();\n }\n\n addDoc(doc: YDoc, withSubDocs = true) {\n this.localPart.actions.addDoc(doc);\n this.remotePart?.actions.addDoc(doc.guid);\n\n if (withSubDocs) {\n const subdocs = doc.getSubdocs();\n for (const subdoc of subdocs) {\n this.addDoc(subdoc, false);\n }\n doc.on('subdocs', ({ added }: { added: Set }) => {\n for (const subdoc of added) {\n this.addDoc(subdoc, false);\n }\n });\n }\n }\n\n setPriority(docId: string, priority: number) {\n this.localPart.setPriority(docId, priority);\n this.remotePart?.setPriority(docId, priority);\n }\n\n /**\n * ## Saved:\n * YDoc changes have been saved to storage, and the browser can be safely closed without losing data.\n */\n waitForSaved() {\n return new Promise(resolve => {\n this.engineState$\n .pipe(map(state => state.saving === 0))\n .subscribe(saved => {\n if (saved) {\n resolve();\n }\n });\n });\n }\n\n /**\n * ## Synced:\n * is fully synchronized with the server\n */\n waitForSynced() {\n return new Promise(resolve => {\n this.engineState$\n .pipe(map(state => state.syncing === 0 && state.saving === 0))\n .subscribe(synced => {\n if (synced) {\n resolve();\n }\n });\n });\n }\n\n /**\n * ## Ready:\n *\n * means that the doc has been loaded and the data can be modified.\n * (is not force, you can still modify it if you know you are creating some new data)\n *\n * this is a temporary solution to deal with the yjs overwrite issue.\n *\n * if content is loaded from storage\n * or if content is pulled from the server, it will be true, otherwise be false.\n *\n * For example, when opening a doc that is not in storage, ready = false until the content is pulled from the server.\n */\n waitForReady(docId: string) {\n return new Promise(resolve => {\n this.docState$(docId)\n .pipe(map(state => state.ready))\n .subscribe(ready => {\n if (ready) {\n resolve();\n }\n });\n });\n }\n}\n","import type { Awareness } from 'y-protocols/awareness.js';\n\nexport interface AwarenessConnection {\n connect(awareness: Awareness): void;\n disconnect(): void;\n}\n\nexport class AwarenessEngine {\n constructor(public readonly connections: AwarenessConnection[]) {}\n\n connect(awareness: Awareness) {\n this.connections.forEach(connection => connection.connect(awareness));\n }\n\n disconnect() {\n this.connections.forEach(connection => connection.disconnect());\n }\n}\n","import type { Doc as YDoc } from 'yjs';\n\nimport { Entity } from '../../../framework';\nimport { AwarenessEngine, BlobEngine, DocEngine } from '../../../sync';\nimport { throwIfAborted } from '../../../utils';\nimport { WorkspaceEngineBeforeStart } from '../events';\nimport type { WorkspaceEngineProvider } from '../providers/flavour';\nimport type { WorkspaceService } from '../services/workspace';\n\nexport class WorkspaceEngine extends Entity<{\n engineProvider: WorkspaceEngineProvider;\n}> {\n doc = new DocEngine(\n this.props.engineProvider.getDocStorage(),\n this.props.engineProvider.getDocServer()\n );\n\n blob = new BlobEngine(\n this.props.engineProvider.getLocalBlobStorage(),\n this.props.engineProvider.getRemoteBlobStorages()\n );\n\n awareness = new AwarenessEngine(\n this.props.engineProvider.getAwarenessConnections()\n );\n\n constructor(private readonly workspaceService: WorkspaceService) {\n super();\n }\n\n setRootDoc(yDoc: YDoc) {\n this.doc.setPriority(yDoc.guid, 100);\n this.doc.addDoc(yDoc);\n }\n\n start() {\n this.eventBus.emit(WorkspaceEngineBeforeStart, this);\n this.doc.start();\n this.awareness.connect(this.workspaceService.workspace.awareness);\n this.blob.start();\n }\n\n canGracefulStop() {\n return this.doc.engineState$.value.saving === 0;\n }\n\n async waitForGracefulStop(abort?: AbortSignal) {\n await this.doc.waitForSaved();\n throwIfAborted(abort);\n this.forceStop();\n }\n\n forceStop() {\n this.doc.stop();\n this.awareness.disconnect();\n this.blob.stop();\n }\n\n docEngineState$ = this.doc.engineState$;\n\n rootDocState$ = this.doc.docState$(this.workspaceService.workspace.id);\n\n waitForDocSynced() {\n return this.doc.waitForSynced();\n }\n\n waitForRootDocReady() {\n return this.doc.waitForReady(this.workspaceService.workspace.id);\n }\n\n override dispose(): void {\n this.forceStop();\n }\n}\n","import type { DocCollection } from '@blocksuite/store';\nimport type { Array as YArray, Doc as YDoc, Map as YMap } from 'yjs';\n\n/**\n * For split migrate function from MigrationQueue.\n */\nexport enum MigrationPoint {\n SubDoc = 1,\n GuidFix = 2,\n BlockVersion = 3,\n}\n\nexport function checkWorkspaceCompatibility(\n docCollection: DocCollection,\n isCloud: boolean\n): MigrationPoint | null {\n // check if there is any key starts with 'space:' on root doc\n const spaceMetaObj = docCollection.doc.share.get('space:meta') as\n | YMap\n | undefined;\n const docKeys = Array.from(docCollection.doc.share.keys());\n const haveSpaceMeta = !!spaceMetaObj && spaceMetaObj.size > 0;\n const haveLegacySpace = docKeys.some(key => key.startsWith('space:'));\n\n // DON'T UPGRADE SUBDOC ON CLOUD\n if (!isCloud && (haveSpaceMeta || haveLegacySpace)) {\n return MigrationPoint.SubDoc;\n }\n\n // exit if no pages\n if (!docCollection.meta.docs?.length) {\n return null;\n }\n\n // check guid compatibility\n const meta = docCollection.doc.getMap('meta') as YMap;\n const pages = meta.get('pages') as YArray>;\n for (const page of pages) {\n const pageId = page.get('id') as string | undefined;\n if (pageId?.includes(':')) {\n return MigrationPoint.GuidFix;\n }\n }\n const spaces = docCollection.doc.getMap('spaces') as YMap;\n for (const [pageId, _] of spaces) {\n if (pageId.includes(':')) {\n return MigrationPoint.GuidFix;\n }\n }\n\n const hasVersion = docCollection.meta.hasVersion;\n if (!hasVersion) {\n return MigrationPoint.BlockVersion;\n }\n\n // Temporarily follow the check logic of blocksuite.\n if ((docCollection.meta.docs?.length ?? 0) <= 1) {\n try {\n docCollection.meta.validateVersion(docCollection);\n } catch (e) {\n console.info('validateVersion error', e);\n return MigrationPoint.BlockVersion;\n }\n }\n\n // From v2, we depend on blocksuite to check and migrate data.\n const blockVersions = docCollection.meta.blockVersions;\n for (const [flavour, version] of Object.entries(blockVersions ?? {})) {\n const schema = docCollection.schema.flavourSchemaMap.get(flavour);\n if (schema?.version !== version) {\n return MigrationPoint.BlockVersion;\n }\n }\n\n return null;\n}\n","import { nanoid } from 'nanoid';\nimport {\n applyUpdate,\n Array as YArray,\n Doc as YDoc,\n encodeStateAsUpdate,\n Map as YMap,\n} from 'yjs';\n\nconst migrationOrigin = 'affine-migration';\n\ntype XYWH = [number, number, number, number];\n\nfunction deserializeXYWH(xywh: string): XYWH {\n return JSON.parse(xywh) as XYWH;\n}\n\nfunction migrateDatabase(data: YMap) {\n data.delete('prop:mode');\n data.set('prop:views', new YArray());\n const columns = (data.get('prop:columns') as YArray).toJSON() as {\n id: string;\n name: string;\n hide: boolean;\n type: string;\n width: number;\n selection?: unknown[];\n }[];\n const views = [\n {\n id: 'default',\n name: 'Table',\n columns: columns.map(col => ({\n id: col.id,\n width: col.width,\n hide: col.hide,\n })),\n filter: { type: 'group', op: 'and', conditions: [] },\n mode: 'table',\n },\n ];\n const cells = (data.get('prop:cells') as YMap).toJSON() as Record<\n string,\n Record<\n string,\n {\n id: string;\n value: unknown;\n }\n >\n >;\n const convertColumn = (\n id: string,\n update: (cell: { id: string; value: unknown }) => void\n ) => {\n Object.values(cells).forEach(row => {\n if (row[id] !== null && row[id] !== undefined) {\n update(row[id]);\n }\n });\n };\n const newColumns = columns.map(v => {\n let data: Record = {};\n if (v.type === 'select' || v.type === 'multi-select') {\n data = { options: v.selection };\n if (v.type === 'select') {\n convertColumn(v.id, cell => {\n if (Array.isArray(cell.value)) {\n cell.value = cell.value[0]?.id;\n }\n });\n } else {\n convertColumn(v.id, cell => {\n if (Array.isArray(cell.value)) {\n cell.value = cell.value.map(v => v.id);\n }\n });\n }\n }\n if (v.type === 'number') {\n convertColumn(v.id, cell => {\n if (typeof cell.value === 'string') {\n cell.value = Number.parseFloat(cell.value.toString());\n }\n });\n }\n return {\n id: v.id,\n type: v.type,\n name: v.name,\n data,\n };\n });\n data.set('prop:columns', newColumns);\n data.set('prop:views', views);\n data.set('prop:cells', cells);\n}\n\nfunction runBlockMigration(\n flavour: string,\n data: YMap,\n version: number\n) {\n if (flavour === 'affine:frame') {\n data.set('sys:flavour', 'affine:note');\n return;\n }\n if (flavour === 'affine:surface' && version <= 3) {\n if (data.has('elements')) {\n const elements = data.get('elements') as YMap;\n migrateSurface(elements);\n data.set('prop:elements', elements.clone());\n data.delete('elements');\n } else {\n data.set('prop:elements', new YMap());\n }\n }\n if (flavour === 'affine:embed') {\n data.set('sys:flavour', 'affine:image');\n data.delete('prop:type');\n }\n if (flavour === 'affine:database' && version < 2) {\n migrateDatabase(data);\n }\n}\n\nfunction migrateSurface(data: YMap) {\n for (const [, value] of ]>>(\n data.entries()\n )) {\n if (value.get('type') === 'connector') {\n migrateSurfaceConnector(value);\n }\n }\n}\n\nfunction migrateSurfaceConnector(data: YMap) {\n let id = data.get('startElement')?.id;\n const controllers = data.get('controllers');\n const length = controllers.length;\n const xywh = deserializeXYWH(data.get('xywh'));\n if (id) {\n data.set('source', { id });\n } else {\n data.set('source', {\n position: [controllers[0].x + xywh[0], controllers[0].y + xywh[1]],\n });\n }\n\n id = data.get('endElement')?.id;\n if (id) {\n data.set('target', { id });\n } else {\n data.set('target', {\n position: [\n controllers[length - 1].x + xywh[0],\n controllers[length - 1].y + xywh[1],\n ],\n });\n }\n\n const width = data.get('lineWidth') ?? 4;\n data.set('strokeWidth', width);\n const color = data.get('color');\n data.set('stroke', color);\n\n data.delete('startElement');\n data.delete('endElement');\n data.delete('controllers');\n data.delete('lineWidth');\n data.delete('color');\n data.delete('xywh');\n}\n\nfunction updateBlockVersions(versions: YMap) {\n const frameVersion = versions.get('affine:frame');\n if (frameVersion !== undefined) {\n versions.set('affine:note', frameVersion);\n versions.delete('affine:frame');\n }\n const embedVersion = versions.get('affine:embed');\n if (embedVersion !== undefined) {\n versions.set('affine:image', embedVersion);\n versions.delete('affine:embed');\n }\n const databaseVersion = versions.get('affine:database');\n if (databaseVersion !== undefined && databaseVersion < 2) {\n versions.set('affine:database', 2);\n }\n}\n\nfunction migrateMeta(\n oldDoc: YDoc,\n newDoc: YDoc,\n idMap: Record\n) {\n const originalMeta = oldDoc.getMap('space:meta');\n const originalVersions = originalMeta.get('versions') as YMap;\n const originalPages = originalMeta.get('pages') as YArray>;\n const meta = newDoc.getMap('meta');\n const pages = new YArray();\n const blockVersions = originalVersions.clone();\n\n meta.set('workspaceVersion', 1);\n meta.set('blockVersions', blockVersions);\n meta.set('pages', pages);\n meta.set('name', originalMeta.get('name') as string);\n\n updateBlockVersions(blockVersions);\n const mapList = originalPages.map(page => {\n const map = new YMap();\n Array.from(page.entries())\n .filter(([key]) => key !== 'subpageIds')\n .forEach(([key, value]) => {\n if (key === 'id') {\n idMap[value] = nanoid();\n map.set(key, idMap[value]);\n } else {\n map.set(key, value);\n }\n });\n return map;\n });\n pages.push(mapList);\n}\n\nfunction migrateBlocks(\n oldDoc: YDoc,\n newDoc: YDoc,\n idMap: Record\n) {\n const spaces = newDoc.getMap('spaces');\n const originalMeta = oldDoc.getMap('space:meta');\n const originalVersions = originalMeta.get('versions') as YMap;\n const originalPages = originalMeta.get('pages') as YArray>;\n originalPages.forEach(page => {\n const id = page.get('id') as string;\n const newId = idMap[id];\n const spaceId = id.startsWith('space:') ? id : `space:${id}`;\n const originalBlocks = oldDoc.getMap(spaceId) as YMap;\n const subdoc = new YDoc();\n spaces.set(newId, subdoc);\n subdoc.guid = id;\n const blocks = subdoc.getMap('blocks');\n Array.from(originalBlocks.entries()).forEach(([key, value]) => {\n // @ts-expect-error clone method exists\n const blockData = value.clone();\n blocks.set(key, blockData);\n const flavour = blockData.get('sys:flavour') as string;\n const version = originalVersions.get(flavour);\n if (version !== undefined) {\n runBlockMigration(flavour, blockData, version);\n }\n });\n });\n}\n\nexport function migrateToSubdoc(oldDoc: YDoc): YDoc {\n const needMigration =\n Array.from(oldDoc.getMap('space:meta').keys()).length > 0;\n if (!needMigration) {\n return oldDoc;\n }\n const newDoc = new YDoc();\n const idMap = {} as Record;\n migrateMeta(oldDoc, newDoc, idMap);\n migrateBlocks(oldDoc, newDoc, idMap);\n return newDoc;\n}\n\n/**\n * upgrade oldDoc to v2, write to targetDoc\n */\nexport const upgradeV1ToV2 = async (oldDoc: YDoc, targetDoc: YDoc) => {\n const newDoc = migrateToSubdoc(oldDoc);\n applyUpdate(targetDoc, encodeStateAsUpdate(newDoc), migrationOrigin);\n newDoc.getSubdocs().forEach(subdoc => {\n targetDoc.getSubdocs().forEach(newDoc => {\n if (subdoc.guid === newDoc.guid) {\n applyUpdate(newDoc, encodeStateAsUpdate(subdoc), migrationOrigin);\n }\n });\n });\n};\n","import type { Schema } from '@blocksuite/store';\nimport type { Array as YArray } from 'yjs';\nimport {\n applyUpdate,\n Doc as YDoc,\n encodeStateAsUpdate,\n Map as YMap,\n transact,\n} from 'yjs';\n\nexport const getLatestVersions = (schema: Schema): Record => {\n return [...schema.flavourSchemaMap.entries()].reduce(\n (record, [flavour, schema]) => {\n record[flavour] = schema.version;\n return record;\n },\n {} as Record\n );\n};\n\nexport async function migratePages(\n rootDoc: YDoc,\n schema: Schema\n): Promise {\n const spaces = rootDoc.getMap('spaces') as YMap;\n const meta = rootDoc.getMap('meta') as YMap;\n const versions = meta.get('blockVersions') as YMap;\n const oldVersions = versions?.toJSON() ?? {};\n\n spaces.forEach((space: YDoc) => {\n try {\n // Catch page upgrade error to avoid blocking the whole workspace migration.\n schema.upgradeDoc(0, oldVersions, space);\n } catch (e) {\n console.error(e);\n }\n });\n schema.upgradeCollection(rootDoc);\n\n // Hard code to upgrade page version to 2.\n // Let e2e to ensure the data version is correct.\n return transact(\n rootDoc,\n () => {\n const pageVersion = meta.get('pageVersion');\n if (typeof pageVersion !== 'number' || pageVersion < 2) {\n meta.set('pageVersion', 2);\n }\n\n const newVersions = getLatestVersions(schema);\n meta.set('blockVersions', new YMap(Object.entries(newVersions)));\n return Object.entries(oldVersions).some(\n ([flavour, version]) => newVersions[flavour] !== version\n );\n },\n 'migratePages',\n /**\n * transact as remote update, because blocksuite will skip local changes.\n * https://github.com/toeverything/blocksuite/blob/9c2df3f7aa5617c050e0dccdd73e99bb67e0c0f7/packages/store/src/reactive/utils.ts#L143\n */\n false\n );\n}\n\n// patch root doc's space guid compatibility issue\n//\n// in version 0.10, page id in spaces no longer has prefix \"space:\"\n// The data flow for fetching a doc's updates is:\n// - page id in `meta.pages` -> find `${page-id}` in `doc.spaces` -> `doc` -> `doc.guid`\n// if `doc` is not found in `doc.spaces`, a new doc will be created and its `doc.guid` is the same with its pageId\n// - because of guid logic change, the doc that previously prefixed with \"space:\" will not be found in `doc.spaces`\n// - when fetching the rows of this doc using the doc id === page id,\n// it will return empty since there is no updates associated with the page id\nexport function migrateGuidCompatibility(rootDoc: YDoc) {\n const meta = rootDoc.getMap('meta') as YMap;\n const pages = meta.get('pages') as YArray>;\n pages?.forEach(page => {\n const pageId = page.get('id') as string | undefined;\n if (pageId?.includes(':')) {\n // remove the prefix \"space:\" from page id\n page.set('id', pageId.split(':').at(-1));\n }\n });\n const spaces = rootDoc.getMap('spaces') as YMap;\n spaces?.forEach((doc: YDoc, pageId: string) => {\n if (pageId.includes(':')) {\n const newPageId = pageId.split(':').at(-1) ?? pageId;\n const newDoc = new YDoc();\n // clone the original doc. yjs is not happy to use the same doc instance\n applyUpdate(newDoc, encodeStateAsUpdate(doc));\n newDoc.guid = doc.guid;\n spaces.set(newPageId, newDoc);\n // should remove the old doc, otherwise we will do it again in the next run\n spaces.delete(pageId);\n console.debug(\n `fixed space id ${pageId} -> ${newPageId}, doc id: ${doc.guid}`\n );\n }\n });\n}\n","import { Unreachable } from '@affine/env/constant';\nimport { WorkspaceFlavour } from '@affine/env/workspace';\nimport { applyUpdate, Doc as YDoc, encodeStateAsUpdate } from 'yjs';\n\nimport {\n checkWorkspaceCompatibility,\n forceUpgradePages,\n migrateGuidCompatibility,\n MigrationPoint,\n upgradeV1ToV2,\n} from '../../../blocksuite';\nimport { Entity } from '../../../framework';\nimport { LiveData } from '../../../livedata';\nimport type { WorkspaceMetadata } from '../metadata';\nimport type { WorkspaceDestroyService } from '../services/destroy';\nimport type { WorkspaceFactoryService } from '../services/factory';\nimport type { WorkspaceService } from '../services/workspace';\n\nexport class WorkspaceUpgrade extends Entity {\n needUpgrade$ = new LiveData(false);\n upgrading$ = new LiveData(false);\n\n constructor(\n private readonly workspaceService: WorkspaceService,\n private readonly workspaceFactory: WorkspaceFactoryService,\n private readonly workspaceDestroy: WorkspaceDestroyService\n ) {\n super();\n this.checkIfNeedUpgrade();\n workspaceService.workspace.docCollection.doc.on('update', () => {\n this.checkIfNeedUpgrade();\n });\n }\n\n checkIfNeedUpgrade() {\n const needUpgrade = !!checkWorkspaceCompatibility(\n this.workspaceService.workspace.docCollection,\n this.workspaceService.workspace.flavour === WorkspaceFlavour.AFFINE_CLOUD\n );\n this.needUpgrade$.next(needUpgrade);\n return needUpgrade;\n }\n\n async upgrade(): Promise {\n if (this.upgrading$.value) {\n return null;\n }\n\n this.upgrading$.next(true);\n\n try {\n await this.workspaceService.workspace.engine.waitForDocSynced();\n\n const step = checkWorkspaceCompatibility(\n this.workspaceService.workspace.docCollection,\n this.workspaceService.workspace.flavour ===\n WorkspaceFlavour.AFFINE_CLOUD\n );\n\n if (!step) {\n return null;\n }\n\n // Clone a new doc to prevent change events.\n const clonedDoc = new YDoc({\n guid: this.workspaceService.workspace.docCollection.doc.guid,\n });\n applyDoc(clonedDoc, this.workspaceService.workspace.docCollection.doc);\n\n if (step === MigrationPoint.SubDoc) {\n const newWorkspace = await this.workspaceFactory.create(\n WorkspaceFlavour.LOCAL,\n async (workspace, blobStorage) => {\n await upgradeV1ToV2(clonedDoc, workspace.doc);\n migrateGuidCompatibility(clonedDoc);\n await forceUpgradePages(\n workspace.doc,\n this.workspaceService.workspace.docCollection.schema\n );\n const blobList =\n await this.workspaceService.workspace.docCollection.blobSync.list();\n\n for (const blobKey of blobList) {\n const blob =\n await this.workspaceService.workspace.docCollection.blobSync.get(\n blobKey\n );\n if (blob) {\n await blobStorage.set(blobKey, blob);\n }\n }\n }\n );\n await this.workspaceDestroy.deleteWorkspace(\n this.workspaceService.workspace.meta\n );\n return newWorkspace;\n } else if (step === MigrationPoint.GuidFix) {\n migrateGuidCompatibility(clonedDoc);\n await forceUpgradePages(\n clonedDoc,\n this.workspaceService.workspace.docCollection.schema\n );\n applyDoc(this.workspaceService.workspace.docCollection.doc, clonedDoc);\n await this.workspaceService.workspace.engine.waitForDocSynced();\n return null;\n } else if (step === MigrationPoint.BlockVersion) {\n await forceUpgradePages(\n clonedDoc,\n this.workspaceService.workspace.docCollection.schema\n );\n applyDoc(this.workspaceService.workspace.docCollection.doc, clonedDoc);\n await this.workspaceService.workspace.engine.waitForDocSynced();\n return null;\n } else {\n throw new Unreachable();\n }\n } finally {\n this.upgrading$.next(false);\n }\n }\n}\n\nfunction applyDoc(target: YDoc, result: YDoc) {\n applyUpdate(target, encodeStateAsUpdate(result));\n for (const targetSubDoc of target.subdocs.values()) {\n const resultSubDocs = Array.from(result.subdocs.values());\n const resultSubDoc = resultSubDocs.find(\n item => item.guid === targetSubDoc.guid\n );\n if (resultSubDoc) {\n applyDoc(targetSubDoc, resultSubDoc);\n }\n }\n}\n","import { DocCollection } from '@blocksuite/store';\nimport { nanoid } from 'nanoid';\nimport { Observable } from 'rxjs';\nimport type { Awareness } from 'y-protocols/awareness.js';\n\nimport { Entity } from '../../../framework';\nimport { LiveData } from '../../../livedata';\nimport { globalBlockSuiteSchema } from '../global-schema';\nimport type { WorkspaceScope } from '../scopes/workspace';\nimport { WorkspaceEngineService } from '../services/engine';\nimport { WorkspaceUpgradeService } from '../services/upgrade';\n\nexport class Workspace extends Entity {\n constructor(public readonly scope: WorkspaceScope) {\n super();\n }\n\n readonly id = this.scope.props.openOptions.metadata.id;\n\n readonly openOptions = this.scope.props.openOptions;\n\n readonly meta = this.scope.props.openOptions.metadata;\n\n readonly flavour = this.meta.flavour;\n\n _docCollection: DocCollection | null = null;\n\n get docCollection() {\n if (!this._docCollection) {\n this._docCollection = new DocCollection({\n id: this.openOptions.metadata.id,\n blobSources: {\n main: this.engine.blob,\n },\n idGenerator: () => nanoid(),\n schema: globalBlockSuiteSchema,\n disableBacklinkIndex: true,\n disableSearchIndex: true,\n });\n }\n return this._docCollection;\n }\n\n get awareness() {\n return this.docCollection.awarenessStore.awareness as Awareness;\n }\n\n get rootYDoc() {\n return this.docCollection.doc;\n }\n\n get canGracefulStop() {\n // TODO\n return true;\n }\n\n get engine() {\n return this.framework.get(WorkspaceEngineService).engine;\n }\n\n get upgrade() {\n return this.framework.get(WorkspaceUpgradeService).upgrade;\n }\n\n get flavourProvider() {\n return this.scope.props.flavourProvider;\n }\n\n name$ = LiveData.from(\n new Observable(subscriber => {\n subscriber.next(this.docCollection.meta.name);\n return this.docCollection.meta.commonFieldsUpdated.on(() => {\n subscriber.next(this.docCollection.meta.name);\n }).dispose;\n }),\n undefined\n );\n\n avatar$ = LiveData.from(\n new Observable(subscriber => {\n subscriber.next(this.docCollection.meta.avatar);\n return this.docCollection.meta.commonFieldsUpdated.on(() => {\n subscriber.next(this.docCollection.meta.avatar);\n }).dispose;\n }),\n undefined\n );\n}\n","import { createEvent } from '../../../framework';\nimport type { WorkspaceEngine } from '../entities/engine';\n\nexport const WorkspaceEngineBeforeStart = createEvent(\n 'WorkspaceEngineBeforeStart'\n);\n","import { AffineSchemas } from '@blocksuite/blocks/schemas';\nimport { AIChatBlockSchema } from '@blocksuite/presets';\nimport { Schema } from '@blocksuite/store';\n\nexport const globalBlockSuiteSchema = new Schema();\n\nconst schemas = [...AffineSchemas, AIChatBlockSchema];\nglobalBlockSuiteSchema.register(schemas);\n","import type { WorkspaceFlavour } from '@affine/env/workspace';\nimport type { DocCollection } from '@blocksuite/store';\n\nimport { createIdentifier } from '../../../framework';\nimport type { LiveData } from '../../../livedata';\nimport type {\n AwarenessConnection,\n BlobStorage,\n DocServer,\n DocStorage,\n} from '../../../sync';\nimport type { WorkspaceProfileInfo } from '../entities/profile';\nimport type { WorkspaceMetadata } from '../metadata';\n\nexport interface WorkspaceEngineProvider {\n getDocServer(): DocServer | null;\n getDocStorage(): DocStorage;\n getLocalBlobStorage(): BlobStorage;\n getRemoteBlobStorages(): BlobStorage[];\n getAwarenessConnections(): AwarenessConnection[];\n}\n\nexport interface WorkspaceFlavourProvider {\n flavour: WorkspaceFlavour;\n\n deleteWorkspace(id: string): Promise;\n\n createWorkspace(\n initial: (\n docCollection: DocCollection,\n blobStorage: BlobStorage,\n docStorage: DocStorage\n ) => Promise\n ): Promise;\n\n workspaces$: LiveData;\n\n /**\n * means the workspace list is loading. if it's true, the workspace page will show loading spinner.\n */\n isLoading$?: LiveData;\n\n /**\n * revalidate the workspace list.\n *\n * will be called when user open workspace list, or workspace not found.\n */\n revalidate?: () => void;\n\n getWorkspaceProfile(\n id: string,\n signal?: AbortSignal\n ): Promise;\n\n getWorkspaceBlob(id: string, blob: string): Promise;\n\n getEngineProvider(workspaceId: string): WorkspaceEngineProvider;\n}\n\nexport const WorkspaceFlavourProvider =\n createIdentifier('WorkspaceFlavourProvider');\n","import { createIdentifier } from '../../../framework';\nimport type { Memento } from '../../../storage';\n\nexport interface WorkspaceLocalState extends Memento {}\nexport interface WorkspaceLocalCache extends Memento {}\n\nexport const WorkspaceLocalState = createIdentifier(\n 'WorkspaceLocalState'\n);\n\nexport const WorkspaceLocalCache = createIdentifier(\n 'WorkspaceLocalCache'\n);\n","import { Scope } from '../../../framework';\nimport type { WorkspaceOpenOptions } from '../open-options';\nimport type { WorkspaceFlavourProvider } from '../providers/flavour';\n\nexport type { DocCollection } from '@blocksuite/store';\n\nexport class WorkspaceScope extends Scope<{\n openOptions: WorkspaceOpenOptions;\n flavourProvider: WorkspaceFlavourProvider;\n}> {}\n","import { Service } from '../../../framework';\nimport { WorkspaceEngine } from '../entities/engine';\nimport type { WorkspaceScope } from '../scopes/workspace';\n\nexport class WorkspaceEngineService extends Service {\n private _engine: WorkspaceEngine | null = null;\n get engine() {\n if (!this._engine) {\n this._engine = this.framework.createEntity(WorkspaceEngine, {\n engineProvider:\n this.workspaceScope.props.flavourProvider.getEngineProvider(\n this.workspaceScope.props.openOptions.metadata.id\n ),\n });\n }\n return this._engine;\n }\n\n constructor(private readonly workspaceScope: WorkspaceScope) {\n super();\n }\n}\n","import { Service } from '../../../framework';\nimport { WorkspaceUpgrade } from '../entities/upgrade';\n\nexport class WorkspaceUpgradeService extends Service {\n upgrade = this.framework.createEntity(WorkspaceUpgrade);\n}\n","import { Service } from '../../../framework';\nimport { Workspace } from '../entities/workspace';\n\nexport class WorkspaceService extends Service {\n _workspace: Workspace | null = null;\n\n get workspace() {\n if (!this._workspace) {\n this._workspace = this.framework.createEntity(Workspace);\n }\n return this._workspace;\n }\n}\n","import { Service } from '../../../framework';\nimport type { WorkspaceMetadata } from '..';\nimport type { WorkspaceFlavourProvider } from '../providers/flavour';\nimport type { WorkspaceDestroyService } from './destroy';\nimport type { WorkspaceFactoryService } from './factory';\nimport type { WorkspaceListService } from './list';\nimport type { WorkspaceProfileService } from './profile';\nimport type { WorkspaceRepositoryService } from './repo';\nimport type { WorkspaceTransformService } from './transform';\n\nexport class WorkspacesService extends Service {\n get list() {\n return this.listService.list;\n }\n\n constructor(\n private readonly providers: WorkspaceFlavourProvider[],\n private readonly listService: WorkspaceListService,\n private readonly profileRepo: WorkspaceProfileService,\n private readonly transform: WorkspaceTransformService,\n private readonly workspaceRepo: WorkspaceRepositoryService,\n private readonly workspaceFactory: WorkspaceFactoryService,\n private readonly destroy: WorkspaceDestroyService\n ) {\n super();\n }\n\n get deleteWorkspace() {\n return this.destroy.deleteWorkspace;\n }\n\n get getProfile() {\n return this.profileRepo.getProfile;\n }\n\n get transformLocalToCloud() {\n return this.transform.transformLocalToCloud;\n }\n\n get open() {\n return this.workspaceRepo.open;\n }\n\n get create() {\n return this.workspaceFactory.create;\n }\n\n async getWorkspaceBlob(meta: WorkspaceMetadata, blob: string) {\n return await this.providers\n .find(x => x.flavour === meta.flavour)\n ?.getWorkspaceBlob(meta.id, blob);\n }\n}\n","import type { Observable } from 'rxjs';\n\nimport { LiveData } from '../livedata';\n\n/**\n * A memento represents a storage utility. It can store and retrieve values, and observe changes.\n */\nexport interface Memento {\n get(key: string): T | undefined;\n watch(key: string): Observable;\n set(key: string, value: T | undefined): void;\n del(key: string): void;\n clear(): void;\n keys(): string[];\n}\n\n/**\n * A simple implementation of Memento. Used for testing.\n */\nexport class MemoryMemento implements Memento {\n private readonly data = new Map>();\n\n setAll(init: Record) {\n for (const [key, value] of Object.entries(init)) {\n this.set(key, value);\n }\n }\n\n private getLiveData(key: string): LiveData {\n let data$ = this.data.get(key);\n if (!data$) {\n data$ = new LiveData(undefined);\n this.data.set(key, data$);\n }\n return data$;\n }\n\n get(key: string): T | undefined {\n return this.getLiveData(key).value;\n }\n watch(key: string): Observable {\n return this.getLiveData(key).asObservable();\n }\n set(key: string, value: T): void {\n this.getLiveData(key).next(value);\n }\n keys(): string[] {\n return Array.from(this.data)\n .filter(([_, v$]) => v$.value !== undefined)\n .map(([k]) => k);\n }\n clear(): void {\n this.data.clear();\n }\n del(key: string): void {\n this.data.delete(key);\n }\n}\n\nexport function wrapMemento(memento: Memento, prefix: string): Memento {\n return {\n get(key: string): T | undefined {\n return memento.get(prefix + key);\n },\n watch(key: string) {\n return memento.watch(prefix + key);\n },\n set(key: string, value: T): void {\n memento.set(prefix + key, value);\n },\n keys(): string[] {\n return memento\n .keys()\n .filter(k => k.startsWith(prefix))\n .map(k => k.slice(prefix.length));\n },\n clear() {\n memento.keys().forEach(k => {\n if (k.startsWith(prefix)) {\n memento.del(k);\n }\n });\n },\n del(key: string): void {\n memento.del(prefix + key);\n },\n };\n}\n","import { DebugLogger } from '@affine/debug';\nimport { Slot } from '@blocksuite/global/utils';\nimport { difference } from 'lodash-es';\n\nimport { LiveData } from '../../livedata';\nimport type { Memento } from '../../storage';\nimport { MANUALLY_STOP } from '../../utils';\nimport { BlobStorageOverCapacity } from './error';\n\nconst logger = new DebugLogger('affine:blob-engine');\n\nexport interface BlobStorage {\n name: string;\n readonly: boolean;\n get: (key: string) => Promise;\n set: (key: string, value: Blob) => Promise;\n delete: (key: string) => Promise;\n list: () => Promise;\n}\n\nexport interface BlobStatus {\n isStorageOverCapacity: boolean;\n}\n\n/**\n * # BlobEngine\n *\n * sync blobs between storages in background.\n *\n * all operations priority use local, then use remote.\n */\nexport class BlobEngine {\n readonly name = 'blob-engine';\n readonly readonly = this.local.readonly;\n\n private abort: AbortController | null = null;\n\n readonly isStorageOverCapacity$ = new LiveData(false);\n\n singleBlobSizeLimit: number = 100 * 1024 * 1024;\n onAbortLargeBlob = new Slot();\n\n constructor(\n private readonly local: BlobStorage,\n private readonly remotes: BlobStorage[]\n ) {}\n\n start() {\n if (this.abort || this.isStorageOverCapacity$.value) {\n return;\n }\n this.abort = new AbortController();\n const abortSignal = this.abort.signal;\n\n const sync = () => {\n if (abortSignal.aborted) {\n return;\n }\n\n this.sync()\n .catch(error => {\n logger.error('sync blob error', error);\n })\n .finally(() => {\n // sync every 1 minute\n setTimeout(sync, 60000);\n });\n };\n\n sync();\n }\n\n stop() {\n this.abort?.abort(MANUALLY_STOP);\n this.abort = null;\n }\n\n get storages() {\n return [this.local, ...this.remotes];\n }\n\n async sync() {\n if (this.local.readonly) {\n return;\n }\n logger.debug('start syncing blob...');\n for (const remote of this.remotes) {\n let localList: string[] = [];\n let remoteList: string[] = [];\n\n if (!remote.readonly) {\n try {\n localList = await this.local.list();\n remoteList = await remote.list();\n } catch (err) {\n logger.error(`error when sync`, err);\n continue;\n }\n\n const needUpload = difference(localList, remoteList);\n for (const key of needUpload) {\n try {\n const data = await this.local.get(key);\n if (data) {\n await remote.set(key, data);\n }\n } catch (err) {\n logger.error(\n `error when sync ${key} from [${this.local.name}] to [${remote.name}]`,\n err\n );\n }\n }\n }\n\n const needDownload = difference(remoteList, localList);\n\n for (const key of needDownload) {\n try {\n const data = await remote.get(key);\n if (data) {\n await this.local.set(key, data);\n }\n } catch (err) {\n if (err instanceof BlobStorageOverCapacity) {\n this.isStorageOverCapacity$.value = true;\n }\n logger.error(\n `error when sync ${key} from [${remote.name}] to [${this.local.name}]`,\n err\n );\n }\n }\n }\n\n logger.debug('finish syncing blob');\n }\n\n async get(key: string) {\n logger.debug('get blob', key);\n for (const storage of this.storages) {\n const data = await storage.get(key);\n if (data) {\n return data;\n }\n }\n return null;\n }\n\n async set(key: string, value: Blob) {\n if (this.local.readonly) {\n throw new Error('local peer is readonly');\n }\n\n if (value.size > this.singleBlobSizeLimit) {\n this.onAbortLargeBlob.emit(value);\n logger.error('blob over limit, abort set');\n return key;\n }\n\n // await upload to the local peer\n await this.local.set(key, value);\n\n // uploads to other peers in the background\n Promise.allSettled(\n this.remotes\n .filter(r => !r.readonly)\n .map(peer =>\n peer.set(key, value).catch(err => {\n logger.error('Error when uploading to peer', err);\n })\n )\n )\n .then(result => {\n if (result.some(({ status }) => status === 'rejected')) {\n logger.error(\n `blob ${key} update finish, but some peers failed to update`\n );\n } else {\n logger.debug(`blob ${key} update finish`);\n }\n })\n .catch(() => {\n // Promise.allSettled never reject\n });\n\n return key;\n }\n\n async delete(_key: string) {\n // not supported\n }\n\n async list() {\n const blobList = new Set();\n\n for (const peer of this.storages) {\n const list = await peer.list();\n if (list) {\n for (const blob of list) {\n blobList.add(blob);\n }\n }\n }\n\n return Array.from(blobList);\n }\n}\n\nexport const EmptyBlobStorage: BlobStorage = {\n name: 'empty',\n readonly: true,\n async get(_key: string) {\n return null;\n },\n async set(_key: string, _value: Blob) {\n throw new Error('not supported');\n },\n async delete(_key: string) {\n throw new Error('not supported');\n },\n async list() {\n return [];\n },\n};\n\nexport class MemoryBlobStorage implements BlobStorage {\n name = 'testing';\n readonly = false;\n\n constructor(private readonly state: Memento) {}\n\n get(key: string) {\n return Promise.resolve(this.state.get(key) ?? null);\n }\n set(key: string, value: Blob) {\n this.state.set(key, value);\n\n const list = this.state.get>('list') ?? new Set();\n list.add(key);\n this.state.set('list', list);\n\n return Promise.resolve(key);\n }\n delete(key: string) {\n this.state.set(key, null);\n\n const list = this.state.get>('list') ?? new Set();\n list.delete(key);\n this.state.set('list', list);\n\n return Promise.resolve();\n }\n list() {\n const list = this.state.get>('list');\n return Promise.resolve(list ? Array.from(list) : []);\n }\n}\n","export class BlobStorageOverCapacity extends Error {\n constructor(public originError?: any) {\n super('Blob storage over capacity.');\n }\n}\n","export class AsyncLock {\n private _lock = Promise.resolve();\n\n async acquire() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let release: () => void = null!;\n const nextLock = new Promise(resolve => {\n release = resolve;\n });\n\n await this._lock;\n this._lock = nextLock;\n return {\n release,\n [Symbol.dispose]: () => {\n release();\n },\n };\n }\n}\n","import { AsyncLock } from '../utils';\n\nexport interface ByteKV extends ByteKVBehavior {\n transaction(cb: (transaction: ByteKVBehavior) => Promise): Promise;\n}\n\nexport interface ByteKVBehavior {\n get(key: string): Promise | Uint8Array | null;\n set(key: string, value: Uint8Array): Promise | void;\n del(key: string): Promise | void;\n keys(): Promise | string[];\n clear(): Promise | void;\n}\n\nexport class MemoryByteKV implements ByteKV {\n readonly lock = new AsyncLock();\n\n constructor(readonly db = new Map()) {}\n\n async transaction(cb: (transaction: ByteKVBehavior) => Promise) {\n using _lock = await this.lock.acquire();\n return await cb({\n get: async key => {\n return this.db.get(key) ?? null;\n },\n set: async (key, value) => {\n this.db.set(key, value);\n },\n keys: async () => {\n return Array.from(this.db.keys());\n },\n del: async key => {\n this.db.delete(key);\n },\n clear: async () => {\n this.db.clear();\n },\n });\n }\n get(key: string) {\n return this.transaction(async tx => tx.get(key));\n }\n set(key: string, value: Uint8Array) {\n return this.transaction(async tx => tx.set(key, value));\n }\n keys() {\n return this.transaction(async tx => tx.keys());\n }\n clear() {\n return this.transaction(async tx => tx.clear());\n }\n del(key: string) {\n return this.transaction(async tx => tx.del(key));\n }\n}\n\nexport class ReadonlyByteKV extends MemoryByteKV implements ByteKV {\n override transaction(\n cb: (transaction: ByteKVBehavior) => Promise\n ): Promise {\n return super.transaction(tx => {\n return cb({\n ...tx,\n set() {\n return Promise.resolve();\n },\n del() {\n return Promise.resolve();\n },\n clear() {\n return Promise.resolve();\n },\n });\n });\n }\n override set(_key: string, _value: Uint8Array): Promise {\n return Promise.resolve();\n }\n override del(_key: string): Promise {\n return Promise.resolve();\n }\n override clear(): Promise {\n return Promise.resolve();\n }\n}\n","export type DocEvent =\n | {\n type: 'ClientUpdateCommitted';\n clientId: string;\n docId: string;\n update: Uint8Array;\n seqNum: number;\n }\n | {\n type: 'ServerUpdateCommitted';\n docId: string;\n update: Uint8Array;\n clientId: string;\n };\n\nexport interface DocEventBus {\n emit(event: DocEvent): void;\n on(cb: (event: DocEvent) => void): () => void;\n}\n\nexport class MemoryDocEventBus implements DocEventBus {\n listeners = new Set<(event: DocEvent) => void>();\n emit(event: DocEvent): void {\n for (const listener of this.listeners) {\n try {\n listener(event);\n } catch (e) {\n console.error(e);\n }\n }\n }\n on(cb: (event: DocEvent) => void): () => void {\n this.listeners.add(cb);\n return () => {\n this.listeners.delete(cb);\n };\n }\n}\n\nexport class DocEventBusInner implements DocEventBus {\n constructor(private readonly eventBusBehavior: DocEventBus) {}\n\n emit(event: DocEvent) {\n this.eventBusBehavior.emit(event);\n }\n\n on(cb: (event: DocEvent) => void) {\n return this.eventBusBehavior.on(cb);\n }\n}\n","import { mergeUpdates } from 'yjs';\n\nimport type { ByteKV, Memento } from '../../storage';\nimport { MemoryMemento, ReadonlyByteKV, wrapMemento } from '../../storage';\nimport { AsyncLock, throwIfAborted } from '../../utils';\nimport type { DocEventBus } from '.';\nimport { DocEventBusInner, MemoryDocEventBus } from './event';\nimport { isEmptyUpdate } from './utils';\n\nexport interface DocStorage {\n eventBus: DocEventBus;\n doc: ByteKV;\n syncMetadata: ByteKV;\n serverClock: ByteKV;\n}\n\nconst Keys = {\n SeqNum: (docId: string) => `${docId}:seqNum`,\n SeqNumPushed: (docId: string) => `${docId}:seqNumPushed`,\n ServerClockPulled: (docId: string) => `${docId}:serverClockPulled`,\n UpdatedTime: (docId: string) => `${docId}:updateTime`,\n};\n\nconst Values = {\n UInt64: {\n parse: (buffer: Uint8Array) => {\n const view = new DataView(buffer.buffer);\n return Number(view.getBigUint64(0, false));\n },\n serialize: (value: number) => {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n view.setBigUint64(0, BigInt(value), false);\n return new Uint8Array(buffer);\n },\n },\n};\n\nexport class DocStorageInner {\n public readonly eventBus = new DocEventBusInner(this.behavior.eventBus);\n constructor(public readonly behavior: DocStorage) {}\n\n async loadServerClock(signal?: AbortSignal): Promise> {\n throwIfAborted(signal);\n const list = await this.behavior.serverClock.keys();\n\n const map = new Map();\n for (const key of list) {\n const docId = key;\n const value = await this.behavior.serverClock.get(key);\n if (value) {\n map.set(docId, Values.UInt64.parse(value));\n }\n }\n\n return map;\n }\n\n async saveServerClock(map: Map, signal?: AbortSignal) {\n throwIfAborted(signal);\n await this.behavior.serverClock.transaction(async transaction => {\n for (const [docId, value] of map) {\n const key = docId;\n const oldBuffer = await transaction.get(key);\n const old = oldBuffer ? Values.UInt64.parse(oldBuffer) : 0;\n if (old < value) {\n await transaction.set(key, Values.UInt64.serialize(value));\n }\n }\n });\n }\n\n async loadDocSeqNum(docId: string, signal?: AbortSignal) {\n throwIfAborted(signal);\n const bytes = await this.behavior.syncMetadata.get(Keys.SeqNum(docId));\n if (bytes === null) {\n return 0;\n }\n return Values.UInt64.parse(bytes);\n }\n\n async saveDocSeqNum(\n docId: string,\n seqNum: number | true,\n signal?: AbortSignal\n ) {\n throwIfAborted(signal);\n return await this.behavior.syncMetadata.transaction(async transaction => {\n const key = Keys.SeqNum(docId);\n const oldBytes = await transaction.get(key);\n const old = oldBytes ? Values.UInt64.parse(oldBytes) : 0;\n if (seqNum === true) {\n await transaction.set(key, Values.UInt64.serialize(old + 1));\n return old + 1;\n }\n if (old < seqNum) {\n await transaction.set(key, Values.UInt64.serialize(seqNum));\n return seqNum;\n }\n return old;\n });\n }\n\n async loadDocSeqNumPushed(docId: string, signal?: AbortSignal) {\n throwIfAborted(signal);\n const bytes = await this.behavior.syncMetadata.get(\n Keys.SeqNumPushed(docId)\n );\n if (bytes === null) {\n return null;\n }\n return Values.UInt64.parse(bytes);\n }\n\n async saveDocPushedSeqNum(\n docId: string,\n seqNum: number | { add: number },\n signal?: AbortSignal\n ) {\n throwIfAborted(signal);\n await this.behavior.syncMetadata.transaction(async transaction => {\n const key = Keys.SeqNumPushed(docId);\n const oldBytes = await transaction.get(key);\n const old = oldBytes ? Values.UInt64.parse(oldBytes) : null;\n if (typeof seqNum === 'object') {\n return transaction.set(\n key,\n Values.UInt64.serialize((old ?? 0) + seqNum.add)\n );\n }\n if (old === null || old < seqNum) {\n return transaction.set(key, Values.UInt64.serialize(seqNum));\n }\n });\n }\n\n async loadDocServerClockPulled(docId: string, signal?: AbortSignal) {\n throwIfAborted(signal);\n const bytes = await this.behavior.syncMetadata.get(\n Keys.ServerClockPulled(docId)\n );\n if (bytes === null) {\n return null;\n }\n return bytes ? Values.UInt64.parse(bytes) : 0;\n }\n\n async saveDocServerClockPulled(\n docId: string,\n serverClock: number,\n signal?: AbortSignal\n ) {\n throwIfAborted(signal);\n await this.behavior.syncMetadata.transaction(async transaction => {\n const oldBytes = await transaction.get(Keys.ServerClockPulled(docId));\n const old = oldBytes ? Values.UInt64.parse(oldBytes) : null;\n if (old === null || old < serverClock) {\n await transaction.set(\n Keys.ServerClockPulled(docId),\n Values.UInt64.serialize(serverClock)\n );\n }\n });\n }\n\n async loadDocFromLocal(docId: string, signal?: AbortSignal) {\n throwIfAborted(signal);\n return await this.behavior.doc.get(docId);\n }\n\n /**\n * Confirm that server updates are applied in the order they occur!!!\n */\n async commitDocAsServerUpdate(\n docId: string,\n update: Uint8Array,\n serverClock: number,\n signal?: AbortSignal\n ) {\n throwIfAborted(signal);\n await this.behavior.doc.transaction(async tx => {\n const data = await tx.get(docId);\n await tx.set(\n docId,\n data && !isEmptyUpdate(data)\n ? !isEmptyUpdate(update)\n ? mergeUpdates([data, update])\n : data\n : update\n );\n });\n await this.saveDocServerClockPulled(docId, serverClock);\n }\n\n async commitDocAsClientUpdate(\n docId: string,\n update: Uint8Array,\n signal?: AbortSignal\n ) {\n throwIfAborted(signal);\n\n await this.behavior.doc.transaction(async tx => {\n const data = await tx.get(docId);\n await tx.set(\n docId,\n data && !isEmptyUpdate(data)\n ? !isEmptyUpdate(update)\n ? mergeUpdates([data, update])\n : data\n : update\n );\n });\n\n return await this.saveDocSeqNum(docId, true);\n }\n\n clearSyncMetadata() {\n return this.behavior.syncMetadata.clear();\n }\n\n async clearServerClock() {\n return this.behavior.serverClock.clear();\n }\n}\n\nexport class ReadonlyStorage implements DocStorage {\n constructor(\n private readonly map: {\n [key: string]: Uint8Array;\n }\n ) {}\n\n eventBus = new MemoryDocEventBus();\n doc = new ReadonlyByteKV(new Map(Object.entries(this.map)));\n serverClock = new ReadonlyByteKV();\n syncMetadata = new ReadonlyByteKV();\n}\n\nexport class MemoryStorage implements DocStorage {\n constructor(private readonly memo: Memento = new MemoryMemento()) {}\n\n eventBus = new MemoryDocEventBus();\n lock = new AsyncLock();\n readonly docDb = wrapMemento(this.memo, 'doc:');\n readonly syncMetadataDb = wrapMemento(this.memo, 'syncMetadata:');\n readonly serverClockDb = wrapMemento(this.memo, 'serverClock:');\n\n readonly doc = {\n transaction: async cb => {\n using _lock = await this.lock.acquire();\n return await cb({\n get: async key => {\n return this.docDb.get(key) ?? null;\n },\n set: async (key, value) => {\n this.docDb.set(key, value);\n },\n keys: async () => {\n return Array.from(this.docDb.keys());\n },\n clear: () => {\n this.docDb.clear();\n },\n del: key => {\n this.docDb.del(key);\n },\n });\n },\n get(key) {\n return this.transaction(async tx => tx.get(key));\n },\n set(key, value) {\n return this.transaction(async tx => tx.set(key, value));\n },\n keys() {\n return this.transaction(async tx => tx.keys());\n },\n clear() {\n return this.transaction(async tx => tx.clear());\n },\n del(key) {\n return this.transaction(async tx => tx.del(key));\n },\n } satisfies ByteKV;\n\n readonly syncMetadata = {\n transaction: async cb => {\n using _lock = await this.lock.acquire();\n return await cb({\n get: async key => {\n return this.syncMetadataDb.get(key) ?? null;\n },\n set: async (key, value) => {\n this.syncMetadataDb.set(key, value);\n },\n keys: async () => {\n return Array.from(this.syncMetadataDb.keys());\n },\n clear: () => {\n this.syncMetadataDb.clear();\n },\n del: key => {\n this.syncMetadataDb.del(key);\n },\n });\n },\n get(key) {\n return this.transaction(async tx => tx.get(key));\n },\n set(key, value) {\n return this.transaction(async tx => tx.set(key, value));\n },\n keys() {\n return this.transaction(async tx => tx.keys());\n },\n clear() {\n return this.transaction(async tx => tx.clear());\n },\n del(key) {\n return this.transaction(async tx => tx.del(key));\n },\n } satisfies ByteKV;\n\n readonly serverClock = {\n transaction: async cb => {\n using _lock = await this.lock.acquire();\n return await cb({\n get: async key => {\n return this.serverClockDb.get(key) ?? null;\n },\n set: async (key, value) => {\n this.serverClockDb.set(key, value);\n },\n keys: async () => {\n return Array.from(this.serverClockDb.keys());\n },\n clear: () => {\n this.serverClockDb.clear();\n },\n del: key => {\n this.serverClockDb.del(key);\n },\n });\n },\n get(key) {\n return this.transaction(async tx => tx.get(key));\n },\n set(key, value) {\n return this.transaction(async tx => tx.set(key, value));\n },\n keys() {\n return this.transaction(async tx => tx.keys());\n },\n clear() {\n return this.transaction(async tx => tx.clear());\n },\n del(key) {\n return this.transaction(async tx => tx.del(key));\n },\n } satisfies ByteKV;\n}\n","export function isEmptyUpdate(binary: Uint8Array) {\n return (\n binary.byteLength === 0 ||\n (binary.byteLength === 2 && binary[0] === 0 && binary[1] === 0)\n );\n}\n","import { Unreachable } from '@affine/env/constant';\n\nexport interface RcRef {\n obj: T;\n release: () => void;\n}\n\nexport class ObjectPool {\n objects = new Map();\n timeoutToGc: NodeJS.Timeout | null = null;\n\n constructor(\n private readonly options: {\n onDelete?: (obj: T) => void;\n onDangling?: (obj: T) => boolean;\n } = {}\n ) {}\n\n get(key: Key): RcRef | null {\n const exist = this.objects.get(key);\n if (exist) {\n exist.rc++;\n let released = false;\n return {\n obj: exist.obj,\n release: () => {\n // avoid double release\n if (released) {\n return;\n }\n released = true;\n exist.rc--;\n this.requestGc();\n },\n };\n }\n return null;\n }\n\n put(key: Key, obj: T) {\n const ref = { obj, rc: 0 };\n this.objects.set(key, ref);\n\n const r = this.get(key);\n if (!r) {\n throw new Unreachable();\n }\n\n return r;\n }\n\n private requestGc() {\n if (this.timeoutToGc) {\n clearInterval(this.timeoutToGc);\n }\n\n // do gc every 1s\n this.timeoutToGc = setInterval(() => {\n this.gc();\n }, 1000);\n }\n\n private gc() {\n for (const [key, { obj, rc }] of new Map(\n this.objects /* clone the map, because the origin will be modified during iteration */\n )) {\n if (\n rc === 0 &&\n (!this.options.onDangling || this.options.onDangling(obj))\n ) {\n this.options.onDelete?.(obj);\n\n this.objects.delete(key);\n }\n }\n\n for (const [_, { rc }] of this.objects) {\n if (rc === 0) {\n return;\n }\n }\n\n // if all object has referrer, stop gc\n if (this.timeoutToGc) {\n clearInterval(this.timeoutToGc);\n }\n }\n\n clear() {\n for (const { obj } of this.objects.values()) {\n this.options.onDelete?.(obj);\n }\n\n this.objects.clear();\n }\n}\n","// copied from https://github.com/shuding/stable-hash\n\n// Use WeakMap to store the object-key mapping so the objects can still be\n// garbage collected. WeakMap uses a hashtable under the hood, so the lookup\n// complexity is almost O(1).\nconst table = new WeakMap();\n\n// A counter of the key.\nlet counter = 0;\n\n// A stable hash implementation that supports:\n// - Fast and ensures unique hash properties\n// - Handles unserializable values\n// - Handles object key ordering\n// - Generates short results\n//\n// This is not a serialization function, and the result is not guaranteed to be\n// parsable.\nexport function stableHash(arg: any): string {\n const type = typeof arg;\n const constructor = arg && arg.constructor;\n const isDate = constructor === Date;\n\n if (Object(arg) === arg && !isDate && constructor !== RegExp) {\n // Object/function, not null/date/regexp. Use WeakMap to store the id first.\n // If it's already hashed, directly return the result.\n let result = table.get(arg);\n if (result) return result;\n // Store the hash first for circular reference detection before entering the\n // recursive `stableHash` calls.\n // For other objects like set and map, we use this id directly as the hash.\n result = ++counter + '~';\n table.set(arg, result);\n let index: any;\n\n if (constructor === Array) {\n // Array.\n result = '@';\n for (index = 0; index < arg.length; index++) {\n result += stableHash(arg[index]) + ',';\n }\n table.set(arg, result);\n } else if (constructor === Object) {\n // Object, sort keys.\n result = '#';\n const keys = Object.keys(arg).sort();\n while ((index = keys.pop() as string) !== undefined) {\n if (arg[index] !== undefined) {\n result += index + ':' + stableHash(arg[index]) + ',';\n }\n }\n table.set(arg, result);\n }\n return result;\n }\n if (isDate) return arg.toJSON();\n if (type === 'symbol') return arg.toString();\n return type === 'string' ? JSON.stringify(arg) : '' + arg;\n}\n","// because AbortSignal.throwIfAborted is not available in abortcontroller-polyfill\nexport function throwIfAborted(abort?: AbortSignal) {\n if (abort?.aborted) {\n throw new Error(abort.reason);\n }\n return true;\n}\n\nexport const MANUALLY_STOP = 'manually-stop';\n","import { useI18n } from '@affine/i18n';\nimport { useMemo } from 'react';\n\nexport const useNavConfig = () => {\n const t = useI18n();\n return useMemo(\n () => [\n {\n title: t['com.arms.other-page.nav.official-website'](),\n path: 'https://affine.pro',\n },\n {\n title: t['com.arms.other-page.nav.affine-community'](),\n path: 'https://community.affine.pro/home',\n },\n {\n title: t['com.arms.other-page.nav.blog'](),\n path: 'https://affine.pro/blog',\n },\n {\n title: t['com.arms.other-page.nav.contact-us'](),\n path: 'https://affine.pro/about-us',\n },\n ],\n [t]\n );\n};\n","import * as styles from './index.css';\nimport { useNavConfig } from './use-nav-config';\n\nexport const DesktopNavbar = () => {\n const config = useNavConfig();\n\n return (\n \n );\n};\n","import \"../component/src/components/affine-other-page-layout/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/affine-other-page-layout/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA81UTW/bMAy951cQBQYkBwV2mnadetk/GWiLTtTKkiAxibsh/32QnMwfbTZsp53iUI/ie48U19/KetO9bGIBPxYAe9K7PUsoi+LT8wLgpBXvh79KR2/wTUJjqEuB9CuUDlSzdlZC7cyhtfnEWRZRfycJRwxLIbBptCWR4xVGWiWUd1H3mYEMsj5SilZYv+6CO1g1Sx4OhA+6xfAmamdcWD0vzov1VUqZpeQDCdruKWieADYZwM5LKFI9Qw1fPkOvv/hQ7cC20R2pFEKjd1ZopjZKqMkyhRR+OUTWTWJnmSxLiB5rEhXxiSj741EpbXcSykffQbkpfDfheJ85vqPQGyx26CVsZynbse6Jb0wdv3PsDz2K7YA5XcbiocjG5OsU1S5gb4d1liaitknT04zfQ+Y3KrrJCpKvOhkn6EiWowQ8sJtmrr1Bbf9O3yj/KWcOw3w8PU+H/bif0C/+dQoBKhcUBRFQ6UO83pRjg02V60Tco3Kna2zE9cv/08Vy4zvoJxOgxU7M1sGN1/uBAxzQXrGDfVCs7yMQxpkDEhumcPHh8oDu7qYVsYrOHPhSkdm181dbGVe/jpZYjaZeJuogYFv4bjWegWL90Mu83XWD9asoi9WMq3W8lAYjC9cIfvO0ysRbDDttxYjaefG1JaURYh2ILKBVsJy4mt5Dnz1bVfN1ce3JeQy9v0B/GXDt5wT1+TbqY4La/pbg4637bjXrvDj/BBe34L51BgAA\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var affineLogo = '_1c2xj2s1';\nexport var hideInSmallScreen = '_1c2xj2s7';\nexport var hideInWideScreen = '_1c2xj2s6';\nexport var iconButton = '_1c2xj2s5';\nexport var menu = '_1c2xj2s8';\nexport var menuItem = '_1c2xj2s9';\nexport var root = '_1c2xj2s0';\nexport var topNav = '_1c2xj2s2';\nexport var topNavLink = '_1c2xj2s4';\nexport var topNavLinks = '_1c2xj2s3';","import { IconButton } from '@affine/component/ui/button';\nimport { Menu, MenuItem } from '@affine/component/ui/menu';\nimport { CloseIcon, PropertyIcon } from '@blocksuite/icons/rc';\nimport { useState } from 'react';\n\nimport * as styles from './index.css';\nimport { useNavConfig } from './use-nav-config';\n\nexport const MobileNavbar = () => {\n const [openMenu, setOpenMenu] = useState(false);\n const navConfig = useNavConfig();\n\n const menuItems = (\n <>\n {navConfig.map(item => {\n return (\n {\n open(item.path, '_blank');\n }}\n className={styles.menuItem}\n >\n {item.title}\n \n );\n })}\n \n );\n\n return (\n
\n \n \n {openMenu ? : }\n \n \n
\n );\n};\n","import { Button } from '@affine/component/ui/button';\nimport { useI18n } from '@affine/i18n';\nimport { Logo1Icon } from '@blocksuite/icons/rc';\nimport { useCallback } from 'react';\n\nimport { DesktopNavbar } from './desktop-navbar';\nimport * as styles from './index.css';\nimport { MobileNavbar } from './mobile-navbar';\n\nexport const AffineOtherPageLayout = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const t = useI18n();\n\n const openDownloadLink = useCallback(() => {\n open(runtimeConfig.downloadUrl, '_blank');\n }, []);\n\n return (\n
\n {environment.isDesktop ? null : (\n
\n \n \n \n\n \n \n {t['com.arms.auth.open.affine.download-app']()}\n \n \n
\n )}\n\n {children}\n
\n );\n};\n","import \"../component/src/components/auth-components/share.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/auth-components/share.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61XXW+jOhB9z6+w9mql9sEISNJ2Xelq/8nVgIfEjbGRbZJ0V/3vK4xJgEJCV/cpwczY55z5Mj8P+F4YKNGS/5Ln8+HtZNbk94qQ+Lv/IcQZULbQpmTEaAcOH2KOu8fXFSEfK0K2NwyTl4FpEt+wXT/1bD9WUYcmJpHUO+39Cq0cteIXMnIE80ApFIVQSP36nq69t384odjtHSNPcdys5VpqM3LKJOQH71GC2QlFTXCpzs3iEY0TOUgKUuwUI6XgXOLrENq/pGKFMNZRXVD3XuESmNtZmAFIpp3TJSObFolsfPfBMn1pF7mwlYR3RgqJfsHDpMJhaRnJUTk0E2AlfA3rZhbrBKreaYnfvALOhdpdCK3jFnylrXBCK0YMSnDiONQ1iU7C7XXt6F4oN7lTGn86UEKG0htftMmkzg9z8Xd4dtRirhUH8069yeN8FG4KZcuFOqUj2On9IIS9r5pBZrWsHTar41TBwjGy5NwIjdHGnz4ljn970WTgeAKjhNrNuob3U84b73QS3O0ZSbYt5g5j9zyVHA1Rw9FQA1zUljVdp1nVRzSF1CdG9oJzVN4S8sPO6FpxOln27UZT6BiDwmEninKoHCPfvr32MKcjzOkYcz84vWiE3uL/O12Ff130esXPCNROT/P4pyiK5s0vKhTHMyPpnDJDVhkW2uANWmk8pNU935NS1ngjN1v6IVId1fB4oZB4RbppQLURXoTGN/j45qZECe0J1ymVRFtLhCqEEg59vsOw5W3vF1cGtqUwKJf54RJ6gw/hetyDtgRmq0IKdZhKuqfJ9rZZ1iifh+2uGwVvtXWiaFpaCLatIEeaoTthWyP3hsXLwsawrHX5ThvGaHfYSPEk2n65ji4p1Wo1rJ8emR+eTHfSOp0ZoJ9Uu0KdlOtOMvwgkUGLvnQ4XifZ1IxYIuLwkjKetzDgmMTxcd9vW3F8PP1PpJeU0wBYdDJQVaGtfvnaAiQK2Lx/CWcaSD3HY8mBRE44ueBi482WXsM+XW6ARLbOrkfdt/96X8juBfT7ZDybX8qFwbwto1zLulR/E+kelrw/ttddpv8skQsgNjeIioDi5KEXnSRON9X50XuOsvQWyksr9Byr82UUTRDwu1gHxnUfGHNZd+vEgR8P5hddlVbYfZLcJrxtkI745mG7UdQ+Vh9/AFk1Cll3DQAA\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var authCodeContainer = '_17xkjwr6';\nexport var authCodeErrorMessage = '_17xkjwr8';\nexport var authCodeWrapper = '_17xkjwr7';\nexport var authContent = '_17xkjwr5';\nexport var authInputWrapper = '_17xkjwr1';\nexport var authPageContainer = '_17xkjwra';\nexport var formHint = '_17xkjwr2';\nexport var hideInSmallScreen = '_17xkjwrd';\nexport var input = '_17xkjwrc';\nexport var loading = '_17xkjwr4';\nexport var modalHeaderWrapper = '_17xkjwr0';\nexport var resendButtonWrapper = '_17xkjwr9';\nexport var signInPageContainer = '_17xkjwrb';","import clsx from 'clsx';\nimport type { FC, HTMLAttributes, PropsWithChildren } from 'react';\n\nimport { authContent } from './share.css';\n\nexport const AuthContent: FC<\n PropsWithChildren & HTMLAttributes\n> = ({ children, className, ...otherProps }) => {\n return (\n
\n {children}\n
\n );\n};\n","import clsx from 'clsx';\n\nimport type { InputProps } from '../../ui/input';\nimport { Input } from '../../ui/input';\nimport * as styles from './share.css';\nexport type AuthInputProps = InputProps & {\n label?: string;\n error?: boolean;\n errorHint?: string;\n withoutHint?: boolean;\n onEnter?: () => void;\n};\nexport const AuthInput = ({\n label,\n error,\n errorHint,\n withoutHint = false,\n onEnter,\n className,\n ...inputProps\n}: AuthInputProps) => {\n return (\n \n {label ? : null}\n {\n if (e.key === 'Enter') {\n onEnter?.();\n }\n }}\n {...inputProps}\n />\n {error && errorHint && !withoutHint ? (\n \n {errorHint}\n \n ) : null}\n \n );\n};\n","import type { FC, PropsWithChildren, ReactNode } from 'react';\n\nimport { Empty } from '../../ui/empty';\nimport { AffineOtherPageLayout } from '../affine-other-page-layout';\nimport { authPageContainer, hideInSmallScreen } from './share.css';\n\nexport const AuthPageContainer: FC<\n PropsWithChildren<{ title?: ReactNode; subtitle?: ReactNode }>\n> = ({ children, title, subtitle }) => {\n return (\n \n
\n
\n
\n

{title}

\n

{subtitle}

\n {children}\n
\n
\n \n
\n
\n
\n
\n );\n};\n","import { useI18n } from '@affine/i18n';\nimport { ArrowLeftSmallIcon } from '@blocksuite/icons/rc';\nimport { cssVar } from '@toeverything/theme';\nimport type { FC } from 'react';\n\nimport type { ButtonProps } from '../../ui/button';\nimport { Button } from '../../ui/button';\n\nexport const BackButton: FC = props => {\n const t = useI18n();\n return (\n }\n {...props}\n >\n {t['com.arms.backButton']()}\n \n );\n};\n","import { useI18n } from '@affine/i18n';\nimport { useCallback, useState } from 'react';\n\nimport { Button } from '../../ui/button';\nimport { AuthInput } from './auth-input';\nimport { AuthPageContainer } from './auth-page-container';\nimport * as styles from './share.css';\nimport { emailRegex } from './utils';\n\nexport const ChangeEmailPage = ({\n onChangeEmail: propsOnChangeEmail,\n}: {\n onChangeEmail: (email: string) => Promise;\n onOpenAffine: () => void;\n}) => {\n const t = useI18n();\n const [hasSetUp, setHasSetUp] = useState(false);\n const [email, setEmail] = useState('');\n const [isValidEmail, setIsValidEmail] = useState(true);\n const [loading, setLoading] = useState(false);\n const onContinue = useCallback(\n () =>\n void (async () => {\n if (!emailRegex.test(email)) {\n setIsValidEmail(false);\n return;\n }\n setIsValidEmail(true);\n setLoading(true);\n\n const setup = await propsOnChangeEmail(email);\n\n setLoading(false);\n setHasSetUp(setup);\n })(),\n [email, propsOnChangeEmail]\n );\n const onEmailChange = useCallback((value: string) => {\n setEmail(value);\n }, []);\n return (\n \n <>\n \n \n {t['com.arms.auth.set.email.save']()}\n \n \n \n );\n};\n","export const ErrorIcon = () => {\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n","import \"../component/src/components/auth-components/password-input/style.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/auth-components/password-input/style.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xZG1lc25xMCB7CiAgbWFyZ2luLWxlZnQ6IDhweDsKICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KLl8xZG1lc25xMSB7CiAgcGFkZGluZzogMnB4IDE1cHg7CiAgaGVpZ2h0OiAyMHB4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC14cyk7Cn0KLl8xZG1lc25xMS53ZWFrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hZmZpbmUtdGFnLXJlZCk7CiAgY29sb3I6IHZhcigtLWFmZmluZS1lcnJvci1jb2xvcik7Cn0KLl8xZG1lc25xMS5tZWRpdW0gewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFmZmluZS10YWctb3JhbmdlKTsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXdhcm5pbmctY29sb3IpOwp9Ci5fMWRtZXNucTEuc3Ryb25nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hZmZpbmUtdGFnLWdyZWVuKTsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXN1Y2Nlc3MtY29sb3IpOwp9Ci5fMWRtZXNucTEubWluaW11bSwgLl8xZG1lc25xMS5tYXhpbXVtIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hZmZpbmUtdGFnLXJlZCk7CiAgY29sb3I6IHZhcigtLWFmZmluZS1lcnJvci1jb2xvcik7Cn0=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var statusWrapper = '_1dmesnq0';\nexport var tag = '_1dmesnq1';","export const SuccessIcon = () => {\n return (\n \n \n \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport type { FC } from 'react';\nimport { useMemo } from 'react';\n\nimport type { Status } from './index';\nimport { tag } from './style.css';\n\ntype TagProps = {\n status: Status;\n minimum: string;\n maximum: string;\n};\n\nexport const Tag: FC = ({ status, minimum, maximum }) => {\n const textMap = useMemo<{ [K in Status]: string }>(() => {\n return {\n weak: 'Weak',\n medium: 'Medium',\n strong: 'Strong',\n minimum,\n maximum,\n };\n }, [minimum, maximum]);\n\n return (\n \n {textMap[status]}\n \n );\n};\n","import { type PasswordLimitsFragment } from '@affine/graphql';\nimport { useI18n } from '@affine/i18n';\nimport { type Options, passwordStrength } from 'check-password-strength';\nimport { type FC, useEffect, useMemo } from 'react';\nimport { useCallback, useState } from 'react';\nimport { z, type ZodCustomIssue, ZodIssueCode } from 'zod';\n\nimport type { InputProps } from '../../../ui/input';\nimport { Input } from '../../../ui/input';\nimport * as styles from '../share.css';\nimport { ErrorIcon } from './error';\nimport { statusWrapper } from './style.css';\nimport { SuccessIcon } from './success';\nimport { Tag } from './tag';\n\nexport type Status = 'weak' | 'medium' | 'strong' | 'minimum' | 'maximum';\n\nconst PASSWORD_STRENGTH_OPTIONS: Options = [\n {\n id: 0,\n value: 'weak',\n minDiversity: 0,\n minLength: 0,\n },\n {\n id: 1,\n value: 'medium',\n minDiversity: 4,\n minLength: 8,\n },\n {\n id: 2,\n value: 'strong',\n minDiversity: 4,\n minLength: 10,\n },\n];\n\nexport const PasswordInput: FC<\n InputProps & {\n passwordLimits: PasswordLimitsFragment;\n onPass: (password: string) => void;\n onPrevent: () => void;\n }\n> = ({ passwordLimits, onPass, onPrevent, ...inputProps }) => {\n const t = useI18n();\n\n const [status, setStatus] = useState(null);\n const [confirmStatus, setConfirmStatus] = useState<\n 'success' | 'error' | null\n >(null);\n const [canSubmit, setCanSubmit] = useState(false);\n\n const [password, setPassWord] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const validationSchema = useMemo(() => {\n const { minLength, maxLength } = passwordLimits;\n return z.string().superRefine((val, ctx) => {\n if (val.length < minLength) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n params: {\n status: 'minimum',\n },\n });\n } else if (val.length > maxLength) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n params: {\n status: 'maximum',\n },\n });\n }\n // https://github.com/deanilvincent/check-password-strength?tab=readme-ov-file#default-options\n const { value: status } = passwordStrength(\n val,\n PASSWORD_STRENGTH_OPTIONS\n );\n\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: 'password strength',\n path: ['strength'],\n params: {\n status,\n },\n });\n });\n }, [passwordLimits]);\n\n const validatePasswords = useCallback(\n (password: string, confirmPassword: string) => {\n const result = validationSchema.safeParse(password);\n let canSubmit = false;\n if (!result.success) {\n const issues = result.error.issues as ZodCustomIssue[];\n const firstIssue = issues[0];\n setStatus(firstIssue.params?.status || null);\n // ignore strength error\n if (firstIssue.path.includes('strength')) {\n canSubmit = true;\n }\n }\n if (confirmPassword) {\n const isEqual = password === confirmPassword;\n if (isEqual) {\n setConfirmStatus('success');\n } else {\n setConfirmStatus('error');\n }\n canSubmit &&= isEqual;\n } else {\n canSubmit &&= false;\n setConfirmStatus(null);\n }\n setCanSubmit(canSubmit);\n },\n [validationSchema]\n );\n\n const onPasswordChange = useCallback(\n (value: string) => {\n const password = value.trim();\n setPassWord(password);\n validatePasswords(password, confirmPassword);\n },\n [validatePasswords, confirmPassword]\n );\n\n const onConfirmPasswordChange = useCallback(\n (value: string) => {\n const confirmPassword = value.trim();\n setConfirmPassword(confirmPassword);\n validatePasswords(password, confirmPassword);\n },\n [validatePasswords, password]\n );\n\n useEffect(() => {\n if (canSubmit) {\n onPass(password);\n } else {\n onPrevent();\n }\n }, [canSubmit, password, onPass, onPrevent]);\n\n return (\n <>\n \n {status ? (\n \n ) : null}\n \n }\n {...inputProps}\n />\n \n {confirmStatus ? (\n confirmStatus === 'success' ? (\n \n ) : (\n \n )\n ) : null}\n \n }\n {...inputProps}\n />\n \n );\n};\n","import type { PasswordLimitsFragment } from '@affine/graphql';\nimport { useI18n } from '@affine/i18n';\nimport type { FC } from 'react';\nimport { useCallback, useRef, useState } from 'react';\n\nimport { Button } from '../../ui/button';\nimport { Wrapper } from '../../ui/layout';\nimport { PasswordInput } from './password-input';\n\nexport const SetPassword: FC<{\n passwordLimits: PasswordLimitsFragment;\n showLater?: boolean;\n onLater?: () => void;\n onSetPassword: (password: string) => void;\n}> = ({ passwordLimits, onLater, onSetPassword, showLater = false }) => {\n const t = useI18n();\n\n const [passwordPass, setPasswordPass] = useState(false);\n const passwordRef = useRef('');\n\n return (\n <>\n \n {\n setPasswordPass(true);\n passwordRef.current = password;\n }, [])}\n onPrevent={useCallback(() => {\n setPasswordPass(false);\n }, [])}\n />\n \n {\n onSetPassword(passwordRef.current);\n }, [onSetPassword])}\n >\n {t['com.arms.auth.set.password.save']()}\n \n {showLater ? (\n \n ) : null}\n \n );\n};\n","import type { PasswordLimitsFragment } from '@affine/graphql';\nimport { useI18n } from '@affine/i18n';\nimport type { FC } from 'react';\nimport { useCallback, useState } from 'react';\n\nimport { Button } from '../../ui/button';\nimport { notify } from '../../ui/notification';\nimport { AuthPageContainer } from './auth-page-container';\nimport { SetPassword } from './set-password';\n\nexport const ChangePasswordPage: FC<{\n passwordLimits: PasswordLimitsFragment;\n onSetPassword: (password: string) => Promise;\n onOpenAffine: () => void;\n}> = ({ passwordLimits, onSetPassword: propsOnSetPassword, onOpenAffine }) => {\n const t = useI18n();\n const [hasSetUp, setHasSetUp] = useState(false);\n\n const onSetPassword = useCallback(\n (passWord: string) => {\n propsOnSetPassword(passWord)\n .then(() => setHasSetUp(true))\n .catch(e =>\n notify.error({\n title: t['com.arms.auth.password.set-failed'](),\n message: String(e),\n })\n );\n },\n [propsOnSetPassword, t]\n );\n\n return (\n \n {hasSetUp ? (\n \n ) : (\n \n )}\n \n );\n};\n","import { useI18n } from '@affine/i18n';\nimport type { FC } from 'react';\n\nimport { Button } from '../../ui/button';\nimport { AuthPageContainer } from './auth-page-container';\n\nexport const ConfirmChangeEmail: FC<{\n onOpenAffine: () => void;\n}> = ({ onOpenAffine }) => {\n const t = useI18n();\n\n return (\n \n \n \n );\n};\n","import type { HTMLAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nconst formatTime = (time: number): string => {\n const minutes = Math.floor(time / 60);\n const seconds = time % 60;\n\n const formattedMinutes = minutes.toString().padStart(2, '0');\n const formattedSeconds = seconds.toString().padStart(2, '0');\n\n return `${formattedMinutes}:${formattedSeconds}`;\n};\n\nexport const CountDownRender = forwardRef<\n HTMLDivElement,\n { timeLeft: number } & HTMLAttributes\n>(({ timeLeft, ...props }, ref) => {\n return (\n
\n {formatTime(timeLeft)}\n
\n );\n});\n\nCountDownRender.displayName = 'CountDownRender';\n","import type { FC, PropsWithChildren } from 'react';\n\nimport { Modal } from '../../ui/modal';\n\nexport type AuthModalProps = {\n open: boolean;\n setOpen: (value: boolean) => void;\n};\n\nexport const AuthModal: FC> = ({\n children,\n open,\n setOpen,\n}) => {\n return (\n \n {children}\n \n );\n};\n","import { Logo1Icon } from '@blocksuite/icons/rc';\nimport type { FC } from 'react';\n\nimport { modalHeaderWrapper } from './share.css';\nexport const ModalHeader: FC<{\n title: string;\n subTitle: string;\n}> = ({ title, subTitle }) => {\n return (\n
\n

\n \n {title}\n

\n

{subTitle}

\n
\n );\n};\n","import \"../component/src/components/auth-components/onboarding-page.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/auth-components/onboarding-page.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61W247aMBB95yuslSotD145XLI0q0p97TdUVeXEk8SLY0e2IdBq/72yc8EJsCxtXwCNx+eMz9x4+hntix1Z5QT9niGU0mxbaLWTDGdKKJ2gPdWPGNM85xJwcFxrXlF9bN3mLzOESuBFaRMUEbIvnYFxUwt6TFAu4OAM7hszriGzXMkEZUrsKulO1B50LlSToJIzBvJl9jZ7GkL7zqilmBtc0UwZDAIyq5X88mD1Dh5++MgrqgsuE7SpPVWqNAONNWV8ZwZrH2JGRfbo40QYRXF9mI8II49YU8a4LLBVdYIWqxahN+oWaDArw9s3Gcuz7dHZ/D1ypxBU8EJibqEyrTsGydwBbiDdcotpXWMNhb/GNC3GgQ9KNVwy1VzRavQycuFZ3lbQOvHijCgWIUKCFuS6AKmyVlUd2t9XVkC+9OR3yPm6M5bnDktakC7zIC3oM6VP5uFlG1If0IK4zygmExVWXc0dcMOZLRMUk6nL+p9jNTXNAKdgGwA5ZGQZt4pXXOK+nlfrKXvs2XMlLc5pxcUxQd/6J3qr4b9gkgNvL3E0PznZo4AESaUrKgZr07HGxGdWuLt9JMtpvTzfK8N5BxhLtZ1UZIdQaDczohHj5mOMWjUfoes7vD0qNZdbX9EB4WdPeKWeArFbqNFFsy/85YstoWnfLPNLEfQzr2/azQSdnkrgWrJTamB+ltc1Gb8v9UBdoa8X01LLTjyTyvgIdwDEAh0NiHycj8AR2hk0jByaGiV2FkazVioJ7WTiLhcY9iCt6e0BWh7sj/FcD5yKe8s4KJ4AprydE8utuJCU5wvNtprC89vwJY5H23pJugl+s7UX09Z+vaLJe/QHM/6v0DWzV6v73RVaRMini2Mx3Ir/Zatsr7aghYPFBjIl2bW7yZ4bboHdj/G1AsYpMpkGkIhKhh6DhRIRVzxzDzvZf8GSctvJjVy/rZwgb6H7auq+cv4+s6Pl1Uv9djOq53hzFlTasZyD/QFIn82rXQoAAA==\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var button = '_1vgu04fc';\nexport var buttonWrapper = '_1vgu04f8';\nexport var checkBox = '_1vgu04f9';\nexport var content = '_1vgu04f5';\nexport var disableButton = '_1vgu04fe';\nexport var footer = '_1vgu04f2';\nexport var header = '_1vgu04f1';\nexport var input = '_1vgu04fb';\nexport var label = '_1vgu04fa';\nexport var layout = '_1vgu04f0';\nexport var link = '_1vgu04fk';\nexport var linkGroup = '_1vgu04fj';\nexport var onboardingContainer = '_1vgu04f4';\nexport var openAFFiNEButton = '_1vgu04fd';\nexport var optionsWrapper = '_1vgu04f7';\nexport var question = '_1vgu04f6';\nexport var scrollableContainer = '_1vgu04f3';\nexport var thankContainer = '_1vgu04fg';\nexport var thankText = '_1vgu04fi';\nexport var thankTitle = '_1vgu04fh';\nexport var windowsAppButton = '_1vgu04ff';","import { ArrowRightSmallIcon } from '@blocksuite/icons/rc';\nimport clsx from 'clsx';\nimport { useMemo, useState } from 'react';\nimport type { Location } from 'react-router-dom';\n// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport useSWR from 'swr';\n\nimport { Button } from '../../ui/button';\nimport { Checkbox } from '../../ui/checkbox';\nimport { Divider } from '../../ui/divider';\nimport Input from '../../ui/input';\nimport { ScrollableContainer } from '../../ui/scrollbar';\nimport * as styles from './onboarding-page.css';\nimport type { User } from './type';\n\ntype QuestionOption = {\n type: 'checkbox' | 'input';\n label: string;\n value: string;\n};\n\ntype Question = {\n id?: string;\n question: string;\n options?: QuestionOption[];\n};\n\ntype QuestionnaireAnswer = {\n form: string;\n ask: string;\n answer: string[];\n};\n\nfunction getCallbackUrl(location: Location) {\n try {\n const url =\n location.state?.callbackURL ||\n new URLSearchParams(location.search).get('redirect_uri');\n if (typeof url === 'string' && url) {\n if (!url.startsWith('http:') && !url.startsWith('https:')) {\n return url;\n }\n // we will ignore host to avoid redirect hack\n const parsedUrl = new URL(url);\n return parsedUrl.pathname + parsedUrl.search;\n }\n } catch (_) {}\n return null;\n}\n\nexport const ScrollableLayout = ({\n headerItems,\n children,\n isMacosDesktop,\n isWindowsDesktop,\n}: {\n isMacosDesktop?: boolean;\n isWindowsDesktop?: boolean;\n headerItems?: React.ReactNode;\n children: React.ReactNode;\n}) => {\n return (\n
\n \n {headerItems}\n \n \n
{children}
\n
\n
\n
\n \n Terms of Conditions\n \n \n \n Privacy Policy\n \n
\n
\n
\n );\n};\n\nexport const OnboardingPage = ({\n user,\n onOpenAffine,\n}: {\n user: User;\n onOpenAffine: () => void;\n}) => {\n const location = useLocation();\n const navigate = useNavigate();\n const [questionIdx, setQuestionIdx] = useState(0);\n const { data: questions } = useSWR(\n '/api/worker/questionnaire',\n url => fetch(url).then(r => r.json()),\n { suspense: true, revalidateOnFocus: false }\n );\n const [options, setOptions] = useState(new Set());\n const [inputs, setInputs] = useState>({});\n\n const callbackUrl = useMemo(() => getCallbackUrl(location), [location]);\n const question = useMemo(\n () => questions?.[questionIdx],\n [questionIdx, questions]\n );\n const isMacosDesktop = environment.isDesktop && environment.isMacOs;\n const isWindowsDesktop = environment.isDesktop && environment.isWindows;\n\n if (!questions) {\n return null;\n }\n\n if (callbackUrl?.startsWith('/open-app/signin-redirect')) {\n const url = new URL(callbackUrl, window.location.origin);\n url.searchParams.set('next', 'onboarding');\n console.log('redirect to', url.toString());\n window.location.assign(url.toString());\n return null;\n }\n\n if (question) {\n return (\n setQuestionIdx(questions.length)}\n >\n Skip\n \n }\n isMacosDesktop={isMacosDesktop}\n isWindowsDesktop={isWindowsDesktop}\n >\n
\n

{question.question}

\n
\n {question.options &&\n question.options.length > 0 &&\n question.options.map((option, optionIndex) => {\n if (option.type === 'checkbox') {\n return (\n {\n setOptions(set => {\n if (e.target.checked) {\n set.add(option.value);\n } else {\n set.delete(option.value);\n }\n return new Set(set);\n });\n }}\n label={option.label}\n />\n );\n } else if (option.type === 'input') {\n return (\n \n setInputs(prev => ({ ...prev, [option.value]: value }))\n }\n />\n );\n }\n return null;\n })}\n
\n
\n setQuestionIdx(questions.length)}\n >\n Skip\n \n {\n if (question.id && user?.id) {\n const answer: QuestionnaireAnswer = {\n form: user.id,\n ask: question.id,\n answer: [\n ...Array.from(options),\n ...Object.entries(inputs).map(\n ([key, value]) => `${key}:${value}`\n ),\n ],\n };\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetch('/api/worker/questionnaire', {\n method: 'POST',\n body: JSON.stringify(answer),\n }).finally(() => {\n setOptions(new Set());\n setInputs({});\n setQuestionIdx(questionIdx + 1);\n });\n } else {\n setQuestionIdx(questionIdx + 1);\n }\n }}\n suffix={}\n >\n {questionIdx === 0 ? 'start' : 'Next'}\n \n
\n
\n \n );\n }\n return (\n \n
\n

Thank you!

\n

\n We will continue to enhance our products based on your feedback. Thank\n you once again for your supports.\n

\n {\n if (callbackUrl) {\n navigate(callbackUrl);\n } else {\n onOpenAffine();\n }\n }}\n suffix={}\n >\n Get Started\n \n
\n \n );\n};\n","import type { PasswordLimitsFragment } from '@affine/graphql';\nimport { useI18n } from '@affine/i18n';\nimport type { FC } from 'react';\nimport { useCallback, useState } from 'react';\n\nimport { Button } from '../../ui/button';\nimport { notify } from '../../ui/notification';\nimport { AuthPageContainer } from './auth-page-container';\nimport { SetPassword } from './set-password';\n\nexport const SetPasswordPage: FC<{\n passwordLimits: PasswordLimitsFragment;\n onSetPassword: (password: string) => Promise;\n onOpenAffine: () => void;\n}> = ({ passwordLimits, onSetPassword: propsOnSetPassword, onOpenAffine }) => {\n const t = useI18n();\n const [hasSetUp, setHasSetUp] = useState(false);\n\n const onSetPassword = useCallback(\n (passWord: string) => {\n propsOnSetPassword(passWord)\n .then(() => setHasSetUp(true))\n .catch(e =>\n notify.error({\n title: t['com.arms.auth.password.set-failed'](),\n message: String(e),\n })\n );\n },\n [propsOnSetPassword, t]\n );\n\n return (\n \n {hasSetUp ? (\n \n ) : (\n \n )}\n \n );\n};\n","import type { PropsWithChildren } from 'react';\n\nimport { signInPageContainer } from './share.css';\nexport const SignInPageContainer = ({ children }: PropsWithChildren) => {\n return
{children}
;\n};\n","import { useI18n } from '@affine/i18n';\nimport type { FC } from 'react';\n\nimport { Button } from '../../ui/button';\nimport { AuthPageContainer } from './auth-page-container';\n\nexport const SignInSuccessPage: FC<{\n onOpenAffine: () => void;\n}> = ({ onOpenAffine }) => {\n const t = useI18n();\n return (\n \n \n \n );\n};\n","import type { PasswordLimitsFragment } from '@affine/graphql';\nimport { useI18n } from '@affine/i18n';\nimport type { FC } from 'react';\nimport { useCallback, useState } from 'react';\n\nimport { Button } from '../../ui/button';\nimport { notify } from '../../ui/notification';\nimport { AuthPageContainer } from './auth-page-container';\nimport { SetPassword } from './set-password';\n\nexport const SignUpPage: FC<{\n passwordLimits: PasswordLimitsFragment;\n user: { email?: string };\n onSetPassword: (password: string) => Promise;\n openButtonText?: string;\n onOpenAffine: () => void;\n}> = ({\n passwordLimits,\n user: { email },\n onSetPassword: propsOnSetPassword,\n onOpenAffine,\n openButtonText,\n}) => {\n const t = useI18n();\n const [hasSetUp, setHasSetUp] = useState(false);\n\n const onSetPassword = useCallback(\n (passWord: string) => {\n propsOnSetPassword(passWord)\n .then(() => setHasSetUp(true))\n .catch(e =>\n notify.error({\n title: t['com.arms.auth.password.set-failed'](),\n message: String(e),\n })\n );\n },\n [propsOnSetPassword, t]\n );\n const onLater = useCallback(() => {\n setHasSetUp(true);\n }, []);\n\n return (\n \n {t['com.arms.auth.page.sent.email.subtitle']({\n min: String(passwordLimits.minLength),\n max: String(passwordLimits.maxLength),\n })}\n {email}\n \n )\n }\n >\n {hasSetUp ? (\n \n ) : (\n \n )}\n \n );\n};\n","export const emailRegex =\n /^(?:(?:[^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@(?:(?:\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|((?:[a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n","import { useI18n } from '@affine/i18n';\n\nimport type { ConfirmModalProps } from '../../ui/modal';\nimport { ConfirmModal } from '../../ui/modal';\n\nexport const PublicLinkDisableModal = (props: ConfirmModalProps) => {\n const t = useI18n();\n\n return (\n \n );\n};\n","import { atom } from 'jotai';\nimport { nanoid } from 'nanoid';\n\nexport type GlobalLoadingEvent = {\n key?: string;\n};\n\nconst globalLoadingEventsBaseAtom = atom([]);\n\nexport const globalLoadingEventsAtom = atom(get =>\n get(globalLoadingEventsBaseAtom)\n);\n\nexport const resolveGlobalLoadingEventAtom = atom(\n null,\n (_, set, key: string) => {\n set(globalLoadingEventsBaseAtom, globalLoadingEvent =>\n globalLoadingEvent.filter(notification => notification.key !== key)\n );\n }\n);\n\nexport const pushGlobalLoadingEventAtom = atom<\n null,\n [GlobalLoadingEvent],\n void\n>(null, (_, set, newGlobalLoadingEvent) => {\n newGlobalLoadingEvent.key = newGlobalLoadingEvent.key || nanoid();\n\n set(globalLoadingEventsBaseAtom, globalLoadingEvents => [\n // push to the top\n { ...newGlobalLoadingEvent },\n ...globalLoadingEvents,\n ]);\n});\n","import { useAtomValue } from 'jotai';\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { Loading } from '../../ui/loading';\nimport * as styles from './index.css';\nimport { globalLoadingEventsAtom } from './index.jotai';\n\nexport {\n type GlobalLoadingEvent,\n pushGlobalLoadingEventAtom,\n resolveGlobalLoadingEventAtom,\n} from './index.jotai';\n\nexport function GlobalLoading(): ReactNode {\n const globalLoadingEvents = useAtomValue(globalLoadingEventsAtom);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (globalLoadingEvents.length) {\n setLoading(true);\n } else {\n setLoading(false);\n }\n }, [globalLoadingEvents]);\n\n if (!globalLoadingEvents.length) {\n return null;\n }\n return (\n
\n \n
\n );\n}\n","import \"../component/src/components/global-loading/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/global-loading/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xeGhpM2NsMCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIGJvdHRvbTogMDsKICByaWdodDogMTAwJTsKICB6LWluZGV4OiA1OwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFmZmluZS1iYWNrZ3JvdW5kLW1vZGFsLWNvbG9yKTsKICBvcGFjaXR5OiAwOwogIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzOwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXByb2Nlc3NpbmctY29sb3IpOwp9Ci5fMXhoaTNjbDBbZGF0YS1sb2FkaW5nPSJ0cnVlIl0gewogIHJpZ2h0OiAwOwogIG9wYWNpdHk6IDE7Cn0KQG1lZGlhIHByaW50IHsKICAuXzF4aGkzY2wwIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICB6LWluZGV4OiAtMTsKICB9Cn0=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var globalLoadingWrapperStyle = '_1xhi3cl0';","import { Skeleton } from '../../ui/skeleton';\nimport {\n blockSuiteEditorHeaderStyle,\n blockSuiteEditorStyle,\n pageDetailSkeletonStyle,\n pageDetailSkeletonTitleStyle,\n} from './index.css';\n\nexport const EditorLoading = () => {\n return (\n
\n \n \n
\n );\n};\n\nexport const PageDetailSkeleton = () => {\n return (\n
\n
\n \n
\n );\n};\n","import \"../component/src/components/page-detail-skeleton/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/page-detail-skeleton/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xdDltZ3NzMCB7CiAgcGFkZGluZzogMCAyMHB4Owp9Ci5fMXQ5bWdzczEgewogIGhlaWdodDogNTJweDsKICB3aWR0aDogMTAwJTsKfQouXzF0OW1nc3MyIHsKICBtYXgtd2lkdGg6IHZhcigtLWFmZmluZS1lZGl0b3Itd2lkdGgpOwogIG1hcmdpbjogMCAycmVtOwogIHBhZGRpbmc6IDAgMjRweDsKfQouXzF0OW1nc3MzIHsKICBtYXJnaW4tdG9wOiA0MHB4OwogIG1hcmdpbi1ib3R0b206IDQwcHg7Cn0=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var blockSuiteEditorHeaderStyle = '_1t9mgss3';\nexport var blockSuiteEditorStyle = '_1t9mgss2';\nexport var pageDetailSkeletonStyle = '_1t9mgss0';\nexport var pageDetailSkeletonTitleStyle = '_1t9mgss1';","import { assertExists } from '@blocksuite/global/utils';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useTransition } from 'react-transition-state';\n\nimport * as styles from './resize-panel.css';\n\nexport interface ResizeHandleProps\n extends React.HtmlHTMLAttributes {\n resizing: boolean;\n open: boolean;\n minWidth: number;\n maxWidth: number;\n resizeHandlePos: 'left' | 'right';\n resizeHandleOffset?: number;\n resizeHandleVerticalPadding?: number;\n onOpen: (open: boolean) => void;\n onResizing: (resizing: boolean) => void;\n onWidthChange: (width: number) => void;\n}\n\nexport interface ResizePanelProps\n extends React.HtmlHTMLAttributes {\n resizing: boolean;\n open: boolean;\n floating?: boolean;\n minWidth: number;\n maxWidth: number;\n resizeHandlePos: 'left' | 'right';\n resizeHandleOffset?: number;\n resizeHandleVerticalPadding?: number;\n enableAnimation?: boolean;\n width: number;\n unmountOnExit?: boolean;\n onOpen: (open: boolean) => void;\n onResizing: (resizing: boolean) => void;\n onWidthChange: (width: number) => void;\n}\n\nconst ResizeHandle = ({\n className,\n resizing,\n minWidth,\n maxWidth,\n resizeHandlePos,\n resizeHandleOffset,\n resizeHandleVerticalPadding,\n open,\n onOpen,\n onResizing,\n onWidthChange,\n ...rest\n}: ResizeHandleProps) => {\n const ref = useRef(null);\n const onResizeStart = useCallback(() => {\n let resized = false;\n const panelContainer = ref.current?.parentElement;\n assertExists(\n panelContainer,\n 'parent element not found for resize indicator'\n );\n\n const { left: anchorLeft, right: anchorRight } =\n panelContainer.getBoundingClientRect();\n\n function onMouseMove(e: MouseEvent) {\n e.preventDefault();\n if (!panelContainer) return;\n const newWidth = Math.min(\n maxWidth,\n Math.max(\n resizeHandlePos === 'right'\n ? e.clientX - anchorLeft\n : anchorRight - e.clientX,\n minWidth\n )\n );\n onWidthChange(newWidth);\n onResizing(true);\n resized = true;\n }\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener(\n 'mouseup',\n () => {\n // if not resized, toggle sidebar\n if (!resized) {\n onOpen(false);\n }\n onResizing(false);\n document.removeEventListener('mousemove', onMouseMove);\n },\n { once: true }\n );\n }, [maxWidth, resizeHandlePos, minWidth, onWidthChange, onResizing, onOpen]);\n\n return (\n \n
\n
\n );\n};\n\n// delay initial animation to avoid flickering\nfunction useEnableAnimation() {\n const [enable, setEnable] = useState(false);\n useEffect(() => {\n window.setTimeout(() => {\n setEnable(true);\n }, 500);\n }, []);\n return enable;\n}\n\nconst animationTimeout = 300;\n\nexport const ResizePanel = forwardRef(\n function ResizePanel(\n {\n children,\n className,\n resizing,\n minWidth,\n maxWidth,\n width,\n floating,\n enableAnimation: _enableAnimation = true,\n open,\n unmountOnExit,\n onOpen,\n onResizing,\n onWidthChange,\n resizeHandlePos,\n resizeHandleOffset,\n resizeHandleVerticalPadding,\n ...rest\n },\n ref\n ) {\n const enableAnimation = useEnableAnimation() && _enableAnimation;\n const safeWidth = Math.min(maxWidth, Math.max(minWidth, width));\n const [{ status }, toggle] = useTransition({\n timeout: animationTimeout,\n });\n useLayoutEffect(() => {\n toggle(open);\n }, [open]);\n return (\n \n {!(status === 'exited' && unmountOnExit !== false) && children}\n \n
\n );\n }\n);\n","import \"../component/src/components/resize-panel/resize-panel.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/resize-panel/resize-panel.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA51U0Y7aMBB85ytWSCdBdUYJvVBdEFI/o1J1D0uyge05dmQ7HFDx71XswCUEqNqXKNm1Z2Z3ZzM7Zq+6en2B3yMAIcJXlMI8WVT7ZScWpxA135W27FirFAxJdLyjJvrBudumsEMzuYBMm0TJStxNbok3W5dCHEVPy9FpNGvF/MzRoWArCqnRsdqsxs7UNH7zKj8V4NpqWbuuggxlNukzeaqjYJXTPoWXIZGuSPUYStyfRSe3lIULBUpL47cQ2qLKJYmzttXYNKVd8MyGlZBUuJsK4QuIePp/PA1on8aEpv4DDylcSxKouMSA2mmGM6jODe8U0hvn1ynMosQ+9yTcPuH7eis1lPXJLKxDR6sx7dlR3grbseU1S3aHFLac56Q6EMmVVbpm7dsOQO/IFFJ/pIC10x2QxQO/tV3uFhJ7pzld9cNzH15r53R5K9M6LW4X7uLUeHnufqFNmYZXiY5+TJLoKYBi9r4xula5yLTUpj1UoSHlfGkVZr5BfndztpXEQwqFJM/1q7aOi4PItHKkGtOQcmSaVFYb2wBmWgpDlo+0vDJDiw3RLE4sEFpqXrtzXIQ5+uudLX6Gcz7dNr33Xb4ojYcAvT3wpy+VKK3o3oXmeX1+LXX2PrzwaK3C2g4H3TogeObepEQY1YXv2wNLXfuyNcY8+GKtTU5GGMy5tp/RgQOCUCwKViQqwyWaQ8hNryeIUkI0m4fhCVZC1+5+KdEsqfbTv48XeqW2RbzcLMJHT6PvJeWMMOn8dxdRVO2nHqG3jIPRA5xGpz9poejJxgYAAA==\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var animationTimeout = 'var(--zc9op93)';\nexport var panelContent = 'zc9op95';\nexport var panelWidthVar = 'var(--zc9op90)';\nexport var resizeHandleContainer = 'zc9op96';\nexport var resizeHandleOffsetVar = 'var(--zc9op91)';\nexport var resizeHandleVerticalPadding = 'var(--zc9op92)';\nexport var resizerInner = 'zc9op97';\nexport var root = 'zc9op94';","import {\n useLiveData,\n useService,\n type WorkspaceMetadata,\n WorkspacesService,\n} from '@toeverything/infra';\nimport { useEffect, useLayoutEffect, useState } from 'react';\n\nimport { Avatar, type AvatarProps } from '../../ui/avatar';\n\nconst cache = new Map();\n\n/**\n * workspace avatar component with automatic cache, and avoid flashing\n */\nexport const WorkspaceAvatar = ({\n meta,\n ...otherProps\n}: { meta: WorkspaceMetadata } & AvatarProps) => {\n const workspacesService = useService(WorkspacesService);\n\n const profile = workspacesService.getProfile(meta);\n\n useEffect(() => {\n profile.revalidate();\n }, [meta, profile]);\n\n const avatarKey = useLiveData(profile.profile$.map(v => v?.avatar));\n\n const [downloadedAvatar, setDownloadedAvatar] = useState<\n { imageBitmap: ImageBitmap; key: string } | undefined\n >(cache.get(meta.id));\n\n useLayoutEffect(() => {\n if (!avatarKey || !meta) {\n setDownloadedAvatar(undefined);\n return;\n }\n\n let canceled = false;\n workspacesService\n .getWorkspaceBlob(meta, avatarKey)\n .then(async blob => {\n if (blob && !canceled) {\n const image = document.createElement('img');\n const objectUrl = URL.createObjectURL(blob);\n image.src = objectUrl;\n await image.decode();\n // limit the size of the image data to reduce memory usage\n const hRatio = 128 / image.naturalWidth;\n const vRatio = 128 / image.naturalHeight;\n const ratio = Math.min(hRatio, vRatio);\n const imageBitmap = await createImageBitmap(image, {\n resizeWidth: image.naturalWidth * ratio,\n resizeHeight: image.naturalHeight * ratio,\n });\n URL.revokeObjectURL(objectUrl);\n setDownloadedAvatar(prev => {\n if (prev?.key === avatarKey) {\n return prev;\n }\n return { imageBitmap, key: avatarKey };\n });\n cache.set(meta.id, {\n imageBitmap,\n key: avatarKey,\n });\n }\n })\n .catch(err => {\n console.error('get workspace blob error: ' + err);\n });\n\n return () => {\n canceled = true;\n };\n }, [meta, workspacesService, avatarKey]);\n\n return ;\n};\n","import { useLayoutEffect, useRef } from 'react';\n\nexport const useAutoFocus = (\n autoFocus?: boolean\n) => {\n const ref = useRef(null);\n\n useLayoutEffect(() => {\n if (ref.current && autoFocus) {\n // to avoid clicking on something focusable(e.g MenuItem),\n // then the input will not be focused\n setTimeout(() => {\n ref.current?.focus();\n }, 0);\n }\n }, [autoFocus]);\n\n return ref;\n};\n\nexport const useAutoSelect = (\n autoSelect?: boolean\n) => {\n const ref = useAutoFocus(autoSelect);\n\n useLayoutEffect(() => {\n if (ref.current && autoSelect) {\n ref.current?.select();\n }\n }, [autoSelect, ref]);\n\n return ref;\n};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport type React from 'react';\n\nconst DEV_MODE = process.env.NODE_ENV !== 'production';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DistributiveOmit = T extends any\n ? K extends keyof T\n ? Omit\n : T\n : T;\ntype PropsWithoutRef = DistributiveOmit;\n\n/**\n * Creates a type to be used for the props of a web component used directly in\n * React JSX.\n *\n * Example:\n *\n * ```ts\n * declare module \"react\" {\n * namespace JSX {\n * interface IntrinsicElements {\n * 'x-foo': WebComponentProps;\n * }\n * }\n * }\n * ```\n */\nexport type WebComponentProps = React.DetailedHTMLProps<\n React.HTMLAttributes,\n I\n> &\n ElementProps;\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype EmptyObject = {};\n\n/**\n * Type of the React component wrapping the web component. This is the return\n * type of `createComponent`.\n */\nexport type ReactWebComponent<\n I extends HTMLElement,\n E extends EventNames = EmptyObject,\n> = React.ForwardRefExoticComponent<\n // TODO(augustjk): Remove and use `React.PropsWithoutRef` when\n // https://github.com/preactjs/preact/issues/4124 is fixed.\n PropsWithoutRef> & React.RefAttributes\n>;\n\n// Props derived from custom element class. Currently has limitations of making\n// all properties optional and also surfaces life cycle methods in autocomplete.\n// TODO(augustjk) Consider omitting keyof LitElement to remove \"internal\"\n// lifecycle methods or allow user to explicitly provide props.\ntype ElementProps = Partial>;\n\n// Acceptable props to the React component.\ntype ComponentProps = Omit<\n React.HTMLAttributes,\n // Prefer type of provided event handler props or those on element over\n // built-in HTMLAttributes\n keyof E | keyof ElementProps\n> &\n EventListeners &\n ElementProps;\n\n/**\n * Type used to cast an event name with an event type when providing the\n * `events` option to `createComponent` for better typing of the event handler\n * prop.\n *\n * Example:\n *\n * ```ts\n * const FooComponent = createComponent({\n * ...\n * events: {\n * onfoo: 'foo' as EventName,\n * }\n * });\n * ```\n *\n * `onfoo` prop will have the type `(e: FooEvent) => void`.\n */\nexport type EventName = string & {\n __eventType: T;\n};\n\n// A key value map matching React prop names to event names.\ntype EventNames = Record;\n\n// A map of expected event listener types based on EventNames.\ntype EventListeners = {\n [K in keyof R]?: R[K] extends EventName\n ? (e: R[K]['__eventType']) => void\n : (e: Event) => void;\n};\n\nexport interface Options<\n I extends HTMLElement,\n E extends EventNames = EmptyObject,\n> {\n react: typeof React;\n tagName?: string; // default to `div`\n elementClass: Constructor;\n events?: E;\n displayName?: string;\n}\n\ntype Constructor = { new (): T };\n\nconst reservedReactProperties = new Set([\n 'children',\n 'localName',\n 'ref',\n 'style',\n 'className',\n]);\n\nconst listenedEvents = new WeakMap>();\n\n/**\n * Adds an event listener for the specified event to the given node. In the\n * React setup, there should only ever be one event listener. Thus, for\n * efficiency only one listener is added and the handler for that listener is\n * updated to point to the given listener function.\n */\nconst addOrUpdateEventListener = (\n node: Element,\n event: string,\n listener: (event?: Event) => void\n) => {\n let events = listenedEvents.get(node);\n if (events === undefined) {\n listenedEvents.set(node, (events = new Map()));\n }\n let handler = events.get(event);\n if (listener !== undefined) {\n // If necessary, add listener and track handler\n if (handler === undefined) {\n events.set(event, (handler = { handleEvent: listener }));\n node.addEventListener(event, handler);\n // Otherwise just update the listener with new value\n } else {\n handler.handleEvent = listener;\n }\n // Remove listener if one exists and value is undefined\n } else if (handler !== undefined) {\n events.delete(event);\n node.removeEventListener(event, handler);\n }\n};\n\n/**\n * Sets properties and events on custom elements. These properties and events\n * have been pre-filtered so we know they should apply to the custom element.\n */\nconst setProperty = (\n node: E,\n name: string,\n value: unknown,\n old: unknown,\n events?: EventNames\n) => {\n const event = events?.[name];\n // Dirty check event value.\n if (event !== undefined && value !== old) {\n addOrUpdateEventListener(node, event, value as (e?: Event) => void);\n return;\n }\n // But don't dirty check properties; elements are assumed to do this.\n node[name as keyof E] = value as E[keyof E];\n\n // This block is to replicate React's behavior for attributes of native\n // elements where `undefined` or `null` values result in attributes being\n // removed.\n // https://github.com/facebook/react/blob/899cb95f52cc83ab5ca1eb1e268c909d3f0961e7/packages/react-dom-bindings/src/client/DOMPropertyOperations.js#L107-L141\n //\n // It's only needed here for native HTMLElement properties that reflect\n // attributes of the same name but don't have that behavior like \"id\" or\n // \"draggable\".\n if (\n (value === undefined || value === null) &&\n name in HTMLElement.prototype\n ) {\n node.removeAttribute(name);\n }\n};\n\n/**\n * Creates a React component for a custom element. Properties are distinguished\n * from attributes automatically, and events can be configured so they are added\n * to the custom element as event listeners.\n *\n * note from pengx17:\n * This is a workaround for https://github.com/lit/lit/issues/4435\n *\n * Instead of directly using tag names of the custom elements, we create instance and then\n * append to the container instead. An issue in this workaround is that the custom element\n * will always be wrapped in an additional tag (the container, e.g. a div).\n *\n * @param options An options bag containing the parameters needed to generate a\n * wrapped web component.\n *\n * @param options.react The React module, typically imported from the `react`\n * npm package.\n * @param options.tagName The custom element tag name registered via\n * `customElements.define`.\n * @param options.elementClass The custom element class registered via\n * `customElements.define`.\n * @param options.events An object listing events to which the component can\n * listen. The object keys are the event property names passed in via React\n * props and the object values are the names of the corresponding events\n * generated by the custom element. For example, given `{onactivate:\n * 'activate'}` an event function may be passed via the component's `onactivate`\n * prop and will be called when the custom element fires its `activate` event.\n * @param options.displayName A React component display name, used in debugging\n * messages. Default value is inferred from the name of custom element class\n * registered via `customElements.define`.\n */\nexport const createComponent = <\n I extends HTMLElement,\n E extends EventNames = EmptyObject,\n>({\n react: React,\n tagName = 'div',\n elementClass,\n events,\n displayName,\n}: Options): ReactWebComponent => {\n const eventProps = new Set(Object.keys(events ?? {}));\n\n if (DEV_MODE) {\n for (const p of reservedReactProperties) {\n if (p in elementClass.prototype && !(p in HTMLElement.prototype)) {\n // Note, this effectively warns only for `ref` since the other\n // reserved props are on HTMLElement.prototype. To address this\n // would require crawling down the prototype, which doesn't feel worth\n // it since implementing these properties on an element is extremely\n // rare.\n console.warn(\n `${tagName} contains property ${p} which is a React reserved ` +\n `property. It will be used by React and not set on the element.`\n );\n }\n }\n }\n\n type Props = ComponentProps;\n\n const ReactComponent = React.forwardRef((props, ref) => {\n const containerRef = React.useRef(null);\n const prevPropsRef = React.useRef(null);\n const elementRef = React.useRef(null);\n\n // Props to be passed to React.createElement\n const reactProps: Record = {\n 'data-lit-react-wrapper': elementClass.name,\n };\n const elementProps: Record = {};\n\n if (elementRef.current === null) {\n const element = new elementClass();\n elementRef.current = element;\n if (typeof ref === 'function') {\n ref(elementRef.current);\n } else if (ref) {\n ref.current = element;\n }\n }\n\n const element = elementRef.current;\n\n for (const [k, v] of Object.entries(props)) {\n if (reservedReactProperties.has(k)) {\n reactProps[k] = v;\n continue;\n }\n\n if (eventProps.has(k) || k in elementClass.prototype) {\n elementProps[k] = v;\n continue;\n }\n\n reactProps[k] = v;\n }\n\n // This one has no dependency array so it'll run on every re-render.\n React.useLayoutEffect(() => {\n if (elementRef.current === null) {\n return;\n }\n for (const prop in elementProps) {\n setProperty(\n elementRef.current,\n prop,\n props[prop],\n prevPropsRef.current ? prevPropsRef.current[prop] : undefined,\n events\n );\n }\n // Note, the spirit of React might be to \"unset\" any old values that\n // are no longer included; however, there's no reasonable value to set\n // them to so we just leave the previous state as is.\n\n prevPropsRef.current = props;\n });\n\n React.useLayoutEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n container.append(element);\n return () => {\n element.remove();\n };\n }, [element]);\n\n return React.createElement(tagName, {\n ...reactProps,\n ref: React.useCallback(\n (node: HTMLElement) => {\n containerRef.current = node;\n },\n [containerRef]\n ),\n });\n });\n\n ReactComponent.displayName = displayName ?? elementClass.name;\n\n return ReactComponent;\n};\n","import { html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { nanoid } from 'nanoid';\nimport { useCallback, useMemo, useState } from 'react';\nimport ReactDOM from 'react-dom';\n\ntype PortalEvent = {\n name: 'connectedCallback' | 'disconnectedCallback' | 'willUpdate';\n target: LitReactPortal;\n previousPortalId?: string;\n};\n\ntype PortalListener = (event: PortalEvent) => void;\nconst listeners: Set = new Set();\n\nexport function createLitPortalAnchor(callback: (event: PortalEvent) => void) {\n const id = nanoid();\n // todo(@Peng): clean up listeners?\n listeners.add(event => {\n if (event.target.portalId !== id) {\n return;\n }\n callback(event);\n });\n return html``;\n}\n\nexport const LIT_REACT_PORTAL = 'lit-react-portal';\n\n@customElement(LIT_REACT_PORTAL)\nclass LitReactPortal extends LitElement {\n portalId: string = '';\n\n static override get properties() {\n return {\n portalId: { type: String },\n };\n }\n\n // do not enable shadow root\n override createRenderRoot() {\n return this;\n }\n\n override connectedCallback() {\n listeners.forEach(l =>\n l({\n name: 'connectedCallback',\n target: this,\n })\n );\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n listeners.forEach(l =>\n l({\n name: 'disconnectedCallback',\n target: this,\n })\n );\n }\n\n override willUpdate(changedProperties: any) {\n super.willUpdate(changedProperties);\n listeners.forEach(l =>\n l({\n name: 'willUpdate',\n target: this,\n previousPortalId: changedProperties.get('portalId'),\n })\n );\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [LIT_REACT_PORTAL]: LitReactPortal;\n }\n}\n\nexport type ElementOrFactory = React.ReactElement | (() => React.ReactElement);\n\ntype LitPortal = {\n id: string;\n portal: React.ReactPortal;\n};\n\n// returns a factory function that renders a given element to a lit template\nexport const useLitPortalFactory = () => {\n const [portals, setPortals] = useState([]);\n\n return [\n useCallback(\n (elementOrFactory: React.ReactElement | (() => React.ReactElement)) => {\n const element =\n typeof elementOrFactory === 'function'\n ? elementOrFactory()\n : elementOrFactory;\n return createLitPortalAnchor(event => {\n const portalId = event.target.portalId;\n setPortals(portals => {\n const newPortals = portals.filter(\n p => p.id !== event.previousPortalId && p.id !== portalId\n );\n if (event.name !== 'disconnectedCallback') {\n newPortals.push({\n id: portalId,\n portal: ReactDOM.createPortal(element, event.target),\n });\n }\n return newPortals;\n });\n });\n },\n [setPortals]\n ),\n portals,\n ] as const;\n};\n\n// render a react element to a lit template\nexport const useLitPortal = (\n elementOrFactory: React.ReactElement | (() => React.ReactElement)\n) => {\n const [anchor, setAnchor] = useState();\n const template = useMemo(\n () =>\n createLitPortalAnchor(event => {\n if (event.name !== 'disconnectedCallback') {\n setAnchor(event.target as HTMLElement);\n } else {\n setAnchor(undefined);\n }\n }),\n []\n );\n\n const element = useMemo(\n () =>\n typeof elementOrFactory === 'function'\n ? elementOrFactory()\n : elementOrFactory,\n [elementOrFactory]\n );\n return {\n template,\n portal: anchor ? ReactDOM.createPortal(element, anchor) : undefined,\n };\n};\n","import { LitElement, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport React, { createElement, type ReactNode } from 'react';\n\nimport { createComponent } from './create-component';\n\n@customElement('affine-lit-template-wrapper')\nexport class LitTemplateWrapper extends LitElement {\n static override get properties() {\n return {\n template: { type: Object },\n };\n }\n template: TemplateResult | null = null;\n // do not enable shadow root\n override createRenderRoot() {\n return this;\n }\n\n override render() {\n return this.template;\n }\n}\n\nconst TemplateWrapper = createComponent({\n elementClass: LitTemplateWrapper,\n react: React,\n});\n\nexport const toReactNode = (template?: TemplateResult | string): ReactNode => {\n if (!template) return null;\n return typeof template === 'string'\n ? template\n : createElement(TemplateWrapper, { template });\n};\n","import \"../component/src/ui/date-picker/calendar/calendar.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/date-picker/calendar/calendar.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61W227jOAx9z1cIARZoZ1aF4yZpVsV8SVEMaIuONZUlryTnMov594HlSyzHaZLdRR4Ci9LhIXVI6un7BlWMGJN/ZoRkEg+MLF5nv2ZPreHZG/aCu5yRaGhZektaGasNI6UWyqF5nRFSaiuc0IoRgxKc2GG9us+FQ2pLSJERpfcGygCNsQQzbfBPMliCzKFp/GjlUDlG5vPQByRWy8p5H0JZdJ4mIT+pULwNh3T0KO5QOVsTUP5Eog1HQw1wUVlGhMrRCDckthqycAZU5ziB9GNrdKU4TbXUhkRPsSUIFsPjud6hGYKMDzKyA/NAKWSZUEj9/sbyOERadxnyILqEVLhjG2yiD9TmwPWekcj/4vIQwiYGOodj2AE1nw5GFuWBWC0FbyIuwaBy4alMp5WlO2FFIvECtafVp2fGfifTcYn3yxsXFhKJ/P0kmZc3MAJoZ/k2d6bC+XugVKUdBSn1HvmrF9a5T4cH14FMuP7L43FhSwlH5qumRgIptooKh4VlJMWuHH5U1onsSHsFn0yFULQtrXhTepACDt3Sat0s9VVJSGXRUIsSU9dp+EQLPK0BZgoyfaiByRfyQr62Mba7o0fyhayDuJLpuOp/yoXBtBF+qmVVqNqyhZKFqIsAML0jUadT3J/KUWxzxwhUTg+tOGpIp52ZcF2SX8/d/pq9cXBAhaUSM9dLI8Q9uywfvHVgXHM7ZiuUB2CExssyBDY1kbuQUfEBrmkCoc/RELjQHL/NC61cPn8nt0QR0nxe34D2GfURu+XyHO+IYP4VueXmOtgd3FZxA9dtykIFCiXr+u6E6D86+cRxW25aOWrFTxw1hWa9eOz37NuD68jLsATOhdoy33rb0h2Nl2WzemUUbu9qL74Gl2HU+bBGNqFNNJP+3iCXTZCTGesjj7oIp+OearUi1Wqixf74v1vRx3/r2f6yaIJuj3jBXxT4k9fTfLDnaV41ab44lCymWnEwxz5np/4Xj266CPro2KqGGllE0R9DqO57dI+b2yvkYgSlEUXI/1xnA5Z9E3CawzEY6FNFeM8LosWu3wNpZeoXDvVtMXw1TAFKSD/oIppCa4bz6Olx5cUXErxdEWVlkPpmEjDR3qcX6GITVCh1ul887f870MnzqJeY60JOwOKNHWMMflPSWPgK/URcWJQ5WGE/TebJfdWOkP7JtYiayfsb976gwhcNAAA=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var basicCell = '_8en2ee9';\nexport var basicInteractive = '_8en2ee4';\nexport var calendarHeader = '_8en2eec';\nexport var calendarHeaderTriggerButton = '_8en2eef _8en2ee6 _8en2ee4 _8en2ee5 _8en2ee7';\nexport var calendarRoot = '_8en2eea';\nexport var calendarWrapper = '_8en2eeb';\nexport var decadeViewBody = '_8en2eeo _8en2eej';\nexport var decadeViewBodyCell = '_8en2eeu _8en2eeq _8en2eem _8en2ee9';\nexport var decadeViewBodyCellInner = '_8en2eer _8en2een _8en2ee6 _8en2ee4 _8en2ee5 _8en2ee7';\nexport var decadeViewRow = '_8en2eek';\nexport var disabledInteractive = '_8en2ee7 _8en2ee4';\nexport var focusInteractive = '_8en2ee6 _8en2ee4';\nexport var headerLayoutCell = '_8en2eed _8en2ee9';\nexport var headerLayoutCellOrigin = '_8en2eee';\nexport var headerNavButtons = '_8en2eeg';\nexport var headerNavGapFallback = '_8en2eeh';\nexport var headerNavToday = '_8en2eei _8en2ee6 _8en2ee4 _8en2ee5 _8en2ee7';\nexport var hoverInteractive = '_8en2ee5 _8en2ee4';\nexport var interactive = '_8en2ee6 _8en2ee4 _8en2ee5 _8en2ee7';\nexport var monthViewBody = '_8en2eej';\nexport var monthViewBodyCell = '_8en2eem _8en2ee9';\nexport var monthViewBodyCellInner = '_8en2een _8en2ee6 _8en2ee4 _8en2ee5 _8en2ee7';\nexport var monthViewHeaderCell = '_8en2eel _8en2ee9';\nexport var monthViewRow = '_8en2eek';\nexport var spacer = '_8en2ee2';\nexport var spacerX = '_8en2ee3 _8en2ee2';\nexport var vars = {gapX:'var(--_8en2ee0)',gapY:'var(--_8en2ee1)'};\nexport var yearViewBody = '_8en2eeo _8en2eej';\nexport var yearViewBodyCell = '_8en2eeq _8en2eem _8en2ee9';\nexport var yearViewBodyCellInner = '_8en2eer _8en2een _8en2ee6 _8en2ee4 _8en2ee5 _8en2ee7';\nexport var yearViewRow = '_8en2eek';","import dayjs from 'dayjs';\n\nexport const DATE_MIN = '1970-01-01';\nexport const DATE_MAX = '2099-12-31';\n\nexport const YEAR_MIN = dayjs(DATE_MIN).year();\nexport const YEAR_MAX = dayjs(DATE_MAX).year();\n","import { ArrowLeftSmallIcon, ArrowRightSmallIcon } from '@blocksuite/icons/rc';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\nimport { forwardRef, memo } from 'react';\n\nimport { IconButton } from '../../button';\nimport * as styles from './calendar.css';\nimport type { DateCell } from './types';\n\ninterface HeaderLayoutProps extends HTMLAttributes {\n mode: 'day' | 'month' | 'year';\n length: number;\n left: React.ReactNode;\n right: React.ReactNode;\n}\n\nconst autoHeight = { height: 'auto' };\n/**\n * The `DatePicker` should work with different width\n * This is a hack to make header's item align with calendar cell's label, **instead of the cell**\n * @param length: number of items that calendar body row has\n */\nconst HeaderLayout = memo(function HeaderLayout({\n length,\n left,\n right,\n className,\n style,\n mode,\n ...attrs\n}: HeaderLayoutProps) {\n const vars = assignInlineVars({ '--len': `${length}` });\n const finalStyle = { ...vars, ...style };\n return (\n \n {Array.from({ length })\n .fill(0)\n .map((_, index) => {\n const isLeft = index === 0;\n const isRight = index === length - 1;\n return (\n \n
\n {isLeft ? left : isRight ? right : null}\n
\n \n );\n })}\n \n );\n});\n\ninterface CalendarLayoutProps {\n headerLeft: ReactNode;\n headerRight: ReactNode;\n body: ReactNode;\n length: number;\n mode: 'day' | 'month' | 'year';\n}\nexport const CalendarLayout = forwardRef(\n (\n { headerLeft, headerRight, body, length, mode }: CalendarLayoutProps,\n ref\n ) => {\n return (\n
\n \n {body}\n
\n );\n }\n);\nCalendarLayout.displayName = 'CalendarLayout';\n\nexport const DefaultDateCell = ({\n label,\n date,\n isToday,\n notCurrentMonth,\n selected,\n focused,\n}: DateCell) => {\n return (\n \n {label}\n \n );\n};\n\ninterface NavButtonsProps extends PropsWithChildren {\n prevDisabled?: boolean;\n nextDisabled?: boolean;\n onPrev?: () => void;\n onNext?: () => void;\n}\nexport const NavButtons = memo(function NavButtons({\n children,\n prevDisabled,\n nextDisabled,\n onPrev,\n onNext,\n}: NavButtonsProps) {\n return (\n
\n \n \n \n\n {children ??
}\n\n \n \n \n
\n );\n});\n","import dayjs from 'dayjs';\nimport { memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport * as styles from './calendar.css';\nimport { DATE_MAX, DATE_MIN } from './constants';\nimport { CalendarLayout, DefaultDateCell, NavButtons } from './items';\nimport type { DateCell, DatePickerModePanelProps } from './types';\n\nexport const DayPicker = memo(function DayPicker(\n props: DatePickerModePanelProps\n) {\n const dayPickerRootRef = useRef(null);\n const headerMonthRef = useRef(null);\n\n const {\n value,\n cursor,\n weekDays,\n monthNames,\n format,\n todayLabel,\n customDayRenderer,\n onChange,\n onCursorChange,\n onModeChange,\n } = props;\n\n const matrix = useMemo(() => {\n const firstDayOfMonth = cursor.startOf('month');\n const firstDayOfFirstWeek = firstDayOfMonth.startOf('week');\n\n const lastDayOfMonth = cursor.endOf('month');\n const lastDayOfLastWeek = lastDayOfMonth.endOf('week');\n\n const matrix = [];\n let currentDay = firstDayOfFirstWeek;\n while (currentDay.isBefore(lastDayOfLastWeek)) {\n const week: DateCell[] = [];\n for (let i = 0; i < 7; i++) {\n week.push({\n date: currentDay,\n label: currentDay.date().toString(),\n isToday: currentDay.isSame(dayjs(), 'day'),\n notCurrentMonth: !currentDay.isSame(cursor, 'month'),\n selected: value ? currentDay.isSame(value, 'day') : false,\n focused: currentDay.isSame(cursor, 'day'),\n });\n currentDay = currentDay.add(1, 'day');\n }\n matrix.push(week);\n }\n return matrix;\n }, [cursor, value]);\n\n const prevDisabled = useMemo(() => {\n const firstDayOfMonth = cursor.startOf('month');\n return firstDayOfMonth.isSame(DATE_MIN, 'day');\n }, [cursor]);\n const nextDisabled = useMemo(() => {\n const lastDayOfMonth = cursor.endOf('month');\n return lastDayOfMonth.isSame(DATE_MAX, 'day');\n }, [cursor]);\n\n const onNextMonth = useCallback(() => {\n onCursorChange?.(cursor.add(1, 'month').set('date', 1));\n }, [cursor, onCursorChange]);\n const onPrevMonth = useCallback(() => {\n onCursorChange?.(cursor.add(-1, 'month').set('date', 1));\n }, [cursor, onCursorChange]);\n\n const focusCursor = useCallback(() => {\n const div = dayPickerRootRef.current;\n if (!div) return;\n const focused = div.querySelector('[data-is-date-cell][tabindex=\"0\"]');\n focused && (focused as HTMLElement).focus();\n }, []);\n const openMonthPicker = useCallback(\n () => onModeChange?.('month'),\n [onModeChange]\n );\n const openYearPicker = useCallback(\n () => onModeChange?.('year'),\n [onModeChange]\n );\n\n // keyboard navigation\n useEffect(() => {\n const div = dayPickerRootRef.current;\n if (!div) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (!['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(e.key))\n return;\n\n const focused = document.activeElement;\n\n // check if focused is a date cell\n if (!focused?.hasAttribute('data-is-date-cell')) return;\n if (e.shiftKey) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (e.key === 'ArrowUp') onCursorChange?.(cursor.add(-7, 'day'));\n if (e.key === 'ArrowDown') onCursorChange?.(cursor.add(7, 'day'));\n if (e.key === 'ArrowLeft') onCursorChange?.(cursor.add(-1, 'day'));\n if (e.key === 'ArrowRight') onCursorChange?.(cursor.add(1, 'day'));\n setTimeout(focusCursor);\n };\n div.addEventListener('keydown', onKeyDown);\n return () => {\n div?.removeEventListener('keydown', onKeyDown);\n };\n }, [cursor, focusCursor, onCursorChange]);\n\n const HeaderLeft = useMemo(\n () => (\n
\n \n {monthNames.split(',')[cursor.month()]}\n \n \n {cursor.year()}\n \n
\n ),\n [cursor, monthNames, openMonthPicker, openYearPicker]\n );\n const HeaderRight = useMemo(\n () => (\n \n onChange?.(dayjs().format(format))}\n >\n {todayLabel}\n \n \n ),\n [\n format,\n nextDisabled,\n onChange,\n onNextMonth,\n onPrevMonth,\n prevDisabled,\n todayLabel,\n ]\n );\n const Body = useMemo(\n () => (\n
\n {/* weekDays */}\n
\n {weekDays.split(',').map(day => (\n
\n {day}\n
\n ))}\n
\n {/* Weeks in month */}\n {matrix.map((week, i) => {\n return (\n
\n {week.map((cell, j) => (\n onChange?.(cell.date.format(format))}\n >\n {customDayRenderer ? (\n customDayRenderer(cell)\n ) : (\n \n )}\n
\n ))}\n
\n );\n })}\n \n ),\n [customDayRenderer, format, matrix, onChange, weekDays]\n );\n\n return (\n \n );\n});\n","import dayjs from 'dayjs';\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport * as styles from './calendar.css';\nimport { DATE_MAX, DATE_MIN } from './constants';\nimport { CalendarLayout, NavButtons } from './items';\nimport type { DatePickerModePanelProps } from './types';\n\nconst ROW_SIZE = 3;\n\nexport const MonthPicker = memo(function MonthPicker(\n props: DatePickerModePanelProps\n) {\n const { cursor, value, monthNames, onModeChange, onCursorChange } = props;\n const dayPickerRootRef = useRef(null);\n\n const [monthCursor, setMonthCursor] = useState(cursor.startOf('month'));\n\n const closeMonthPicker = useCallback(\n () => onModeChange?.('day'),\n [onModeChange]\n );\n\n const onMonthChange = useCallback(\n (m: dayjs.Dayjs) => {\n onModeChange?.('day');\n onCursorChange?.(m);\n },\n [onCursorChange, onModeChange]\n );\n\n const nextYear = useCallback(\n () => setMonthCursor(prev => prev.add(1, 'year').startOf('year')),\n []\n );\n const prevYear = useCallback(\n () => setMonthCursor(prev => prev.subtract(1, 'year').startOf('year')),\n []\n );\n const nextYearDisabled = useMemo(\n () => monthCursor.isSame(DATE_MAX, 'year'),\n [monthCursor]\n );\n const prevYearDisabled = useMemo(\n () => monthCursor.isSame(DATE_MIN, 'year'),\n [monthCursor]\n );\n const matrix = useMemo(() => {\n const matrix = [];\n let currentMonth = monthCursor.startOf('year');\n while (currentMonth.isBefore(monthCursor.endOf('year'))) {\n const month: DatePickerModePanelProps['cursor'][] = [];\n for (let i = 0; i < ROW_SIZE; i++) {\n month.push(currentMonth.clone());\n currentMonth = currentMonth.add(1, 'month');\n }\n matrix.push(month);\n }\n return matrix;\n }, [monthCursor]);\n\n const focusCursor = useCallback(() => {\n const div = dayPickerRootRef.current;\n if (!div) return;\n const focused = div.querySelector('[data-is-month-cell][tabindex=\"0\"]');\n focused && (focused as HTMLElement).focus();\n }, []);\n\n // keyboard navigation\n useEffect(() => {\n const div = dayPickerRootRef.current;\n if (!div) return;\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n closeMonthPicker();\n return;\n }\n\n if (!['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(e.key))\n return;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (e.key === 'ArrowUp')\n setMonthCursor(c => c.subtract(ROW_SIZE, 'month'));\n if (e.key === 'ArrowDown') setMonthCursor(c => c.add(ROW_SIZE, 'month'));\n if (e.key === 'ArrowLeft') setMonthCursor(c => c.subtract(1, 'month'));\n if (e.key === 'ArrowRight') setMonthCursor(c => c.add(1, 'month'));\n setTimeout(focusCursor);\n };\n\n div.addEventListener('keydown', onKeyDown);\n\n return () => {\n div.removeEventListener('keydown', onKeyDown);\n };\n }, [closeMonthPicker, focusCursor]);\n\n const HeaderLeft = useMemo(() => {\n return (\n \n {monthCursor.format('YYYY')}\n \n );\n }, [closeMonthPicker, monthCursor]);\n\n const HeaderRight = useMemo(() => {\n return (\n \n );\n }, [nextYear, nextYearDisabled, prevYear, prevYearDisabled]);\n\n const Body = useMemo(() => {\n return (\n
\n {matrix.map((row, i) => {\n return (\n
\n {row.map((month, j) => {\n return (\n
\n onMonthChange(month)}\n tabIndex={month.isSame(monthCursor, 'month') ? 0 : -1}\n aria-label={month.format('YYYY-MM')}\n >\n {monthNames.split(',')[month.month()]}\n \n
\n );\n })}\n
\n );\n })}\n
\n );\n }, [matrix, monthCursor, monthNames, onMonthChange, value]);\n\n return (\n \n );\n});\n","import type dayjs from 'dayjs';\nimport type { ReactNode } from 'react';\n\nexport interface DatePickerProps {\n /**\n * selected date value, format is defined by `format` prop\n */\n value?: string;\n\n /**\n * @default 'YYYY-MM-DD'\n */\n format?: string;\n\n /**\n * Customize the vertical gap between each row, in `px`\n * @default 8\n */\n gapY?: number;\n\n /**\n * Customize the horizontal gap between each column, in `px`\n * Attention: for responsive layout, this will only affect the minimum gap, the actual gap will be calculated based on the available space\n * @default 8\n */\n gapX?: number;\n\n /**\n * Customize weekdays, use `,` to separate each day\n * @default {} `'Su,Mo,Tu,We,Th,Fr,Sa'`\n **/\n weekDays?: string;\n\n /**\n * Customize month names\n */\n monthNames?: string;\n\n /**\n * Customize today label\n */\n todayLabel?: string;\n\n /**\n * Customize rendering of day cell\n */\n customDayRenderer?: (cell: DateCell) => ReactNode;\n\n /**\n * when date is clicked\n */\n onChange?: (value: string) => void;\n}\n\n/**\n * Date for a cell in the calendar\n */\nexport interface DateCell {\n date: dayjs.Dayjs;\n label: string;\n isToday: boolean;\n notCurrentMonth: boolean;\n selected?: boolean;\n focused?: boolean;\n}\n\nexport type SelectMode = 'day' | 'month' | 'year';\n\nexport const defaultDatePickerProps = {\n format: 'YYYY-MM-DD',\n gapX: 8,\n gapY: 8,\n weekDays: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'].join(','),\n monthNames: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ].join(','),\n todayLabel: 'Today',\n} satisfies Partial;\nexport type DefaultDatePickerProps = typeof defaultDatePickerProps;\n\nexport interface DatePickerModePanelProps\n extends DefaultDatePickerProps,\n Omit {\n cursor: dayjs.Dayjs;\n onCursorChange?: (cursor: dayjs.Dayjs) => void;\n onModeChange?: (mode: SelectMode) => void;\n}\n","import dayjs from 'dayjs';\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport * as styles from './calendar.css';\nimport { DATE_MAX, DATE_MIN, YEAR_MAX, YEAR_MIN } from './constants';\nimport { CalendarLayout, NavButtons } from './items';\nimport type { DatePickerModePanelProps } from './types';\n\nconst ROW_SIZE = 3;\nconst DECADE = 12;\n\nexport const YearPicker = memo(function YearPicker(\n props: DatePickerModePanelProps\n) {\n const { value, cursor, onModeChange, onCursorChange } = props;\n const dayPickerRootRef = useRef(null);\n const [yearCursor, setYearCursor] = useState(dayjs(cursor).startOf('year'));\n\n const closeYearPicker = useCallback(\n () => onModeChange?.('day'),\n [onModeChange]\n );\n\n const onYearChange = useCallback(\n (y: dayjs.Dayjs) => {\n closeYearPicker();\n onCursorChange?.(y);\n },\n [closeYearPicker, onCursorChange]\n );\n\n const nextDecade = useCallback(() => {\n setYearCursor(prev => prev.add(DECADE, 'year').startOf('year'));\n }, []);\n\n const prevDecade = useCallback(() => {\n setYearCursor(prev => prev.subtract(DECADE, 'year').startOf('year'));\n }, []);\n\n const decadeIndex = useMemo(\n () => Math.floor((yearCursor.year() - YEAR_MIN) / DECADE),\n [yearCursor]\n );\n const decadeStart = useMemo(\n () => dayjs(DATE_MIN).add(decadeIndex * DECADE, 'year'),\n [decadeIndex]\n );\n const decadeEnd = useMemo(\n () => decadeStart.add(DECADE - 1, 'year'),\n [decadeStart]\n );\n const nextDecadeDisabled = useMemo(\n () => yearCursor.add(DECADE, 'year').isAfter(`${YEAR_MAX}-01-01`),\n [yearCursor]\n );\n const prevDecadeDisabled = useMemo(() => decadeIndex <= 0, [decadeIndex]);\n\n const matrix = useMemo(() => {\n const matrix = [];\n\n let currentYear = decadeStart.clone();\n while (currentYear.isBefore(decadeEnd.add(1, 'year'))) {\n const row = [];\n for (let i = 0; i < ROW_SIZE; i++) {\n row.push(currentYear.clone().startOf('year'));\n currentYear = currentYear.add(1, 'year');\n }\n matrix.push(row);\n }\n return matrix;\n }, [decadeEnd, decadeStart]);\n\n const focusCursor = useCallback(() => {\n const div = dayPickerRootRef.current;\n if (!div) return;\n const focused = div.querySelector('[data-is-year-cell][tabindex=\"0\"]');\n focused && (focused as HTMLElement).focus();\n }, []);\n\n // keyboard navigation\n useEffect(() => {\n const div = dayPickerRootRef.current;\n if (!div) return;\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n closeYearPicker();\n return;\n }\n\n if (!['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(e.key))\n return;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (e.key === 'ArrowUp') setYearCursor(c => c.subtract(ROW_SIZE, 'year'));\n if (e.key === 'ArrowDown') setYearCursor(c => c.add(ROW_SIZE, 'year'));\n if (e.key === 'ArrowLeft') setYearCursor(c => c.subtract(1, 'year'));\n if (e.key === 'ArrowRight') setYearCursor(c => c.add(1, 'year'));\n setTimeout(focusCursor);\n };\n\n div.addEventListener('keydown', onKeyDown);\n\n return () => {\n div.removeEventListener('keydown', onKeyDown);\n };\n }, [closeYearPicker, focusCursor]);\n\n const HeaderLeft = useMemo(() => {\n return (\n \n {decadeStart.year()}-{decadeEnd.year()}\n \n );\n }, [closeYearPicker, decadeEnd, decadeStart]);\n const HeaderRight = useMemo(\n () => (\n \n ),\n [nextDecade, nextDecadeDisabled, prevDecade, prevDecadeDisabled]\n );\n const Body = useMemo(() => {\n return (\n
\n {matrix.map((row, i) => {\n return (\n
\n {row.map((year, j) => {\n const isDisabled =\n year.isAfter(DATE_MAX) || year.isBefore(DATE_MIN);\n return (\n
\n onYearChange(year)\n }\n >\n {year.year()}\n \n
\n );\n })}\n
\n );\n })}\n
\n );\n }, [matrix, onYearChange, value, yearCursor]);\n\n return (\n \n );\n});\n","import { assignInlineVars } from '@vanilla-extract/dynamic';\nimport dayjs from 'dayjs';\nimport { useCallback, useState } from 'react';\n\nimport * as styles from './calendar.css';\nimport { DATE_MAX, DATE_MIN } from './constants';\nimport { DayPicker } from './day-picker';\nimport { MonthPicker } from './month-picker';\nimport type { DatePickerProps, SelectMode } from './types';\nimport { defaultDatePickerProps } from './types';\nimport { YearPicker } from './year-picker';\n\nexport type { DatePickerProps } from './types';\n\n/**\n * Inline DatePicker\n * @returns\n */\nexport const DatePicker = (props: DatePickerProps) => {\n const finalProps = { ...defaultDatePickerProps, ...props };\n const { value, gapX, gapY, onChange } = finalProps;\n\n const [mode, setMode] = useState('day');\n const [cursor, setCursor] = useState(dayjs(value));\n\n const variables = assignInlineVars({\n [styles.vars.gapX]: `${gapX}px`,\n [styles.vars.gapY]: `${gapY}px`,\n });\n const Component =\n mode === 'day' ? DayPicker : mode === 'month' ? MonthPicker : YearPicker;\n\n const onPreChange = useCallback(\n (v: string) => {\n setMode('day');\n setCursor(dayjs(v));\n onChange?.(v);\n },\n [onChange]\n );\n\n const onCursorChange = useCallback((newCursor: dayjs.Dayjs) => {\n // validate range\n if (newCursor.isBefore(DATE_MIN)) newCursor = dayjs(DATE_MIN);\n else if (newCursor.isAfter(DATE_MAX)) newCursor = dayjs(DATE_MAX);\n setCursor(newCursor);\n }, []);\n\n return (\n
\n \n
\n );\n};\n","import type { ResizeObserverEntry } from '@juggle/resize-observer';\n\ntype ObserveResize = {\n callback: (entity: ResizeObserverEntry) => void;\n dispose: () => void;\n};\n\nlet _resizeObserver: ResizeObserver | null = null;\nconst elementsMap = new WeakMap>();\n\n// for debugging\n(window as any)._resizeObserverElementsMap = elementsMap;\n\n/**\n * @internal get or initialize the ResizeObserver instance\n */\nconst getResizeObserver = () =>\n (_resizeObserver ??= new ResizeObserver(entries => {\n entries.forEach(entry => {\n const listeners = elementsMap.get(entry.target) ?? [];\n listeners.forEach(({ callback }) => callback(entry));\n });\n }));\n\n/**\n * @internal remove element's specific listener\n */\nconst removeListener = (element: Element, listener: ObserveResize) => {\n if (!element) return;\n const listeners = elementsMap.get(element) ?? [];\n const observer = getResizeObserver();\n // remove the listener from the element\n if (listeners.includes(listener)) {\n elementsMap.set(\n element,\n listeners.filter(l => l !== listener)\n );\n }\n // if no more listeners, unobserve the element\n if (elementsMap.get(element)?.length === 0) {\n observer.unobserve(element);\n elementsMap.delete(element);\n }\n};\n\n/**\n * A function to observe the resize of an element use global ResizeObserver.\n *\n * ```ts\n * useEffect(() => {\n * const dispose1 = observeResize(elRef1.current, (entry) => {});\n * const dispose2 = observeResize(elRef2.current, (entry) => {});\n *\n * return () => {\n * dispose1();\n * dispose2();\n * };\n * }, [])\n * ```\n * @return A function to dispose the observer.\n */\nexport const observeResize = (\n element: Element,\n callback: ObserveResize['callback']\n) => {\n const observer = getResizeObserver();\n if (!elementsMap.has(element)) {\n observer.observe(element);\n }\n const prevListeners = elementsMap.get(element) ?? [];\n const listener = { callback, dispose: () => {} };\n listener.dispose = () => removeListener(element, listener);\n\n elementsMap.set(element, [...prevListeners, listener]);\n\n return listener.dispose;\n};\n","import { ArrowLeftSmallIcon, ArrowRightSmallIcon } from '@blocksuite/icons/rc';\nimport clsx from 'clsx';\nimport dayjs from 'dayjs';\nimport type { ForwardedRef, HTMLAttributes } from 'react';\nimport {\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { observeResize } from '../../utils';\nimport { IconButton } from '../button';\nimport * as styles from './week-date-picker.css';\n\nexport interface WeekDatePickerHandle {\n /** control cursor manually */\n setCursor?: (cursor: dayjs.Dayjs) => void;\n}\n\nexport interface WeekDatePickerProps\n extends Omit, 'onChange'> {\n value?: string;\n onChange?: (value: string) => void;\n handleRef?: ForwardedRef;\n}\n\n// TODO(catsjuice): i18n\nconst weekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n// const weekDays = ['日', '一', '二', '三', '四', '五', '六'];\nconst format = 'YYYY-MM-DD';\n\nexport const WeekDatePicker = memo(function WeekDatePicker({\n value,\n onChange,\n className,\n handleRef,\n ...attrs\n}: WeekDatePickerProps) {\n const weekRef = useRef(null);\n\n const [cursor, setCursor] = useState(dayjs(value));\n const [dense, setDense] = useState(false);\n const [viewPortSize, setViewPortSize] = useState(7);\n\n useImperativeHandle(handleRef, () => ({\n setCursor,\n }));\n\n const range = useMemo(() => {\n if (viewPortSize === 7) return [0, 7];\n const cursorIndex = cursor.day();\n let start = Math.max(0, cursorIndex - Math.floor(viewPortSize / 2));\n const end = Math.min(7, start + viewPortSize);\n if (end === 7) start = 7 - viewPortSize;\n return [start, end];\n }, [cursor, viewPortSize]);\n const allDays = useMemo(\n () =>\n Array.from({ length: 7 }).map((_, index) =>\n cursor.startOf('week').add(index, 'day').startOf('day')\n ),\n [cursor]\n );\n const displayDays = useMemo(() => allDays.slice(...range), [allDays, range]);\n\n const onNext = useCallback(() => {\n const viewPortSize = displayDays.length;\n if (viewPortSize === 7) setCursor(c => c.add(1, 'week'));\n else {\n setCursor(c => {\n // last day of week is visible, move to next weeks\n if (\n displayDays[displayDays.length - 1].isSame(c.endOf('week'), 'day')\n ) {\n return c\n .add(1, 'week')\n .startOf('week')\n .add(Math.floor(viewPortSize / 2), 'day');\n }\n let nextDay = c.add(viewPortSize, 'day');\n if (!nextDay.isSame(c, 'week')) nextDay = c.endOf('week');\n return nextDay;\n });\n }\n }, [displayDays]);\n const onPrev = useCallback(() => {\n const viewPortSize = displayDays.length;\n if (viewPortSize === 7) setCursor(c => c.add(-1, 'week'));\n else\n setCursor(c => {\n // first day of week is visible, move to prev weeks\n if (displayDays[0].isSame(c.startOf('week'), 'day')) {\n return c\n .subtract(1, 'week')\n .endOf('week')\n .subtract(Math.floor(viewPortSize / 2) - 1, 'day');\n }\n let prevDay = c.add(-viewPortSize, 'day');\n if (!prevDay.isSame(c, 'week')) prevDay = c.startOf('week');\n return prevDay;\n });\n }, [displayDays]);\n const onDayClick = useCallback(\n (day: dayjs.Dayjs) => {\n onChange?.(day.format(format));\n },\n [onChange]\n );\n\n // Observe weekRef to update viewPortSize\n useEffect(() => {\n const el = weekRef.current;\n if (!el) return;\n\n return observeResize(el, ({ contentRect: rect }) => {\n const width = rect.width;\n if (!width) return;\n\n const minWidth = 30;\n const gap = 4;\n const viewPortCount = Math.floor(width / (minWidth + gap));\n setViewPortSize(Math.max(1, Math.min(viewPortCount, 7)));\n setDense(width < 300);\n });\n }, []);\n\n // when value changes, reset cursor\n useEffect(() => {\n value && setCursor(dayjs(value));\n }, [value]);\n\n const focusCursorCell = useCallback(() => {\n if (!weekRef.current) return;\n const cursorCell = weekRef.current.querySelector(\n 'button[tabIndex=\"0\"]'\n ) as HTMLButtonElement;\n cursorCell?.focus();\n }, []);\n\n useLayoutEffect(() => {\n if (!weekRef.current) return;\n const el = weekRef.current;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight') return;\n e.preventDefault();\n e.stopPropagation();\n setCursor(cursor => cursor.add(e.key === 'ArrowLeft' ? -1 : 1, 'day'));\n setTimeout(focusCursorCell);\n };\n\n el.addEventListener('keydown', onKeyDown);\n\n return () => {\n el.removeEventListener('keydown', onKeyDown);\n };\n }, [focusCursorCell, onNext, onPrev]);\n\n return (\n
\n \n \n \n\n
\n {displayDays.map(day => (\n \n ))}\n
\n\n \n \n \n
\n );\n});\n\ninterface CellProps {\n dense: boolean;\n day: dayjs.Dayjs;\n cursor: dayjs.Dayjs;\n value?: string;\n onClick: (day: dayjs.Dayjs) => void;\n}\nconst Cell = ({ day, dense, value, cursor, onClick }: CellProps) => {\n const isActive = day.format(format) === value;\n const isCurrentMonth = day.month() === cursor.month();\n const isToday = day.isSame(dayjs(), 'day');\n\n const dayIndex = day.day();\n const label = weekDays[dayIndex];\n\n return (\n onClick(day)}\n >\n
\n {dense ? label.slice(0, 1) : label}\n
\n
{day.format('D')}
\n \n );\n};\n","import \"../component/src/ui/date-picker/week-date-picker.css.tsx.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/date-picker/week-date-picker.css.tsx.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA5VU227bMAx9z1cIAQY0QFXYaTugCvYlwx5kibbZKZIh0XHSYf8+SL43QdshD0EOGZ5D8ogPp6qjly5jfzaMaQyNkRfBSgPnw4YxabCyHAmOQTAFlsBHuJKNYE9NSqkBq5oEy7PsW/x9lGc+Yo8vMefv5qEnyRNJh5pqwbKYHHkEyw+fcgfyQKqO+GsbCMsLV84SWBIsNFIBL4A6APteXhvA8wAGFAlmnYWFnn3S07iAhM4K5sFIwhMcbqjklXfdIPWIlg/xx6yniV0PUD5iqvXBecEah+PgrppMpTV6UL0E5Ux7tB+M/qr7OdRIrdFWgu2bc2yf5f13jBXOa/DcS41tmIZTOku8lEc0F8FO0t9xLssSLfBFZDdldsNan7NswgK+gWD5frXovajdCXwabyHV78q71mqunInzWBGlxD6yW1b4qSVJTk7Ly48t+Ra2v4R1dNfjUsU9jYFdIuJcgTE3SQovR/obJOtin9VqWg+8q5EgDWZu74ucQhRQOg/3bEZkScO0prVut4eVN2URnGkpeRNtABq8+cbR6ukRDVbjcAJLYTT81frR1uCRYsQ1UiFdUrVrkf0G3ZmHWuro/yx9osG+2OzcWq9BJFcGZ1B/sUTpVBv4CQMWBlbCZu0Pzx/9ZdYw/SNf5D8uz9J4xqaz9r1/KiaZ9R1IcCaeHuryHSY02ro0cWTKYJMuSvQMT8cqLqbzMsFzYo1a9wds5bvZiffriSWeAMpZLf1lGN1ydk8fNbbPbjQ2grcb+w9ZjcfjWtQ/RuJ0eGkGAAA=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var dayCell = 'vgwt9w2';\nexport var dayCellDate = 'vgwt9w4';\nexport var dayCellWeek = 'vgwt9w3';\nexport var weekDatePicker = 'vgwt9w0';\nexport var weekDatePickerContent = 'vgwt9w1';","import { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { centerUnderPointer } from '@atlaskit/pragmatic-drag-and-drop/element/center-under-pointer';\nimport { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { pointerOutsideOfPreview } from '@atlaskit/pragmatic-drag-and-drop/element/pointer-outside-of-preview';\nimport { preserveOffsetOnSource } from '@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source';\nimport { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';\nimport type { DropTargetRecord } from '@atlaskit/pragmatic-drag-and-drop/types';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport ReactDOM, { flushSync } from 'react-dom';\n\nimport type { DNDData } from './types';\n\ntype DraggableGetFeedback = Parameters<\n NonNullable[0]['getInitialData']>\n>[0];\n\ntype DraggableGet = T | ((data: DraggableGetFeedback) => T);\n\nfunction draggableGet(\n get: T\n): T extends undefined\n ? undefined\n : T extends DraggableGet\n ? (args: DraggableGetFeedback) => I\n : never {\n if (get === undefined) {\n return undefined as any;\n }\n return ((args: DraggableGetFeedback) =>\n typeof get === 'function' ? (get as any)(args) : get) as any;\n}\n\nexport interface DraggableOptions {\n data?: DraggableGet;\n dataForExternal?: DraggableGet<{\n [Key in\n | 'text/uri-list'\n | 'text/plain'\n | 'text/html'\n | 'Files'\n // eslint-disable-next-line @typescript-eslint/ban-types\n | (string & {})]?: string;\n }>;\n canDrag?: DraggableGet;\n disableDragPreview?: boolean;\n dragPreviewPosition?: DraggableDragPreviewPosition;\n}\n\nexport type DraggableDragPreviewPosition =\n | 'pointer-outside'\n | 'pointer-center'\n | 'native';\n\nexport type DraggableCustomDragPreviewProps = React.PropsWithChildren<{\n position?: DraggableDragPreviewPosition;\n}>;\n\nexport const useDraggable = (\n getOptions: () => DraggableOptions = () => ({}),\n deps: any[] = []\n) => {\n const [dragging, setDragging] = useState(false);\n const [draggingPosition, setDraggingPosition] = useState<{\n offsetX: number;\n offsetY: number;\n clientX: number;\n clientY: number;\n outWindow: boolean;\n }>({ offsetX: 0, offsetY: 0, clientX: 0, clientY: 0, outWindow: false });\n const [dropTarget, setDropTarget] = useState<\n (DropTargetRecord & { data: D['dropTarget'] })[]\n >([]);\n const [customDragPreviewPortal, setCustomDragPreviewPortal] = useState<\n React.FC\n >(() => () => null);\n\n const dragRef = useRef(null);\n const dragHandleRef = useRef(null);\n\n const enableCustomDragPreview = useRef(false);\n const enableDraggingPosition = useRef(false);\n const enableDropTarget = useRef(false);\n const enableDragging = useRef(false);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const options = useMemo(getOptions, deps);\n\n useEffect(() => {\n if (!dragRef.current) {\n return;\n }\n\n const windowEvent = {\n dragleave: () => {\n setDraggingPosition(state =>\n state.outWindow === true ? state : { ...state, outWindow: true }\n );\n },\n dragover: () => {\n setDraggingPosition(state =>\n state.outWindow === true ? { ...state, outWindow: false } : state\n );\n },\n };\n\n const cleanupDraggable = draggable({\n element: dragRef.current,\n dragHandle: dragHandleRef.current ?? undefined,\n canDrag: draggableGet(options.canDrag),\n getInitialData: draggableGet(options.data),\n getInitialDataForExternal: draggableGet(options.dataForExternal),\n onDragStart: args => {\n if (enableDragging.current) {\n setDragging(true);\n }\n if (enableDraggingPosition.current) {\n document.body.addEventListener('dragleave', windowEvent.dragleave);\n document.body.addEventListener('dragover', windowEvent.dragover);\n setDraggingPosition({\n offsetX: 0,\n offsetY: 0,\n clientX: args.location.initial.input.clientX,\n clientY: args.location.initial.input.clientY,\n outWindow: false,\n });\n }\n if (enableDropTarget.current) {\n setDropTarget([]);\n }\n if (dragRef.current) {\n dragRef.current.dataset['dragging'] = 'true';\n }\n },\n onDrop: () => {\n if (enableDragging.current) {\n setDragging(false);\n }\n if (enableDraggingPosition.current) {\n document.body.removeEventListener('dragleave', windowEvent.dragleave);\n document.body.removeEventListener('dragover', windowEvent.dragover);\n setDraggingPosition({\n offsetX: 0,\n offsetY: 0,\n clientX: 0,\n clientY: 0,\n outWindow: false,\n });\n }\n if (enableDropTarget.current) {\n setDropTarget([]);\n }\n if (dragRef.current) {\n delete dragRef.current.dataset['dragging'];\n }\n },\n onDrag: args => {\n if (enableDraggingPosition.current) {\n setDraggingPosition(prev => ({\n offsetX:\n args.location.current.input.clientX -\n args.location.initial.input.clientX,\n offsetY:\n args.location.current.input.clientY -\n args.location.initial.input.clientY,\n clientX: args.location.current.input.clientX,\n clientY: args.location.current.input.clientY,\n outWindow: prev.outWindow,\n }));\n }\n },\n onDropTargetChange(args) {\n if (enableDropTarget.current) {\n setDropTarget(args.location.current.dropTargets);\n }\n },\n onGenerateDragPreview({ nativeSetDragImage, source, location }) {\n if (options.disableDragPreview) {\n disableNativeDragPreview({ nativeSetDragImage });\n return;\n }\n\n let previewPosition: DraggableDragPreviewPosition =\n options.dragPreviewPosition ?? 'native';\n\n if (enableCustomDragPreview.current) {\n setCustomNativeDragPreview({\n getOffset: (...args) => {\n if (previewPosition === 'pointer-center') {\n return centerUnderPointer(...args);\n } else if (previewPosition === 'pointer-outside') {\n return pointerOutsideOfPreview({\n x: '8px',\n y: '4px',\n })(...args);\n } else {\n return preserveOffsetOnSource({\n element: source.element,\n input: location.current.input,\n })(...args);\n }\n },\n render({ container }) {\n flushSync(() => {\n setCustomDragPreviewPortal(\n () =>\n ({\n children,\n position,\n }: DraggableCustomDragPreviewProps) => {\n previewPosition = position || previewPosition;\n return ReactDOM.createPortal(children, container);\n }\n );\n });\n return () => setCustomDragPreviewPortal(() => () => null);\n },\n nativeSetDragImage,\n });\n } else if (previewPosition !== 'native') {\n setCustomNativeDragPreview({\n getOffset: (...args) => {\n if (previewPosition === 'pointer-center') {\n return centerUnderPointer(...args);\n } else if (previewPosition === 'pointer-outside') {\n return pointerOutsideOfPreview({\n x: '8px',\n y: '4px',\n })(...args);\n } else {\n return preserveOffsetOnSource({\n element: source.element,\n input: location.current.input,\n })(...args);\n }\n },\n render({ container }) {\n container.append(source.element.cloneNode(true));\n },\n nativeSetDragImage,\n });\n }\n },\n });\n\n return () => {\n window.removeEventListener('dragleave', windowEvent.dragleave);\n window.removeEventListener('dragover', windowEvent.dragover);\n cleanupDraggable();\n };\n }, [options]);\n\n return {\n get dragging() {\n enableDragging.current = true;\n return dragging;\n },\n get draggingPosition() {\n enableDraggingPosition.current = true;\n return draggingPosition;\n },\n get CustomDragPreview() {\n enableCustomDragPreview.current = true;\n return customDragPreviewPortal;\n },\n get dropTarget() {\n enableDropTarget.current = true;\n return dropTarget;\n },\n dragRef,\n dragHandleRef,\n };\n};\n","import \"../component/src/ui/dnd/drop-indicator.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/dnd/drop-indicator.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA71V7W7jIBD8n6dYVTopaUtq56Pt0Yc5YRsnqAQsTHpJTn33k8GuAWOriU73z4bdndlhYJe/0v36snnerOHPDACh7j/B8Fqd3mYAlayZZlJgIFkt+VHTZlXLCkPSfCm22+v2m9NSY/ggat5XShfNTia1loc2rJJMaKoQ/aBC1xiEFPRt9jlbfrHBOKOlVNSwyqXQVGgMd3dNdsHqipMzhozL/H2c4gUxUdAThpUlcEI1uzCxw5BJVVCFMmka/M0KvQ9ZJ4b1ntrmYnu2V9NPRvL3nZJHUWDQioi6IooKbWENVC65VGGd1cKJaFmsrOjtoiIFO9YYtskPZ7XWZ04x1JKzIpSNlJqqf6JaGnYWI29FyAnP56FG8AQrT8S2td4vDvONd+C9uYyapVSHVlhONJ0bOJQst3A/OJnFI0xuL0LYXjCDitKGpROy9Zh5Nr6Z3Le4bV1uHe6A3rPZ/m93tPOgOU3rwClTd/5dB6xfDOvAGBNeerJVo9Z58Q7IKYLSmMhe7qvJ8a+eUW2KhSOTW2ro4O+yIH2KH/gziLsGAh4grU5+gcwkqtibFkBlHlSbcR1Y7hl3Ei2P3rHr4Arn+CfBiqv8EoOio7Pytkd29KoNHl9SlkxQVCl2IOpsp0rAbWpy3jjpxkdnvLvuiRho6b4XI63ER9/nXza3UZmoCAAA\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var bottom = '_1h3z464c';\nexport var edgeLine = '_1h3z464e';\nexport var horizontal = '_1h3z4647';\nexport var horizontalIndent = 'var(--_1h3z4641)';\nexport var indicatorColor = 'var(--_1h3z4642)';\nexport var left = '_1h3z464d';\nexport var lineAboveStyles = '_1h3z4644';\nexport var lineBelowStyles = '_1h3z4645';\nexport var localLineOffset = 'var(--_1h3z4649)';\nexport var outlineStyles = '_1h3z4646';\nexport var right = '_1h3z464b';\nexport var terminalSize = 'var(--_1h3z4640)';\nexport var top = '_1h3z464a';\nexport var treeLine = '_1h3z4643';\nexport var vertical = '_1h3z4648';","import type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport type { Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport { cssVar } from '@toeverything/theme';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport { type ReactElement } from 'react';\n\nimport * as styles from './drop-indicator.css';\n\nexport type DropIndicatorProps = {\n instruction?: Instruction | null;\n edge?: Edge | null;\n};\n\nfunction getTreeElement({\n instruction,\n isBlocked,\n}: {\n instruction: Exclude;\n isBlocked: boolean;\n}): ReactElement | null {\n const style = {\n [styles.horizontalIndent]: `${instruction.currentLevel * instruction.indentPerLevel}px`,\n [styles.indicatorColor]: !isBlocked\n ? cssVar('--affine-primary-color')\n : cssVar('--affine-warning-color'),\n };\n\n if (instruction.type === 'reorder-above') {\n return (\n \n );\n }\n if (instruction.type === 'reorder-below') {\n return (\n \n );\n }\n\n if (instruction.type === 'make-child') {\n return (\n \n );\n }\n\n if (instruction.type === 'reparent') {\n style[styles.horizontalIndent] = `${\n instruction.desiredLevel * instruction.indentPerLevel\n }px`;\n\n return (\n \n );\n }\n return null;\n}\n\ntype Orientation = 'horizontal' | 'vertical';\n\nconst edgeToOrientationMap: Record = {\n top: 'horizontal',\n bottom: 'horizontal',\n left: 'vertical',\n right: 'vertical',\n};\n\nconst orientationStyles: Record = {\n horizontal: styles.horizontal,\n vertical: styles.vertical,\n};\n\nconst edgeStyles: Record = {\n top: styles.top,\n bottom: styles.bottom,\n left: styles.left,\n right: styles.right,\n};\n\nfunction getEdgeElement(edge: Edge, gap: number = 0) {\n const lineOffset = `calc(-0.5 * (${gap}px + 2px))`;\n\n const orientation = edgeToOrientationMap[edge];\n\n return (\n \n );\n}\n\nexport function DropIndicator({ instruction, edge }: DropIndicatorProps) {\n if (edge) {\n return getEdgeElement(edge, 0);\n }\n if (instruction) {\n if (instruction.type === 'instruction-blocked') {\n return getTreeElement({\n instruction: instruction.desired,\n isBlocked: true,\n });\n }\n return getTreeElement({ instruction, isBlocked: false });\n }\n return;\n}\n","import { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport {\n attachClosestEdge,\n type Edge,\n extractClosestEdge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport {\n attachInstruction,\n extractInstruction,\n type Instruction,\n type ItemMode,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { DNDData } from './types';\n\ntype DropTargetGetFeedback = Parameters<\n NonNullable[0]['canDrop']>\n>[0] & {\n source: {\n data: D['draggable'];\n };\n} & {\n treeInstruction: Instruction | null;\n closestEdge: Edge | null;\n};\n\ntype DropTargetGet =\n | T\n | ((data: DropTargetGetFeedback) => T);\n\nfunction dropTargetGet(\n get: T,\n options: DropTargetOptions\n): T extends undefined\n ? undefined\n : T extends DropTargetGet\n ? (\n args: Omit, 'treeInstruction' | 'closestEdge'>\n ) => I\n : never {\n if (get === undefined) {\n return undefined as any;\n }\n return ((\n args: Omit, 'treeInstruction' | 'closestEdge'>\n ) => {\n if (typeof get === 'function') {\n return (get as any)({\n ...args,\n get treeInstruction() {\n return options.treeInstruction\n ? extractInstruction(\n attachInstruction(\n {},\n {\n input: args.input,\n element: args.element,\n currentLevel: options.treeInstruction.currentLevel,\n indentPerLevel: options.treeInstruction.indentPerLevel,\n mode: options.treeInstruction.mode,\n block: options.treeInstruction.block,\n }\n )\n )\n : null;\n },\n get closestEdge() {\n return options.closestEdge\n ? extractClosestEdge(\n attachClosestEdge(\n {},\n {\n input: args.input,\n element: args.element,\n allowedEdges: options.closestEdge.allowedEdges,\n }\n )\n )\n : null;\n },\n });\n } else {\n return get;\n }\n }) as any;\n}\n\nexport type DropTargetDropEvent = Parameters<\n NonNullable[0]['onDrop']>\n>[0] & { treeInstruction: Instruction | null; closestEdge: Edge | null } & {\n source: { data: D['draggable'] };\n};\n\nexport type DropTargetDragEvent = Parameters<\n NonNullable[0]['onDrag']>\n>[0] & { treeInstruction: Instruction | null; closestEdge: Edge | null } & {\n source: { data: D['draggable'] };\n};\n\nexport type DropTargetTreeInstruction = Instruction;\n\nexport interface DropTargetOptions {\n data?: DropTargetGet;\n canDrop?: DropTargetGet;\n dropEffect?: DropTargetGet<'copy' | 'link' | 'move', D>;\n isSticky?: DropTargetGet;\n treeInstruction?: {\n block?: Instruction['type'][];\n mode: ItemMode;\n currentLevel: number;\n indentPerLevel: number;\n };\n closestEdge?: {\n allowedEdges: Edge[];\n };\n onDrop?: (data: DropTargetDropEvent) => void;\n onDrag?: (data: DropTargetDragEvent) => void;\n}\n\nexport const useDropTarget = (\n getOptions: () => DropTargetOptions = () => ({}),\n deps: any[] = []\n) => {\n const dropTargetRef = useRef(null);\n const [draggedOver, setDraggedOver] = useState(false);\n const [treeInstruction, setTreeInstruction] = useState(\n null\n );\n const [closestEdge, setClosestEdge] = useState(null);\n const [dropEffect, setDropEffect] = useState<'copy' | 'link' | 'move' | null>(\n null\n );\n const [draggedOverDraggable, setDraggedOverDraggable] = useState<{\n data: D['draggable'];\n } | null>(null);\n const [draggedOverPosition, setDraggedOverPosition] = useState<{\n /**\n * relative position to the drop target element top-left corner\n */\n relativeX: number;\n relativeY: number;\n clientX: number;\n clientY: number;\n }>({ relativeX: 0, relativeY: 0, clientX: 0, clientY: 0 });\n\n const enableDraggedOver = useRef(false);\n const enableDraggedOverDraggable = useRef(false);\n const enableDraggedOverPosition = useRef(false);\n const enableDropEffect = useRef(false);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const options = useMemo(getOptions, deps);\n\n useEffect(() => {\n if (!dropTargetRef.current) {\n return;\n }\n return dropTargetForElements({\n element: dropTargetRef.current,\n canDrop: dropTargetGet(options.canDrop, options),\n getDropEffect: dropTargetGet(options.dropEffect, options),\n getIsSticky: dropTargetGet(options.isSticky, options),\n onDrop: args => {\n if (enableDraggedOver.current) {\n setDraggedOver(false);\n }\n if (enableDraggedOverDraggable.current) {\n setDraggedOverDraggable(null);\n }\n if (enableDraggedOverPosition.current) {\n setDraggedOverPosition({\n relativeX: 0,\n relativeY: 0,\n clientX: 0,\n clientY: 0,\n });\n }\n if (options.treeInstruction) {\n setTreeInstruction(null);\n if (dropTargetRef.current) {\n delete dropTargetRef.current.dataset['treeInstruction'];\n }\n }\n if (options.closestEdge) {\n setClosestEdge(null);\n }\n if (enableDropEffect.current) {\n setDropEffect(null);\n }\n if (dropTargetRef.current) {\n delete dropTargetRef.current.dataset['draggedOver'];\n }\n if (\n args.location.current.dropTargets[0]?.element ===\n dropTargetRef.current\n ) {\n options.onDrop?.({\n ...args,\n treeInstruction: extractInstruction(args.self.data),\n closestEdge: extractClosestEdge(args.self.data),\n } as DropTargetDropEvent);\n }\n },\n getData: args => {\n const originData = dropTargetGet(options.data ?? {}, options)(args);\n const { input, element } = args;\n const withInstruction = options.treeInstruction\n ? attachInstruction(originData, {\n input,\n element,\n currentLevel: options.treeInstruction.currentLevel,\n indentPerLevel: options.treeInstruction.indentPerLevel,\n mode: options.treeInstruction.mode,\n block: options.treeInstruction.block,\n })\n : originData;\n const withClosestEdge = options.closestEdge\n ? attachClosestEdge(withInstruction, {\n element,\n input,\n allowedEdges: options.closestEdge.allowedEdges,\n })\n : withInstruction;\n return withClosestEdge;\n },\n onDrag: args => {\n if (\n args.location.current.dropTargets[0]?.element ===\n dropTargetRef.current\n ) {\n if (enableDraggedOverDraggable.current) {\n setDraggedOverDraggable({ data: args.source.data });\n }\n let instruction = null;\n let closestEdge = null;\n if (options.treeInstruction) {\n instruction = extractInstruction(args.self.data);\n setTreeInstruction(instruction);\n if (dropTargetRef.current) {\n dropTargetRef.current.dataset['treeInstruction'] =\n instruction?.type;\n }\n }\n if (options.closestEdge) {\n closestEdge = extractClosestEdge(args.self.data);\n setClosestEdge(closestEdge);\n }\n if (enableDropEffect.current) {\n setDropEffect(args.self.dropEffect);\n }\n if (enableDraggedOverPosition.current) {\n const rect = args.self.element.getBoundingClientRect();\n const { clientX, clientY } = args.location.current.input;\n setDraggedOverPosition({\n relativeX: clientX - rect.x,\n relativeY: clientY - rect.y,\n clientX: clientX,\n clientY: clientY,\n });\n }\n options.onDrag?.({\n ...args,\n treeInstruction: instruction,\n closestEdge,\n } as DropTargetDropEvent);\n }\n },\n onDropTargetChange: args => {\n if (\n args.location.current.dropTargets[0]?.element ===\n dropTargetRef.current\n ) {\n if (enableDraggedOver.current) {\n setDraggedOver(true);\n }\n if (options.treeInstruction) {\n const instruction = extractInstruction(args.self.data);\n setTreeInstruction(instruction);\n if (dropTargetRef.current) {\n dropTargetRef.current.dataset['treeInstruction'] =\n instruction?.type;\n }\n }\n if (options.closestEdge) {\n const closestEdge = extractClosestEdge(args.self.data);\n setClosestEdge(closestEdge);\n }\n if (enableDropEffect.current) {\n setDropEffect(args.self.dropEffect);\n }\n if (enableDraggedOverDraggable.current) {\n setDraggedOverDraggable({ data: args.source.data });\n }\n if (enableDraggedOverPosition.current) {\n const rect = args.self.element.getBoundingClientRect();\n setDraggedOverPosition({\n relativeX: args.location.current.input.clientX - rect.x,\n relativeY: args.location.current.input.clientY - rect.y,\n clientX: args.location.current.input.clientX,\n clientY: args.location.current.input.clientY,\n });\n }\n if (dropTargetRef.current) {\n dropTargetRef.current.dataset['draggedOver'] = 'true';\n }\n } else {\n if (enableDraggedOver.current) {\n setDraggedOver(false);\n }\n if (enableDraggedOverDraggable.current) {\n setDraggedOverDraggable(null);\n }\n if (options.treeInstruction) {\n setTreeInstruction(null);\n if (dropTargetRef.current) {\n delete dropTargetRef.current.dataset['treeInstruction'];\n }\n }\n if (enableDropEffect.current) {\n setDropEffect(args.self.dropEffect);\n }\n if (enableDraggedOverPosition.current) {\n setDraggedOverPosition({\n relativeX: 0,\n relativeY: 0,\n clientX: 0,\n clientY: 0,\n });\n }\n if (options.closestEdge) {\n setClosestEdge(null);\n }\n if (dropTargetRef.current) {\n delete dropTargetRef.current.dataset['draggedOver'];\n }\n }\n },\n });\n }, [options]);\n\n return {\n dropTargetRef,\n get draggedOver() {\n enableDraggedOver.current = true;\n return draggedOver;\n },\n get draggedOverDraggable() {\n enableDraggedOverDraggable.current = true;\n return draggedOverDraggable;\n },\n get draggedOverPosition() {\n enableDraggedOverPosition.current = true;\n return draggedOverPosition;\n },\n get dropEffect() {\n enableDropEffect.current = true;\n return dropEffect;\n },\n treeInstruction,\n closestEdge,\n };\n};\n","import clsx from 'clsx';\nimport type {\n CSSProperties,\n ForwardedRef,\n HTMLAttributes,\n KeyboardEvent,\n PropsWithChildren,\n} from 'react';\nimport {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport Input from '../input';\nimport * as styles from './inline-edit.css';\n\nexport interface InlineEditHandle {\n triggerEdit: () => void;\n}\n\nexport interface InlineEditProps\n extends Omit, 'onChange' | 'onInput'> {\n /**\n * Content to be displayed\n */\n value?: string;\n /**\n * Whether the content is editable\n */\n editable?: boolean;\n /**\n * Whether to exit when pressing `Escape`\n */\n exitible?: boolean;\n\n onInput?: (v: string) => void;\n onChange?: (v: string) => void;\n\n /**\n * Trigger edit by `click` or `doubleClick`\n * @default `'doubleClick'`\n */\n trigger?: 'click' | 'doubleClick';\n\n /**\n * whether to auto select all text when trigger edit\n */\n autoSelect?: boolean;\n\n /**\n * Placeholder when value is empty\n */\n placeholder?: string;\n /**\n * Custom placeholder `className`\n */\n placeholderClassName?: string;\n /**\n * Custom placeholder `style`\n */\n placeholderStyle?: CSSProperties;\n\n handleRef?: ForwardedRef;\n\n /**\n * Customize attrs for the input\n */\n inputAttrs?: Omit, 'onChange' | 'onBlur'>;\n}\n\nexport const InlineEdit = ({\n value,\n editable,\n exitible,\n className,\n style,\n trigger = 'doubleClick',\n autoSelect,\n\n onInput,\n onChange,\n\n placeholder,\n placeholderClassName,\n placeholderStyle,\n\n handleRef,\n inputAttrs,\n\n ...attrs\n}: InlineEditProps) => {\n const [editing, setEditing] = useState(false);\n const [editingValue, setEditingValue] = useState(value);\n const inputRef = useRef(null);\n\n useImperativeHandle(handleRef, () => ({\n triggerEdit,\n }));\n\n const triggerEdit = useCallback(() => {\n if (!editable) return;\n setEditing(true);\n setTimeout(() => {\n inputRef.current?.focus();\n autoSelect && inputRef.current?.select();\n }, 0);\n }, [autoSelect, editable]);\n\n const onDoubleClick = useCallback(() => {\n if (trigger !== 'doubleClick') return;\n triggerEdit();\n }, [triggerEdit, trigger]);\n\n const onClick = useCallback(() => {\n if (trigger !== 'click') return;\n triggerEdit();\n }, [triggerEdit, trigger]);\n\n const submit = useCallback(() => {\n onChange?.(editingValue || '');\n }, [editingValue, onChange]);\n\n const onEnter = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n const onBlur = useCallback(() => {\n setEditing(false);\n submit();\n // to reset input's scroll position to match actual display\n inputRef.current?.scrollTo(0, 0);\n }, [submit]);\n\n const onKeyDown = useCallback(\n (e: KeyboardEvent) => {\n e.stopPropagation();\n if (!exitible) return;\n if (e.key !== 'Escape') return;\n inputRef.current?.blur();\n },\n [exitible]\n );\n\n const inputHandler = useCallback(\n (v: string) => {\n setEditingValue(v);\n onInput?.(v);\n },\n [onInput]\n );\n\n // update editing value when value prop changes\n useEffect(() => {\n setEditingValue(value);\n }, [value]);\n\n // to make sure text is not wrapped, and multi-space is shown normally\n const displayValue = useMemo(() => {\n return editingValue ? editingValue.replace(/\\n/g, '') : '';\n }, [editingValue]);\n\n // to make sure input's style is the same as displayed text\n const inputWrapperInheritsStyles = {\n margin: 'inherit',\n padding: 'inherit',\n borderRadius: 'inherit',\n fontSize: 'inherit',\n fontFamily: 'inherit',\n lineHeight: 'inherit',\n fontWeight: 'inherit',\n letterSpacing: 'inherit',\n textAlign: 'inherit',\n color: 'inherit',\n backgroundColor: 'inherit',\n } as CSSProperties;\n const inputInheritsStyles = {\n ...inputWrapperInheritsStyles,\n padding: 0,\n margin: 0,\n };\n\n return (\n \n {/* display area, will be transparent when input */}\n \n {displayValue}\n\n {!displayValue && (\n \n )}\n \n\n {/* actual input */}\n {\n \n }\n \n );\n};\n\ninterface PlaceholderProps\n extends PropsWithChildren,\n HTMLAttributes {\n label?: string;\n}\nconst Placeholder = ({\n label,\n children,\n className,\n style,\n ...attrs\n}: PlaceholderProps) => {\n return (\n \n {children ?? label}\n \n );\n};\n","import \"../component/src/ui/editable/inline-edit.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/editable/inline-edit.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xZWpnbHA5MCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBwYWRkaW5nOiA0cHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1pbi13aWR0aDogNTBweDsKICBtaW4taGVpZ2h0OiAyOHB4Owp9Ci5fMWVqZ2xwOTEgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IHByZTsKICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cn0KLl8xZWpnbHA5MFtkYXRhLWVkaXRpbmc9InRydWUiXSAuXzFlamdscDkxIHsKICBvcGFjaXR5OiAwOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQouXzFlamdscDkyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIG9wYWNpdHk6IDA7CiAgdmlzaWJpbGl0eTogaGlkZGVuOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5fMWVqZ2xwOTBbZGF0YS1lZGl0aW5nPSJ0cnVlIl0gLl8xZWpnbHA5MiB7CiAgb3BhY2l0eTogMTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogIHBvaW50ZXItZXZlbnRzOiBhdXRvOwp9Ci5fMWVqZ2xwOTMgewogIG9wYWNpdHk6IDAuODsKfQ==\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var inlineEdit = '_1ejglp91';\nexport var inlineEditInput = '_1ejglp92';\nexport var inlineEditWrapper = '_1ejglp90';\nexport var placeholder = '_1ejglp93';","import \"../component/src/ui/error-message/style.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/error-message/style.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xZW1kY2RiMCB7CiAgY29sb3I6IHZhcigtLWFmZmluZS1lcnJvci1jb2xvcik7CiAgZm9udC1zaXplOiAwLjZyZW07CiAgbWFyZ2luOiA0cHggOHB4IDJweCAycHg7Cn0=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var errorMessage = '_1emdcdb0';","import clsx from 'clsx';\nimport type React from 'react';\n\nimport { errorMessage } from './style.css';\n\nexport const ErrorMessage = ({\n children,\n inline,\n style,\n className,\n}: React.PropsWithChildren<{\n inline?: boolean;\n style?: React.CSSProperties;\n className?: string;\n}>) => {\n if (inline) {\n return (\n \n {children}\n \n );\n }\n return (\n
\n {children}\n
\n );\n};\n","import \"../component/src/ui/lottie/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/lottie/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LmtvNDVkczAgewogIHdpZHRoOiAxZW07CiAgaGVpZ2h0OiAxZW07CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci5rbzQ1ZHMwIHBhdGhbc3Ryb2tlPSJyZ2IoMTE5LDExNywxMjUpIl0gewogIHN0cm9rZTogY3VycmVudENvbG9yOwp9Ci5rbzQ1ZHMwIHBhdGhbZmlsbD0icmdiKDExOSwxMTcsMTI1KSJdIHsKICBmaWxsOiBjdXJyZW50Q29sb3I7Cn0=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var root = 'ko45ds0';","import clsx from 'clsx';\nimport type { LottieRef } from 'lottie-react';\nimport Lottie from 'lottie-react';\nimport { useEffect, useRef } from 'react';\n\nimport animationData from './collections-icon.json';\nimport * as styles from './styles.css';\n\nexport interface CollectionsIconProps {\n closed: boolean; // eg, when collections icon is a \"dragged over\" state\n className?: string;\n}\n\n// animated collections icon that has two states: closed and opened\nexport const AnimatedCollectionsIcon = ({\n closed,\n className,\n}: CollectionsIconProps) => {\n const lottieRef: LottieRef = useRef(null);\n\n useEffect(() => {\n if (lottieRef.current) {\n const lottie = lottieRef.current;\n if (closed) {\n lottie.setDirection(1);\n } else {\n lottie.setDirection(-1);\n }\n lottie.play();\n }\n }, [closed]);\n\n return (\n \n );\n};\n","import clsx from 'clsx';\nimport type { LottieRef } from 'lottie-react';\nimport Lottie from 'lottie-react';\nimport { useEffect, useRef } from 'react';\n\nimport animationData from './delete-icon.json';\nimport * as styles from './styles.css';\n\nexport interface DeleteIconProps {\n closed: boolean; // eg, when delete icon is a \"dragged over\" state\n className?: string;\n}\n\n// animated delete icon that has two animation states\nexport const AnimatedDeleteIcon = ({ closed, className }: DeleteIconProps) => {\n const lottieRef: LottieRef = useRef(null);\n\n useEffect(() => {\n if (lottieRef.current) {\n const lottie = lottieRef.current;\n if (closed) {\n lottie.setDirection(1);\n } else {\n lottie.setDirection(-1);\n }\n lottie.play();\n }\n }, [closed]);\n\n return (\n \n );\n};\n","import clsx from 'clsx';\nimport type { LottieRef } from 'lottie-react';\nimport Lottie from 'lottie-react';\nimport { useEffect, useRef } from 'react';\n\nimport animationData from './folder-icon.json';\nimport * as styles from './styles.css';\n\nexport interface FolderIconProps {\n open: boolean; // eg, when folder icon is a \"dragged over\" state\n className?: string;\n speed?: number;\n}\n\n// animated folder icon that has two states: closed and opened\nexport const AnimatedFolderIcon = ({\n open,\n className,\n speed = 0.5,\n}: FolderIconProps) => {\n const lottieRef: LottieRef = useRef(null);\n\n useEffect(() => {\n if (lottieRef.current) {\n const lottie = lottieRef.current;\n lottie.setSpeed(speed);\n if (open) {\n lottie.setDirection(1);\n } else {\n lottie.setDirection(-1);\n }\n lottie.play();\n }\n }, [open, speed]);\n\n return (\n \n );\n};\n","import type {\n PopoverContentProps,\n PopoverPortalProps,\n PopoverProps as PopoverPrimitiveProps,\n} from '@radix-ui/react-popover';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\nimport { useMemo } from 'react';\n\nimport * as styles from './styles.css';\n\nexport interface PopoverProps extends PopoverPrimitiveProps {\n content?: ReactNode;\n portalOptions?: PopoverPortalProps;\n contentOptions?: PopoverContentProps;\n}\nexport const Popover = ({\n content,\n children,\n portalOptions,\n contentOptions: {\n className: contentClassName,\n style: contentStyle,\n ...otherContentOptions\n } = {},\n ...props\n}: PopoverProps) => {\n return (\n \n {children}\n\n \n clsx(styles.popoverContent, contentClassName),\n [contentClassName]\n )}\n sideOffset={5}\n align=\"start\"\n style={{ zIndex: 'var(--affine-z-index-popover)', ...contentStyle }}\n {...otherContentOptions}\n >\n {content}\n \n \n \n );\n};\n\nPopover.displayName = 'Popover';\n","import \"../component/src/ui/popover/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/popover/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LmZoZm9pcjAgewogIG1pbi13aWR0aDogMTgwcHg7CiAgY29sb3I6IHZhcigtLWFmZmluZS10ZXh0LXByaW1hcnktY29sb3IpOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBwYWRkaW5nOiA4cHg7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1zbSk7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hZmZpbmUtYmFja2dyb3VuZC1vdmVybGF5LXBhbmVsLWNvbG9yKTsKICBib3gtc2hhZG93OiB2YXIoLS1hZmZpbmUtbWVudS1zaGFkb3cpOwogIHVzZXItc2VsZWN0OiBub25lOwp9\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var popoverContent = 'fhfoir0';","// components/switch.tsx\nimport clsx from 'clsx';\nimport type { HTMLAttributes, ReactNode } from 'react';\nimport { useCallback, useState } from 'react';\n\nimport * as styles from './index.css';\n\nexport type SwitchProps = Omit, 'onChange'> & {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n children?: ReactNode;\n disabled?: boolean;\n};\n\nexport const Switch = ({\n checked: checkedProp = false,\n onChange: onChangeProp,\n children,\n className,\n disabled,\n ...otherProps\n}: SwitchProps) => {\n const [checkedState, setCheckedState] = useState(checkedProp);\n\n const checked = onChangeProp ? checkedProp : checkedState;\n const onChange = useCallback(\n (event: React.ChangeEvent) => {\n if (disabled) {\n return;\n }\n const newChecked = event.target.checked;\n if (onChangeProp) onChangeProp(newChecked);\n else setCheckedState(newChecked);\n },\n [disabled, onChangeProp]\n );\n\n return (\n \n );\n};\n","import \"../component/src/ui/switch/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/switch/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xbHE0OWRmMCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTBweDsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLl8xbHE0OWRmMSB7CiAgb3BhY2l0eTogMDsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KLl8xbHE0OWRmMiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiA0NnB4OwogIGhlaWdodDogMjZweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hZmZpbmUtdG9nZ2xlLWRpc2FibGUtYmFja2dyb3VuZC1jb2xvcik7CiAgYm9yZGVyLXJhZGl1czogMzdweDsKICB0cmFuc2l0aW9uOiAyMDBtcyBhbGw7Cn0KLl8xbHE0OWRmMjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHRyYW5zaXRpb246IGFsbCAuMnMgY3ViaWMtYmV6aWVyKDAuMjcsIDAuMiwgMC4yNSwgMS41MSk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgdG9wOiA1MCU7CiAgYmFja2dyb3VuZDogdmFyKC0tYWZmaW5lLXRvZ2dsZS1jaXJjbGUtYmFja2dyb3VuZC1jb2xvcik7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoM3B4LCAtNTAlKTsKfQouXzFscTQ5ZGYzIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hZmZpbmUtcHJpbWFyeS1jb2xvcik7Cn0KLl8xbHE0OWRmMzpiZWZvcmUgewogIGJvcmRlci1jb2xvcjogdmFyKC0tYWZmaW5lLXB1cmUtYmxhY2stMTApOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDIzcHgsLTUwJSk7Cn0KLl8xbHE0OWRmNCB7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICBvcGFjaXR5OiAwLjU7Cn0=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var inputStyle = '_1lq49df1';\nexport var labelStyle = '_1lq49df0';\nexport var switchCheckedStyle = '_1lq49df3';\nexport var switchDisabledStyle = '_1lq49df4';\nexport var switchStyle = '_1lq49df2';","import { styled, textEllipsis } from '../../styles';\nimport type { TableCellProps } from './interface';\n\nexport const StyledTable = styled('table')<{ showBorder?: boolean }>(({\n showBorder,\n}) => {\n return {\n fontSize: 'var(--affine-font-base)',\n color: 'var(--affine-text-primary-color)',\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n borderSpacing: '0',\n\n ...(typeof showBorder === 'boolean'\n ? {\n thead: {\n '::after': {\n display: 'block',\n position: 'absolute',\n content: '\"\"',\n width: '100%',\n height: '1px',\n left: 0,\n background: 'var(--affine-border-color)',\n transition: 'opacity .15s',\n opacity: showBorder ? 1 : 0,\n },\n },\n }\n : {}),\n };\n});\n\nexport const StyledTableBody = styled('tbody')(() => {\n return {\n fontWeight: 400,\n };\n});\n\nexport const StyledTableCell = styled('td')<\n Pick<\n TableCellProps,\n 'ellipsis' | 'align' | 'proportion' | 'active' | 'onClick'\n >\n>(({\n align = 'left',\n ellipsis = false,\n proportion,\n active = false,\n onClick,\n}) => {\n const width = proportion ? `${proportion * 100}%` : 'auto';\n return {\n width,\n height: '52px',\n paddingLeft: '16px',\n boxSizing: 'border-box',\n textAlign: align,\n verticalAlign: 'middle',\n whiteSpace: 'nowrap',\n userSelect: 'none',\n fontSize: 'var(--affine-font-sm)',\n ...(active ? { color: 'var(--affine-text-primary-color)' } : {}),\n ...(ellipsis ? textEllipsis(1) : {}),\n ...(onClick ? { cursor: 'pointer' } : {}),\n };\n});\n\nexport const StyledTableHead = styled('thead')(() => {\n return {\n fontWeight: 500,\n color: 'var(--affine-text-secondary-color)',\n };\n});\n\nexport const StyledTHeadRow = styled('tr')({\n td: {\n whiteSpace: 'nowrap',\n // How to set tbody height with overflow scroll\n // see https://stackoverflow.com/questions/23989463/how-to-set-tbody-height-with-overflow-scroll\n position: 'sticky',\n top: 0,\n background: 'var(--affine-background-primary-color)',\n },\n});\n\nexport const StyledTBodyRow = styled('tr')(() => {\n return {\n td: {\n transition: 'background .15s',\n },\n // Add border radius to table row\n // see https://stackoverflow.com/questions/4094126/how-to-add-border-radius-on-table-row\n 'td:first-of-type': {\n borderTopLeftRadius: '10px',\n borderBottomLeftRadius: '10px',\n },\n 'td:last-of-type': {\n borderTopRightRadius: '10px',\n borderBottomRightRadius: '10px',\n },\n\n ':hover': {\n td: {\n background: 'var(--affine-hover-color)',\n },\n },\n };\n});\n","// Copyright: https://github.com/toeverything/blocksuite/commit/8032ef3ab97aefce01664b36502fc392c5db8b78#diff-bf5b41be21936f9165a8400c7f20e24d3dbc49644ba57b9258e0943f0dc1c464\nimport { DebugLogger } from '@affine/debug';\nimport type { TemplateResult } from 'lit';\nimport { css, html } from 'lit';\n\nconst logger = new DebugLogger('toast');\n\nexport const sleep = (ms = 0) =>\n new Promise(resolve => setTimeout(resolve, ms));\n\nlet ToastContainer: HTMLDivElement | null = null;\n\n/**\n * DO NOT USE FOR USER INPUT\n * See https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n */\nconst htmlToElement = (html: string | TemplateResult) => {\n const template = document.createElement('template');\n if (typeof html === 'string') {\n html = html.trim(); // Never return a text node of whitespace as the result\n template.innerHTML = html;\n } else {\n const { strings, values } = html;\n const v = [...values, '']; // + last empty part\n template.innerHTML = strings.reduce((acc, cur, i) => acc + cur + v[i], '');\n }\n return template.content.firstChild as T;\n};\n\nconst createToastContainer = (portal?: HTMLElement) => {\n portal = portal || document.body;\n const styles = css`\n width: 100%;\n position: fixed;\n z-index: 9999;\n bottom: 78px;\n left: 50%;\n transform: translateX(-50%);\n pointer-events: none;\n display: flex;\n flex-direction: column;\n align-items: center;\n `;\n const template = html``;\n const element = htmlToElement(template);\n portal.append(element);\n return element;\n};\n\nexport type ToastOptions = {\n duration?: number;\n portal?: HTMLElement;\n};\n\nconst animateToastOut = (toastElement: HTMLDivElement) => {\n toastElement.style.opacity = '0';\n setTimeout(() => toastElement.remove(), 300); // Match transition duration\n};\n\nconst createAndShowNewToast = (\n message: string,\n duration: number,\n portal?: HTMLElement\n) => {\n if (!ToastContainer || (portal && !portal.contains(ToastContainer))) {\n ToastContainer = createToastContainer(portal);\n }\n\n const toastStyles = css`\n position: absolute;\n bottom: 0;\n max-width: 480px;\n text-align: center;\n font-family: var(--affine-font-family);\n font-size: var(--affine-font-sm);\n padding: 10px 16px;\n margin: 0;\n color: var(--affine-white);\n background: var(--affine-tooltip);\n box-shadow: var(--affine-float-button-shadow);\n border-radius: 8px;\n opacity: 0;\n transform: translateY(100%);\n transition:\n transform 0.3s cubic-bezier(0.25, 0.1, 0.25, 1),\n opacity 0.3s ease;\n `;\n\n const toastTemplate = html`\n ${message}\n `;\n const toastElement = htmlToElement(toastTemplate);\n // message is not trusted\n toastElement.textContent = message;\n ToastContainer.append(toastElement);\n logger.debug(`toast with message: \"${message}\"`);\n window.dispatchEvent(\n new CustomEvent('affine-toast:emit', { detail: message })\n );\n\n setTimeout(() => {\n toastElement.style.opacity = '1';\n toastElement.style.transform = 'translateY(0)';\n }, 100);\n\n setTimeout(() => {\n animateToastOut(toastElement);\n }, duration);\n};\n\n/**\n * @example\n * ```ts\n * toast('Hello World');\n * ```\n */\nexport const toast = (\n message: string,\n { duration = 3000, portal }: ToastOptions = {}\n) => {\n if (ToastContainer && ToastContainer.children.length >= 2) {\n // If there are already two toasts, remove the oldest one immediately\n const oldestToast = ToastContainer.children[0] as HTMLDivElement;\n oldestToast.remove();\n }\n\n // If there is one toast already, start its disappearing animation\n if (ToastContainer && ToastContainer.children.length === 1) {\n const currentToast = ToastContainer.children[0] as HTMLDivElement;\n animateToastOut(currentToast);\n }\n\n createAndShowNewToast(message, duration, portal);\n};\n\nexport default toast;\n","import type { CSSProperties } from 'react';\n\nexport const displayFlex = (\n justifyContent: CSSProperties['justifyContent'] = 'unset',\n alignItems: CSSProperties['alignItems'] = 'unset',\n alignContent: CSSProperties['alignContent'] = 'unset'\n): {\n display: CSSProperties['display'];\n justifyContent: CSSProperties['justifyContent'];\n alignItems: CSSProperties['alignItems'];\n alignContent: CSSProperties['alignContent'];\n} => {\n return {\n display: 'flex',\n justifyContent,\n alignItems,\n alignContent,\n };\n};\nexport const displayInlineFlex = (\n justifyContent: CSSProperties['justifyContent'] = 'unset',\n alignItems: CSSProperties['alignContent'] = 'unset',\n alignContent: CSSProperties['alignContent'] = 'unset'\n): {\n display: CSSProperties['display'];\n justifyContent: CSSProperties['justifyContent'];\n alignItems: CSSProperties['alignContent'];\n alignContent: CSSProperties['alignContent'];\n} => {\n return {\n display: 'inline-flex',\n justifyContent,\n alignItems,\n alignContent,\n };\n};\n\nexport const absoluteCenter = ({\n horizontal = false,\n vertical = false,\n position: { left, right, top, bottom } = {},\n}: {\n horizontal?: boolean;\n vertical?: boolean;\n position?: {\n left?: CSSProperties['left'];\n right?: CSSProperties['right'];\n top?: CSSProperties['top'];\n bottom?: CSSProperties['bottom'];\n };\n}): {\n position: CSSProperties['position'];\n left: CSSProperties['left'];\n top: CSSProperties['top'];\n right: CSSProperties['right'];\n bottom: CSSProperties['bottom'];\n transform: CSSProperties['transform'];\n} => {\n return {\n position: 'absolute',\n left: left ? left : horizontal ? '50%' : 'auto',\n top: top ? top : vertical ? '50%' : 'auto',\n right: right ? right : 'auto',\n bottom: bottom ? bottom : 'auto',\n transform: `translate(${horizontal ? '-50%' : '0'}, ${\n vertical ? '-50%' : '0'\n })`,\n };\n};\nexport const fixedCenter = ({\n horizontal = false,\n vertical = false,\n position: { left, right, top, bottom } = {},\n}: {\n horizontal?: boolean;\n vertical?: boolean;\n position?: {\n left?: CSSProperties['left'];\n right?: CSSProperties['right'];\n top?: CSSProperties['top'];\n bottom?: CSSProperties['bottom'];\n };\n}): {\n position: CSSProperties['position'];\n left: CSSProperties['left'];\n top: CSSProperties['top'];\n right: CSSProperties['right'];\n bottom: CSSProperties['bottom'];\n transform: CSSProperties['transform'];\n} => {\n return {\n position: 'fixed',\n left: left ? left : horizontal ? '50%' : 'auto',\n top: top ? top : vertical ? '50%' : 'auto',\n right: right ? right : 'auto',\n bottom: bottom ? bottom : 'auto',\n transform: `translate(${horizontal ? '-50%' : '0'}, ${\n vertical ? '-50%' : '0'\n })`,\n };\n};\n\nexport const textEllipsis = (lineNum = 1): CSSProperties => {\n if (lineNum > 1) {\n return {\n display: '-webkit-box',\n wordBreak: 'break-all',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: `${lineNum}`, //the number of rows to display\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n };\n }\n return {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n };\n};\n\nexport const positionAbsolute = ({\n left,\n top,\n right,\n bottom,\n}: {\n left?: CSSProperties['left'];\n top?: CSSProperties['top'];\n right?: CSSProperties['right'];\n bottom?: CSSProperties['bottom'];\n}): {\n position: CSSProperties['position'];\n left: CSSProperties['left'];\n top: CSSProperties['top'];\n right: CSSProperties['right'];\n bottom: CSSProperties['bottom'];\n} => {\n return {\n position: 'absolute',\n left,\n top,\n right,\n bottom,\n };\n};\n","import \"../component/src/ui/avatar/style.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/avatar/style.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA7VWy3LiMBC85yt02SpShVi/8EO55E+2hC3DJEKiJBlCtvLvW5JtsAxxHhsuGFnj7unp0diPz+xYK7plGv0JgzCqlY7Q3zuEgl/ugpCRO4Jwkvx6cEvOakMQDsNubRQVupZqS9CWGgUvMxwsomKOcLAo0jkKFkXiFvFyjoI5Cu7tc293CIVpT9Fj5j2mo1xOUmSxQ00LS5G2FFk2ooijEUXmMSTBFEOROdAotgxh2ioqRgxJPhax9CjiYooizy12krdS3G8+IkiTW0vIg5v7EAa3bqe3u8fLTo79Tu644mD34ll0Xl8j79xprTo5Nd3JcTaiyCYp8taZZWQp4k5s9FEvRyMd4ZSO0IEGkbuE0SebORrpiKZlfKObf17ERTvfwoxBQ9+oq97uFn0bJ47pAJXZEMdsIzYM1htzXu+kBgNSEKQYpwb2zN6Ve6ZqLg8EbaCqmHgY4i6HuHnswebhCJWutOSNcagnyS6m19suviFW7mgJ5kjspl3XwA1TBK14o2Z7qmYY9ymH9/ceC5YK1iAIKpkwTHUXG0IFbGmb+nkcxBoxqhkGgWVjUC3VgapKIxA1CGjFnR7EO06PWBtqGEE72mhWeeVLXfmuh6tGCBBrLz4blrvIvXIX2US5vZHpD8zvjcubFPwAnONyQ8WaEZfl3CY+Pz/6jivRz7qSf9GVwj9ciW9LMmGLamOuHoP/qLDnZD50sn3TxsOX64e+DJRSp/T6nKhA20IRBIKDYLjmzE0ve8V6o0A8ExR4cCsHd9YRENQIzczDuZy+0DbjvrTX9mopDNbwyggqKS9n4xj0G0X3Xrp9npTDWmAwbKvJoCefGm2gPuJSCsOEGW7tmTJQUo7dowRtoaq4q0WjmcKacVYagoQU7JvjtfzM2JarJ1YaXINNzsJ5ENWnIC6S+JECrWj5vFayERUuJZeqt4zWte2QnYItVcd2z5lyLeqwAcPcrmurU+ontw/dnWXgdxf72jtveC4vtE+IfKcsl9rVekVnaTBHaThHqfueXjpdrxhExV46TVcr1ahhIc6j4XSAOxHdDlqES+3AGqUt2k7CxWFmZGN9d1U6IYZeSD0679dmV95+pHhfd3vQsALuEM8dNdQ5HCpdHiPWIYb7b4/W2z+UsmY+bQ4AAA==\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var DefaultAvatarBottomItemStyle = '_1012frs7';\nexport var DefaultAvatarBottomItemWithAnimationStyle = '_1012frs8';\nexport var DefaultAvatarContainerStyle = '_1012frs4';\nexport var DefaultAvatarMiddleItemStyle = '_1012frs5';\nexport var DefaultAvatarMiddleItemWithAnimationStyle = '_1012frs6';\nexport var DefaultAvatarTopItemStyle = '_1012frs9';\nexport var avatarFallback = '_1012frsd';\nexport var avatarImage = '_1012frsc';\nexport var avatarRoot = '_1012frsa';\nexport var avatarWrapper = '_1012frsb';\nexport var blurVar = 'var(--_1012frs1)';\nexport var hoverWrapper = '_1012frse';\nexport var removeButton = '_1012frsf';\nexport var sizeVar = 'var(--_1012frs0)';","import clsx from 'clsx';\nimport { useMemo, useRef, useState } from 'react';\n\nimport {\n DefaultAvatarBottomItemStyle,\n DefaultAvatarBottomItemWithAnimationStyle,\n DefaultAvatarContainerStyle,\n DefaultAvatarMiddleItemStyle,\n DefaultAvatarMiddleItemWithAnimationStyle,\n DefaultAvatarTopItemStyle,\n} from './style.css';\n\nconst colorsSchema = [\n ['#FF0000', '#FF00E5', '#FFAE73'],\n ['#FF5C00', '#FFC700', '#FFE073'],\n ['#FFDA16', '#FFFBA6', '#FFBE73'],\n ['#8CD317', '#FCFF5C', '#67CAE9'],\n ['#28E19F', '#89FFC6', '#39A880'],\n ['#35B7E0', '#77FFCE', '#5076FF'],\n ['#3D39FF', '#77BEFF', '#3502FF'],\n ['#BD08EB', '#755FFF', '#6967E4'],\n];\n\nexport const ColorfulFallback = ({ char }: { char: string }) => {\n const colors = useMemo(() => {\n const index = char.toUpperCase().charCodeAt(0);\n return colorsSchema[index % colorsSchema.length];\n }, [char]);\n\n const timer = useRef>();\n\n const [topColor, middleColor, bottomColor] = colors;\n const [isHover, setIsHover] = useState(false);\n\n return (\n {\n timer.current = setTimeout(() => {\n setIsHover(true);\n }, 300);\n }}\n onMouseLeave={() => {\n clearTimeout(timer.current);\n setIsHover(false);\n }}\n >\n \n \n \n \n );\n};\nexport default ColorfulFallback;\n","import { CloseIcon } from '@blocksuite/icons/rc';\nimport type {\n AvatarFallbackProps,\n AvatarImageProps,\n AvatarProps as RadixAvatarProps,\n} from '@radix-ui/react-avatar';\nimport {\n Fallback as AvatarFallback,\n Image as AvatarImage,\n Root as AvatarRoot,\n} from '@radix-ui/react-avatar';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport type {\n CSSProperties,\n HTMLAttributes,\n MouseEvent,\n ReactElement,\n} from 'react';\nimport {\n forwardRef,\n useCallback,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { withUnit } from '../../utils/with-unit';\nimport { IconButton } from '../button';\nimport type { TooltipProps } from '../tooltip';\nimport { Tooltip } from '../tooltip';\nimport { ColorfulFallback } from './colorful-fallback';\nimport * as style from './style.css';\nimport { blurVar, sizeVar } from './style.css';\n\nexport type AvatarProps = {\n size?: number;\n url?: string | null;\n image?: ImageBitmap /* use pre-loaded image data can avoid flashing */;\n name?: string;\n className?: string;\n style?: CSSProperties;\n colorfulFallback?: boolean;\n hoverIcon?: ReactElement;\n onRemove?: (e: MouseEvent) => void;\n avatarTooltipOptions?: Omit;\n removeTooltipOptions?: Omit;\n /**\n * Same as `CSS.borderRadius`, number in px or string with unit\n * @default '50%'\n */\n rounded?: number | string;\n\n fallbackProps?: AvatarFallbackProps;\n imageProps?: Omit<\n AvatarImageProps & React.HTMLProps,\n 'src' | 'ref'\n >;\n avatarProps?: RadixAvatarProps;\n hoverWrapperProps?: HTMLAttributes;\n removeButtonProps?: HTMLAttributes;\n} & HTMLAttributes;\n\nfunction drawImageFit(\n img: ImageBitmap,\n ctx: CanvasRenderingContext2D,\n size: number\n) {\n const hRatio = size / img.width;\n const vRatio = size / img.height;\n const ratio = Math.max(hRatio, vRatio);\n const centerShift_x = (size - img.width * ratio) / 2;\n const centerShift_y = (size - img.height * ratio) / 2;\n ctx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n centerShift_x,\n centerShift_y,\n img.width * ratio,\n img.height * ratio\n );\n}\n\nexport const Avatar = forwardRef(\n (\n {\n size = 20,\n style: propsStyles = {},\n url,\n image,\n name,\n className,\n colorfulFallback = false,\n hoverIcon,\n fallbackProps: { className: fallbackClassName, ...fallbackProps } = {},\n imageProps,\n avatarProps,\n rounded = '50%',\n onRemove,\n hoverWrapperProps: {\n className: hoverWrapperClassName,\n ...hoverWrapperProps\n } = {},\n avatarTooltipOptions,\n removeTooltipOptions,\n removeButtonProps: {\n className: removeButtonClassName,\n ...removeButtonProps\n } = {},\n ...props\n },\n ref\n ) => {\n const firstCharOfName = useMemo(() => {\n return name?.slice(0, 1) || 'A';\n }, [name]);\n const [containerDom, setContainerDom] = useState(\n null\n );\n const [removeButtonDom, setRemoveButtonDom] =\n useState(null);\n const [canvas, setCanvas] = useState(null);\n\n useLayoutEffect(() => {\n if (canvas && image) {\n const ctx = canvas?.getContext('2d');\n if (ctx) {\n drawImageFit(image, ctx, size * window.devicePixelRatio);\n }\n }\n return;\n }, [canvas, image, size]);\n\n const canvasRef = useCallback((node: HTMLCanvasElement | null) => {\n setCanvas(node);\n }, []);\n\n return (\n \n \n \n {image /* canvas mode */ ? (\n \n ) : (\n \n )}\n\n {!image /* no fallback on canvas mode */ && (\n \n {colorfulFallback ? (\n \n ) : (\n firstCharOfName.toUpperCase()\n )}\n \n )}\n {hoverIcon ? (\n \n {hoverIcon}\n \n ) : null}\n \n \n\n {onRemove ? (\n \n \n \n ) : null}\n \n );\n }\n);\n\nAvatar.displayName = 'Avatar';\n","import clsx from 'clsx';\nimport type {\n CSSProperties,\n HTMLAttributes,\n MouseEvent,\n ReactElement,\n} from 'react';\nimport { cloneElement, forwardRef, useCallback } from 'react';\n\nimport { useAutoFocus } from '../../hooks';\nimport { Loading } from '../loading';\nimport { Tooltip, type TooltipProps } from '../tooltip';\nimport * as styles from './button.css';\n\nexport type ButtonType =\n | 'primary'\n | 'secondary'\n | 'plain'\n | 'error'\n | 'success'\n | 'custom';\nexport type ButtonSize = 'default' | 'large' | 'extraLarge' | 'custom';\n\nexport interface ButtonProps\n extends Omit, 'type' | 'prefix'> {\n /**\n * Preset color scheme\n * @default 'secondary'\n */\n variant?: ButtonType;\n disabled?: boolean;\n /**\n * By default, the button is `inline-flex`, set to `true` to make it `flex`\n * @default false\n */\n block?: boolean;\n /**\n * Preset size, will be overridden by `style` or `className`\n * @default 'default'\n */\n size?: ButtonSize;\n /**\n * Will show a loading spinner at `prefix` position\n */\n loading?: boolean;\n\n /** No hover state */\n withoutHover?: boolean;\n\n /**\n * By default, it is considered as an icon with preset size and color,\n * can be overridden by `prefixClassName` and `prefixStyle`.\n *\n * If `loading` is true, will be replaced by a spinner.(`prefixClassName` and `prefixStyle` still work)\n * */\n prefix?: ReactElement;\n prefixClassName?: string;\n prefixStyle?: CSSProperties;\n contentClassName?: string;\n contentStyle?: CSSProperties;\n\n /**\n * By default, it is considered as an icon with preset size and color,\n * can be overridden by `suffixClassName` and `suffixStyle`.\n * */\n suffix?: ReactElement;\n suffixClassName?: string;\n suffixStyle?: CSSProperties;\n\n tooltip?: TooltipProps['content'];\n tooltipShortcut?: TooltipProps['shortcut'];\n tooltipOptions?: Partial>;\n}\n\nconst IconSlot = ({\n icon,\n loading,\n className,\n ...attrs\n}: {\n icon?: ReactElement;\n loading?: boolean;\n} & HTMLAttributes) => {\n const showLoadingHere = loading !== undefined;\n const visible = icon || loading;\n return visible ? (\n
\n {showLoadingHere && loading ? : null}\n {icon && !loading\n ? cloneElement(icon, {\n width: '100%',\n height: '100%',\n ...icon.props,\n })\n : null}\n
\n ) : null;\n};\n\nexport const Button = forwardRef(\n (\n {\n variant = 'secondary',\n size = 'default',\n children,\n disabled,\n block,\n loading,\n className,\n withoutHover,\n\n prefix,\n prefixClassName,\n prefixStyle,\n suffix,\n suffixClassName,\n suffixStyle,\n contentClassName,\n contentStyle,\n\n tooltip,\n tooltipShortcut,\n tooltipOptions,\n autoFocus,\n onClick,\n\n ...otherProps\n },\n upstreamRef\n ) => {\n const ref = useAutoFocus(autoFocus);\n\n const handleClick = useCallback(\n (e: MouseEvent) => {\n if (loading || disabled) return;\n onClick?.(e);\n },\n [disabled, loading, onClick]\n );\n\n const buttonRef = (el: HTMLButtonElement | null) => {\n ref.current = el;\n if (upstreamRef) {\n if (typeof upstreamRef === 'function') {\n upstreamRef(el);\n } else {\n upstreamRef.current = el;\n }\n }\n };\n\n return (\n \n \n \n {children ? (\n \n {children}\n \n ) : null}\n \n \n \n );\n }\n);\nButton.displayName = 'Button';\nexport default Button;\n","import \"../component/src/ui/button/button.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/button/button.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA9VXXWvzNhS+768QgRcaqIrtJmmq8u6i14NdbLCLUYZsHdtaVMlIcj429t+H5MSxZTtJGe/YS9vUOV96ztGjo+PH3+PlGl6EAvTXHUIYn74/EbSo9q89WUxQLQ3YvjQalTKC4sY/F7DHptRcbgiKnKRShluuJEEaBLV8C07KuKkEPRDEpeASsPNzcip4ITG38GEIykBa0E78R20szw84U9KCtF1VbUBjAwIyS5BU0odXtXVhjxBSpRlorCnjtSFo3UC1msoTNCoEenwyTpzV2ihNUKX4aQm8g3TDLaZVhTUU3kMqzDQtfHiabQqtaslwpoTz3VJ9f67Oy9zHHVPReYPP1YwytQv163kH/44zW4YWrGth7EEAQUYJzjri0aUz7zgaM/aqEnhR2lAXeV1Bq1Dx5BUVZYzLIlQuvDJX0mLD/4RQvTyrd6OrrryBZ8o4rOf5693fd48twUkKudINz1vSzGZ9QtLUKFFb6BQijqIv3eRP37tk4bIEze0IszoaVdGM28ORgQJyS9DyGEtV52cXN1f6gzSPglq4x8voywNyn/NL/KJ57goi6AE07hiVagv6py1oQQ/zIQ38OhXVIG1TDs9zDFuQ1pyPUJ90w5yPXGsV3er/xqilWKoGyvtxMx5QaMG4oakA9t7drrY1NEh6u+rjdY3bMsdjCFKhss17P2rTaYa2jpdfZwxyWgs7ew86ZERQsg5b5MK3TRQnoSIhKF6FwmWwb57uezPvW60cNaK+7JmgJKouoBZUFzCG+WkA7RLmZpEAc7wMhVMQF5cgwt5q+uMUzsVg5YXv0ygeFD05rTTAOUC5+gTKLdWcSvt1Vmn+QfVhgPIl2L60tlZJfDQPdpFOGNcafi25hV9gbwOX9PMu2bgLlxL0m6DZ5s0f1fnFfA1kSrJPZNw6XMnZwt5OlCfMlWeTlQxzPHa7GxKrBOVyLKmgAf4HGUyuyAiaONhtGqC10rfujTf+jrlYZxkYczMTG/PvLt/22utfYdHjMrjucpXVBm+54akAQmhuQY+NNFeGl/GJx48hnelkbFTuXfvnITXyP3G1HzubXBrOoEm/cyQ6ieU+B3+63H2eCxcThOCV4X4G37miY1PRDNwYsNO08jNVa1xyxkD2ghY+6PD9Y3TCTS5MuMnlWTWZnubT+etw0ph4p+kh/wGZbYP/yk62sf1k04tSBmdmQVB7x7f7Vu39X3z8r4uU3kcP6Pj7GCfzh9ZgOW00wpTjtdoQ3Jbw4YYpqjezdzSAeCuc1eoGOM9Jn1xlA8E35H9xF3y7Bj8KkFFZwGib/78hbGbwaw36/Dbir6Tm3eNK1+1bfg7P6DtBdD2Kf1W+9b5xrm/+8Wfn9m1GgvUpTHNKpivRzNXJYoB+cTqN/wA3zN9N8BEAAA==\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var button = '_158e9loe';\nexport var content = '_158e9lof';\nexport var hVar = 'var(--_158e9lo0)';\nexport var icon = '_158e9log';\nexport var iconButton = '_158e9loh';\nexport var iconSizeVar = 'var(--_158e9lo2)';\nexport var wVar = 'var(--_158e9lo1)';","import { ArrowDownSmallIcon } from '@blocksuite/icons/rc';\nimport type { ButtonHTMLAttributes, MouseEventHandler } from 'react';\nimport { forwardRef } from 'react';\n\nimport * as styles from './styles.css';\n\ntype DropdownButtonProps = {\n size?: 'small' | 'default';\n onClickDropDown?: MouseEventHandler;\n} & ButtonHTMLAttributes;\n\nexport const DropdownButton = forwardRef<\n HTMLButtonElement,\n DropdownButtonProps\n>(({ onClickDropDown, children, size = 'default', ...props }, ref) => {\n const handleClickDropDown: MouseEventHandler = e => {\n e.stopPropagation();\n onClickDropDown?.(e);\n };\n return (\n \n {children}\n \n \n \n \n \n );\n});\nDropdownButton.displayName = 'DropdownButton';\n","import \"../component/src/ui/button/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/button/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA9VZ627jKBT+36dAI43USMVyMkk39WjmCfYNVqPViU0SNgQswE26q3n3FRinBl9ycZq2UlvVhnPhnO8c4HP093jLprM0jtF/dwhlVOUMXhJEOaOc4CUj++93CAGjK46pJluVoJRwTaR5/U+hNF2+4FRwTbiuD+WQZZSvEhSjcZzva6+wpKu1TlBs3qWCCZmgZ5D3GMNyaYxqstc4l3QL0qhmQo7M1KXgGu9IKfwYW/EFpJuVFAXPAh2vAy2aFkJmRCZonO+REoxmgawdbszHEjJaqATNy+VYfxT9lwSmy/dbK7l27n6blDKFIhIrwkiqE8QFJ+blbk01wSqHlJiXOwm5DU0hlYlNLmgZ1N930SFbyVo8E2lz1hkDO6VcBl5Sxkg28pX8lYEGu4QfGVlCwfQvq9H3ukNCbYExf/5kHswf2+EdzfQ6QXE0K4NQTR8/ls+dC8joM/UzsQW5otyAalrKli9qkKpZn9Stj+P4q2fcPR8QPxjqmJGlTirHArCXNVBz7luZOx9Z02DSxKU5lDoh436qp1bOLBGvpNglaPzdPdt/6zMTLvR9wkBpLJZYv+RkZIX9SIeezkoDfSWxV6PWgPdEtiMXPt5qvWaa76vq7KhZyrSp/EyKHKs1ZGJ3H+d7ZH6NsFwt4D5+QO4nGo9GPRXaWs3NNlUP05l162dx5spPgyY/vqRrkm5I9uVXvzbru6/n0Up0tl5FUsGzoPm6wJWr/H3X4clPFBg5ZLsSPIz/0bvhNEBhg48XRO8I4T3YOK8bNnAS7FUJco0b78hiQzWGPMeSrKjgZkk4k7DyVjU/b1VHod4KMS2KdI0h1daNLXCaFwzMkxkVhTZG3Qbb2OvCzbm/XvoKegGK2BhqCVzR0htgDEXf1NGYte/nYWUfRfXB8TY0M3gh0m3no1NOG36ZzCM7thAse+1uXZU9t30z2lG9FoUu0TYaVO3zKKMKFoyU1kUOKdUvCYqm9dOB27h7V+f01MrZnSkweSZcq5bqnEdMgMFI2Sre2li10u4gPqCmb2eEnPI1kVQHZhdMpBu/YqtS9Y4NnlBKZcpI2/Y9a8y11tumjsMNdB4xkCvSf/5yCmtTQ7WPDQmy1xL+bOiehgeSSncwPzAwaYrlDCjv31G6juBV1doGkoMkXIdV7w35dkulnZbzQnp9oqsAjznn3w0YpBs8jt28vTtEhLMKrQXHlHPTve2MsLad1TMgbJo6SLwyqSBc38cZWT00TizxdITir+3vDZhHD/2rb3PyvEbUq+HSLtnrJpFSyME4sFpujAJr890x4K+86eCA/Pvyl2a/x8EdSH7YplpSdULinYobp95Zfffkh6tvc3IAAEINl0Kg101VpClRanALcHpujARn9d2REK6+zckBSAg1XIqEXjdzKcxgX0c4/VxQqbr50aAy/O6QaIlBh6uDzggNJZcfE3r9RT8Nj1AeVu3F/MAGBrfi8HT+9MqfqbWkfONu19e76LchiqaChwR4eRmvqNPqlvLYxqzW/Y+UBqlPIPKeIuJuLG5ejdX0pr3eQWp+TWLPr+rxcK0Pbw9P4XVjkK6S3LGlffQ8UBOET8HZtFHFl1IvVUinQUinDdanivrFV7u+Lyv1HByK3VVhDYIJwuFFGCITyefuNPfcF+DqTA28J1MDt2Rq4DymBq7E1ECt2zjsVl/Uwi9sdeyGTcup6YdaU8h+6arbbm9FLQ3aU2M7HW4oa+/dvrIm/PtJl2DjGEy2OHtDiu4oXXMzpsZ86zGddeK++9iz0GQ2e0Cvf+JoMhshyhVpBOLj8zYwmLdpangD3gaO8DY3omyGweGDEzgwkMAJ5a9O4MDHIXCGAeET0DkwmM5pangDOgeO0jk3Y3KGQeIT8DowmNdpangDXgdO4XVuSekMPUN8EoIHrkHwtCq5JsHzP6pCX3HEKAAA\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var button = '_1ml45c08';\nexport var buttonIcon = '_1ml45c09';\nexport var divider = '_1ml45c01';\nexport var dropdownBtn = '_1ml45c00';\nexport var dropdownIcon = '_1ml45c03';\nexport var dropdownWrapper = '_1ml45c02';\nexport var iconButton = '_1ml45c0a';\nexport var radioButton = '_1ml45c04';\nexport var radioButtonContent = '_1ml45c05';\nexport var radioButtonGroup = '_1ml45c07';\nexport var radioUncheckedButton = '_1ml45c06 _1ml45c05';","import { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport { type CSSProperties, forwardRef, type ReactElement } from 'react';\n\nimport { Button, type ButtonProps } from './button';\nimport { iconButton, iconSizeVar } from './button.css';\n\nexport interface IconButtonProps\n extends Omit<\n ButtonProps,\n | 'variant'\n | 'size'\n | 'prefix'\n | 'suffix'\n | 'children'\n | 'prefixClassName'\n | 'prefixStyle'\n | 'suffix'\n | 'suffixClassName'\n | 'suffixStyle'\n > {\n /** Icon element */\n children?: ReactElement;\n /** Same as `children`, compatibility of the old API */\n icon?: ReactElement;\n variant?: 'plain' | 'solid' | 'danger' | 'custom';\n /**\n * Use preset size,\n * or use custom size(px) (default padding is `2px`, have to override yourself)\n *\n * > These presets size are referenced from the design system.\n * > The number is the size of the icon, the button size is calculated based on the icon size + padding.\n * > OR, you can define `width` and `height` in `style` or `className` directly.\n */\n size?: '12' | '14' | '16' | '20' | '24' | number;\n iconClassName?: string;\n iconStyle?: CSSProperties;\n}\n\nexport const IconButton = forwardRef(\n (\n {\n variant = 'plain',\n size = '20',\n style,\n className,\n children,\n icon,\n iconClassName,\n iconStyle,\n ...otherProps\n },\n ref\n ) => {\n const validatedSize = isNaN(parseInt(size as string, 10)) ? 16 : size;\n\n return (\n \n );\n }\n);\n\nIconButton.displayName = 'IconButton';\nexport default IconButton;\n","import type {\n RadioGroupItemProps,\n RadioGroupProps,\n} from '@radix-ui/react-radio-group';\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport clsx from 'clsx';\nimport type { CSSProperties } from 'react';\nimport { forwardRef } from 'react';\n\nimport { RadioGroup } from '../radio';\nimport * as styles from './styles.css';\n\n// for reference\nRadioGroup;\n\n/**\n * @deprecated\n * use {@link RadioGroup } instead\n */\nexport const RadioButton = forwardRef<\n HTMLButtonElement,\n RadioGroupItemProps & { spanStyle?: string }\n>(({ children, className, spanStyle, ...props }, ref) => {\n return (\n \n \n {children}\n \n \n {children}\n \n \n );\n});\nRadioButton.displayName = 'RadioButton';\n\n/**\n * @deprecated\n * use {@link RadioGroup} instead\n */\nexport const RadioButtonGroup = forwardRef<\n HTMLDivElement,\n RadioGroupProps & { width?: CSSProperties['width'] }\n>(({ className, style, width, ...props }, ref) => {\n return (\n \n );\n});\nRadioButtonGroup.displayName = 'RadioButtonGroup';\n","const unchecked = (\n \n \n \n);\n\nconst checked = (\n \n \n \n);\n\nconst indeterminate = (\n \n \n \n);\n\nexport { checked, indeterminate, unchecked };\n","// components/checkbox.tsx\nimport clsx from 'clsx';\nimport type { HTMLAttributes } from 'react';\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport * as icons from './icons';\nimport * as styles from './index.css';\n\nexport type CheckboxProps = Omit<\n HTMLAttributes,\n 'onChange'\n> & {\n checked: boolean;\n onChange: (\n event: React.ChangeEvent,\n checked: boolean\n ) => void;\n disabled?: boolean;\n indeterminate?: boolean;\n animation?: boolean;\n name?: string;\n label?: string;\n inputClassName?: string;\n labelClassName?: string;\n};\n\nexport const Checkbox = ({\n checked,\n onChange,\n indeterminate,\n disabled,\n animation,\n name,\n label,\n inputClassName,\n labelClassName,\n className,\n ...otherProps\n}: CheckboxProps) => {\n const inputRef = useRef(null);\n const handleChange = useCallback(\n (event: React.ChangeEvent) => {\n const newChecked = event.target.checked;\n onChange(event, newChecked);\n const inputElement = inputRef.current;\n if (newChecked && inputElement && animation) {\n playCheckAnimation(inputElement.parentElement as Element).catch(\n console.error\n );\n }\n },\n [onChange, animation]\n );\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = !!indeterminate;\n }\n }, [indeterminate]);\n\n const icon = indeterminate\n ? icons.indeterminate\n : checked\n ? icons.checked\n : icons.unchecked;\n\n return (\n \n {icon}\n \n {label ? (\n \n ) : null}\n \n );\n};\n\nexport const playCheckAnimation = async (refElement: Element) => {\n const sparkingEl = document.createElement('div');\n sparkingEl.classList.add('affine-check-animation');\n sparkingEl.style.cssText = `\n position: absolute;\n width: 1em;\n height: 1em;\n border-radius: 50%;\n font-size: inherit;\n `;\n refElement.append(sparkingEl);\n\n await sparkingEl.animate(\n [\n {\n boxShadow:\n '0 -18px 0 -8px #1e96eb, 16px -8px 0 -8px #1e96eb, 16px 8px 0 -8px #1e96eb, 0 18px 0 -8px #1e96eb, -16px 8px 0 -8px #1e96eb, -16px -8px 0 -8px #1e96eb',\n },\n ],\n { duration: 240, easing: 'ease', fill: 'forwards' }\n ).finished;\n\n await sparkingEl.animate(\n [\n {\n boxShadow:\n '0 -36px 0 -10px transparent, 32px -16px 0 -10px transparent, 32px 16px 0 -10px transparent, 0 36px 0 -10px transparent, -32px 16px 0 -10px transparent, -32px -16px 0 -10px transparent',\n },\n ],\n { duration: 360, easing: 'ease', fill: 'forwards' }\n ).finished;\n sparkingEl.remove();\n};\n","import \"../component/src/ui/checkbox/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/checkbox/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LnlqYWRweTAgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci55amFkcHkwOmhvdmVyIHN2ZyB7CiAgb3BhY2l0eTogMC44Owp9Ci55amFkcHkwOmFjdGl2ZSBzdmcgewogIG9wYWNpdHk6IDAuOTsKfQoueWphZHB5MSB7CiAgb3BhY2l0eTogMC41OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci55amFkcHkyIHsKICBvcGFjaXR5OiAwOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMWVtOwogIGhlaWdodDogMWVtOwogIGluc2V0OiAwOwogIHRvcDogNTAlOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZm9udC1zaXplOiBpbmhlcml0Owp9\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var disabled = 'yjadpy1';\nexport var input = 'yjadpy2';\nexport var root = 'yjadpy0';","import clsx from 'clsx';\nimport type { HTMLAttributes, PropsWithChildren } from 'react';\nimport { forwardRef } from 'react';\n\nimport * as styles from './style.css';\nexport type DividerOrientation = 'horizontal' | 'vertical';\nexport type DividerProps = PropsWithChildren &\n Omit, 'type'> & {\n orientation?: DividerOrientation;\n size?: 'thinner' | 'default';\n dividerColor?: string;\n };\n\nexport const Divider = forwardRef(\n (\n {\n orientation = 'horizontal',\n size = 'default',\n dividerColor = 'var(--affine-border-color)',\n style,\n className,\n ...otherProps\n },\n ref\n ) => {\n return (\n \n );\n }\n);\n\nDivider.displayName = 'Divider';\nexport default Divider;\n","import \"../component/src/ui/divider/style.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/divider/style.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xdGd3ankyMCB7CiAgaGVpZ2h0OiAxcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWZmaW5lLWJvcmRlci1jb2xvcik7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIG1hcmdpbjogOHB4IDA7CiAgd2lkdGg6IDEwMCU7Cn0KLl8xdGd3ankyMSB7CiAgaGVpZ2h0OiAwLjVweDsKfQouXzF0Z3dqeTIyIHsKICB3aWR0aDogMXB4OwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBoZWlnaHQ6IDEwMCU7CiAgbWFyZ2luOiAwIDJweDsKfQouXzF0Z3dqeTIzIHsKICB3aWR0aDogMC41cHg7Cn0=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var divider = '_1tgwjy20';\nexport var thinner = '_1tgwjy21';\nexport var verticalDivider = '_1tgwjy22';\nexport var verticalThinner = '_1tgwjy23';","import { memo } from 'react';\n\nexport const EmptySvg = memo(function EmptySvg({\n style,\n className,\n}: {\n style?: React.CSSProperties;\n className?: string;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n});\n","import { assignInlineVars } from '@vanilla-extract/dynamic';\nimport type { CSSProperties, ReactNode } from 'react';\n\nimport { EmptySvg } from './empty-svg';\nimport * as styles from './index.css';\n\ntype ContainerStyleProps = {\n width?: string;\n height?: string;\n fontSize?: string;\n};\nexport type EmptyContentProps = {\n containerStyle?: ContainerStyleProps;\n title?: ReactNode;\n description?: ReactNode;\n descriptionStyle?: CSSProperties;\n};\n\nexport const Empty = ({\n containerStyle,\n title,\n description,\n descriptionStyle,\n}: EmptyContentProps) => {\n const cssVar = assignInlineVars({\n [styles.svgWidth]: containerStyle?.width,\n [styles.svgHeight]: containerStyle?.height,\n [styles.svgFontSize]: containerStyle?.fontSize,\n });\n return (\n
\n
\n \n
\n {title && (\n \n {title}\n

\n )}\n {description && (\n

\n {description}\n

\n )}\n
\n );\n};\n\nexport default Empty;\n","import \"../component/src/ui/empty/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/empty/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LmcyYzBhYzMgewogIGhlaWdodDogMTAwJTsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgYWxpZ24tY29udGVudDogdW5zZXQ7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXRleHQtc2Vjb25kYXJ5LWNvbG9yKTsKfQouZzJjMGFjNCB7CiAgLS1nMmMwYWMwOiAyNDhweDsKICAtLWcyYzBhYzE6IDIxNnB4OwogIC0tZzJjMGFjMjogaW5oZXJpdDsKICB3aWR0aDogdmFyKC0tZzJjMGFjMCk7CiAgaGVpZ2h0OiB2YXIoLS1nMmMwYWMxKTsKICBmb250LXNpemU6IHZhcigtLWcyYzBhYzIpOwp9\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var emptyContainer = 'g2c0ac3';\nexport var emptySvg = 'g2c0ac4';\nexport var svgFontSize = 'var(--g2c0ac2)';\nexport var svgHeight = 'var(--g2c0ac1)';\nexport var svgWidth = 'var(--g2c0ac0)';","import clsx from 'clsx';\nimport type {\n ChangeEvent,\n CSSProperties,\n ForwardedRef,\n InputHTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport { forwardRef, useCallback, useEffect } from 'react';\n\nimport { useAutoFocus, useAutoSelect } from '../../hooks';\nimport { input, inputWrapper } from './style.css';\n\nexport type InputProps = {\n disabled?: boolean;\n onChange?: (value: string) => void;\n onBlur?: (ev: FocusEvent & { currentTarget: HTMLInputElement }) => void;\n onKeyDown?: KeyboardEventHandler;\n autoSelect?: boolean;\n noBorder?: boolean;\n status?: 'error' | 'success' | 'warning' | 'default';\n size?: 'default' | 'large' | 'extraLarge';\n preFix?: ReactNode;\n endFix?: ReactNode;\n type?: HTMLInputElement['type'];\n inputStyle?: CSSProperties;\n onEnter?: () => void;\n} & Omit, 'onChange' | 'size' | 'onBlur'>;\n\nexport const Input = forwardRef(function Input(\n {\n disabled,\n onChange: propsOnChange,\n noBorder = false,\n className,\n status = 'default',\n style = {},\n inputStyle = {},\n size = 'default',\n preFix,\n endFix,\n onEnter,\n onKeyDown,\n onBlur,\n autoFocus,\n autoSelect,\n ...otherProps\n }: InputProps,\n upstreamRef: ForwardedRef\n) {\n const focusRef = useAutoFocus(autoFocus);\n const selectRef = useAutoSelect(autoSelect);\n\n const inputRef = (el: HTMLInputElement | null) => {\n focusRef.current = el;\n selectRef.current = el;\n if (upstreamRef) {\n if (typeof upstreamRef === 'function') {\n upstreamRef(el);\n } else {\n upstreamRef.current = el;\n }\n }\n };\n\n // use native blur event to get event after unmount\n // don't use useLayoutEffect here, because the cleanup function will be called before unmount\n useEffect(() => {\n if (!onBlur) return;\n selectRef.current?.addEventListener('blur', onBlur as any);\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n selectRef.current?.removeEventListener('blur', onBlur as any);\n };\n }, [onBlur, selectRef]);\n\n return (\n \n {preFix}\n ) => {\n propsOnChange?.(e.target.value);\n },\n [propsOnChange]\n )}\n onKeyDown={useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n onEnter?.();\n }\n onKeyDown?.(e);\n },\n [onKeyDown, onEnter]\n )}\n {...otherProps}\n />\n {endFix}\n \n );\n});\n","import \"../component/src/ui/input/style.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/input/style.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA4VU7a7bIAz936fgz6RWKhVp750m+jROcBKvXEBAmnTT3n0K+Vhym7uqiirM8bF9bHNyl1t4c4L93jHWkoq1ZJkQ3647xmqkqo6SnX+4rj9rMshn43kwVuB6j+FQWG29ZHfwe86hLHuHiF3kztMH+MehB+XWK/SSZa5jwWpSyQjFrfK2MYpvkWh4oOcL0DMh96CoCZKN2SoKTsNDslJjMvxsQqTywQtrIpooWYEmou+vQFNlOEX8CEtzaU3kgX7hp2ySPYeAY/iuB5Gp5JRKblNEe0dfattKVpNSaK67P7vTKPjJWD6gk/STKI0JGFc4Db7ChJmkvyTpFxDsogf+DHwb25LybUfjdyFWzooC5BrVkMas8KeS676WoTWHdWzv7bKEzfYl0JZ3aIoCQ3jlP8K2GFrwhkz1imGEbTEoLKHR8RXD8mqTQFLYy9IWTeAtxZrMkQ3H6Z/fKVCu8fAyVBOjNasZt03s108yYw3OU1eD6qdLuG7+zq5jvsphfxFHlr2LIztf3o9MnC7icF2kna0mZVr58QUQaWo0dpJl/x9xB0ols2DZ+CLwFvMbRQ7OIXgwxSLr6S6C4zVVte7DTxpEDyY48GjiFyUPOzKfF8O68v1XpJROQ4G11dOibem9wDz3N5OrDfnyiRtRWwSzIk20JWmdiCbjqpHplwnRd3I9vzVFPDAan4e/uDGxArcFAAA=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var input = 'p3ks4p1';\nexport var inputWrapper = 'p3ks4p0';","export * from './input';\nimport { Input } from './input';\nexport default Input;\n","import type { CSSProperties } from 'react';\n\nimport { styled, textEllipsis } from '../../styles';\n\n// This component should be just used to be contained the text content\nexport type ContentProps = {\n width?: CSSProperties['width'];\n maxWidth?: CSSProperties['maxWidth'];\n align?: CSSProperties['textAlign'];\n color?: CSSProperties['color'];\n fontSize?: CSSProperties['fontSize'];\n weight?: CSSProperties['fontWeight'];\n lineHeight?: CSSProperties['lineHeight'];\n ellipsis?: boolean;\n lineNum?: number;\n children: React.ReactNode;\n};\nexport const Content = styled('div', {\n shouldForwardProp: prop => {\n return ![\n 'color',\n 'fontSize',\n 'weight',\n 'lineHeight',\n 'ellipsis',\n 'lineNum',\n 'width',\n 'maxWidth',\n 'align',\n ].includes(prop as string);\n },\n})(({\n color,\n fontSize,\n weight,\n lineHeight,\n ellipsis,\n lineNum,\n width,\n maxWidth,\n align,\n}) => {\n return {\n width,\n maxWidth,\n textAlign: align,\n display: 'inline-block',\n color: color ?? 'var(--affine-text-primary-color)',\n fontSize: fontSize ?? 'var(--affine-font-base)',\n fontWeight: weight ?? 400,\n lineHeight: lineHeight ?? 1.5,\n ...(ellipsis ? textEllipsis(lineNum) : {}),\n };\n});\n\nexport default Content;\n","import type { CSSProperties } from 'react';\n\nimport { styled } from '../../styles';\n\nexport type WrapperProps = {\n display?: CSSProperties['display'];\n width?: CSSProperties['width'];\n height?: CSSProperties['height'];\n padding?: CSSProperties['padding'];\n paddingTop?: CSSProperties['paddingTop'];\n paddingRight?: CSSProperties['paddingRight'];\n paddingLeft?: CSSProperties['paddingLeft'];\n paddingBottom?: CSSProperties['paddingBottom'];\n margin?: CSSProperties['margin'];\n marginTop?: CSSProperties['marginTop'];\n marginLeft?: CSSProperties['marginLeft'];\n marginRight?: CSSProperties['marginRight'];\n marginBottom?: CSSProperties['marginBottom'];\n};\n\nexport type FlexWrapperProps = {\n display?: CSSProperties['display'];\n flexDirection?: CSSProperties['flexDirection'];\n justifyContent?: CSSProperties['justifyContent'];\n alignItems?: CSSProperties['alignItems'];\n wrap?: boolean;\n flexShrink?: CSSProperties['flexShrink'];\n flexGrow?: CSSProperties['flexGrow'];\n gap?: CSSProperties['gap'];\n};\n\n// Sometimes we just want to wrap a component with a div to set flex or other styles, but we don't want to create a new component for it.\nexport const Wrapper = styled('div', {\n shouldForwardProp: prop => {\n return ![\n 'display',\n 'width',\n 'height',\n 'padding',\n 'margin',\n 'paddingTop',\n 'paddingRight',\n 'paddingLeft',\n 'paddingBottom',\n 'marginTop',\n 'marginLeft',\n 'marginRight',\n 'marginBottom',\n ].includes(prop as string);\n },\n})(({\n display,\n width,\n height,\n padding,\n margin,\n paddingTop,\n paddingRight,\n paddingLeft,\n paddingBottom,\n marginTop,\n marginLeft,\n marginRight,\n marginBottom,\n}) => {\n return {\n display,\n width,\n height,\n padding,\n margin,\n paddingTop,\n paddingRight,\n paddingLeft,\n paddingBottom,\n marginTop,\n marginLeft,\n marginRight,\n marginBottom,\n };\n});\n\nexport const FlexWrapper = styled(Wrapper, {\n shouldForwardProp: prop => {\n return ![\n 'justifyContent',\n 'alignItems',\n 'wrap',\n 'flexDirection',\n 'flexShrink',\n 'flexGrow',\n 'gap',\n ].includes(prop as string);\n },\n})(({\n justifyContent,\n alignItems,\n wrap = false,\n flexDirection,\n flexShrink,\n flexGrow,\n gap,\n}) => {\n return {\n display: 'flex',\n justifyContent,\n alignItems,\n flexWrap: wrap ? 'wrap' : 'nowrap',\n flexDirection,\n flexShrink,\n flexGrow,\n gap,\n };\n});\n\nexport default Wrapper;\n","import { assignInlineVars } from '@vanilla-extract/dynamic';\n\nimport { withUnit } from '../../utils/with-unit';\nimport { loading, speedVar } from './styles.css';\n\nexport interface LoadingProps {\n size?: number | string;\n speed?: number;\n progress?: number;\n}\n\nexport const Loading = ({\n size,\n speed = 1.2,\n progress = 0.2,\n}: LoadingProps) => {\n // allow `string` such as `16px` | `100%` | `1em`\n const sizeWithUnit = size ? withUnit(size, 'px') : '16px';\n return (\n \n \n \n \n );\n};\n","import \"../component/src/ui/loading/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/loading/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"QGtleWZyYW1lcyBfMWhvaDFlajEgewogIDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIH0KfQouXzFob2gxZWoyIHsKICAtLV8xaG9oMWVqMDogMS41czsKICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwogIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgYW5pbWF0aW9uOiBfMWhvaDFlajEgdmFyKC0tXzFob2gxZWowKSBpbmZpbml0ZSBsaW5lYXI7Cn0=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var loading = '_1hoh1ej2';\nexport var speedVar = 'var(--_1hoh1ej0)';","import \"../component/src/ui/menu/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/menu/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA6VW227jIBB9z1fwslIjLZaTplFEP2W1D8SMbRoCFoxjp6v++wpMHNu5qn2Kwsxw4HDmjBP90Ri9XJB/M0L2UtNGCiwZWWzSqn2fEZIZZSwjB25fKOV5LjVQhBZpZeWe2yMNCXOfujVWgKWWC1k7RjbdBhUXQuqi/58bjdTJT5hs2q3v531OA7IokZFVmobdebYrrKm1oNfONAibA1jFj7TiGtTofC11JRemmdTuQdcxEhJrB5Y6UJAhI9po8Iu0ge1OIuVVRS0U0mgfo8Ly4n32NUs6IpeBSCFdpfiRkVxBuDRXstBUIuwdIxloBOuXP2qHMvccagSNjLiKZ0C3gA2AHrG3qlqyWHYUTohedavKX6WMpC1HqedbmBp93nkhq63zZFZGnk4VeJKfATZCbU07vCTTBl+Y4g6pySkeK5h3AuK2kJpuDaLZx4Odq5KtMtkuJra90tL01zDrj+DIqZCObxWIvyH9pghj2uCR4z0oHECju7ynNki5UqYBcYlayqJUnsAT8APRlV5qPfiAnxD4yQ6J4LoAO9joWjVYa+xQ4U/3yLhygNtwq/3L3weOWd+CntYOwLMSsh2Im7BTz+lLX0OJ7zZGFkHnB7C58p1eSiG6XgqKOQdAKVk56XyoKSUCDd3nJdJYXvUVoXcZUZDjAHF1vdH9L3WllXrHSPrQ70r6Nr/lsjIz+vKmq8QhtzhsNxt9ctRtqwS0GGb5818mdS4H4jfpl779CBPRjoh6rN6bGny4z01BvYWSkyUuoiM+EGpneGdhR/rQVKw34InPbUakrgMqpd2/lBFeowki6wyvg4vRANGb9uaOk/eTICWL787mQAJxRknxBBWhKe5M9l78UocTn3rg8VS7MQ7vtkrr5jfm1d3J3B/+qceejMfzm1519Oe8fJ1oE5G6+vgUtXaAo7zzfLzwlevDcp0obgsYyfx1OVZjAi1aTi8TV+ngg+z0sbX2H1uD4tMc7povci8g57XCuxJ8djJ//Qc2CAR6ggoAAA==\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var menuContent = 'njwon21';\nexport var menuItem = 'njwon22';\nexport var menuItemIcon = 'njwon24';\nexport var menuSeparator = 'njwon25';\nexport var menuSpan = 'njwon23';\nexport var menuTrigger = 'njwon26';\nexport var triggerWidthVar = 'var(--njwon20)';","import type {\n DropdownMenuContentProps,\n DropdownMenuPortalProps,\n DropdownMenuProps,\n} from '@radix-ui/react-dropdown-menu';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\n\nimport * as styles from './styles.css';\n\nexport interface MenuProps {\n children: ReactNode;\n items: ReactNode;\n portalOptions?: Omit;\n rootOptions?: Omit;\n contentOptions?: Omit;\n noPortal?: boolean;\n}\n\nexport const Menu = ({\n children,\n items,\n portalOptions,\n rootOptions,\n noPortal,\n contentOptions: {\n className = '',\n style: contentStyle = {},\n ...otherContentOptions\n } = {},\n}: MenuProps) => {\n return (\n \n {children}\n\n {noPortal ? (\n \n {items}\n \n ) : (\n \n \n {items}\n \n \n )}\n \n );\n};\n","import clsx from 'clsx';\nimport type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\nimport { forwardRef, useMemo } from 'react';\n\nimport { menuItemIcon } from './styles.css';\n\nexport interface MenuIconProps\n extends PropsWithChildren,\n HTMLAttributes {\n icon?: ReactNode;\n position?: 'start' | 'end';\n}\n\nexport const MenuIcon = forwardRef(\n ({ children, icon, position = 'start', className, ...otherProps }, ref) => {\n return (\n \n clsx(\n menuItemIcon,\n {\n end: position === 'end',\n start: position === 'start',\n },\n className\n ),\n [className, position]\n )}\n {...otherProps}\n >\n {icon || children}\n \n );\n }\n);\n\nMenuIcon.displayName = 'MenuIcon';\n","import { DoneIcon } from '@blocksuite/icons/rc';\nimport clsx from 'clsx';\nimport { useMemo } from 'react';\n\nimport type { MenuItemProps } from './menu.types';\nimport { MenuIcon } from './menu-icon';\nimport * as styles from './styles.css';\n\ninterface useMenuItemProps {\n children: MenuItemProps['children'];\n type: MenuItemProps['type'];\n className: MenuItemProps['className'];\n preFix: MenuItemProps['preFix'];\n endFix: MenuItemProps['endFix'];\n checked?: MenuItemProps['checked'];\n selected?: MenuItemProps['selected'];\n block?: MenuItemProps['block'];\n}\n\nexport const useMenuItem = ({\n children: propsChildren,\n type = 'default',\n className: propsClassName,\n preFix,\n endFix,\n checked,\n selected,\n block,\n}: useMenuItemProps) => {\n const className = useMemo(\n () =>\n clsx(\n styles.menuItem,\n {\n danger: type === 'danger',\n warning: type === 'warning',\n checked,\n selected,\n block,\n },\n propsClassName\n ),\n [block, checked, propsClassName, selected, type]\n );\n\n const children = useMemo(\n () => (\n <>\n {preFix}\n {propsChildren}\n {endFix}\n\n {checked || selected ? (\n \n \n \n ) : null}\n \n ),\n [checked, endFix, preFix, propsChildren, selected]\n );\n\n return {\n children,\n className,\n };\n};\n","import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport type { MenuItemProps } from './menu.types';\nimport { useMenuItem } from './use-menu-item';\n\nexport const MenuItem = ({\n children: propsChildren,\n type = 'default',\n className: propsClassName,\n preFix,\n endFix,\n checked,\n selected,\n block,\n ...otherProps\n}: MenuItemProps) => {\n const { className, children } = useMenuItem({\n children: propsChildren,\n className: propsClassName,\n type,\n preFix,\n endFix,\n checked,\n selected,\n block,\n });\n\n return (\n \n {children}\n \n );\n};\n","import type { DropdownMenuSeparatorProps } from '@radix-ui/react-dropdown-menu';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport clsx from 'clsx';\nimport { useMemo } from 'react';\n\nimport * as styles from './styles.css';\n\nexport const MenuSeparator = ({\n className,\n ...otherProps\n}: DropdownMenuSeparatorProps) => {\n return (\n clsx(styles.menuSeparator, className),\n [className]\n )}\n {...otherProps}\n />\n );\n};\n","import { ArrowRightSmallIcon } from '@blocksuite/icons/rc';\nimport type {\n DropdownMenuPortalProps,\n DropdownMenuSubContentProps,\n DropdownMenuSubProps,\n} from '@radix-ui/react-dropdown-menu';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\nimport { useMemo } from 'react';\n\nimport type { MenuItemProps } from './menu.types';\nimport { MenuIcon } from './menu-icon';\nimport * as styles from './styles.css';\nimport { useMenuItem } from './use-menu-item';\nexport interface MenuSubProps {\n children: ReactNode;\n items: ReactNode;\n triggerOptions?: Omit;\n portalOptions?: Omit;\n subOptions?: Omit;\n subContentOptions?: Omit;\n}\n\nexport const MenuSub = ({\n children: propsChildren,\n items,\n portalOptions,\n subOptions,\n triggerOptions: {\n className: propsClassName,\n preFix,\n endFix,\n type,\n ...otherTriggerOptions\n } = {},\n subContentOptions: {\n className: subContentClassName = '',\n ...otherSubContentOptions\n } = {},\n}: MenuSubProps) => {\n const { className, children } = useMenuItem({\n children: propsChildren,\n className: propsClassName,\n type,\n preFix,\n endFix,\n });\n\n return (\n \n \n {children}\n \n \n \n \n \n clsx(styles.menuContent, subContentClassName),\n [subContentClassName]\n )}\n {...otherSubContentOptions}\n >\n {items}\n \n \n \n );\n};\n","import { ArrowDownSmallIcon } from '@blocksuite/icons/rc';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport type {\n CSSProperties,\n HTMLAttributes,\n PropsWithChildren,\n ReactNode,\n} from 'react';\nimport { forwardRef } from 'react';\n\nimport { MenuIcon } from './menu-icon';\nimport * as styles from './styles.css';\nimport { triggerWidthVar } from './styles.css';\n\nexport interface MenuTriggerProps\n extends PropsWithChildren,\n HTMLAttributes {\n width?: CSSProperties['width'];\n disabled?: boolean;\n noBorder?: boolean;\n status?: 'error' | 'success' | 'warning' | 'default';\n size?: 'default' | 'large' | 'extraLarge';\n preFix?: ReactNode;\n endFix?: ReactNode;\n block?: boolean;\n}\n\nexport const MenuTrigger = forwardRef(\n (\n {\n disabled,\n noBorder = false,\n className,\n status = 'default',\n size = 'default',\n preFix,\n endFix,\n block = false,\n children,\n width,\n style = {},\n ...otherProps\n },\n ref\n ) => {\n return (\n \n {preFix}\n {children}\n {endFix}\n \n \n \n \n );\n }\n);\n\nMenuTrigger.displayName = 'MenuTrigger';\n","import { CloseIcon } from '@blocksuite/icons/rc';\nimport type {\n DialogContentProps,\n DialogOverlayProps,\n DialogPortalProps,\n DialogProps,\n} from '@radix-ui/react-dialog';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport * as VisuallyHidden from '@radix-ui/react-visually-hidden';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport type { IconButtonProps } from '../button';\nimport { IconButton } from '../button';\nimport * as styles from './styles.css';\n\nexport interface ModalProps extends DialogProps {\n width?: CSSProperties['width'];\n height?: CSSProperties['height'];\n minHeight?: CSSProperties['minHeight'];\n title?: React.ReactNode;\n description?: React.ReactNode;\n withoutCloseButton?: boolean;\n /**\n * __Click outside__ or __Press `Esc`__ won't close the modal\n * @default false\n */\n persistent?: boolean;\n portalOptions?: DialogPortalProps;\n contentOptions?: DialogContentProps;\n overlayOptions?: DialogOverlayProps;\n closeButtonOptions?: IconButtonProps;\n}\ntype PointerDownOutsideEvent = Parameters<\n Exclude\n>[0];\n\nconst getVar = (style: number | string = '', defaultValue = '') => {\n return style\n ? typeof style === 'number'\n ? `${style}px`\n : style\n : defaultValue;\n};\n\n/**\n * This component is a hack to support `startViewTransition` in the modal.\n */\nclass ModalTransitionContainer extends HTMLElement {\n pendingTransitionNodes: Node[] = [];\n animationFrame: number | null = null;\n\n /**\n * This method will be called when the modal is removed from the DOM\n * https://github.com/facebook/react/blob/e4b4aac2a01b53f8151ca85148873096368a7de2/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js#L833\n */\n override removeChild(child: T): T {\n if (typeof document.startViewTransition === 'function') {\n this.pendingTransitionNodes.push(child);\n this.requestTransition();\n return child;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n return super.removeChild(child);\n }\n }\n\n /**\n * We collect all the nodes that are removed in the single frame and then trigger the transition.\n */\n private requestTransition() {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n\n this.animationFrame = requestAnimationFrame(() => {\n if (typeof document.startViewTransition === 'function') {\n const nodes = this.pendingTransitionNodes;\n document.startViewTransition(() => {\n nodes.forEach(child => {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n super.removeChild(child);\n });\n });\n this.pendingTransitionNodes = [];\n }\n });\n }\n}\n\nlet defined = false;\nfunction createContainer() {\n if (!defined) {\n customElements.define(\n 'modal-transition-container',\n ModalTransitionContainer\n );\n defined = true;\n }\n const container = new ModalTransitionContainer();\n document.body.append(container);\n return container;\n}\n\nexport const ModalInner = forwardRef(\n (props, ref) => {\n const {\n modal,\n portalOptions,\n open,\n onOpenChange,\n width,\n height,\n minHeight = 194,\n title,\n description,\n withoutCloseButton = false,\n persistent,\n contentOptions: {\n style: contentStyle,\n className: contentClassName,\n onPointerDownOutside,\n onEscapeKeyDown,\n ...otherContentOptions\n } = {},\n overlayOptions: {\n className: overlayClassName,\n style: overlayStyle,\n ...otherOverlayOptions\n } = {},\n closeButtonOptions,\n children,\n ...otherProps\n } = props;\n const { className: closeButtonClassName, ...otherCloseButtonProps } =\n closeButtonOptions || {};\n\n const [container, setContainer] = useState(\n null\n );\n\n useEffect(() => {\n const container = createContainer();\n setContainer(container);\n return () => {\n setTimeout(() => {\n container.remove();\n }, 1000) as unknown as number;\n };\n }, []);\n\n const handlePointerDownOutSide = useCallback(\n (e: PointerDownOutsideEvent) => {\n onPointerDownOutside?.(e);\n persistent && e.preventDefault();\n },\n [onPointerDownOutside, persistent]\n );\n\n const handleEscapeKeyDown = useCallback(\n (e: KeyboardEvent) => {\n onEscapeKeyDown?.(e);\n persistent && e.preventDefault();\n },\n [onEscapeKeyDown, persistent]\n );\n\n if (!container) {\n return;\n }\n\n return (\n \n \n \n
\n \n {withoutCloseButton ? null : (\n \n \n \n \n \n )}\n {title ? (\n \n {title}\n \n ) : (\n // Refer: https://www.radix-ui.com/primitives/docs/components/dialog#title\n // If you want to hide the title, wrap it inside our Visually Hidden utility like this .\n \n \n \n )}\n {description ? (\n \n {description}\n \n ) : null}\n\n {children}\n \n
\n
\n \n );\n }\n);\n\nModalInner.displayName = 'ModalInner';\n\nexport const Modal = forwardRef((props, ref) => {\n if (!props.open) {\n return;\n }\n return ;\n});\n\nModal.displayName = 'Modal';\n","import \"../component/src/ui/modal/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/modal/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61VbYvbOBD+vr9iKBQSWAXbTdLWy0HhoH+hHEcpY2scqytLRpJjZ4/+90OSkzhOdtu966ck8/o888wonx7pUBlsyMK3tHscts3wDv65A6iMbsIXAN1iKdwhh+ThDuDHHYDTc1caXT/uPl0XXL9cEMAZVLbSpsnjV4mO/lqw7O0SbImSFsnq43b5k+bPlUmORdLlCxg3oeZ16f+E8BbV12JcHZFtQ6VWW+GEVjlUYiDuo4Sy5EaEBZaPO6M7xVmppTY57NEsGMOqEorYxN1ojjIGhV5PTChOwyxhtMboEIdKNBgRnBcl3SSNhUqbHg23D1PYH34FNhe2lXjIoZI0hC5S7BQTjhqbQ0nKkfHm7511ojqwUitHyk1d/wP/esRfdoUoWUFPgswiWa2ze0juIVltPtxDepnMKiGlr0r5hDbAXlDPgqCBLlPY0LnRez+ZPJ8HackXp5BlmNcNlJvfhXIizsfQjLHj7ySHhwtDOjdk0dAL7urjrE/ZoXtNYle7uS8ia4Rit/1Z8Bd6YFY8CbXLodCGk2GFDgtRaeW8i2YCB3uBlpanqH5ssE7Cbkkfdmyarrbe1iLnoUmWtANk6zb0OC+pIYlO7Ol1J6X3ZCQeWIuKpqcVWNXIdT/LbXXrc0bnGBtYG+SiszmkWYTW4HDiUKIsF2mS7Gtg8C5rh5CoO+eZ5qC0oguRcXaBWFgtOxfIOd3mkI1NTKzvZ/LrFzVpVMT3/SWlara9Fmp7U6j1JhI3O6FYoZ3TzXEek55l6Nlrw1lhCB9zCB/MW8Ki1sIRsy2WlENriPUG2zCvPZlK6j4YLrMm5Xkof/U8Xb1D3sFI8RfernHnWBj5OjnqGugFG3ZOe9vO44kiTJGswsQ/a+3IfBGu/rMWkhtSUd1p8Ru5hvZkLEWBPFYuDJXjsuuejf7nuVmHxl0UjcWmBM7LeqHZcZ9O0ibJ2wsFDmfup8NMYD0jUd2WYs6m1LJrlM/8m6PDuKd/vKlQWnrz9epvSXh5GO1JOXu+nVupMHs157mRwgTw7nWAR+HHDf8XFeNh2ZAJAAA=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var closeButton = '_1ukx6mxa';\nexport var confirmModalContainer = '_1ukx6mxf';\nexport var confirmModalContent = '_1ukx6mxe';\nexport var contentHide = '_1ukx6mx5';\nexport var heightVar = 'var(--_1ukx6mx1)';\nexport var minHeightVar = 'var(--_1ukx6mx2)';\nexport var modalContent = '_1ukx6mx9';\nexport var modalContentWrapper = '_1ukx6mx8';\nexport var modalDescription = '_1ukx6mxc';\nexport var modalFooter = '_1ukx6mxd';\nexport var modalHeader = '_1ukx6mxb';\nexport var modalOverlay = '_1ukx6mx6';\nexport var promptModalContent = '_1ukx6mxg';\nexport var widthVar = 'var(--_1ukx6mx0)';","import { DialogTrigger } from '@radix-ui/react-dialog';\nimport clsx from 'clsx';\nimport type { PropsWithChildren } from 'react';\nimport { createContext, useCallback, useContext, useEffect, useState } from 'react';\n\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport type { ModalProps } from './modal';\nimport { Modal } from './modal';\nimport * as styles from './styles.css';\n\nexport interface ConfirmModalProps extends ModalProps {\n confirmButtonOptions?: Omit;\n onConfirm?: (() => void) | (() => Promise);\n onCancel?: () => void;\n confirmText?: React.ReactNode;\n cancelText?: React.ReactNode;\n cancelButtonOptions?: Omit;\n reverseFooter?: boolean;\n autoFocusConfirm?: boolean;\n}\n\nexport const ConfirmModal = ({\n children,\n confirmButtonOptions,\n confirmText = 'Confirm',\n cancelText = 'Cancel',\n cancelButtonOptions,\n reverseFooter,\n onConfirm,\n onCancel,\n width = 480,\n autoFocusConfirm = true,\n ...props\n }: ConfirmModalProps) => {\n\n // 서버에서 데이터 가져오기\n // useEffect(() => {\n // const fetchData = async () => {\n // try {\n // const productsResponse = await axios.get('/api/auth/arms/pdService');\n // setProductOptions(\n // productsResponse.data.map((item: any) => ({\n // key: item.name,\n // cat: item.category,\n // }))\n // );\n //\n // const versionsResponse = await axios.get('/api/auth/arms/pdServiceVersion + 선택한 제품(서비스)');\n // setVersionOptions(\n // versionsResponse.data.map((item: any) => ({\n // key: item.version,\n // cat: item.category,\n // }))\n // );\n // } catch (error) {\n // console.error('데이터 로드 실패:', error);\n // }\n // };\n //\n // fetchData();\n // }, []);\n\n const onConfirmClick = useCallback(() => {\n Promise.resolve(onConfirm?.()).catch((err) => {\n console.error(err);\n });\n }, [onConfirm]);\n\n return (\n {\n e.stopPropagation();\n onCancel?.();\n },\n }}\n width={width}\n closeButtonOptions={{\n onClick: onCancel,\n }}\n {...props}\n >\n {children ? (\n
{children}
\n ) : null}\n\n \n \n \n {cancelText}\n \n \n \n {confirmText}\n \n \n \n );\n};\n\ninterface OpenConfirmModalOptions {\n autoClose?: boolean;\n onSuccess?: () => void;\n}\ninterface ConfirmModalContextProps {\n modalProps: ConfirmModalProps;\n openConfirmModal: (\n props?: ConfirmModalProps,\n options?: OpenConfirmModalOptions\n ) => void;\n closeConfirmModal: () => void;\n}\nconst ConfirmModalContext = createContext({\n modalProps: { open: false },\n openConfirmModal: () => {},\n closeConfirmModal: () => {},\n});\nexport const ConfirmModalProvider = ({ children }: PropsWithChildren) => {\n const [modalProps, setModalProps] = useState({\n open: false,\n });\n\n const setLoading = useCallback((value: boolean) => {\n setModalProps((prev) => ({\n ...prev,\n confirmButtonOptions: {\n ...prev.confirmButtonOptions,\n loading: value,\n },\n }));\n }, []);\n\n const closeConfirmModal = useCallback(() => {\n setModalProps({ open: false });\n }, []);\n\n const openConfirmModal = useCallback(\n (props?: ConfirmModalProps, options?: OpenConfirmModalOptions) => {\n const { autoClose = true, onSuccess } = options ?? {};\n if (!props) {\n setModalProps({ open: true });\n return;\n }\n\n const { onConfirm: _onConfirm, ...otherProps } = props;\n\n const onConfirm = () => {\n setLoading(true);\n return Promise.resolve(_onConfirm?.())\n .then(() => onSuccess?.())\n .catch(console.error)\n .finally(() => setLoading(false))\n .finally(() => autoClose && closeConfirmModal());\n };\n setModalProps({ ...otherProps, onConfirm, open: true });\n },\n [closeConfirmModal, setLoading]\n );\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n modalProps.onOpenChange?.(open);\n setModalProps((props) => ({ ...props, open }));\n },\n [modalProps]\n );\n\n return (\n \n {children}\n \n \n );\n};\n\nexport const useConfirmModal = () => {\n const context = useContext(ConfirmModalContext);\n if (!context) {\n throw new Error(\n 'useConfirmModal must be used within a ConfirmModalProvider'\n );\n }\n return {\n openConfirmModal: context.openConfirmModal,\n closeConfirmModal: context.closeConfirmModal,\n };\n};\n","import { DialogTrigger } from '@radix-ui/react-dialog';\nimport { cssVar } from '@toeverything/theme';\nimport { memo, useCallback } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport type { ModalProps } from './modal';\nimport { Modal } from './modal';\nimport * as styles from './overlay-modal.css';\n\nconst defaultContentOptions: ModalProps['contentOptions'] = {\n style: {\n padding: 0,\n overflow: 'hidden',\n boxShadow: cssVar('menuShadow'),\n },\n};\nconst defaultOverlayOptions: ModalProps['overlayOptions'] = {\n style: {\n background: cssVar('white80'),\n backdropFilter: 'blur(2px)',\n },\n};\n\nexport interface OverlayModalProps extends ModalProps {\n to?: string;\n external?: boolean;\n topImage?: React.ReactNode;\n confirmText?: string;\n confirmButtonOptions?: ButtonProps;\n onConfirm?: () => void;\n cancelText?: string;\n cancelButtonOptions?: ButtonProps;\n withoutCancelButton?: boolean;\n}\n\nexport const OverlayModal = memo(function OverlayModal({\n open,\n topImage,\n onOpenChange,\n title,\n description,\n onConfirm,\n to,\n external,\n confirmButtonOptions,\n cancelButtonOptions,\n withoutCancelButton,\n contentOptions = defaultContentOptions,\n overlayOptions = defaultOverlayOptions,\n // FIXME: we need i18n\n cancelText = 'Cancel',\n confirmText = 'Confirm',\n width = 400,\n}: OverlayModalProps) {\n const handleConfirm = useCallback(() => {\n onOpenChange?.(false);\n onConfirm?.();\n }, [onOpenChange, onConfirm]);\n\n return (\n \n {topImage}\n
{title}
\n
{description}
\n
\n {!withoutCancelButton ? (\n \n \n \n ) : null}\n\n {to ? (\n external ? (\n //FIXME: we need a more standardized way to implement this link with other click events\n \n \n \n ) : (\n \n \n \n )\n ) : (\n \n )}\n
\n \n );\n});\n","import \"../component/src/ui/modal/overlay-modal.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/modal/overlay-modal.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xMzAwcXZ3MCB7CiAgcGFkZGluZzogMjBweCAyNHB4IDhweCAyNHB4OwogIGZvbnQtc2l6ZTogdmFyKC0tYWZmaW5lLWZvbnQtaC02KTsKICBmb250LWZhbWlseTogdmFyKC0tYWZmaW5lLWZvbnQtZmFtaWx5KTsKICBmb250LXdlaWdodDogNjAwOwogIGxpbmUtaGVpZ2h0OiAyNnB4Owp9Ci5fMTMwMHF2dzEgewogIHBhZGRpbmc6IDBweCAyNHB4IDhweDsKICBmb250LXNpemU6IHZhcigtLWFmZmluZS1mb250LWJhc2UpOwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KLl8xMzAwcXZ3MiB7CiAgcGFkZGluZzogMjBweCAyNHB4OwogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICBnYXA6IDIwcHg7Cn0KLl8xMzAwcXZ3MyB7CiAgZm9udC13ZWlnaHQ6IDUwMDsKfQouXzEzMDBxdnc0IHsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXB1cmUtd2hpdGUpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLl8xMzAwcXZ3NDp2aXNpdGVkIHsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXB1cmUtd2hpdGUpOwp9\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var buttonText = '_1300qvw4';\nexport var content = '_1300qvw1';\nexport var footer = '_1300qvw2';\nexport var gotItBtn = '_1300qvw3';\nexport var title = '_1300qvw0';","import \"../component/src/ui/notification/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/notification/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA4VU0W7bMAx871dwAQYsDwrsNO06Ff2SoRhki7bZKJIhMXGyof8+SHYW2026R5E0j3c8evUrfzsWW10/wp87gMJ5jV54pWkfJDy1x+dLtCPNjYR8Egx8MighOEO6Dx9FaJR2nYSD8t+EUFVFFoegyJepSpXb2ru91aJ0xvlz7XmabDmCuFqxThVXUxHi/W51fn5PzFqlNdlaQv4Y5x/ln1JeU2iNOkmoDCZ+ylBtBTHuQh8UgZXnmHrbB6bqJEpnGS1LCK0qURTIHaKdNP+RmjdIdcMS1pteu8/BSrSMftJGpTbDAm52aU0cY9YFYKd8TVb4foY8m/FXEA71uH+eZV+fR1Of31fF3kzFLsaNsvhVkq720Q95fLsD+srEZ0NaR7kAGI8sLgk0htpAIaa6hhhFEliCdZ1XberqLItuGHCTJSQTbTaXOhUG+o0S8oc+9B89ykRhVjQ3jU5FVxW5T85sXSAmZyV4NIrpgFPfS2CvbGiVR8sXs0eOFqdQUhZYOY8D5OC5xWIKo4rgzJ4TDNmAPOg/O2myDXriz45wONjCqHKbuLhWlcQnCdkq28xma+Lahn/H5fIjCfhCu9Z5VpHf6Bv8qRUrURmn+GXBfo+L1/5Er3Jh1571B7i1jur2Oh6Wtwapx4tOMA8fPDNRpI/vlh/Ntu7n6Zl1xI2g0tlXuGD1qXTnLwsmNv9Y9z8mYbBiCffJtu9/AeaKI8+XBQAA\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var action = '_1jxbkdgc';\nexport var actionButton = '_1jxbkdgd';\nexport var actionTextColor = 'var(--_1jxbkdg3)';\nexport var card = '_1jxbkdg6';\nexport var cardBorderColor = 'var(--_1jxbkdg2)';\nexport var cardColor = 'var(--_1jxbkdg0)';\nexport var cardForeground = 'var(--_1jxbkdg1)';\nexport var cardInner = '_1jxbkdg7';\nexport var closeButton = '_1jxbkdge';\nexport var closeIcon = '_1jxbkdgf';\nexport var closeIconColor = 'var(--_1jxbkdg5)';\nexport var headAlignWrapper = '_1jxbkdg9';\nexport var header = '_1jxbkdg8';\nexport var icon = '_1jxbkdga';\nexport var iconColor = 'var(--_1jxbkdg4)';\nexport var main = '_1jxbkdgg';\nexport var title = '_1jxbkdgb';","import { cssVar } from '@toeverything/theme';\n\nimport type { NotificationStyle, NotificationTheme } from './types';\n\nexport const getCardColor = (\n style: NotificationStyle,\n theme: NotificationTheme\n) => {\n if (style === 'information') {\n const map: Record = {\n error: cssVar('backgroundErrorColor'),\n info: cssVar('backgroundProcessingColor'),\n success: cssVar('backgroundSuccessColor'),\n warning: cssVar('backgroundWarningColor'),\n };\n return map[theme];\n }\n\n if (style === 'alert') {\n const map: Record = {\n error: cssVar('errorColor'),\n info: cssVar('processingColor'),\n success: cssVar('successColor'),\n warning: cssVar('warningColor'),\n };\n return map[theme];\n }\n\n return cssVar('white');\n};\n\nexport const getActionTextColor = (\n style: NotificationStyle,\n theme: NotificationTheme\n) => {\n if (style === 'information') {\n const map: Record = {\n error: cssVar('errorColor'),\n info: cssVar('processingColor'),\n success: cssVar('successColor'),\n warning: cssVar('warningColor'),\n };\n return map[theme];\n }\n\n return getCardForegroundColor(style);\n};\n\nexport const getCardBorderColor = (style: NotificationStyle) => {\n return style === 'normal' ? cssVar('borderColor') : cssVar('black10');\n};\n\nexport const getCardForegroundColor = (style: NotificationStyle) => {\n return style === 'alert' ? cssVar('pureWhite') : cssVar('textPrimaryColor');\n};\n\nexport const getIconColor = (\n style: NotificationStyle,\n theme: NotificationTheme,\n iconColor?: string\n) => {\n if (style !== 'alert') {\n const map: Record = {\n error: cssVar('errorColor'),\n info: cssVar('processingColor'),\n success: cssVar('successColor'),\n warning: cssVar('warningColor'),\n };\n return iconColor || map[theme];\n }\n\n return iconColor || cssVar('pureWhite');\n};\n\nexport const getCloseIconColor = (style: NotificationStyle) => {\n return style === 'alert'\n ? getCardForegroundColor(style)\n : cssVar('iconColor');\n};\n","import { CloseIcon, InformationFillDuotoneIcon } from '@blocksuite/icons/rc';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport { type HTMLAttributes, useCallback } from 'react';\n\nimport { Button, IconButton } from '../button';\nimport * as styles from './styles.css';\nimport type { Notification } from './types';\nimport {\n getActionTextColor,\n getCardBorderColor,\n getCardColor,\n getCardForegroundColor,\n getCloseIconColor,\n getIconColor,\n} from './utils';\n\nexport interface NotificationCardProps extends HTMLAttributes {\n notification: Notification;\n}\n\nexport const NotificationCard = ({ notification }: NotificationCardProps) => {\n const {\n theme = 'info',\n style = 'normal',\n icon = ,\n iconColor,\n thumb,\n action,\n title,\n footer,\n alignMessage = 'title',\n onDismiss,\n rootAttrs,\n } = notification;\n\n const onActionClicked = useCallback(() => {\n action?.onClick()?.catch(console.error);\n if (action?.autoClose !== false) {\n onDismiss?.();\n }\n }, [action, onDismiss]);\n\n return (\n \n {thumb}\n
\n
\n {icon ? (\n
\n {icon}\n
\n ) : null}\n
{title}
\n\n {action ? (\n
\n \n {action.label}\n \n
\n ) : null}\n \n \n \n \n
\n \n
\n {notification.message}\n
\n
{footer}
\n \n \n );\n};\n","import {\n InformationFillDuotoneIcon,\n SingleSelectSelectSolidIcon,\n} from '@blocksuite/icons/rc';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport { type CSSProperties, type FC, useMemo } from 'react';\nimport { type ExternalToast, toast, Toaster } from 'sonner';\n\nimport { NotificationCard } from './notification-card';\nimport type {\n Notification,\n NotificationCenterProps,\n NotificationCustomRendererProps,\n} from './types';\n\nexport function NotificationCenter({ width = 380 }: NotificationCenterProps) {\n const style = useMemo(() => {\n return {\n ...assignInlineVars({\n // override css vars inside sonner\n '--width': `${width}px`,\n }),\n // radix-ui will lock pointer-events when dialog is open\n pointerEvents: 'auto',\n } satisfies CSSProperties;\n }, [width]);\n\n const toastOptions = useMemo(\n () => ({\n style: {\n width: '100%',\n },\n }),\n []\n );\n\n return (\n \n );\n}\n\n/**\n *\n * @returns {string} toastId\n */\nexport function notify(notification: Notification, options?: ExternalToast) {\n return toast.custom(id => {\n const onDismiss = () => {\n notification.onDismiss?.();\n toast.dismiss(id);\n };\n return ;\n }, options);\n}\n\nnotify.error = (notification: Notification, options?: ExternalToast) => {\n return notify(\n {\n icon: ,\n style: 'normal',\n theme: 'error',\n ...notification,\n },\n options\n );\n};\n\nnotify.success = (notification: Notification, options?: ExternalToast) => {\n return notify(\n {\n icon: ,\n style: 'normal',\n theme: 'success',\n ...notification,\n },\n options\n );\n};\n\nnotify.warning = (notification: Notification, options?: ExternalToast) => {\n return notify(\n {\n icon: ,\n style: 'normal',\n theme: 'warning',\n ...notification,\n },\n options\n );\n};\n\nnotify.custom = (\n Component: FC,\n options?: ExternalToast\n) => {\n return toast.custom(id => {\n return toast.dismiss(id)} />;\n }, options);\n};\n\nnotify.dismiss = toast.dismiss;\n","import * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport {\n createRef,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport { withUnit } from '../../utils/with-unit';\nimport * as styles from './styles.css';\nimport type { RadioItem, RadioProps } from './types';\n\n/**\n * ### Radio button group (Tabs)\n * A tab-like radio button group\n *\n * #### 1. Basic usage with fixed width\n * ```tsx\n * \n * ```\n *\n * #### 2. Dynamic width\n * ```tsx\n * \n * ```\n *\n * #### 3. `ReactNode` as label\n * ```tsx\n * const [value, setValue] = useState('ai');\n * const items: RadioItem[] = [\n * {\n * value: 'ai',\n * label: ,\n * style: { width: 28 },\n * },\n * {\n * value: 'calendar',\n * label: ,\n * style: { width: 28 },\n * },\n * ];\n * return (\n * \n * );\n * ```\n */\nexport const RadioGroup = memo(function RadioGroup({\n items,\n value,\n width,\n style,\n padding = 2,\n gap = 4,\n borderRadius = 10,\n itemHeight = 28,\n animationDuration = 250,\n animationEasing = 'cubic-bezier(.18,.22,0,1)',\n activeItemClassName,\n activeItemStyle,\n iconMode,\n onChange,\n}: RadioProps) {\n const animationTImerRef = useRef | null>(null);\n const finalItems = useMemo(() => {\n return items\n .map(value =>\n typeof value === 'string' ? ({ value } as RadioItem) : value\n )\n .map(item => ({\n ...item,\n ref: createRef(),\n indicatorRef: createRef(),\n }));\n }, [items]);\n const finalStyle = useMemo(\n () => ({\n width,\n ...style,\n ...assignInlineVars({\n [styles.outerPadding]: withUnit(padding, 'px'),\n [styles.outerRadius]: withUnit(borderRadius, 'px'),\n [styles.itemGap]: withUnit(gap, 'px'),\n [styles.itemHeight]: withUnit(itemHeight, 'px'),\n }),\n }),\n [width, style, padding, borderRadius, gap, itemHeight]\n );\n\n const animate = useCallback(\n (oldValue?: string, newValue?: string) => {\n if (!oldValue || !newValue) return;\n const oldItem = finalItems.find(item => item.value === oldValue);\n const newItem = finalItems.find(item => item.value === newValue);\n if (!oldItem || !newItem) return;\n const oldRect = oldItem.ref.current?.getBoundingClientRect();\n const newRect = newItem.ref.current?.getBoundingClientRect();\n if (!oldRect || !newRect) return;\n const activeIndicator = newItem.indicatorRef.current;\n if (!activeIndicator) return;\n\n activeIndicator.style.transform = `translate3d(${oldRect.left - newRect.left}px,0,0)`;\n activeIndicator.style.transition = 'none';\n activeIndicator.style.width = `${oldRect.width}px`;\n\n const animation = `${withUnit(animationDuration, 'ms')} ${animationEasing}`;\n\n if (animationTImerRef.current) clearTimeout(animationTImerRef.current);\n animationTImerRef.current = setTimeout(() => {\n animationTImerRef.current = null;\n activeIndicator.style.transition = `transform ${animation}, width ${animation}`;\n activeIndicator.style.transform = 'none';\n activeIndicator.style.width = '';\n }, 50);\n },\n [animationDuration, animationEasing, finalItems]\n );\n\n // animate on value change\n // useEffect: in case that value is changed from outside\n const prevValue = useRef(value);\n useEffect(() => {\n const currentValue = value;\n const previousValue = prevValue.current;\n if (currentValue !== previousValue) {\n animate(previousValue, currentValue);\n prevValue.current = currentValue;\n }\n }, [animate, value]);\n\n return (\n \n {finalItems.map(({ customRender, ...item }, index) => {\n const testId = item.testId ? { 'data-testid': item.testId } : {};\n const active = item.value === value;\n\n const classMap = { [styles.radioButton]: true };\n if (activeItemClassName) classMap[activeItemClassName] = active;\n if (item.className) classMap[item.className] = true;\n\n const style = { ...item.style };\n if (activeItemStyle && active) Object.assign(style, activeItemStyle);\n\n return (\n \n \n \n {customRender?.(item, index) ?? item.label ?? item.value}\n \n \n );\n })}\n \n );\n});\n","import \"../component/src/ui/radio/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/radio/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA51Uy27bMBC8+yuIAAXiAw25TdNCRnJoP6PIYUWupK1pkiBXlp0i/16QtmUpsdu0J1GznH3OcqELb3tzJ37NhKgN7kqxXM2E8C4Sk7OlCGiAaYsJrVzQGGQATV0shQKjbrcQbqU8uFnOhRRjoJjPE69FalouJ6ZP2eJBa7JNKe78Tnz1u4TVzrKM9IwnAtQ1WZQZ38XM0xS9gX2Zc07Azy4y1XupnGW0XAqFljEkExhqrCTGTRzDyhkXXoWIPbFqc6TvySwZAxOEfQ7at8QooweFpbCuD+AT3EUMMqJBxQm2OBTRH+u+L4rV7GW2ODb7hwYGGRkYH25Ui2qN+uYpj+BdSflAm0NOV3x2dvBatm6LIfuuQK2b4DqrLweoOmZnvw23ZKbmKAfvpJyVG6fxgUOHT2IxFs8fMk+8Q+Yaa+gMv8Pn//XoHAlUEu24RZ8z+VmS1YPMBxlVxqn15PKjiNsmU65eup+ayZos06Mir8jub1M4fEZTOBPmF3Zwun6TlZouYjI14KfwxwzLHqs1sQTvZcAmr711UgdoRtV+ydWeHwaoojMdX3oYyLYYiPPOkOa2FMui+DB+CU7/BmsuRZGO7Pzx9M9CHYadMtnJ2IJ2/SvugXS05avOgyLen8IHsLF2YSNdoIZsmXM7C/WNFB/FpDGDt+Vq9vIb68DScVcFAAA=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var indicator = 'd0pnwl7';\nexport var itemGap = 'var(--d0pnwl2)';\nexport var itemHeight = 'var(--d0pnwl3)';\nexport var outerPadding = 'var(--d0pnwl0)';\nexport var outerRadius = 'var(--d0pnwl1)';\nexport var radioButton = 'd0pnwl4';\nexport var radioButtonContent = 'd0pnwl5';\nexport var radioButtonGroup = 'd0pnwl6';","import \"../component/src/ui/scrollbar/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/scrollbar/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA41U247bIBB9z1dMI62UqCWyc1NFtP2RqqoI4JhdwliAc2m1/15xiTdE2W1ebIZhZg5nzjD7XR9f+j+nYwV/RwCEOG5R6y2z5KiEbyl8706bEUC26qp6CmYr1a717zYepG00HsmZQquEkGYzehvNLtnrmL1Dp7xCQ4FtHereyxDqsaNQhZWWTUi5ThVtrpDNoWIyvWXmkg07xpU/w2zhYDZ3EU/ayom3jL/uLPZGUDgwOyGENY0ykmzRCmkJR412WiL+KZhnpGUuU0I8ds9jb3s5/hVvM5Soi8B5dN7yU9BXnP5BG2WdJ7xVWsRYoVyn2ZkCR+Ol8Q6+qH2H1jPji+DFnVJX7mWZrdEyMhf+RCgreWKPo+73Jnh6Jy1xUkvuKRg0uT09bwnLhy+7+T6JzBvNTO8K5IqtsnsxBmb1ypXoaRtEFe/wcf8GB3GSoxHMnoduDig503xyHyp8hUV3ioezFrIIuxM41Eo8qpdl0ovzzMvncRqBW6FURcQqOvfM7pQhcQjWVSn1iDsQCATqeVXitEyo3lFYhpirtOubUbNSM68O8tM5EOqgri82ULcqx/t9uP+P45H+KY7mHptrSreyQStjeJ4DCuPx5vNnJMNNPcxG1FqDdk/TUjMvJ2RVPX2D8J0+8Lrtlbk8h8tl6lHYuhxLe2//ALhzY91MBQAA\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var TableScrollbar = '_1wjuzxw5';\nexport var scrollTopBorder = '_1wjuzxw1';\nexport var scrollableContainer = '_1wjuzxw3';\nexport var scrollableContainerRoot = '_1wjuzxw0';\nexport var scrollableViewport = '_1wjuzxw2';\nexport var scrollbar = '_1wjuzxw4';\nexport var scrollbarThumb = '_1wjuzxw6';","import * as ScrollArea from '@radix-ui/react-scroll-area';\nimport clsx from 'clsx';\nimport type { RefAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nimport * as styles from './index.css';\n\nexport const ScrollableRoot = forwardRef<\n HTMLDivElement,\n ScrollArea.ScrollAreaProps & RefAttributes\n>(({ children, className, ...props }, ref) => {\n return (\n \n {children}\n \n );\n});\n\nScrollableRoot.displayName = 'ScrollableRoot';\n\nexport const ScrollableViewport = forwardRef<\n HTMLDivElement,\n ScrollArea.ScrollAreaViewportProps & RefAttributes\n>(({ children, className, ...props }, ref) => {\n return (\n \n {children}\n \n );\n});\n\nScrollableViewport.displayName = 'ScrollableViewport';\n\nexport const ScrollableScrollbar = forwardRef<\n HTMLDivElement,\n ScrollArea.ScrollAreaScrollbarProps & RefAttributes\n>(({ children, className, ...props }, ref) => {\n return (\n \n \n {children}\n \n );\n});\n\nScrollableScrollbar.displayName = 'ScrollableScrollbar';\n\nexport const Scrollable = {\n Root: ScrollableRoot,\n Viewport: ScrollableViewport,\n Scrollbar: ScrollableScrollbar,\n};\n","import { debounce } from 'lodash-es';\nimport { useMemo, useState } from 'react';\n\nexport function useHasScrollTop() {\n const [hasScrollTop, setHasScrollTop] = useState(false);\n const containerRefFn = useMemo(() => {\n let unsub: (() => void) | null = null;\n return (container: HTMLElement | null) => {\n unsub?.();\n const updateScrollTop = debounce(() => {\n if (container) {\n setTimeout(() => {\n const hasScrollTop = container.scrollTop > 0;\n setHasScrollTop(hasScrollTop);\n });\n }\n }, 50);\n container?.addEventListener('scroll', updateScrollTop);\n updateScrollTop();\n unsub = () => {\n container?.removeEventListener('scroll', updateScrollTop);\n };\n };\n }, []);\n\n return [containerRefFn, hasScrollTop] as const;\n}\n","import * as ScrollArea from '@radix-ui/react-scroll-area';\nimport clsx from 'clsx';\nimport type { PropsWithChildren } from 'react';\n\nimport * as styles from './index.css';\nimport { useHasScrollTop } from './use-has-scroll-top';\n\nexport type ScrollableContainerProps = {\n showScrollTopBorder?: boolean;\n inTableView?: boolean;\n className?: string;\n viewPortClassName?: string;\n styles?: React.CSSProperties;\n scrollBarClassName?: string;\n};\n\nexport const ScrollableContainer = ({\n children,\n showScrollTopBorder = false,\n inTableView = false,\n className,\n styles: _styles,\n viewPortClassName,\n scrollBarClassName,\n}: PropsWithChildren) => {\n const [setContainer, hasScrollTop] = useHasScrollTop();\n return (\n \n \n \n
{children}
\n \n \n \n \n \n );\n};\n","import \"../component/src/ui/skeleton/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/skeleton/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA4VU246jMAx95yuskVZqpaaCXma66ct8xr6tDBiwCAkKaTvVqv++SugFWkbzQpLjc3yJHT5rOhcWG+rgb/Jx5Hp3iuFfBBD/CguAaTFjd5aQ7COASwSwfbXFy+3NmsTfSi/R52u4ZBzOWdRdYWwj+61CR39mwnudvyYwzR6RB/n8yL5Ey1taq6DJuWsVniWkymS1J504d5UMXv2xIi4rJ2G9ar/8uVD0JbrKsq4lxB5pTceOjZZgSaHjI+1HcaRMqTCWQrzMaEfaSXh7G2sx7Yw6OPJoamxOVljM+dBJYF2RZectrDty17iD3qyDCrO6tOagc5EZZayEI9qZEFgUrEm0CjOqjPKeg30+SnMd0rsWfyv2KZGtv5KBZhM0T6TYSwek7RRp90R6nyJt+iRuHUiWK2o80KAtWQtnWl/7GEyNc6a544MQHyEEam6wv/HHc1h1QNiRYC3MwflZ74B1wZrduJe74GOq4QDmSLZQ5iSh4jwn7TFxorRmJxrsasENliTvmK8SlSj9StrNThU7WkCqMKvHrdlJiYUjOzVAE/Ukvh7FmtA+lzIcEnnlPDIITwh+xzmVi34fHlGLlrS7IrZMcbbabhfw+MTLzfxV4IH59zP+02/g3kh/UFTcpt72wxD2/QTso8t/TVsU3uUEAAA=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var animation = {pulse:'_17vik8w7',wave:'_17vik8w8'};\nexport var root = '_17vik8w2';\nexport var variant = {circular:'_17vik8w3',rectangular:'_17vik8w4',rounded:'_17vik8w5',text:'_17vik8w6'};","import clsx from 'clsx';\n\nimport * as styles from './index.css';\nimport type { SkeletonProps } from './types';\n\nfunction getSize(size: number | string) {\n return typeof size === 'number' || /^\\d+$/.test(size) ? `${size}px` : size;\n}\n\n/**\n *\n * @returns\n */\nexport const Skeleton = ({\n animation = 'pulse',\n variant = 'text',\n children,\n\n width: _width,\n height: _height,\n style: _style,\n className: _className,\n\n ...props\n}: SkeletonProps) => {\n const width = _width !== undefined ? getSize(_width) : undefined;\n const height = _height !== undefined ? getSize(_height) : undefined;\n\n const style = {\n width,\n height,\n ..._style,\n };\n\n return (\n \n {children}\n \n );\n};\n","import { isMacOS } from './platform';\n\nconst macOS = isMacOS();\n\nexport const getCommand = (cmd: '$mod' | '$shift' | '$alt' | string) => {\n if (cmd === '$mod') return macOS ? '⌘' : 'Ctrl';\n if (cmd === '$alt') return macOS ? '⌥' : 'Alt';\n if (cmd === '$shift') return macOS ? '⇧' : 'Shift';\n return cmd;\n};\n","export function isMacOS() {\n if (typeof navigator === 'undefined') return false;\n return navigator.userAgent.indexOf('Mac') !== -1;\n}\n","import type {\n TooltipContentProps,\n TooltipPortalProps,\n TooltipProps as RootProps,\n} from '@radix-ui/react-tooltip';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { cssVar } from '@toeverything/theme';\nimport { cssVarV2 } from '@toeverything/theme/v2';\nimport clsx from 'clsx';\nimport { type ReactElement, type ReactNode } from 'react';\n\nimport { getCommand } from '../../utils/keyboard-mapping';\nimport * as styles from './styles.css';\n\nexport interface TooltipProps {\n // `children` can not be string, number or even undefined\n children: ReactElement;\n content?: ReactNode;\n /**\n * When shortcut is provided, will use a single line layout\n *\n * ```tsx\n * // [T]\n * // [⌘ + K]\n * // [⌘] [K]\n * // [⌘] [K] or [Ctrl] [K]\n * ```\n *\n * Mapping:\n * | Shortcut | macOS | Windows |\n * |----------|-------|---------|\n * | `$mod` | `⌘` | `Ctrl` |\n * | `$alt` | `⌥` | `Alt` |\n * | `$shift` | `⇧` | `Shift` |\n */\n shortcut?: string | string[];\n side?: TooltipContentProps['side'];\n align?: TooltipContentProps['align'];\n\n rootOptions?: Omit;\n portalOptions?: TooltipPortalProps;\n options?: Omit;\n}\n\nconst TooltipShortcut = ({ shortcut }: { shortcut: string | string[] }) => {\n const commands = (Array.isArray(shortcut) ? shortcut : [shortcut])\n .map(cmd => cmd.trim())\n .map(cmd => getCommand(cmd));\n\n return (\n
\n {commands.map((cmd, index) => (\n \n {cmd}\n
\n ))}\n \n );\n};\n\nexport const Tooltip = ({\n children,\n content,\n side = 'top',\n align = 'center',\n shortcut,\n options,\n rootOptions,\n portalOptions,\n}: TooltipProps) => {\n if (!content) {\n return children;\n }\n const { className, ...contentOptions } = options || {};\n const { style: contentStyle, ...restContentOptions } = contentOptions;\n return (\n \n \n {children}\n\n \n \n {shortcut ? (\n
\n
{content}
\n \n
\n ) : (\n content\n )}\n \n \n \n \n \n \n
\n
\n
\n );\n};\n","import \"../component/src/ui/tooltip/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/ui/tooltip/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xZWdxaHY5MCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWZmaW5lLXRvb2x0aXBzLWJhY2tncm91bmQpOwogIGNvbG9yOiB2YXIoLS1hZmZpbmUtdG9vbHRpcHMtZm9yZWdyb3VuZCk7CiAgcGFkZGluZzogNXB4IDEycHg7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1zbSk7CiAgbGluZS1oZWlnaHQ6IDIycHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIG1heC13aWR0aDogMjgwcHg7Cn0KLl8xZWdxaHY5MSB7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IDEwcHg7Cn0KLl8xZWdxaHY5MiB7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5fMWVncWh2OTMgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDJweDsKfQouXzFlZ3Fodjk0IHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hZmZpbmUtdG9vbHRpcHMtc2Vjb25kYXJ5QmFja2dyb3VuZCk7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC14cyk7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMjBweDsKICBoZWlnaHQ6IDE2cHg7CiAgbWluLXdpZHRoOiAxNnB4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBwYWRkaW5nOiAwIDRweDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLl8xZWdxaHY5NFtkYXRhLWxlbmd0aD0iMSJdIHsKICB3aWR0aDogMTZweDsKfQ==\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var command = '_1egqhv94';\nexport var shortcut = '_1egqhv93';\nexport var tooltipContent = '_1egqhv90';\nexport var withShortcut = '_1egqhv91';\nexport var withShortcutContent = '_1egqhv92';","type AllowedUnits = 'px' | 'ms';\n\n/**\n * get value with unit\n */\nexport const withUnit = (\n value: string | number,\n unit: AllowedUnits\n): string => {\n if (typeof value === 'number') {\n return `${value}${unit}`;\n }\n\n if (/^\\d+(\\.\\d+)?$/.test(value)) {\n return `${value}${unit}`;\n }\n\n return value;\n};\n","import { atom } from 'jotai';\n\nimport type { AuthProps } from '../components/affine/auth';\nimport type { CreateWorkspaceMode } from '../components/affine/create-workspace-modal';\nimport type { SettingProps } from '../components/affine/setting-modal';\nimport type { ActiveTab } from '../components/affine/setting-modal/types';\n// modal atoms\nexport const openWorkspacesModalAtom = atom(false);\nexport const openCreateWorkspaceModalAtom = atom(false);\nexport const openSignOutModalAtom = atom(false);\nexport const openQuotaModalAtom = atom(false);\nexport const openStarAFFiNEModalAtom = atom(false);\nexport const openIssueFeedbackModalAtom = atom(false);\nexport const openHistoryTipsModalAtom = atom(false);\nexport const openInfoModalAtom = atom(false);\n\nexport const rightSidebarWidthAtom = atom(320);\n\nexport type PlansScrollAnchor =\n | 'aiPricingPlan'\n | 'cloudPricingPlan'\n | 'lifetimePricingPlan';\nexport type SettingAtom = {\n open: boolean;\n workspaceMetadata?: SettingProps['workspaceMetadata'];\n} & (\n | {\n activeTab: 'plans';\n scrollAnchor?: PlansScrollAnchor;\n }\n | { activeTab: Exclude }\n);\n\nexport const openSettingModalAtom = atom({\n activeTab: 'appearance',\n open: false,\n});\n\nexport type AuthAtom = {\n openModal: boolean;\n state: AuthProps['state'];\n email?: string;\n emailType?: AuthProps['emailType'];\n};\n\nexport const authAtom = atom({\n openModal: false,\n state: 'signIn',\n email: '',\n emailType: 'changeEmail',\n});\n\nexport type AllPageFilterOption = 'docs' | 'collections' | 'tags';\nexport const allPageFilterSelectAtom = atom('docs');\n\nexport const openWorkspaceListModalAtom = atom(false);\n","import { type EditorHost, WithDisposable } from '@blocksuite/block-std';\nimport type {\n AffineAIPanelState,\n AffineAIPanelWidgetConfig,\n} from '@blocksuite/blocks';\nimport {\n CodeBlockComponent,\n DividerBlockComponent,\n ListBlockComponent,\n ParagraphBlockComponent,\n} from '@blocksuite/blocks';\nimport { BlockViewType, type Doc, type Query } from '@blocksuite/store';\nimport { css, html, LitElement, type PropertyValues } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { keyed } from 'lit/directives/keyed.js';\n\nimport { CustomPageEditorBlockSpecs } from '../utils/custom-specs';\nimport { markDownToDoc } from '../utils/markdown-utils';\n\nconst textBlockStyles = css`\n ${ParagraphBlockComponent.styles}\n ${ListBlockComponent.styles}\n ${DividerBlockComponent.styles}\n ${CodeBlockComponent.styles}\n`;\n\nconst customHeadingStyles = css`\n .custom-heading {\n .h1 {\n font-size: calc(var(--affine-font-h-1) - 2px);\n code {\n font-size: calc(var(--affine-font-base) + 6px);\n }\n }\n .h2 {\n font-size: calc(var(--affine-font-h-2) - 2px);\n code {\n font-size: calc(var(--affine-font-base) + 4px);\n }\n }\n .h3 {\n font-size: calc(var(--affine-font-h-3) - 2px);\n code {\n font-size: calc(var(--affine-font-base) + 2px);\n }\n }\n .h4 {\n font-size: calc(var(--affine-font-h-4) - 2px);\n code {\n font-size: var(--affine-font-base);\n }\n }\n .h5 {\n font-size: calc(var(--affine-font-h-5) - 2px);\n code {\n font-size: calc(var(--affine-font-base) - 2px);\n }\n }\n .h6 {\n font-size: calc(var(--affine-font-h-6) - 2px);\n code {\n font-size: calc(var(--affine-font-base) - 4px);\n }\n }\n }\n`;\n\ntype TextRendererOptions = {\n maxHeight?: number;\n customHeading?: boolean;\n};\n\n@customElement('ai-answer-text')\nexport class AIAnswerText extends WithDisposable(LitElement) {\n static override styles = css`\n .ai-answer-text-editor.affine-page-viewport {\n background: transparent;\n font-family: var(--affine-font-family);\n margin-top: 0;\n margin-bottom: 0;\n }\n\n .ai-answer-text-editor .affine-page-root-block-container {\n padding: 0;\n line-height: var(--affine-line-height);\n color: var(--affine-text-primary-color);\n font-weight: 400;\n }\n\n .affine-paragraph-block-container {\n line-height: 22px;\n }\n\n .ai-answer-text-editor {\n .affine-note-block-container {\n > .affine-block-children-container {\n > :first-child,\n > :first-child * {\n margin-top: 0 !important;\n }\n > :last-child,\n > :last-child * {\n margin-bottom: 0 !important;\n }\n }\n }\n }\n\n .ai-answer-text-container {\n overflow-y: auto;\n overflow-x: hidden;\n padding: 0;\n overscroll-behavior-y: none;\n }\n .ai-answer-text-container.show-scrollbar::-webkit-scrollbar {\n width: 5px;\n height: 100px;\n }\n .ai-answer-text-container.show-scrollbar::-webkit-scrollbar-thumb {\n border-radius: 20px;\n }\n .ai-answer-text-container.show-scrollbar:hover::-webkit-scrollbar-thumb {\n background-color: var(--affine-black-30);\n }\n .ai-answer-text-container.show-scrollbar::-webkit-scrollbar-corner {\n display: none;\n }\n\n .ai-answer-text-container {\n rich-text .nowrap-lines v-text span,\n rich-text .nowrap-lines v-element span {\n white-space: pre;\n }\n editor-host:focus-visible {\n outline: none;\n }\n editor-host * {\n box-sizing: border-box;\n }\n editor-host {\n isolation: isolate;\n }\n }\n\n ${textBlockStyles}\n ${customHeadingStyles}\n `;\n\n @query('.ai-answer-text-container')\n private accessor _container!: HTMLDivElement;\n\n private _doc!: Doc;\n\n private _answers: string[] = [];\n\n private _timer?: ReturnType | null = null;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor answer!: string;\n\n @property({ attribute: false })\n accessor options!: TextRendererOptions;\n\n @property({ attribute: false })\n accessor state: AffineAIPanelState | undefined = undefined;\n\n private _onWheel(e: MouseEvent) {\n e.stopPropagation();\n if (this.state === 'generating') {\n e.preventDefault();\n }\n }\n\n private readonly _clearTimer = () => {\n if (this._timer) {\n clearInterval(this._timer);\n this._timer = null;\n }\n };\n\n private readonly _query: Query = {\n mode: 'strict',\n match: [\n 'affine:page',\n 'affine:note',\n 'affine:surface',\n 'affine:paragraph',\n 'affine:code',\n 'affine:list',\n 'affine:divider',\n ].map(flavour => ({ flavour, viewType: BlockViewType.Display })),\n };\n\n private readonly _updateDoc = () => {\n if (this._answers.length > 0) {\n const latestAnswer = this._answers.pop();\n this._answers = [];\n if (latestAnswer) {\n markDownToDoc(this.host, latestAnswer)\n .then(doc => {\n this._doc = doc.blockCollection.getDoc({\n query: this._query,\n });\n this.disposables.add(() => {\n doc.blockCollection.clearQuery(this._query);\n });\n this._doc.awarenessStore.setReadonly(\n this._doc.blockCollection,\n true\n );\n this.requestUpdate();\n if (this.state !== 'generating') {\n this._clearTimer();\n }\n })\n .catch(console.error);\n }\n }\n };\n\n override shouldUpdate(changedProperties: PropertyValues) {\n if (changedProperties.has('answer')) {\n this._answers.push(this.answer);\n return false;\n }\n\n return true;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this._answers.push(this.answer);\n\n this._updateDoc();\n if (this.state === 'generating') {\n this._timer = setInterval(this._updateDoc, 600);\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this._clearTimer();\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n requestAnimationFrame(() => {\n if (!this._container) return;\n this._container.scrollTop = this._container.scrollHeight;\n });\n }\n\n override render() {\n const { maxHeight, customHeading } = this.options;\n const classes = classMap({\n 'ai-answer-text-container': true,\n 'show-scrollbar': !!maxHeight,\n 'custom-heading': !!customHeading,\n });\n return html`\n \n
\n ${keyed(\n this._doc,\n html`
\n ${this.host.renderSpecPortal(this._doc, CustomPageEditorBlockSpecs)}\n
`\n )}\n
\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-answer-text': AIAnswerText;\n }\n}\n\nexport const createTextRenderer: (\n host: EditorHost,\n options: TextRendererOptions\n) => AffineAIPanelWidgetConfig['answerRenderer'] = (host, options) => {\n return (answer, state) => {\n return html``;\n };\n};\n","import type { EditorHost } from '@blocksuite/block-std';\nimport { WithDisposable } from '@blocksuite/block-std';\nimport {\n type AffineAIPanelWidgetConfig,\n EdgelessEditorBlockSpecs,\n} from '@blocksuite/blocks';\nimport { AffineSchemas } from '@blocksuite/blocks/schemas';\nimport type { Doc } from '@blocksuite/store';\nimport { DocCollection, Schema } from '@blocksuite/store';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { createRef, type Ref, ref } from 'lit/directives/ref.js';\n\nimport { getAIPanel } from '../ai-panel';\nimport { PPTBuilder } from '../slides/index';\n\nexport const createSlidesRenderer: (\n host: EditorHost,\n ctx: {\n get: () => Record;\n set: (data: Record) => void;\n }\n) => AffineAIPanelWidgetConfig['answerRenderer'] = (host, ctx) => {\n return (answer, state) => {\n if (state === 'generating') {\n const panel = getAIPanel(host);\n panel.generatingElement?.updateLoadingProgress(2);\n return nothing;\n }\n\n if (state !== 'finished' && state !== 'error') {\n return nothing;\n }\n\n return html`\n
\n \n
`;\n };\n};\n\n@customElement('ai-slides-renderer')\nexport class AISlidesRenderer extends WithDisposable(LitElement) {\n static override styles = css``;\n\n private readonly _editorContainer: Ref =\n createRef();\n\n private _doc!: Doc;\n\n @query('editor-host')\n private accessor _editorHost!: EditorHost;\n\n @property({ attribute: false })\n accessor text!: string;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor ctx:\n | {\n get(): Record;\n set(data: Record): void;\n }\n | undefined = undefined;\n\n protected override firstUpdated() {\n requestAnimationFrame(() => {\n if (!this._editorHost) return;\n PPTBuilder(this._editorHost)\n .process(this.text)\n .then(res => {\n if (this.ctx) {\n this.ctx.set({\n contents: res.contents,\n images: res.images,\n });\n }\n })\n .catch(console.error);\n });\n }\n\n protected override render() {\n return html`\n
\n \n ${this.host.renderSpecPortal(this._doc, EdgelessEditorBlockSpecs)}\n
\n
\n `;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n const schema = new Schema().register(AffineSchemas);\n const collection = new DocCollection({\n schema,\n id: 'SLIDES_PREVIEW',\n disableBacklinkIndex: true,\n disableSearchIndex: true,\n });\n collection.meta.initialize();\n collection.start();\n const doc = collection.createDoc();\n\n doc.load(() => {\n const pageBlockId = doc.addBlock('affine:page', {});\n doc.addBlock('affine:surface', {}, pageBlockId);\n });\n\n doc.resetHistory();\n this._doc = doc;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-slides-renderer': AISlidesRenderer;\n }\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport type { AffineAIPanelWidgetConfig } from '@blocksuite/blocks';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { getAIPanel } from '../ai-panel';\nimport { preprocessHtml } from '../utils/html';\n\ntype AIAnswerWrapperOptions = {\n height: number;\n};\n\n@customElement('ai-answer-wrapper')\nexport class AIAnswerWrapper extends LitElement {\n static override styles = css`\n :host {\n display: block;\n width: 100%;\n box-sizing: border-box;\n border-radius: 4px;\n border: 1px solid var(--affine-border-color);\n box-shadow: var(--affine-shadow-1);\n background: var(--affine-background-secondary-color);\n overflow: hidden;\n }\n\n ::slotted(.ai-answer-iframe) {\n width: 100%;\n height: 100%;\n border: none;\n }\n\n ::slotted(.ai-answer-image) {\n width: 100%;\n height: 100%;\n }\n `;\n\n @property({ attribute: false })\n accessor options: AIAnswerWrapperOptions | undefined = undefined;\n\n protected override render() {\n return html`\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-answer-wrapper': AIAnswerWrapper;\n }\n}\n\nexport const createIframeRenderer: (\n host: EditorHost,\n options?: AIAnswerWrapperOptions\n) => AffineAIPanelWidgetConfig['answerRenderer'] = (host, options) => {\n return (answer, state) => {\n if (state === 'generating') {\n const panel = getAIPanel(host);\n panel.generatingElement?.updateLoadingProgress(2);\n return nothing;\n }\n\n if (state !== 'finished' && state !== 'error') {\n return nothing;\n }\n\n const template = html`\n `;\n return html`${template}`;\n };\n};\n\nexport const createImageRenderer: (\n host: EditorHost,\n options?: AIAnswerWrapperOptions\n) => AffineAIPanelWidgetConfig['answerRenderer'] = (host, options) => {\n return (answer, state) => {\n if (state === 'generating') {\n const panel = getAIPanel(host);\n panel.generatingElement?.updateLoadingProgress(2);\n return nothing;\n }\n\n if (state !== 'finished' && state !== 'error') {\n return nothing;\n }\n\n const template = html`\n
\n \n
`;\n\n return html`${template}`;\n };\n};\n","import { type EditorHost, WithDisposable } from '@blocksuite/block-std';\nimport {\n type AIItemGroupConfig,\n EdgelessRootService,\n scrollbarStyle,\n} from '@blocksuite/blocks';\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { getRootService } from '../../utils/selection-utils';\n\n@customElement('ask-ai-panel')\nexport class AskAIPanel extends WithDisposable(LitElement) {\n static override styles = css`\n :host {\n position: relative;\n }\n\n .ask-ai-panel {\n box-sizing: border-box;\n padding: 8px 4px 8px 8px;\n max-height: 374px;\n overflow-y: auto;\n background: var(--affine-background-overlay-panel-color);\n box-shadow: var(--affine-shadow-2);\n border-radius: 8px;\n z-index: var(--affine-z-index-popover);\n scrollbar-gutter: stable;\n }\n\n ${scrollbarStyle('.ask-ai-panel')}\n .ask-ai-panel:hover::-webkit-scrollbar-thumb {\n background-color: var(--affine-black-30);\n }\n `;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor actionGroups!: AIItemGroupConfig[];\n\n @property({ attribute: false })\n accessor abortController: AbortController | null = null;\n\n @property({ attribute: false })\n accessor minWidth = 330;\n\n get _edgeless() {\n const rootService = getRootService(this.host);\n if (rootService instanceof EdgelessRootService) {\n return rootService;\n }\n return null;\n }\n\n get _actionGroups() {\n const filteredConfig = this.actionGroups\n .map(group => ({\n ...group,\n items: group.items.filter(item =>\n item.showWhen\n ? item.showWhen(\n this.host.command.chain(),\n this._edgeless ? 'edgeless' : 'page',\n this.host\n )\n : true\n ),\n }))\n .filter(group => group.items.length > 0);\n return filteredConfig;\n }\n\n override render() {\n const style = styleMap({\n minWidth: `${this.minWidth}px`,\n });\n return html`
\n \n
`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ask-ai-panel': AskAIPanel;\n }\n}\n","import './ask-ai-panel';\n\nimport { type EditorHost, WithDisposable } from '@blocksuite/block-std';\nimport {\n type AIItemGroupConfig,\n AIStarIcon,\n EdgelessRootService,\n} from '@blocksuite/blocks';\nimport { createLitPortal, HoverController } from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport { flip, offset } from '@floating-ui/dom';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { getRootService } from '../../utils/selection-utils';\n\ntype buttonSize = 'small' | 'middle' | 'large';\ntype toggleType = 'hover' | 'click';\n\nconst buttonWidthMap: Record = {\n small: '72px',\n middle: '76px',\n large: '82px',\n};\n\nconst buttonHeightMap: Record = {\n small: '24px',\n middle: '32px',\n large: '32px',\n};\n\nexport type AskAIButtonOptions = {\n size: buttonSize;\n backgroundColor?: string;\n boxShadow?: string;\n panelWidth?: number;\n};\n\n@customElement('ask-ai-button')\nexport class AskAIButton extends WithDisposable(LitElement) {\n get _edgeless() {\n const rootService = getRootService(this.host);\n if (rootService instanceof EdgelessRootService) {\n return rootService;\n }\n return null;\n }\n\n static override styles = css`\n .ask-ai-button {\n border-radius: 4px;\n position: relative;\n }\n\n .ask-ai-icon-button {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--affine-brand-color);\n font-size: var(--affine-font-sm);\n font-weight: 500;\n }\n\n .ask-ai-icon-button.small {\n font-size: var(--affine-font-xs);\n svg {\n scale: 0.8;\n margin-right: 2px;\n }\n }\n\n .ask-ai-icon-button.large {\n font-size: var(--affine-font-md);\n svg {\n scale: 1.2;\n }\n }\n\n .ask-ai-icon-button span {\n line-height: 22px;\n }\n\n .ask-ai-icon-button svg {\n margin-right: 4px;\n color: var(--affine-brand-color);\n }\n `;\n\n @query('.ask-ai-button')\n private accessor _askAIButton!: HTMLDivElement;\n\n private _abortController: AbortController | null = null;\n\n private readonly _whenHover = new HoverController(\n this,\n ({ abortController }) => {\n return {\n template: html``,\n computePosition: {\n referenceElement: this,\n placement: 'bottom-start',\n middleware: [flip(), offset({ mainAxis: 8, crossAxis: -6 })],\n autoUpdate: true,\n },\n };\n },\n { allowMultiple: true }\n );\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor actionGroups!: AIItemGroupConfig[];\n\n @property({ attribute: false })\n accessor toggleType: toggleType = 'hover';\n\n @property({ attribute: false })\n accessor options: AskAIButtonOptions = {\n size: 'middle',\n backgroundColor: undefined,\n boxShadow: undefined,\n panelWidth: 330,\n };\n\n private readonly _clearAbortController = () => {\n if (this._abortController) {\n this._abortController.abort();\n this._abortController = null;\n }\n };\n\n private readonly _toggleAIPanel = () => {\n if (this.toggleType !== 'click') {\n return;\n }\n\n if (this._abortController) {\n this._clearAbortController();\n return;\n }\n\n this._abortController = new AbortController();\n assertExists(this._askAIButton);\n const panelMinWidth = this.options.panelWidth || 330;\n createLitPortal({\n template: html``,\n container: this._askAIButton,\n computePosition: {\n referenceElement: this._askAIButton,\n placement: 'bottom-start',\n middleware: [flip(), offset({ mainAxis: 8, crossAxis: -6 })],\n autoUpdate: true,\n },\n abortController: this._abortController,\n closeOnClickAway: true,\n });\n };\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this._clearAbortController();\n }\n\n override render() {\n const { size = 'small', backgroundColor, boxShadow } = this.options;\n const { toggleType } = this;\n const buttonStyles = styleMap({\n backgroundColor: backgroundColor || 'transparent',\n boxShadow: boxShadow || 'none',\n });\n return html`\n \n ${AIStarIcon} Ask AI\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ask-ai-button': AskAIButton;\n }\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport { WithDisposable } from '@blocksuite/block-std';\nimport { type AIError, openFileOrFiles } from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\n\nimport {\n ChatAbortIcon,\n ChatClearIcon,\n ChatSendIcon,\n CloseIcon,\n ImageIcon,\n} from '../_common/icons';\nimport { AIProvider } from '../provider';\nimport { reportResponse } from '../utils/action-reporter';\nimport { readBlobAsURL } from '../utils/image';\nimport type { ChatContextValue, ChatMessage } from './chat-context';\n\nconst MaximumImageCount = 32;\n\nfunction getFirstTwoLines(text: string) {\n const lines = text.split('\\n');\n return lines.slice(0, 2);\n}\n\n@customElement('chat-panel-input')\nexport class ChatPanelInput extends WithDisposable(LitElement) {\n static override styles = css`\n .chat-panel-input {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n gap: 12px;\n position: relative;\n margin-top: 12px;\n border-radius: 4px;\n padding: 8px;\n min-height: 94px;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n\n .chat-selection-quote {\n padding: 4px 0px 8px 0px;\n padding-left: 15px;\n max-height: 56px;\n font-size: 14px;\n font-weight: 400;\n line-height: 22px;\n color: var(--affine-text-secondary-color);\n position: relative;\n\n div {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .chat-quote-close {\n position: absolute;\n right: 0;\n top: 0;\n cursor: pointer;\n display: none;\n width: 16px;\n height: 16px;\n border-radius: 4px;\n border: 1px solid var(--affine-border-color);\n background-color: var(--affine-white);\n }\n }\n\n .chat-selection-quote:hover .chat-quote-close {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .chat-selection-quote::after {\n content: '';\n width: 2px;\n height: calc(100% - 10px);\n margin-top: 5px;\n position: absolute;\n left: 0;\n top: 0;\n background: var(--affine-quote-color);\n border-radius: 18px;\n }\n }\n\n .chat-panel-input-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n\n div {\n width: 24px;\n height: 24px;\n cursor: pointer;\n }\n\n div:nth-child(2) {\n margin-left: auto;\n }\n\n .image-upload {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n .chat-panel-input {\n textarea {\n width: 100%;\n padding: 0;\n margin: 0;\n border: none;\n line-height: 22px;\n font-size: var(--affine-font-sm);\n font-weight: 400;\n font-family: var(--affine-font-family);\n color: var(--affine-text-primary-color);\n box-sizing: border-box;\n resize: none;\n overflow-y: hidden;\n }\n\n textarea::placeholder {\n font-size: 14px;\n font-weight: 400;\n font-family: var(--affine-font-family);\n color: var(--affine-placeholder-color);\n }\n\n textarea:focus {\n outline: none;\n }\n }\n\n .chat-panel-images-wrapper {\n overflow: hidden scroll;\n max-height: 128px;\n\n .chat-panel-images {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n position: relative;\n\n .image-container {\n width: 58px;\n height: 58px;\n border-radius: 4px;\n border: 1px solid var(--affine-border-color);\n cursor: pointer;\n overflow: hidden;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n\n img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n }\n }\n }\n }\n\n .chat-panel-send svg rect {\n fill: var(--affine-primary-color);\n }\n .chat-panel-send[aria-disabled='true'] {\n cursor: not-allowed;\n }\n .chat-panel-send[aria-disabled='true'] svg rect {\n fill: var(--affine-text-disable-color);\n }\n\n .close-wrapper {\n width: 16px;\n height: 16px;\n border-radius: 4px;\n border: 1px solid var(--affine-border-color);\n justify-content: center;\n align-items: center;\n display: none;\n position: absolute;\n background-color: var(--affine-white);\n z-index: 1;\n cursor: pointer;\n }\n\n .close-wrapper:hover {\n background-color: var(--affine-background-error-color);\n border: 1px solid var(--affine-error-color);\n }\n\n .close-wrapper:hover svg path {\n fill: var(--affine-error-color);\n }\n `;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @query('.chat-panel-images')\n accessor imagesWrapper!: HTMLDivElement;\n\n @query('textarea')\n accessor textarea!: HTMLTextAreaElement;\n\n @query('.close-wrapper')\n accessor closeWrapper!: HTMLDivElement;\n\n @state()\n accessor curIndex = -1;\n\n @state()\n accessor isInputEmpty = true;\n\n @state()\n accessor focused = false;\n\n @property({ attribute: false })\n accessor chatContextValue!: ChatContextValue;\n\n @property({ attribute: false })\n accessor updateContext!: (context: Partial) => void;\n\n @property({ attribute: false })\n accessor cleanupHistories!: () => Promise;\n\n private _addImages(images: File[]) {\n const oldImages = this.chatContextValue.images;\n this.updateContext({\n images: [...oldImages, ...images].slice(0, MaximumImageCount),\n });\n }\n\n private _renderImages(images: File[]) {\n return html`\n {\n this.closeWrapper.style.display = 'none';\n this.curIndex = -1;\n }}\n >\n
\n ${repeat(\n images,\n image => image.name,\n (image, index) =>\n html` {\n const ele = evt.target as HTMLImageElement;\n const rect = ele.getBoundingClientRect();\n assertExists(ele.parentElement?.parentElement);\n const parentRect =\n ele.parentElement.parentElement.getBoundingClientRect();\n const left = Math.abs(rect.right - parentRect.left) - 8;\n const top = Math.abs(parentRect.top - rect.top);\n this.curIndex = index;\n this.closeWrapper.style.display = 'flex';\n this.closeWrapper.style.left = left + 'px';\n this.closeWrapper.style.top = top + 'px';\n }}\n >\n \"${image.name}\"\n
`\n )}\n \n {\n AIProvider.slots.toggleChatCards.emit({ visible: true });\n\n if (this.curIndex >= 0 && this.curIndex < images.length) {\n const newImages = [...images];\n newImages.splice(this.curIndex, 1);\n this.updateContext({ images: newImages });\n this.curIndex = -1;\n this.closeWrapper.style.display = 'none';\n }\n }}\n >\n ${CloseIcon}\n \n \n `;\n }\n\n protected override render() {\n const { images, status } = this.chatContextValue;\n const hasImages = images.length > 0;\n const maxHeight = hasImages ? 272 + 2 : 200 + 2;\n\n return html`\n
\n ${hasImages ? this._renderImages(images) : nothing}\n ${this.chatContextValue.quote\n ? html`
\n ${repeat(\n getFirstTwoLines(this.chatContextValue.quote),\n line => line,\n line => html`
${line}
`\n )}\n {\n AIProvider.slots.toggleChatCards.emit({ visible: true });\n this.updateContext({ quote: '', markdown: '' });\n }}\n >\n ${CloseIcon}\n
\n
`\n : nothing}\n {\n const { textarea } = this;\n this.isInputEmpty = !textarea.value.trim();\n textarea.style.height = 'auto';\n textarea.style.height = textarea.scrollHeight + 'px';\n let imagesHeight = this.imagesWrapper?.scrollHeight ?? 0;\n if (imagesHeight) imagesHeight += 12;\n if (this.scrollHeight >= 200 + imagesHeight) {\n textarea.style.height = '148px';\n textarea.style.overflowY = 'scroll';\n }\n }}\n @keydown=${async (evt: KeyboardEvent) => {\n if (evt.key === 'Enter' && !evt.shiftKey && !evt.isComposing) {\n evt.preventDefault();\n await this.send();\n }\n }}\n @focus=${() => {\n this.focused = true;\n }}\n @blur=${() => {\n this.focused = false;\n }}\n @paste=${(event: ClipboardEvent) => {\n const items = event.clipboardData?.items;\n if (!items) return;\n\n for (const index in items) {\n const item = items[index];\n if (item.kind === 'file' && item.type.indexOf('image') >= 0) {\n const blob = item.getAsFile();\n if (!blob) continue;\n this._addImages([blob]);\n }\n }\n }}\n >\n
\n {\n await this.cleanupHistories();\n }}\n >\n ${ChatClearIcon}\n
\n ${images.length < MaximumImageCount\n ? html` {\n const images = await openFileOrFiles({\n acceptType: 'Images',\n multiple: true,\n });\n if (!images) return;\n this._addImages(images);\n }}\n >\n ${ImageIcon}\n `\n : nothing}\n ${status === 'transmitting'\n ? html` {\n this.chatContextValue.abortController?.abort();\n this.updateContext({ status: 'success' });\n reportResponse('aborted:stop');\n }}\n >\n ${ChatAbortIcon}\n `\n : html`\n ${ChatSendIcon}\n `}\n \n `;\n }\n\n send = async () => {\n const { status, markdown } = this.chatContextValue;\n if (status === 'loading' || status === 'transmitting') return;\n\n const text = this.textarea.value;\n const { images } = this.chatContextValue;\n if (!text && images.length === 0) {\n return;\n }\n const { doc } = this.host;\n this.textarea.value = '';\n this.isInputEmpty = true;\n this.textarea.style.height = 'unset';\n this.updateContext({\n images: [],\n status: 'loading',\n error: null,\n quote: '',\n markdown: '',\n });\n\n const attachments = await Promise.all(\n images?.map(image => readBlobAsURL(image))\n );\n\n const content = (markdown ? `${markdown}\\n` : '') + text;\n\n this.updateContext({\n items: [\n ...this.chatContextValue.items,\n {\n id: '',\n role: 'user',\n content: content,\n createdAt: new Date().toISOString(),\n attachments,\n },\n {\n id: '',\n role: 'assistant',\n content: '',\n createdAt: new Date().toISOString(),\n },\n ],\n });\n\n try {\n const abortController = new AbortController();\n const stream = AIProvider.actions.chat?.({\n input: content,\n docId: doc.id,\n attachments: images,\n workspaceId: doc.collection.id,\n host: this.host,\n stream: true,\n signal: abortController.signal,\n where: 'chat-panel',\n control: 'chat-send',\n isRootSession: true,\n });\n\n if (stream) {\n this.updateContext({ abortController });\n\n for await (const text of stream) {\n const items = [...this.chatContextValue.items];\n const last = items[items.length - 1] as ChatMessage;\n last.content += text;\n this.updateContext({ items, status: 'transmitting' });\n }\n\n this.updateContext({ status: 'success' });\n\n if (!this.chatContextValue.chatSessionId) {\n this.updateContext({\n chatSessionId: AIProvider.LAST_ROOT_SESSION_ID,\n });\n }\n\n const { items } = this.chatContextValue;\n const last = items[items.length - 1] as ChatMessage;\n if (!last.id) {\n const historyIds = await AIProvider.histories?.ids(\n doc.collection.id,\n doc.id,\n { sessionId: this.chatContextValue.chatSessionId }\n );\n if (!historyIds || !historyIds[0]) return;\n last.id = historyIds[0].messages.at(-1)?.id ?? '';\n }\n }\n } catch (error) {\n this.updateContext({ status: 'error', error: error as AIError });\n } finally {\n this.updateContext({ abortController: null });\n }\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'chat-panel-input': ChatPanelInput;\n }\n}\n","import { WithDisposable } from '@blocksuite/block-std';\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { AIStarIconWithAnimation } from '../_common/icons';\n\n@customElement('ai-loading')\nexport class AILoading extends WithDisposable(LitElement) {\n static override styles = css`\n :host {\n width: 100%;\n }\n\n .generating-tip {\n display: flex;\n width: 100%;\n height: 22px;\n align-items: center;\n gap: 8px;\n\n color: var(--light-brandColor, #1e96eb);\n\n .text {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n flex: 1 0 0;\n\n /* light/smMedium */\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 22px; /* 157.143% */\n }\n\n .left,\n .right {\n display: flex;\n width: 20px;\n height: 20px;\n justify-content: center;\n align-items: center;\n }\n }\n `;\n\n @property({ attribute: false })\n accessor stopGenerating!: () => void;\n\n override render() {\n return html`\n
\n
${AIStarIconWithAnimation}
\n
AI is generating...
\n
\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-loading': AILoading;\n }\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport { WithDisposable } from '@blocksuite/block-std';\nimport { css, html, LitElement, nothing, type TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport {\n ActionIcon,\n AIChangeToneIcon,\n AIDoneIcon,\n AIExpandMindMapIcon,\n AIExplainIcon,\n AIExplainSelectionIcon,\n AIFindActionsIcon,\n AIImageIcon,\n AIImproveWritingIcon,\n AIMakeLongerIcon,\n AIMakeRealIcon,\n AIMakeShorterIcon,\n AIMindMapIcon,\n AIPenIcon,\n AIPresentationIcon,\n ArrowDownIcon,\n ArrowUpIcon,\n} from '../../_common/icons';\nimport { createTextRenderer } from '../../messages/text';\nimport type { ChatAction } from '../chat-context';\nimport { renderImages } from '../components/images';\nimport { HISTORY_IMAGE_ACTIONS } from '../const';\n\nconst icons: Record> = {\n 'Fix spelling for it': AIDoneIcon,\n 'Improve grammar for it': AIDoneIcon,\n 'Explain this code': AIExplainIcon,\n 'Check code error': AIExplainIcon,\n 'Explain this': AIExplainSelectionIcon,\n Translate: ActionIcon,\n 'Change tone': AIChangeToneIcon,\n 'Improve writing for it': AIImproveWritingIcon,\n 'Make it longer': AIMakeLongerIcon,\n 'Make it shorter': AIMakeShorterIcon,\n 'Continue writing': AIPenIcon,\n 'Make it real': AIMakeRealIcon,\n 'Find action items from it': AIFindActionsIcon,\n Summary: AIPenIcon,\n 'Create headings': AIPenIcon,\n 'Write outline': AIPenIcon,\n image: AIImageIcon,\n 'Brainstorm mindmap': AIMindMapIcon,\n 'Expand mind map': AIExpandMindMapIcon,\n 'Create a presentation': AIPresentationIcon,\n 'Write a poem about this': AIPenIcon,\n 'Write a blog post about this': AIPenIcon,\n 'AI image filter clay style': AIImageIcon,\n 'AI image filter sketch style': AIImageIcon,\n 'AI image filter anime style': AIImageIcon,\n 'AI image filter pixel style': AIImageIcon,\n Clearer: AIImageIcon,\n 'Remove background': AIImageIcon,\n 'Convert to sticker': AIImageIcon,\n};\n\n@customElement('action-wrapper')\nexport class ActionWrapper extends WithDisposable(LitElement) {\n static override styles = css`\n .action-name {\n display: flex;\n align-items: center;\n gap: 8px;\n height: 22px;\n margin-bottom: 12px;\n\n svg {\n color: var(--affine-primary-color);\n }\n\n div:last-child {\n cursor: pointer;\n display: flex;\n align-items: center;\n flex: 1;\n\n div:last-child svg {\n margin-left: auto;\n }\n }\n }\n\n .answer-prompt {\n padding: 8px;\n background-color: var(--affine-background-secondary-color);\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-size: 14px;\n font-weight: 400;\n color: var(--affine-text-primary-color);\n\n .subtitle {\n font-size: 12px;\n font-weight: 500;\n color: var(--affine-text-secondary-color);\n height: 20px;\n line-height: 20px;\n }\n\n .prompt {\n margin-top: 12px;\n }\n }\n `;\n\n @state()\n accessor promptShow = false;\n\n @property({ attribute: false })\n accessor item!: ChatAction;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n protected override render() {\n const { item } = this;\n\n const originalText = item.messages[1].content;\n const answer = item.messages[2]?.content;\n const images = item.messages[1].attachments;\n\n return html`\n \n (this.promptShow = !this.promptShow)}\n >\n ${icons[item.action] ? icons[item.action] : ActionIcon}\n
\n
${item.action}
\n
${this.promptShow ? ArrowDownIcon : ArrowUpIcon}
\n
\n \n ${this.promptShow\n ? html`\n
\n
Answer
\n ${HISTORY_IMAGE_ACTIONS.includes(item.action)\n ? images && renderImages(images)\n : nothing}\n ${answer\n ? createTextRenderer(this.host, { customHeading: true })(answer)\n : nothing}\n ${originalText\n ? html`
Prompt
\n ${createTextRenderer(this.host, { customHeading: true })(\n item.messages[0].content + originalText\n )}`\n : nothing}\n
\n `\n : nothing} `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'action-wrapper': ActionWrapper;\n }\n}\n","import './action-wrapper';\n\nimport type { EditorHost } from '@blocksuite/block-std';\nimport { WithDisposable } from '@blocksuite/block-std';\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { createTextRenderer } from '../../messages/text';\nimport type { ChatAction } from '../chat-context';\n\n@customElement('action-text')\nexport class ActionText extends WithDisposable(LitElement) {\n static override styles = css`\n .original-text {\n border-radius: 4px;\n margin-bottom: 12px;\n font-size: var(--affine-font-sm);\n line-height: 22px;\n }\n `;\n\n @property({ attribute: false })\n accessor item!: ChatAction;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor isCode = false;\n\n protected override render() {\n const originalText = this.item.messages[1].content;\n const { isCode } = this;\n\n return html` \n \n ${createTextRenderer(this.host, {\n customHeading: true,\n })(originalText)}\n \n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'action-text': ActionText;\n }\n}\n","import './action-wrapper';\n\nimport type { EditorHost } from '@blocksuite/block-std';\nimport { ShadowlessElement, WithDisposable } from '@blocksuite/block-std';\nimport { html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { createIframeRenderer } from '../../messages/wrapper';\nimport type { ChatAction } from '../chat-context';\n\n@customElement('action-make-real')\nexport class ActionMakeReal extends WithDisposable(ShadowlessElement) {\n @property({ attribute: false })\n accessor item!: ChatAction;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n protected override render() {\n const answer = this.item.messages[2].content;\n return html`\n
\n ${createIframeRenderer(this.host)(answer, 'finished')}\n
\n
`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'action-make-real': ActionMakeReal;\n }\n}\n","import './action-wrapper';\nimport '../../messages/slides-renderer';\n\nimport type { EditorHost } from '@blocksuite/block-std';\nimport { ShadowlessElement, WithDisposable } from '@blocksuite/block-std';\nimport { html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport type { ChatAction } from '../chat-context';\n\n@customElement('action-slides')\nexport class ActionSlides extends WithDisposable(ShadowlessElement) {\n @property({ attribute: false })\n accessor item!: ChatAction;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n protected override render() {\n const answer = this.item.messages[2]?.content;\n if (!answer) return nothing;\n\n return html`\n
\n \n
\n
`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'action-slides': ActionSlides;\n }\n}\n","import './action-wrapper';\n\nimport type { EditorHost } from '@blocksuite/block-std';\nimport { ShadowlessElement, WithDisposable } from '@blocksuite/block-std';\nimport { MiniMindmapPreview } from '@blocksuite/blocks';\nimport { noop } from '@blocksuite/global/utils';\nimport { html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport type { ChatAction } from '../chat-context';\n\nnoop(MiniMindmapPreview);\n\n@customElement('action-mindmap')\nexport class ActionMindmap extends WithDisposable(ShadowlessElement) {\n @property({ attribute: false })\n accessor item!: ChatAction;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n protected override render() {\n const answer = this.item.messages[2].content;\n return html`\n
\n ({}),\n set: () => {},\n }}\n .answer=${answer}\n .templateShow=${false}\n .height=${140}\n >\n
\n
`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'action-mindmap': ActionMindmap;\n }\n}\n","import './action-wrapper';\n\nimport type { EditorHost } from '@blocksuite/block-std';\nimport { ShadowlessElement, WithDisposable } from '@blocksuite/block-std';\nimport { html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { createTextRenderer } from '../../messages/text';\nimport { renderImages } from '../components/images';\n@customElement('chat-text')\nexport class ChatText extends WithDisposable(ShadowlessElement) {\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor attachments: string[] | undefined = undefined;\n\n @property({ attribute: false })\n accessor text!: string;\n\n @property({ attribute: false })\n accessor state: 'finished' | 'generating' = 'finished';\n\n protected override render() {\n const { attachments, text, host } = this;\n return html`${attachments && attachments.length > 0\n ? renderImages(attachments)\n : nothing}${createTextRenderer(host, { customHeading: true })(\n text,\n this.state\n )} `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'chat-text': ChatText;\n }\n}\n","import './action-wrapper';\n\nimport type { EditorHost } from '@blocksuite/block-std';\nimport { ShadowlessElement, WithDisposable } from '@blocksuite/block-std';\nimport { html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport type { ChatAction } from '../chat-context';\nimport { renderImages } from '../components/images';\n\n@customElement('action-image-to-text')\nexport class ActionImageToText extends WithDisposable(ShadowlessElement) {\n @property({ attribute: false })\n accessor item!: ChatAction;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n protected override render() {\n const answer = this.item.messages[1].attachments;\n\n return html`\n
\n ${answer ? renderImages(answer) : nothing}\n
\n
`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'action-image-to-text': ActionImageToText;\n }\n}\n","import './action-wrapper';\n\nimport type { EditorHost } from '@blocksuite/block-std';\nimport { ShadowlessElement, WithDisposable } from '@blocksuite/block-std';\nimport { html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport type { ChatAction } from '../chat-context';\nimport { renderImages } from '../components/images';\n\n@customElement('action-image')\nexport class ActionImage extends WithDisposable(ShadowlessElement) {\n @property({ attribute: false })\n accessor item!: ChatAction;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n protected override render() {\n const answer = this.item.messages[0].attachments;\n\n return html`\n
\n ${answer ? renderImages(answer) : nothing}\n
\n
`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'action-image': ActionImage;\n }\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport { WithDisposable } from '@blocksuite/block-std';\nimport {\n type ImageBlockModel,\n isInsideEdgelessEditor,\n type NoteBlockModel,\n NoteDisplayMode,\n} from '@blocksuite/blocks';\nimport type { BlockModel } from '@blocksuite/store';\nimport {\n css,\n html,\n LitElement,\n nothing,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport {\n CurrentSelectionIcon,\n DocIcon,\n SmallImageIcon,\n} from '../_common/icons';\nimport { type AIChatParams, AIProvider } from '../provider';\nimport {\n getSelectedImagesAsBlobs,\n getSelectedTextContent,\n getTextContentFromBlockModels,\n selectedToCanvas,\n} from '../utils/selection-utils';\nimport type { ChatContextValue } from './chat-context';\n\nconst cardsStyles = css`\n .card-wrapper {\n width: 90%;\n max-height: 76px;\n border-radius: 8px;\n border: 1px solid var(--affine-border-color);\n padding: 4px 12px;\n cursor: pointer;\n\n .card-title {\n display: flex;\n gap: 4px;\n height: 22px;\n margin-bottom: 2px;\n font-weight: 500;\n font-size: 14px;\n color: var(--affine-text-primary-color);\n }\n\n .second-text {\n font-size: 14px;\n font-weight: 400;\n color: var(--affine-text-secondary-color);\n }\n }\n`;\n\nenum CardType {\n Text,\n Image,\n Block,\n Doc,\n}\n\ntype CardBase = {\n id: number;\n};\n\ntype CardText = CardBase & {\n type: CardType.Text;\n text: string;\n markdown: string;\n};\n\ntype CardImage = CardBase & {\n type: CardType.Image;\n image: File;\n caption?: string;\n};\n\ntype CardBlock = CardBase & {\n type: CardType.Block | CardType.Doc;\n text?: string;\n markdown?: string;\n images?: File[];\n};\n\ntype Card = CardText | CardImage | CardBlock;\n\nconst MAX_CARDS = 3;\n\n@customElement('chat-cards')\nexport class ChatCards extends WithDisposable(LitElement) {\n static override styles = css`\n :host {\n display: none;\n flex-direction: column;\n gap: 12px;\n }\n\n :host([data-show]) {\n display: flex;\n }\n\n ${cardsStyles}\n `;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor updateContext!: (context: Partial) => void;\n\n @property({ attribute: false })\n accessor temporaryParams: AIChatParams | null = null;\n\n @property({ attribute: false })\n accessor isEmpty!: boolean;\n\n @state()\n accessor cards: Card[] = [];\n\n private _currentDocId: string | null = null;\n private _selectedCardId: number = 0;\n\n static renderText({ text }: CardText) {\n const lines = text.split('\\n');\n\n return html`\n
\n
\n ${CurrentSelectionIcon}\n
Start with current selection
\n
\n
\n ${repeat(\n lines.slice(0, 2),\n line => line,\n line => html`\n \n ${line}\n
\n `\n )}\n
\n \n `;\n }\n\n static renderImage({ caption, image }: CardImage) {\n return html`\n \n \n
\n ${SmallImageIcon}\n
Start with this Image
\n
\n
${caption ? caption : 'caption'}
\n \n \n \n `;\n }\n\n static renderDoc({ text, images }: CardBlock) {\n let textTpl = html`you've chosen within the doc`;\n let imageTpl: TemplateResult<1> | typeof nothing = nothing;\n let hasImage = false;\n\n if (text?.length) {\n const lines = text.split('\\n');\n textTpl = html`${repeat(\n lines.slice(0, 2),\n line => line,\n line => html`\n \n ${line}\n \n `\n )}`;\n }\n\n if (images?.length) {\n hasImage = true;\n imageTpl = html`\n \n `;\n }\n\n return html`\n \n \n
\n ${DocIcon}\n
Start with this doc
\n
\n
${textTpl}
\n \n ${imageTpl}\n \n `;\n }\n\n private _renderCard(card: Card) {\n if (card.type === CardType.Text) {\n return ChatCards.renderText(card);\n }\n\n if (card.type === CardType.Image) {\n return ChatCards.renderImage(card);\n }\n\n if (card.type === CardType.Doc) {\n return ChatCards.renderDoc(card);\n }\n\n return nothing;\n }\n\n private _updateCards(card: Card) {\n this.cards.unshift(card);\n\n if (this.cards.length > MAX_CARDS) {\n this.cards.pop();\n }\n\n this.requestUpdate();\n }\n\n private async _handleDocSelection(card: CardBlock) {\n const { text, markdown, images } = await this._extractAll();\n\n card.text = text;\n card.markdown = markdown;\n card.images = images;\n }\n\n private async _selectCard(card: Card) {\n AIProvider.slots.toggleChatCards.emit({ visible: false });\n\n this._selectedCardId = card.id;\n\n switch (card.type) {\n case CardType.Text: {\n this.updateContext({\n quote: card.text,\n markdown: card.markdown,\n });\n break;\n }\n case CardType.Image: {\n this.updateContext({\n images: [card.image],\n });\n break;\n }\n case CardType.Block: {\n this.updateContext({\n quote: card.text,\n markdown: card.markdown,\n images: card.images,\n });\n break;\n }\n\n case CardType.Doc: {\n await this._handleDocSelection(card);\n this.updateContext({\n quote: card.text,\n markdown: card.markdown,\n images: card.images,\n });\n break;\n }\n }\n }\n\n private async _extract() {\n const text = await getSelectedTextContent(this.host, 'plain-text');\n const images = await getSelectedImagesAsBlobs(this.host);\n const hasText = text.length > 0;\n const hasImages = images.length > 0;\n\n if (hasText && !hasImages) {\n const markdown = await getSelectedTextContent(this.host, 'markdown');\n\n this._updateCards({\n id: Date.now(),\n type: CardType.Text,\n text,\n markdown,\n });\n } else if (!hasText && hasImages && images.length === 1) {\n const [_, data] = this.host.command\n .chain()\n .tryAll(chain => [chain.getImageSelections()])\n .getSelectedBlocks({\n types: ['image'],\n })\n .run();\n let caption = '';\n\n if (data.currentImageSelections?.[0]) {\n caption =\n (\n this.host.doc.getBlock(data.currentImageSelections[0].blockId)\n ?.model as ImageBlockModel\n ).caption ?? '';\n }\n\n this._updateCards({\n id: Date.now(),\n type: CardType.Image,\n image: images[0],\n caption,\n });\n } else {\n const markdown =\n (await getSelectedTextContent(this.host, 'markdown')).trim() || '';\n this._updateCards({\n id: Date.now(),\n type: CardType.Block,\n text,\n markdown,\n images,\n });\n }\n }\n\n private async _extractOnEdgeless(host: EditorHost) {\n if (!isInsideEdgelessEditor(host)) return;\n\n const canvas = await selectedToCanvas(host);\n if (!canvas) return;\n\n const blob: Blob | null = await new Promise(resolve =>\n canvas.toBlob(resolve)\n );\n if (!blob) return;\n\n this._updateCards({\n id: Date.now(),\n type: CardType.Image,\n image: new File([blob], 'selected.png'),\n });\n }\n\n private async _extractAll() {\n const notes = this.host.doc\n .getBlocksByFlavour('affine:note')\n .filter(\n note =>\n (note.model as NoteBlockModel).displayMode !==\n NoteDisplayMode.EdgelessOnly\n )\n .map(note => note.model as NoteBlockModel);\n const selectedModels = notes.reduce((acc, note) => {\n acc.push(...note.children);\n return acc;\n }, [] as BlockModel[]);\n const text = await getTextContentFromBlockModels(\n this.host,\n selectedModels,\n 'plain-text'\n );\n const markdown = await getTextContentFromBlockModels(\n this.host,\n selectedModels,\n 'markdown'\n );\n const blobs = await Promise.all(\n selectedModels.map(async s => {\n if (s.flavour !== 'affine:image') return null;\n const sourceId = (s as ImageBlockModel)?.sourceId;\n if (!sourceId) return null;\n const blob = await (sourceId\n ? this.host.doc.blobSync.get(sourceId)\n : null);\n if (!blob) return null;\n return new File([blob], sourceId);\n }) ?? []\n );\n const images = blobs.filter((blob): blob is File => !!blob);\n\n return {\n text,\n markdown,\n images,\n };\n }\n\n private async _appendCardWithParams({\n host,\n mode,\n autoSelect,\n }: AIChatParams) {\n if (mode === 'edgeless') {\n await this._extractOnEdgeless(host);\n } else {\n await this._extract();\n }\n\n if (!autoSelect) {\n return;\n }\n\n if (this.cards.length > 0) {\n const card = this.cards[0];\n if (card.type === CardType.Doc) return;\n\n await this._selectCard(card);\n }\n }\n\n protected override async willUpdate(changedProperties: PropertyValues) {\n if (changedProperties.has('temporaryParams') && this.temporaryParams) {\n const params = this.temporaryParams;\n await this._appendCardWithParams(params);\n this.temporaryParams = null;\n }\n\n if (changedProperties.has('host')) {\n if (this._currentDocId === this.host.doc.id) return;\n this._currentDocId = this.host.doc.id;\n this.cards = [];\n\n const { text, images } = await this._extractAll();\n const hasText = text.length > 0;\n const hasImages = images.length > 0;\n\n // Currently only supports checking on first load\n if (hasText || hasImages) {\n const card: CardBlock = {\n id: Date.now(),\n type: CardType.Doc,\n };\n if (hasText) {\n card.text = text;\n }\n if (hasImages) {\n card.images = images;\n }\n\n this.cards.push(card);\n this.requestUpdate();\n }\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this._disposables.add(\n AIProvider.slots.requestOpenWithChat.on(async params => {\n await this._appendCardWithParams(params);\n })\n );\n\n this._disposables.add(\n AIProvider.slots.toggleChatCards.on(({ visible, ok }) => {\n if (visible && ok && this._selectedCardId > 0) {\n this.cards = this.cards.filter(\n card => card.id !== this._selectedCardId\n );\n this._selectedCardId = 0;\n }\n })\n );\n }\n\n protected override render() {\n if (!this.isEmpty) return nothing;\n\n return repeat(\n this.cards,\n card => card.id,\n card => html`\n
this._selectCard(card)}>\n ${this._renderCard(card)}\n
\n `\n );\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'chat-cards': ChatCards;\n }\n}\n","import type {\n BlockSelection,\n EditorHost,\n TextSelection,\n} from '@blocksuite/block-std';\nimport type { ImageSelection } from '@blocksuite/blocks';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { repeat } from 'lit/directives/repeat.js';\n\nimport { insertBelow } from '../../utils/editor-actions';\nimport type { ChatAction } from '../chat-actions-handle';\n\n@customElement('chat-action-list')\nexport class ChatActionList extends LitElement {\n static override styles = css`\n .actions-container {\n display: flex;\n gap: 8px;\n }\n .actions-container > div {\n display: flex;\n gap: 8px;\n }\n .actions-container.horizontal {\n flex-wrap: wrap;\n justify-content: end;\n }\n .actions-container.vertical {\n flex-direction: column;\n align-items: flex-end;\n }\n .action {\n width: fit-content;\n height: 32px;\n padding: 4px 18px;\n box-sizing: border-box;\n border-radius: 8px;\n border: 1px solid var(--affine-border-color);\n background-color: var(--affine-white-10);\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 4px;\n font-size: var(--affine-font-sm);\n font-weight: 500;\n color: var(--affine-text-primary-color);\n cursor: pointer;\n user-select: none;\n line-height: 22px;\n }\n .action svg {\n color: var(--affine-icon-color);\n }\n `;\n\n private get _selectionValue() {\n return this.host.selection.value;\n }\n\n private get _rootService() {\n return this.host.spec.getService('affine:page');\n }\n\n private get _currentTextSelection(): TextSelection | undefined {\n return this._selectionValue.find(v => v.type === 'text') as TextSelection;\n }\n\n private get _currentBlockSelections(): BlockSelection[] | undefined {\n return this._selectionValue.filter(v => v.type === 'block');\n }\n\n private get _currentImageSelections(): ImageSelection[] | undefined {\n return this._selectionValue.filter(v => v.type === 'image');\n }\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor actions: ChatAction[] = [];\n\n @property({ attribute: false })\n accessor content: string = '';\n\n @property({ attribute: false })\n accessor chatSessionId: string | undefined = undefined;\n\n @property({ attribute: false })\n accessor messageId: string | undefined = undefined;\n\n @property({ attribute: false })\n accessor layoutDirection: 'horizontal' | 'vertical' = 'vertical'; // New property for layout direction\n\n @property({ attribute: false })\n accessor withMargin = false;\n\n override render() {\n const { actions } = this;\n if (!actions.length) {\n return nothing;\n }\n\n const { host, content, chatSessionId, messageId, layoutDirection } = this;\n const classes = classMap({\n 'actions-container': true,\n horizontal: layoutDirection === 'horizontal',\n vertical: layoutDirection === 'vertical',\n });\n\n return html`\n
\n ${repeat(\n actions.filter(action => action.showWhen(host)),\n action => action.title,\n action => {\n return html`
\n ${action.icon}\n {\n if (\n action.title === 'Insert below' &&\n this._selectionValue.length === 1 &&\n this._selectionValue[0].type === 'database'\n ) {\n const element = this.host.view.getBlock(\n this._selectionValue[0].blockId\n );\n if (!element) return;\n await insertBelow(host, content, element);\n return;\n }\n const currentSelections = {\n text: this._currentTextSelection,\n blocks: this._currentBlockSelections,\n images: this._currentImageSelections,\n };\n const success = await action.handler(\n host,\n content,\n currentSelections,\n chatSessionId,\n messageId\n );\n if (success) {\n this._rootService.notificationService?.notify({\n title: action.toast,\n accent: 'success',\n onClose: function (): void {},\n });\n }\n }}\n >\n ${action.title}\n
\n
`;\n }\n )}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'chat-action-list': ChatActionList;\n }\n}\n","import type {\n BlockSelection,\n EditorHost,\n TextSelection,\n} from '@blocksuite/block-std';\nimport { WithDisposable } from '@blocksuite/block-std';\nimport { createButtonPopper, Tooltip } from '@blocksuite/blocks';\nimport { noop } from '@blocksuite/global/utils';\nimport { css, html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\n\nimport { type ChatAction } from '../../_common/chat-actions-handle';\nimport { CopyIcon, MoreIcon, RetryIcon } from '../../_common/icons';\nimport { copyText } from '../../utils/editor-actions';\n\nnoop(Tooltip);\n\n@customElement('chat-copy-more')\nexport class ChatCopyMore extends WithDisposable(LitElement) {\n static override styles = css`\n .copy-more {\n display: flex;\n gap: 8px;\n height: 36px;\n box-sizing: border-box;\n justify-content: flex-end;\n align-items: center;\n padding: 8px 0;\n\n div {\n cursor: pointer;\n border-radius: 4px;\n }\n\n div:hover {\n background-color: var(--affine-hover-color);\n }\n\n svg {\n color: var(--affine-icon-color);\n }\n }\n\n .more-menu {\n width: 226px;\n border-radius: 8px;\n background-color: var(--affine-background-overlay-panel-color);\n box-shadow: var(--affine-menu-shadow);\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: absolute;\n z-index: 1;\n user-select: none;\n\n > div {\n height: 30px;\n display: flex;\n gap: 8px;\n align-items: center;\n cursor: pointer;\n\n svg {\n margin-left: 12px;\n }\n }\n\n > div:hover {\n background-color: var(--affine-hover-color);\n }\n }\n `;\n\n private get _rootService() {\n return this.host.spec.getService('affine:page');\n }\n\n private get _selectionValue() {\n return this.host.selection.value;\n }\n\n private get _currentTextSelection(): TextSelection | undefined {\n return this._selectionValue.find(v => v.type === 'text') as TextSelection;\n }\n\n private get _currentBlockSelections(): BlockSelection[] | undefined {\n return this._selectionValue.filter(v => v.type === 'block');\n }\n\n @state()\n private accessor _showMoreMenu = false;\n\n @query('.more-button')\n private accessor _moreButton!: HTMLDivElement;\n\n @query('.more-menu')\n private accessor _moreMenu!: HTMLDivElement;\n\n private _morePopper: ReturnType | null = null;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor actions: ChatAction[] = [];\n\n @property({ attribute: false })\n accessor content!: string;\n\n @property({ attribute: false })\n accessor chatSessionId: string | undefined = undefined;\n\n @property({ attribute: false })\n accessor messageId: string | undefined = undefined;\n\n @property({ attribute: false })\n accessor isLast!: boolean;\n\n @property({ attribute: false })\n accessor withMargin = false;\n\n @property({ attribute: false })\n accessor retry = () => {};\n\n private _toggle() {\n this._morePopper?.toggle();\n }\n\n private readonly _notifySuccess = (title: string) => {\n const { notificationService } = this._rootService;\n notificationService?.notify({\n title: title,\n accent: 'success',\n onClose: function (): void {},\n });\n };\n\n protected override updated(changed: PropertyValues): void {\n if (changed.has('isLast')) {\n if (this.isLast) {\n this._morePopper?.dispose();\n this._morePopper = null;\n } else if (!this._morePopper) {\n this._morePopper = createButtonPopper(\n this._moreButton,\n this._moreMenu,\n ({ display }) => (this._showMoreMenu = display === 'show'),\n {\n mainAxis: 0,\n crossAxis: -100,\n }\n );\n }\n }\n }\n\n override render() {\n const { host, content, isLast, messageId, chatSessionId, actions } = this;\n return html`\n
\n ${content\n ? html` {\n const success = await copyText(host, content);\n if (success) {\n this._notifySuccess('Copied to clipboard');\n }\n }}\n >\n ${CopyIcon}\n Copy\n
`\n : nothing}\n ${isLast\n ? html`
this.retry()}>\n ${RetryIcon}\n Retry\n
`\n : nothing}\n ${isLast\n ? nothing\n : html`
\n ${MoreIcon}\n
`}\n \n\n
\n ${this._showMoreMenu\n ? repeat(\n actions.filter(action => action.showWhen(host)),\n action => action.title,\n action => {\n const currentSelections = {\n text: this._currentTextSelection,\n blocks: this._currentBlockSelections,\n };\n return html` {\n const success = await action.handler(\n host,\n content,\n currentSelections,\n chatSessionId,\n messageId\n );\n\n if (success) {\n this._notifySuccess(action.toast);\n }\n }}\n >\n ${action.icon}\n
${action.title}
\n
`;\n }\n )\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'chat-copy-more': ChatCopyMore;\n }\n}\n","import { type EditorHost, WithDisposable } from '@blocksuite/block-std';\nimport {\n type AIError,\n PaymentRequiredError,\n UnauthorizedError,\n} from '@blocksuite/blocks';\nimport { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { ErrorTipIcon } from '../_common/icons';\nimport { AIProvider } from '../provider';\n\n@customElement('ai-error-wrapper')\nclass AIErrorWrapper extends WithDisposable(LitElement) {\n @property({ attribute: false })\n accessor text!: TemplateResult<1>;\n\n protected override render() {\n return html` \n
\n
\n
${ErrorTipIcon}
\n
${this.text}
\n
\n \n
`;\n }\n}\n\nexport const PaymentRequiredErrorRenderer = (host: EditorHost) => html`\n \n \n AIProvider.slots.requestUpgradePlan.emit({ host: host })}\n class=\"upgrade\"\n >\n
Upgrade
\n
\n`;\n\ntype ErrorProps = {\n text?: TemplateResult<1>;\n template?: TemplateResult<1>;\n error?: TemplateResult<1>;\n};\n\nconst generateText = (error?: TemplateResult<1>) =>\n html`${error || 'An error occurred'}, If this issue persists please let us\n know.\n support@toeverything.info\n `;\n\nconst nope = html`${nothing}`;\nconst GeneralErrorRenderer = (props: ErrorProps = {}) => {\n const { text = generateText(props.error), template = nope } = props;\n return html`${template}`;\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-error-wrapper': AIErrorWrapper;\n }\n}\n\nexport function AIChatErrorRenderer(host: EditorHost, error: AIError) {\n if (error instanceof PaymentRequiredError) {\n return PaymentRequiredErrorRenderer(host);\n } else if (error instanceof UnauthorizedError) {\n return GeneralErrorRenderer({\n text: html`You need to login to AFFiNE Cloud to continue using AFFiNE AI.`,\n template: html` AIProvider.slots.requestLogin.emit({ host })}\n >\n Login\n `,\n });\n } else {\n const tip = error.message;\n return GeneralErrorRenderer({\n error: html`\n An error occurred`,\n });\n }\n}\n","import '../messages/slides-renderer';\nimport './ai-loading';\nimport '../messages/text';\nimport './actions/text';\nimport './actions/action-wrapper';\nimport './actions/make-real';\nimport './actions/slides';\nimport './actions/mindmap';\nimport './actions/chat-text';\nimport './actions/image-to-text';\nimport './actions/image';\nimport './chat-cards';\nimport '../_common/components/chat-action-list';\nimport '../_common/components/copy-more';\n\nimport type { BaseSelection, EditorHost } from '@blocksuite/block-std';\nimport { ShadowlessElement, WithDisposable } from '@blocksuite/block-std';\nimport {\n type AIError,\n isInsidePageEditor,\n PaymentRequiredError,\n UnauthorizedError,\n} from '@blocksuite/blocks';\nimport { css, html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport {\n EdgelessEditorActions,\n PageEditorActions,\n} from '../_common/chat-actions-handle';\nimport { AffineAvatarIcon, AffineIcon, DownArrowIcon } from '../_common/icons';\nimport { AIChatErrorRenderer } from '../messages/error';\nimport { AIProvider } from '../provider';\nimport type { ChatContextValue, ChatItem, ChatMessage } from './chat-context';\nimport { HISTORY_IMAGE_ACTIONS } from './const';\nimport { AIPreloadConfig } from './preload-config';\n\n@customElement('chat-panel-messages')\nexport class ChatPanelMessages extends WithDisposable(ShadowlessElement) {\n static override styles = css`\n chat-panel-messages {\n position: relative;\n }\n\n .chat-panel-messages {\n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n position: relative;\n overflow-y: auto;\n\n chat-cards {\n position: absolute;\n bottom: 0;\n width: 100%;\n }\n }\n\n .chat-panel-messages-placeholder {\n width: 100%;\n position: absolute;\n z-index: 1;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n }\n\n .item-wrapper {\n margin-left: 32px;\n }\n\n .user-info {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 4px;\n color: var(--affine-text-primary-color);\n font-size: 14px;\n font-weight: 500;\n user-select: none;\n }\n\n .avatar-container {\n width: 24px;\n height: 24px;\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: var(--affine-primary-color);\n }\n\n .avatar-container img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n object-fit: cover;\n }\n\n .down-indicator {\n position: absolute;\n left: 50%;\n transform: translate(-50%, 0);\n bottom: 24px;\n z-index: 1;\n border-radius: 50%;\n width: 32px;\n height: 32px;\n border: 0.5px solid var(--affine-border-color);\n background-color: var(--affine-background-primary-color);\n box-shadow: var(--affine-shadow-2);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n }\n `;\n\n @state()\n accessor _selectionValue: BaseSelection[] = [];\n\n @state()\n accessor showDownIndicator = false;\n\n @state()\n accessor avatarUrl = '';\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor isLoading!: boolean;\n\n @property({ attribute: false })\n accessor chatContextValue!: ChatContextValue;\n\n @property({ attribute: false })\n accessor updateContext!: (context: Partial) => void;\n\n @query('.chat-panel-messages')\n accessor messagesContainer!: HTMLDivElement;\n\n @state()\n accessor showChatCards = true;\n\n protected override updated(changedProperties: PropertyValues) {\n if (changedProperties.has('host')) {\n const { disposables } = this;\n\n disposables.add(\n this.host.selection.slots.changed.on(() => {\n this._selectionValue = this.host.selection.value;\n })\n );\n const { docModeService } = this.host.spec.getService('affine:page');\n disposables.add(docModeService.onModeChange(() => this.requestUpdate()));\n }\n }\n\n private _renderAIOnboarding() {\n return this.isLoading ||\n !this.host?.doc.awarenessStore.getFlag('enable_ai_onboarding')\n ? nothing\n : html`\n ${repeat(\n AIPreloadConfig,\n config => config.text,\n config => {\n return html` config.handler()}\n style=${styleMap({\n display: 'flex',\n height: '28px',\n gap: '8px',\n width: '88%',\n alignItems: 'center',\n justifyContent: 'start',\n cursor: 'pointer',\n })}\n >\n ${config.icon}\n \n ${config.text}\n \n `;\n }\n )}\n `;\n }\n\n protected override render() {\n const { items } = this.chatContextValue;\n const { isLoading } = this;\n const filteredItems = items.filter(item => {\n return (\n 'role' in item ||\n item.messages?.length === 3 ||\n (HISTORY_IMAGE_ACTIONS.includes(item.action) &&\n item.messages?.length === 2)\n );\n });\n\n return html`\n\n {\n const element = evt.target as HTMLDivElement;\n this.showDownIndicator =\n element.scrollHeight - element.scrollTop - element.clientHeight >\n 200;\n }}\n >\n ${items.length === 0\n ? html`
\n ${AffineIcon(\n isLoading\n ? 'var(--affine-icon-secondary)'\n : 'var(--affine-primary-color)'\n )}\n
\n ${this.isLoading\n ? 'AFFiNE AI is loading history...'\n : 'What can I help you with?'}\n
\n ${this._renderAIOnboarding()}\n
`\n : repeat(filteredItems, (item, index) => {\n const isLast = index === filteredItems.length - 1;\n return html`
\n ${this.renderAvatar(item)}\n
${this.renderItem(item, isLast)}
\n
`;\n })}\n \n \n ${this.showDownIndicator\n ? html`
this.scrollToDown()}>\n ${DownArrowIcon}\n
`\n : nothing} `;\n }\n\n override async connectedCallback() {\n super.connectedCallback();\n\n const res = await AIProvider.userInfo;\n this.avatarUrl = res?.avatarUrl ?? '';\n this.disposables.add(\n AIProvider.slots.userInfo.on(userInfo => {\n const { status, error } = this.chatContextValue;\n this.avatarUrl = userInfo?.avatarUrl ?? '';\n if (\n status === 'error' &&\n error instanceof UnauthorizedError &&\n userInfo\n ) {\n this.updateContext({ status: 'idle', error: null });\n }\n })\n );\n\n this.disposables.add(\n AIProvider.slots.toggleChatCards.on(({ visible }) => {\n this.showChatCards = visible;\n })\n );\n }\n\n renderItem(item: ChatItem, isLast: boolean) {\n const { status, error } = this.chatContextValue;\n const { host } = this;\n\n if (isLast && status === 'loading') {\n return this.renderLoading();\n }\n\n if (\n isLast &&\n status === 'error' &&\n (error instanceof PaymentRequiredError ||\n error instanceof UnauthorizedError)\n ) {\n return AIChatErrorRenderer(host, error);\n }\n\n if ('role' in item) {\n const state = isLast\n ? status !== 'loading' && status !== 'transmitting'\n ? 'finished'\n : 'generating'\n : 'finished';\n const shouldRenderError = isLast && status === 'error' && !!error;\n return html`\n ${shouldRenderError ? AIChatErrorRenderer(host, error) : nothing}\n ${this.renderEditorActions(item, isLast)}`;\n } else {\n switch (item.action) {\n case 'Create a presentation':\n return html``;\n case 'Make it real':\n return html``;\n case 'Brainstorm mindmap':\n return html``;\n case 'Explain this image':\n case 'Generate a caption':\n return html``;\n default:\n if (HISTORY_IMAGE_ACTIONS.includes(item.action)) {\n return html``;\n }\n\n return html``;\n }\n }\n }\n\n renderAvatar(item: ChatItem) {\n const isUser = 'role' in item && item.role === 'user';\n\n return html`
\n ${isUser\n ? html`
\n ${this.avatarUrl\n ? html``\n : html`
`}\n
`\n : AffineAvatarIcon}\n ${isUser ? 'You' : 'AFFINE AI'}\n
`;\n }\n\n renderLoading() {\n return html` `;\n }\n\n scrollToDown() {\n this.messagesContainer.scrollTo(0, this.messagesContainer.scrollHeight);\n }\n\n retry = async () => {\n const { doc } = this.host;\n try {\n const { chatSessionId } = this.chatContextValue;\n if (!chatSessionId) return;\n\n const abortController = new AbortController();\n const items = [...this.chatContextValue.items];\n const last = items[items.length - 1];\n if ('content' in last) {\n last.content = '';\n last.createdAt = new Date().toISOString();\n }\n this.updateContext({ items, status: 'loading', error: null });\n\n const stream = AIProvider.actions.chat?.({\n sessionId: chatSessionId,\n retry: true,\n docId: doc.id,\n workspaceId: doc.collection.id,\n host: this.host,\n stream: true,\n signal: abortController.signal,\n where: 'chat-panel',\n control: 'chat-send',\n isRootSession: true,\n });\n\n if (stream) {\n this.updateContext({ abortController });\n for await (const text of stream) {\n const items = [...this.chatContextValue.items];\n const last = items[items.length - 1] as ChatMessage;\n last.content += text;\n this.updateContext({ items, status: 'transmitting' });\n }\n\n this.updateContext({ status: 'success' });\n }\n } catch (error) {\n this.updateContext({ status: 'error', error: error as AIError });\n } finally {\n this.updateContext({ abortController: null });\n }\n };\n\n renderEditorActions(item: ChatMessage, isLast: boolean) {\n const { status, chatSessionId } = this.chatContextValue;\n\n if (item.role !== 'assistant') return nothing;\n\n if (\n isLast &&\n status !== 'success' &&\n status !== 'idle' &&\n status !== 'error'\n )\n return nothing;\n\n const { host } = this;\n const { content, id: messageId } = item;\n const actions = isInsidePageEditor(host)\n ? PageEditorActions\n : EdgelessEditorActions;\n\n return html`\n this.retry()}\n >\n ${isLast && !!content\n ? html``\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'chat-panel-messages': ChatPanelMessages;\n }\n}\n","import './chat-panel-input';\nimport './chat-panel-messages';\n\nimport type { EditorHost } from '@blocksuite/block-std';\nimport { ShadowlessElement, WithDisposable } from '@blocksuite/block-std';\nimport { debounce } from '@blocksuite/global/utils';\nimport type { Doc } from '@blocksuite/store';\nimport { css, html, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { createRef, type Ref, ref } from 'lit/directives/ref.js';\n\nimport { AIHelpIcon, SmallHintIcon } from '../_common/icons';\nimport { AIProvider } from '../provider';\nimport {\n getSelectedImagesAsBlobs,\n getSelectedTextContent,\n} from '../utils/selection-utils';\nimport type { ChatAction, ChatContextValue, ChatItem } from './chat-context';\nimport type { ChatPanelMessages } from './chat-panel-messages';\n\n@customElement('chat-panel')\nexport class ChatPanel extends WithDisposable(ShadowlessElement) {\n static override styles = css`\n chat-panel {\n width: 100%;\n }\n\n .chat-panel-container {\n display: flex;\n flex-direction: column;\n padding: 0 16px;\n padding-top: 8px;\n height: 100%;\n }\n\n .chat-panel-title {\n background: var(--affine-background-primary-color);\n position: relative;\n padding: 8px 0px;\n width: 100%;\n height: 36px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n z-index: 1;\n\n div:first-child {\n font-size: 14px;\n font-weight: 500;\n color: var(--affine-text-secondary-color);\n }\n\n div:last-child {\n width: 24px;\n height: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n }\n }\n\n chat-panel-messages {\n flex: 1;\n overflow-y: hidden;\n }\n\n .chat-panel-hints {\n margin: 0 4px;\n padding: 8px 12px;\n border-radius: 8px;\n border: 1px solid var(--affine-border-color);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n }\n\n .chat-panel-hints :first-child {\n color: var(--affine-text-primary-color);\n }\n\n .chat-panel-hints :nth-child(2) {\n color: var(--affine-text-secondary-color);\n }\n\n .chat-panel-footer {\n margin: 8px 0px;\n height: 20px;\n display: flex;\n gap: 4px;\n align-items: center;\n color: var(--affine-text-secondary-color);\n font-size: 12px;\n user-select: none;\n }\n `;\n\n private readonly _chatMessages: Ref =\n createRef();\n\n private _resettingCounter = 0;\n\n private readonly _resetItems = debounce(() => {\n const counter = ++this._resettingCounter;\n this.isLoading = true;\n (async () => {\n const { doc } = this;\n\n const [histories, actions] = await Promise.all([\n AIProvider.histories?.chats(doc.collection.id, doc.id, { fork: false }),\n AIProvider.histories?.actions(doc.collection.id, doc.id),\n ]);\n\n if (counter !== this._resettingCounter) return;\n\n const items: ChatItem[] = actions ? [...actions] : [];\n\n if (histories?.at(-1)) {\n const history = histories.at(-1);\n if (!history) return;\n this.chatContextValue.chatSessionId = history.sessionId;\n items.push(...history.messages);\n AIProvider.LAST_ROOT_SESSION_ID = history.sessionId;\n }\n\n this.chatContextValue = {\n ...this.chatContextValue,\n items: items.sort((a, b) => {\n return (\n new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime()\n );\n }),\n };\n\n this.isLoading = false;\n this.scrollToDown();\n })().catch(console.error);\n }, 200);\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor doc!: Doc;\n\n @state()\n accessor isLoading = false;\n\n @state()\n accessor chatContextValue: ChatContextValue = {\n quote: '',\n images: [],\n abortController: null,\n items: [],\n status: 'idle',\n error: null,\n markdown: '',\n chatSessionId: null,\n };\n\n private readonly _cleanupHistories = async () => {\n const notification =\n this.host.std.spec.getService('affine:page').notificationService;\n if (!notification) return;\n\n if (\n await notification.confirm({\n title: 'Clear History',\n message:\n 'Are you sure you want to clear all history? This action will permanently delete all content, including all chat logs and data, and cannot be undone.',\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n })\n ) {\n await AIProvider.histories?.cleanup(this.doc.collection.id, this.doc.id, [\n this.chatContextValue.chatSessionId ?? '',\n ...(\n this.chatContextValue.items.filter(\n item => 'sessionId' in item\n ) as ChatAction[]\n ).map(item => item.sessionId),\n ]);\n this.chatContextValue.chatSessionId = null;\n notification.toast('History cleared');\n this._resetItems();\n }\n };\n\n protected override updated(_changedProperties: PropertyValues) {\n if (_changedProperties.has('doc')) {\n this.chatContextValue.chatSessionId = null;\n this._resetItems();\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n if (!this.doc) throw new Error('doc is required');\n\n AIProvider.slots.actions.on(({ action, event }) => {\n const { status } = this.chatContextValue;\n\n if (\n action !== 'chat' &&\n event === 'finished' &&\n (status === 'idle' || status === 'success')\n ) {\n this._resetItems();\n }\n\n if (action === 'chat' && event === 'finished') {\n AIProvider.slots.toggleChatCards.emit({\n visible: true,\n ok: status === 'success',\n });\n }\n });\n\n AIProvider.slots.userInfo.on(userInfo => {\n if (userInfo) {\n this._resetItems();\n }\n });\n }\n\n updateContext = (context: Partial) => {\n this.chatContextValue = { ...this.chatContextValue, ...context };\n };\n\n continueInChat = async () => {\n const text = await getSelectedTextContent(this.host, 'plain-text');\n const markdown = await getSelectedTextContent(this.host, 'markdown');\n const images = await getSelectedImagesAsBlobs(this.host);\n this.updateContext({\n quote: text,\n markdown,\n images,\n });\n };\n\n scrollToDown() {\n requestAnimationFrame(() => this._chatMessages.value?.scrollToDown());\n }\n\n override render() {\n return html`
\n
\n
AFFINE AI
\n {\n AIProvider.toggleGeneralAIOnboarding?.(true);\n }}\n >\n ${AIHelpIcon}\n
\n
\n \n \n
\n ${SmallHintIcon}\n
AI outputs can be misleading or wrong
\n
\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'chat-panel': ChatPanel;\n }\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport { type AIError, openFileOrFiles } from '@blocksuite/blocks';\nimport { type ChatMessage } from '@blocksuite/presets';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { repeat } from 'lit/directives/repeat.js';\n\nimport {\n ChatAbortIcon,\n ChatClearIcon,\n ChatSendIcon,\n CloseIcon,\n ImageIcon,\n} from '../_common/icons';\nimport { AIProvider } from '../provider';\nimport { reportResponse } from '../utils/action-reporter';\nimport { readBlobAsURL } from '../utils/image';\nimport type { ChatContext } from './types';\n\nconst MaximumImageCount = 8;\n\n@customElement('chat-block-input')\nexport class ChatBlockInput extends LitElement {\n static override styles = css`\n :host {\n width: 100%;\n }\n .ai-chat-input {\n display: flex;\n width: 100%;\n min-height: 100px;\n max-height: 206px;\n padding: 8px 12px;\n box-sizing: border-box;\n border: 1px solid var(--affine-border-color);\n border-radius: 4px;\n flex-direction: column;\n justify-content: space-between;\n gap: 12px;\n position: relative;\n background-color: var(--affine-white-10);\n }\n .ai-chat-input {\n textarea {\n width: 100%;\n padding: 0;\n margin: 0;\n border: none;\n line-height: 22px;\n font-size: var(--affine-font-sm);\n font-weight: 400;\n font-family: var(--affine-font-family);\n color: var(--affine-text-primary-color);\n box-sizing: border-box;\n resize: none;\n overflow-y: hidden;\n background-color: transparent;\n user-select: none;\n }\n textarea::placeholder {\n font-size: 14px;\n font-weight: 400;\n font-family: var(--affine-font-family);\n color: var(--affine-placeholder-color);\n }\n textarea:focus {\n outline: none;\n }\n }\n .chat-input-images {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n position: relative;\n .image-container {\n width: 58px;\n height: 58px;\n border-radius: 4px;\n border: 1px solid var(--affine-border-color);\n cursor: pointer;\n overflow: hidden;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n }\n }\n }\n\n .chat-panel-send svg rect {\n fill: var(--affine-primary-color);\n }\n .chat-panel-send[aria-disabled='true'] {\n cursor: not-allowed;\n }\n .chat-panel-send[aria-disabled='true'] svg rect {\n fill: var(--affine-text-disable-color);\n }\n\n .close-wrapper {\n width: 16px;\n height: 16px;\n border-radius: 4px;\n border: 1px solid var(--affine-border-color);\n justify-content: center;\n align-items: center;\n display: none;\n position: absolute;\n background-color: var(--affine-white);\n z-index: 1;\n cursor: pointer;\n }\n .close-wrapper:hover {\n background-color: var(--affine-background-error-color);\n border: 1px solid var(--affine-error-color);\n }\n .close-wrapper:hover svg path {\n fill: var(--affine-error-color);\n }\n .chat-panel-input-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n div {\n width: 24px;\n height: 24px;\n cursor: pointer;\n }\n div:nth-child(2) {\n margin-left: auto;\n }\n }\n\n .chat-history-clear.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n `;\n\n override render() {\n const { images, status, messages } = this.chatContext;\n const hasImages = images.length > 0;\n const maxHeight = hasImages ? 272 + 2 : 200 + 2;\n const disableCleanUp =\n status === 'loading' || status === 'transmitting' || !messages.length;\n const cleanButtonClasses = classMap({\n 'chat-history-clear': true,\n disabled: disableCleanUp,\n });\n\n return html`\n
\n ${hasImages ? this._renderImages(images) : nothing}\n {\n if (evt.key === 'Enter' && !evt.shiftKey && !evt.isComposing) {\n evt.preventDefault();\n await this._send();\n }\n }}\n @input=${() => {\n const { textarea } = this;\n this._isInputEmpty = !textarea.value.trim();\n textarea.style.height = 'auto';\n textarea.style.height = textarea.scrollHeight + 'px';\n if (this.scrollHeight >= 202) {\n textarea.style.height = '168px';\n textarea.style.overflowY = 'scroll';\n }\n }}\n @focus=${() => {\n this._focused = true;\n }}\n @blur=${() => {\n this._focused = false;\n }}\n @paste=${(event: ClipboardEvent) => {\n const items = event.clipboardData?.items;\n if (!items) return;\n for (const index in items) {\n const item = items[index];\n if (item.kind === 'file' && item.type.indexOf('image') >= 0) {\n const blob = item.getAsFile();\n if (!blob) continue;\n this._addImages([blob]);\n }\n }\n }}\n >\n
\n {\n if (disableCleanUp) {\n return;\n }\n await this.cleanupHistories();\n }}\n >\n ${ChatClearIcon}\n
\n ${images.length < MaximumImageCount\n ? html` {\n const images = await openFileOrFiles({\n acceptType: 'Images',\n multiple: true,\n });\n if (!images) return;\n this._addImages(images);\n }}\n >\n ${ImageIcon}\n
`\n : nothing}\n ${status === 'transmitting'\n ? html` {\n this.chatContext.abortController?.abort();\n this.updateContext({ status: 'success' });\n reportResponse('aborted:stop');\n }}\n >\n ${ChatAbortIcon}\n `\n : html`\n ${ChatSendIcon}\n `}\n \n `;\n }\n\n @property({ attribute: false })\n accessor parentSessionId!: string;\n\n @property({ attribute: false })\n accessor latestMessageId!: string;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @property({ attribute: false })\n accessor updateChatBlock!: () => Promise;\n\n @property({ attribute: false })\n accessor createChatBlock!: () => Promise;\n\n @property({ attribute: false })\n accessor cleanupHistories!: () => Promise;\n\n @property({ attribute: false })\n accessor updateContext!: (context: Partial) => void;\n\n @property({ attribute: false })\n accessor chatContext!: ChatContext;\n\n @query('textarea')\n accessor textarea!: HTMLTextAreaElement;\n\n @state()\n accessor _isInputEmpty = true;\n\n @state()\n accessor _focused = false;\n\n @query('.close-wrapper')\n accessor closeWrapper: HTMLDivElement | null = null;\n\n @state()\n accessor _curIndex = -1;\n\n private readonly _addImages = (images: File[]) => {\n const oldImages = this.chatContext.images;\n this.updateContext({\n images: [...oldImages, ...images].slice(0, MaximumImageCount),\n });\n };\n\n private _renderImages(images: File[]) {\n return html`\n {\n if (!this.closeWrapper) return;\n this.closeWrapper.style.display = 'none';\n this._curIndex = -1;\n }}\n >\n ${repeat(\n images,\n image => image.name,\n (image, index) =>\n html` {\n const ele = evt.target as HTMLImageElement;\n const rect = ele.getBoundingClientRect();\n if (!ele.parentElement) return;\n const parentRect = ele.parentElement.getBoundingClientRect();\n const left = Math.abs(rect.right - parentRect.left) - 8;\n const top = Math.abs(parentRect.top - rect.top) - 8;\n this._curIndex = index;\n if (!this.closeWrapper) return;\n this.closeWrapper.style.display = 'flex';\n this.closeWrapper.style.left = left + 'px';\n this.closeWrapper.style.top = top + 'px';\n }}\n >\n \"${image.name}\"\n `\n )}\n {\n if (this._curIndex >= 0 && this._curIndex < images.length) {\n const newImages = [...images];\n newImages.splice(this._curIndex, 1);\n this.updateContext({ images: newImages });\n this._curIndex = -1;\n if (!this.closeWrapper) return;\n this.closeWrapper.style.display = 'none';\n }\n }}\n >\n ${CloseIcon}\n \n \n `;\n }\n\n private readonly _send = async () => {\n const { images, status } = this.chatContext;\n if (status === 'loading' || status === 'transmitting') return;\n\n const text = this.textarea.value;\n if (!text && !images.length) {\n return;\n }\n\n const { doc } = this.host;\n this.textarea.value = '';\n this._isInputEmpty = true;\n this.updateContext({\n images: [],\n status: 'loading',\n error: null,\n });\n\n const attachments = await Promise.all(\n images?.map(image => readBlobAsURL(image))\n );\n\n const userInfo = await AIProvider.userInfo;\n this.updateContext({\n messages: [\n ...this.chatContext.messages,\n {\n id: '',\n content: text,\n role: 'user',\n createdAt: new Date().toISOString(),\n attachments,\n userId: userInfo?.id,\n userName: userInfo?.name,\n avatarUrl: userInfo?.avatarUrl ?? undefined,\n },\n {\n id: '',\n content: '',\n role: 'assistant',\n createdAt: new Date().toISOString(),\n },\n ],\n });\n\n const { currentChatBlockId, currentSessionId } = this.chatContext;\n let content = '';\n const chatBlockExists = !!currentChatBlockId;\n try {\n // If has not forked a chat session, fork a new one\n let chatSessionId = currentSessionId;\n if (!chatSessionId) {\n const forkSessionId = await AIProvider.forkChat?.({\n workspaceId: doc.collection.id,\n docId: doc.id,\n sessionId: this.parentSessionId,\n latestMessageId: this.latestMessageId,\n });\n if (!forkSessionId) return;\n this.updateContext({\n currentSessionId: forkSessionId,\n });\n chatSessionId = forkSessionId;\n }\n\n const abortController = new AbortController();\n const stream = AIProvider.actions.chat?.({\n input: text,\n sessionId: chatSessionId,\n docId: doc.id,\n attachments: images,\n workspaceId: doc.collection.id,\n host: this.host,\n stream: true,\n signal: abortController.signal,\n where: 'ai-chat-block',\n control: 'chat-send',\n });\n\n if (stream) {\n this.updateContext({\n abortController,\n });\n\n for await (const text of stream) {\n const messages = [...this.chatContext.messages];\n const last = messages[messages.length - 1] as ChatMessage;\n last.content += text;\n this.updateContext({ messages, status: 'transmitting' });\n content += text;\n }\n\n this.updateContext({ status: 'success' });\n }\n } catch (error) {\n console.error(error);\n this.updateContext({ status: 'error', error: error as AIError });\n } finally {\n if (content) {\n if (!chatBlockExists) {\n await this.createChatBlock();\n }\n // Update new chat block messages if there are contents returned from AI\n await this.updateChatBlock();\n }\n\n this.updateContext({ abortController: null });\n }\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'chat-block-input': ChatBlockInput;\n }\n}\n","import { i18nTime } from '@affine/i18n';\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('date-time')\nexport class DateTime extends LitElement {\n static override styles = css`\n :host {\n width: 100%;\n }\n .date-time-container {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .line {\n flex-grow: 1;\n height: 0.5px;\n background-color: var(--affine-border-color);\n }\n .date-time {\n padding: 0 8px;\n font-size: var(--affine-font-xs);\n font-weight: 400;\n line-height: 22px;\n text-align: center;\n color: var(--affine-text-secondary-color);\n }\n `;\n\n override render() {\n const date = i18nTime(this.date, {\n relative: {\n max: [1, 'day'],\n accuracy: 'minute',\n weekday: true,\n },\n absolute: {\n accuracy: 'second',\n },\n });\n\n return html`
\n
\n
${date}
\n
\n
`;\n }\n\n @property({ attribute: false })\n accessor date!: string;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'date-time': DateTime;\n }\n}\n","import './chat-block-input';\nimport './date-time';\nimport '../_common/components/chat-action-list';\nimport '../_common/components/copy-more';\n\nimport { type EditorHost } from '@blocksuite/block-std';\nimport {\n type AIError,\n CanvasElementType,\n ConnectorMode,\n type EdgelessRootService,\n} from '@blocksuite/blocks';\nimport {\n type AIChatBlockModel,\n type ChatMessage,\n ChatMessagesSchema,\n} from '@blocksuite/presets';\nimport { html, LitElement, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { repeat } from 'lit/directives/repeat.js';\n\nimport {\n ChatBlockPeekViewActions,\n constructUserInfoWithMessages,\n queryHistoryMessages,\n} from '../_common/chat-actions-handle';\nimport { SmallHintIcon } from '../_common/icons';\nimport { AIChatErrorRenderer } from '../messages/error';\nimport { AIProvider } from '../provider';\nimport { PeekViewStyles } from './styles';\nimport type { ChatContext } from './types';\nimport { calcChildBound } from './utils';\n\n@customElement('ai-chat-block-peek-view')\nexport class AIChatBlockPeekView extends LitElement {\n static override styles = PeekViewStyles;\n\n private get _rootService() {\n return this.host.spec.getService('affine:page');\n }\n\n private get _modeService() {\n return this._rootService.docModeService;\n }\n\n private get parentSessionId() {\n return this.parentModel.sessionId;\n }\n\n private get historyMessagesString() {\n return this.parentModel.messages;\n }\n\n private get parentChatBlockId() {\n return this.parentModel.id;\n }\n\n private get parentRootDocId() {\n return this.parentModel.rootDocId;\n }\n\n private get parentRootWorkspaceId() {\n return this.parentModel.rootWorkspaceId;\n }\n\n private readonly _deserializeHistoryChatMessages = (\n historyMessagesString: string\n ) => {\n try {\n const result = ChatMessagesSchema.safeParse(\n JSON.parse(historyMessagesString)\n );\n if (result.success) {\n return result.data;\n } else {\n return [];\n }\n } catch {\n return [];\n }\n };\n\n private readonly _constructBranchChatBlockMessages = async (\n rootWorkspaceId: string,\n rootDocId: string,\n forkSessionId: string\n ) => {\n const currentUserInfo = await AIProvider.userInfo;\n const forkMessages = await queryHistoryMessages(\n rootWorkspaceId,\n rootDocId,\n forkSessionId\n );\n const forkLength = forkMessages.length;\n const historyLength = this._historyMessages.length;\n\n if (!forkLength || forkLength <= historyLength) {\n return constructUserInfoWithMessages(forkMessages, currentUserInfo);\n }\n\n // Update history messages with the fork messages, keep user info\n const historyMessages = this._historyMessages.map((message, idx) => {\n return {\n ...message,\n id: forkMessages[idx]?.id ?? message.id,\n attachments: [],\n };\n });\n\n const currentChatMessages = constructUserInfoWithMessages(\n forkMessages.slice(historyLength),\n currentUserInfo\n );\n return [...historyMessages, ...currentChatMessages];\n };\n\n private readonly _resetContext = () => {\n const { abortController } = this.chatContext;\n if (abortController) {\n abortController.abort();\n }\n\n this.updateContext({\n status: 'idle',\n error: null,\n images: [],\n abortController: null,\n messages: [],\n currentSessionId: null,\n currentChatBlockId: null,\n });\n };\n\n /**\n * Create a new AI chat block based on the current session and history messages\n */\n createAIChatBlock = async () => {\n // Only create AI chat block in edgeless mode\n const mode = this._modeService.getMode();\n if (mode !== 'edgeless') {\n return;\n }\n\n // If there is already a chat block, do not create a new one\n if (this.chatContext.currentChatBlockId) {\n return;\n }\n\n // If there is no session id or chat messages, do not create a new chat block\n if (\n !this.chatContext.currentSessionId ||\n !this.chatContext.messages.length\n ) {\n return;\n }\n\n const { doc } = this.host;\n // create a new AI chat block\n const surfaceBlock = doc\n .getBlocks()\n .find(block => block.flavour === 'affine:surface');\n if (!surfaceBlock) {\n return;\n }\n\n // Get fork session messages\n const { parentRootWorkspaceId, parentRootDocId } = this;\n const messages = await this._constructBranchChatBlockMessages(\n parentRootWorkspaceId,\n parentRootDocId,\n this.chatContext.currentSessionId\n );\n if (!messages.length) {\n return;\n }\n\n const edgelessService = this._rootService as EdgelessRootService;\n const bound = calcChildBound(this.parentModel, edgelessService);\n const aiChatBlockId = edgelessService.addBlock(\n 'affine:embed-ai-chat' as keyof BlockSuite.BlockModels,\n {\n xywh: bound.serialize(),\n messages: JSON.stringify(messages),\n sessionId: this.chatContext.currentSessionId,\n rootWorkspaceId: parentRootWorkspaceId,\n rootDocId: parentRootDocId,\n },\n surfaceBlock.id\n );\n\n if (!aiChatBlockId) {\n return;\n }\n\n this.updateContext({ currentChatBlockId: aiChatBlockId });\n\n // Connect the parent chat block to the AI chat block\n edgelessService.addElement(CanvasElementType.CONNECTOR, {\n mode: ConnectorMode.Curve,\n controllers: [],\n source: { id: this.parentChatBlockId },\n target: { id: aiChatBlockId },\n });\n\n edgelessService.telemetryService?.track('CanvasElementAdded', {\n control: 'conversation',\n page: 'whiteboard editor',\n module: 'canvas',\n segment: 'whiteboard',\n type: 'chat block',\n category: 'branch',\n });\n };\n\n /**\n * Update the current chat messages with the new message\n */\n updateChatBlockMessages = async () => {\n if (\n !this.chatContext.currentChatBlockId ||\n !this.chatContext.currentSessionId\n ) {\n return;\n }\n\n const { doc } = this.host;\n const chatBlock = doc.getBlock(this.chatContext.currentChatBlockId);\n\n // Get fork session messages\n const { parentRootWorkspaceId, parentRootDocId } = this;\n const messages = await this._constructBranchChatBlockMessages(\n parentRootWorkspaceId,\n parentRootDocId,\n this.chatContext.currentSessionId\n );\n if (!messages.length) {\n return;\n }\n doc.updateBlock(chatBlock.model, {\n messages: JSON.stringify(messages),\n });\n };\n\n updateContext = (context: Partial) => {\n this.chatContext = { ...this.chatContext, ...context };\n };\n\n /**\n * Clean current chat messages and delete the newly created AI chat block\n */\n cleanCurrentChatHistories = async () => {\n const { notificationService } = this._rootService;\n if (!notificationService) {\n return;\n }\n\n const { currentChatBlockId, currentSessionId } = this.chatContext;\n if (!currentChatBlockId && !currentSessionId) {\n return;\n }\n\n if (\n await notificationService.confirm({\n title: 'Clear History',\n message:\n 'Are you sure you want to clear all history? This action will permanently delete all content, including all chat logs and data, and cannot be undone.',\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n })\n ) {\n const { doc } = this.host;\n if (currentSessionId) {\n await AIProvider.histories?.cleanup(doc.collection.id, doc.id, [\n currentSessionId,\n ]);\n }\n\n if (currentChatBlockId) {\n const edgelessService = this._rootService as EdgelessRootService;\n const chatBlock = doc.getBlock(currentChatBlockId).model;\n if (chatBlock) {\n const connectors = edgelessService.getConnectors(\n chatBlock as AIChatBlockModel\n );\n doc.transact(() => {\n // Delete the AI chat block\n edgelessService.removeElement(currentChatBlockId);\n // Delete the connectors\n connectors.forEach(connector => {\n edgelessService.removeElement(connector.id);\n });\n });\n }\n }\n\n notificationService.toast('History cleared');\n this._resetContext();\n }\n };\n\n /**\n * Retry the last chat message\n */\n retry = async () => {\n const { doc } = this.host;\n const { currentChatBlockId, currentSessionId } = this.chatContext;\n if (!currentChatBlockId || !currentSessionId) {\n return;\n }\n\n let content = '';\n try {\n const abortController = new AbortController();\n\n const messages = [...this.chatContext.messages];\n const last = messages[messages.length - 1];\n if ('content' in last) {\n last.content = '';\n last.createdAt = new Date().toISOString();\n }\n this.updateContext({ messages, status: 'loading', error: null });\n\n const stream = AIProvider.actions.chat?.({\n sessionId: currentSessionId,\n retry: true,\n docId: doc.id,\n workspaceId: doc.collection.id,\n host: this.host,\n stream: true,\n signal: abortController.signal,\n where: 'ai-chat-block',\n control: 'chat-send',\n });\n\n if (stream) {\n this.updateContext({ abortController });\n for await (const text of stream) {\n const messages = [...this.chatContext.messages];\n const last = messages[messages.length - 1] as ChatMessage;\n last.content += text;\n this.updateContext({ messages, status: 'transmitting' });\n content += text;\n }\n\n this.updateContext({ status: 'success' });\n }\n } catch (error) {\n this.updateContext({ status: 'error', error: error as AIError });\n } finally {\n this.updateContext({ abortController: null });\n if (content) {\n // Update new chat block messages if there are contents returned from AI\n await this.updateChatBlockMessages();\n }\n }\n };\n\n CurrentMessages = (currentMessages: ChatMessage[]) => {\n if (!currentMessages.length) {\n return nothing;\n }\n\n const { host } = this;\n const actions = ChatBlockPeekViewActions;\n\n return html`${repeat(currentMessages, (message, idx) => {\n const { status, error } = this.chatContext;\n const isAssistantMessage = message.role === 'assistant';\n const isLastReply =\n idx === currentMessages.length - 1 && isAssistantMessage;\n const messageState =\n isLastReply && (status === 'transmitting' || status === 'loading')\n ? 'generating'\n : 'finished';\n const shouldRenderError = isLastReply && status === 'error' && !!error;\n const isNotReady = status === 'transmitting' || status === 'loading';\n const shouldRenderCopyMore =\n isAssistantMessage && !(isLastReply && isNotReady);\n const shouldRenderActions =\n isLastReply && !!message.content && !isNotReady;\n\n const messageClasses = classMap({\n 'assistant-message-container': isAssistantMessage,\n });\n\n const { attachments, role, content } = message;\n const userInfo = {\n userId: message.userId,\n userName: message.userName,\n avatarUrl: message.avatarUrl,\n };\n\n return html`
\n \n ${shouldRenderError ? AIChatErrorRenderer(host, error) : nothing}\n ${shouldRenderCopyMore\n ? html` this.retry()}\n >`\n : nothing}\n ${shouldRenderActions\n ? html``\n : nothing}\n
`;\n })}`;\n };\n\n override connectedCallback() {\n super.connectedCallback();\n this._historyMessages = this._deserializeHistoryChatMessages(\n this.historyMessagesString\n );\n const { parentRootWorkspaceId, parentRootDocId, parentSessionId } = this;\n queryHistoryMessages(\n parentRootWorkspaceId,\n parentRootDocId,\n parentSessionId\n )\n .then(messages => {\n this._historyMessages = this._historyMessages.map((message, idx) => {\n return {\n ...message,\n attachments: messages[idx]?.attachments ?? [],\n };\n });\n })\n .catch((err: Error) => {\n console.error('Query history messages failed', err);\n });\n }\n\n override firstUpdated() {\n // first time render, scroll ai-chat-messages-container to bottom\n requestAnimationFrame(() => {\n if (this._chatMessagesContainer) {\n this._chatMessagesContainer.scrollTop =\n this._chatMessagesContainer.scrollHeight;\n }\n });\n }\n\n override render() {\n const { host, _historyMessages } = this;\n if (!_historyMessages.length) {\n return nothing;\n }\n\n const latestHistoryMessage = _historyMessages[_historyMessages.length - 1];\n const latestMessageCreatedAt = latestHistoryMessage.createdAt;\n const latestHistoryMessageId = latestHistoryMessage.id;\n const {\n parentSessionId,\n updateChatBlockMessages,\n createAIChatBlock,\n cleanCurrentChatHistories,\n chatContext,\n updateContext,\n } = this;\n\n const { messages: currentChatMessages } = chatContext;\n\n return html`
\n
\n \n \n
\n ${this.CurrentMessages(currentChatMessages)}\n
\n
\n \n
\n ${SmallHintIcon}\n
AI outputs can be misleading or wrong
\n
\n
`;\n }\n\n @query('.ai-chat-messages-container')\n accessor _chatMessagesContainer!: HTMLDivElement;\n\n @property({ attribute: false })\n accessor parentModel!: AIChatBlockModel;\n\n @property({ attribute: false })\n accessor host!: EditorHost;\n\n @state()\n accessor _historyMessages: ChatMessage[] = [];\n\n @state()\n accessor chatContext: ChatContext = {\n status: 'idle',\n error: null,\n images: [],\n abortController: null,\n messages: [],\n currentSessionId: null,\n currentChatBlockId: null,\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-chat-block-peek-view': AIChatBlockPeekView;\n }\n}\n\nexport const AIChatBlockPeekViewTemplate = (\n parentModel: AIChatBlockModel,\n host: EditorHost\n) => {\n return html``;\n};\n","import '@dotlottie/player-component';\n\nimport { html } from 'lit';\n\nexport const AIStarIcon = html`\n \n \n \n \n \n \n \n \n \n`;\n\nexport const AIStarIconWithAnimation = html``;\n\nexport const SmallHintIcon = html`\n \n `;\n\nexport const AIHelpIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AffineIcon = (color: string) =>\n html`\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `;\n\nexport const ChatClearIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const ChatSendIcon = html`\n \n \n \n \n \n \n \n \n \n `;\n\nexport const ChatAbortIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const CurrentSelectionIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const ImageIcon = html`\n \n `;\n\nexport const SmallImageIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const DocIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const DownArrowIcon = html`\n \n `;\n\nexport const CloseIcon = html`\n \n `;\n\nexport const ReplaceIcon = html`\n \n `;\n\nexport const InsertBelowIcon = html`\n \n `;\n\nexport const InsertTopIcon = html`\n \n`;\n\nexport const NewBlockIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const CreateIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AffineAvatarIcon = html`\n \n \n `;\n\nexport const ActionIcon = html`\n \n `;\n\nexport const LanguageIcon = html`\n \n `;\n\nexport const ImproveWritingIcon = html`\n \n `;\n\nexport const AIDoneIcon = html`\n \n `;\n\nexport const ShorterIcon = html`\n \n `;\n\nexport const LongerIcon = html`\n \n `;\n\nexport const ExplainIcon = html`\n \n `;\n\nexport const AIExplainIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const SelectionIcon = html`\n \n`;\n\nexport const AIExplainSelectionIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const ToneIcon = html`\n \n `;\n\nexport const AIChangeToneIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AISearchIcon = html`\n \n `;\n\nexport const AIImproveWritingIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AIMakeLongerIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AIMakeShorterIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AIMakeRealIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AIPenIcon = html`\n \n `;\n\nexport const AIPenIconWithAnimation = html``;\n\nexport const AIPresentationIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AIPresentationIconWithAnimation = html``;\n\nexport const AIMindMapIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AIMindMapIconWithAnimation = html``;\n\nexport const AIExpandMindMapIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AIFindActionsIcon = html`\n \n `;\n\nexport const AIImageIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const AIImageIconWithAnimation = html``;\n\nexport const ChatWithAIIcon = html`\n \n `;\n\nexport const MakeItRealIcon = html`\n \n `;\n\nexport const MakeItRealIconWithAnimation = html``;\n\nexport const ArrowDownIcon = html`\n \n `;\n\nexport const ArrowUpIcon = html`\n \n `;\n\nexport const DiscardIcon = html`\n \n`;\n\nexport const ErrorTipIcon = html`\n \n`;\n\nexport const CopyIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const RetryIcon = html`\n \n `;\n\nexport const MoreIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const ArticleIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const MindmapIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const PreloadImageIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const PreloadPenIcon = html`\n \n `;\n\nexport const CommunicateIcon = html`\n \n \n \n \n \n \n \n \n `;\n\nexport const CommentIcon = html`\n \n`;\n\nexport const BlockIcon = html`\n \n`;\n","export const EXCLUDING_COPY_ACTIONS = [\n 'brainstormMindmap',\n 'expandMindmap',\n 'makeItReal',\n 'createSlides',\n 'createImage',\n 'findActions',\n 'filterImage',\n 'processImage',\n];\n\nexport const EXCLUDING_INSERT_ACTIONS = ['generateCaption'];\n\nexport const IMAGE_ACTIONS = ['createImage', 'processImage', 'filterImage'];\n\nconst commonImageStages = ['Generating image', 'Rendering image'];\n\nexport const generatingStages: {\n [key in keyof Partial]: string[];\n} = {\n makeItReal: ['Coding for you', 'Rendering the code'],\n brainstormMindmap: ['Thinking about this topic', 'Rendering mindmap'],\n createSlides: ['Thinking about this topic', 'Rendering slides'],\n createImage: commonImageStages,\n processImage: commonImageStages,\n filterImage: commonImageStages,\n};\n\nexport const INSERT_ABOVE_ACTIONS = ['createHeadings'];\n","import { PageEditorBlockSpecs, PageRootService } from '@blocksuite/blocks';\nimport { literal } from 'lit/static-html.js';\n\n/**\n * Custom PageRootService that does not load fonts\n */\nclass CustomPageRootService extends PageRootService {\n override loadFonts() {}\n}\n\nexport const CustomPageEditorBlockSpecs = PageEditorBlockSpecs.map(spec => {\n if (spec.schema.model.flavour === 'affine:page') {\n return {\n ...spec,\n service: CustomPageRootService,\n view: {\n component: literal`affine-page-root`,\n },\n };\n }\n return spec;\n});\n","import type {\n EditorHost,\n TextRangePoint,\n TextSelection,\n} from '@blocksuite/block-std';\nimport {\n defaultImageProxyMiddleware,\n embedSyncedDocMiddleware,\n MarkdownAdapter,\n MixTextAdapter,\n pasteMiddleware,\n PlainTextAdapter,\n titleMiddleware,\n} from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport type {\n BlockModel,\n BlockSnapshot,\n Doc,\n DraftModel,\n Slice,\n SliceSnapshot,\n} from '@blocksuite/store';\nimport { DocCollection, Job } from '@blocksuite/store';\n\nconst updateSnapshotText = (\n point: TextRangePoint,\n snapshot: BlockSnapshot,\n model: DraftModel\n) => {\n const { index, length } = point;\n if (!snapshot.props.text || length === 0) {\n return;\n }\n (snapshot.props.text as Record).delta =\n model.text?.sliceToDelta(index, length + index);\n};\n\nfunction processSnapshot(\n snapshot: BlockSnapshot,\n text: TextSelection,\n host: EditorHost\n) {\n const model = host.doc.getBlockById(snapshot.id);\n assertExists(model);\n\n const modelId = model.id;\n if (text.from.blockId === modelId) {\n updateSnapshotText(text.from, snapshot, model);\n }\n if (text.to && text.to.blockId === modelId) {\n updateSnapshotText(text.to, snapshot, model);\n }\n\n // If the snapshot has children, handle them recursively\n snapshot.children.forEach(childSnapshot =>\n processSnapshot(childSnapshot, text, host)\n );\n}\n\n/**\n * Processes the text in the given snapshot if there is a text selection.\n * Only the selected portion of the snapshot will be processed.\n */\nfunction processTextInSnapshot(snapshot: SliceSnapshot, host: EditorHost) {\n const { content } = snapshot;\n const text = host.selection.find('text');\n if (!content.length || !text) return;\n\n content.forEach(snapshot => processSnapshot(snapshot, text, host));\n}\n\nexport async function getContentFromSlice(\n host: EditorHost,\n slice: Slice,\n type: 'markdown' | 'plain-text' = 'markdown'\n) {\n const job = new Job({\n collection: host.std.doc.collection,\n middlewares: [titleMiddleware, embedSyncedDocMiddleware('content')],\n });\n const snapshot = await job.sliceToSnapshot(slice);\n if (!snapshot) {\n return '';\n }\n processTextInSnapshot(snapshot, host);\n const adapter =\n type === 'markdown' ? new MarkdownAdapter(job) : new PlainTextAdapter(job);\n const content = await adapter.fromSliceSnapshot({\n snapshot,\n assets: job.assetsManager,\n });\n return content.file;\n}\n\nexport async function getPlainTextFromSlice(host: EditorHost, slice: Slice) {\n const job = new Job({\n collection: host.std.doc.collection,\n middlewares: [titleMiddleware],\n });\n const snapshot = await job.sliceToSnapshot(slice);\n if (!snapshot) {\n return '';\n }\n processTextInSnapshot(snapshot, host);\n const plainTextAdapter = new PlainTextAdapter(job);\n const plainText = await plainTextAdapter.fromSliceSnapshot({\n snapshot,\n assets: job.assetsManager,\n });\n return plainText.file;\n}\n\nexport const markdownToSnapshot = async (\n markdown: string,\n host: EditorHost\n) => {\n const job = new Job({\n collection: host.std.doc.collection,\n middlewares: [defaultImageProxyMiddleware, pasteMiddleware(host.std)],\n });\n const markdownAdapter = new MixTextAdapter(job);\n const { blockVersions, workspaceVersion, pageVersion } =\n host.std.doc.collection.meta;\n if (!blockVersions || !workspaceVersion || !pageVersion)\n throw new Error(\n 'Need blockVersions, workspaceVersion, pageVersion meta information to get slice'\n );\n const payload = {\n file: markdown,\n assets: job.assetsManager,\n blockVersions,\n pageVersion,\n workspaceVersion,\n workspaceId: host.std.doc.collection.id,\n pageId: host.std.doc.id,\n };\n\n const snapshot = await markdownAdapter.toSliceSnapshot(payload);\n assertExists(snapshot, 'import markdown failed, expected to get a snapshot');\n\n return {\n snapshot,\n job,\n };\n};\n\nexport async function insertFromMarkdown(\n host: EditorHost,\n markdown: string,\n doc: Doc,\n parent?: string,\n index?: number\n) {\n const { snapshot, job } = await markdownToSnapshot(markdown, host);\n\n const snapshots = snapshot.content.flatMap(x => x.children);\n\n const models: BlockModel[] = [];\n for (let i = 0; i < snapshots.length; i++) {\n const blockSnapshot = snapshots[i];\n const model = await job.snapshotToBlock(\n blockSnapshot,\n doc,\n parent,\n (index ?? 0) + i\n );\n if (model) {\n models.push(model);\n }\n }\n\n return models;\n}\n\n// FIXME: replace when selection is block is buggy right not\nexport async function replaceFromMarkdown(\n host: EditorHost,\n markdown: string,\n parent?: string,\n index?: number\n) {\n const { snapshot, job } = await markdownToSnapshot(markdown, host);\n await job.snapshotToSlice(snapshot, host.doc, parent, index);\n}\n\nexport async function markDownToDoc(host: EditorHost, answer: string) {\n const schema = host.std.doc.collection.schema;\n // Should not create a new doc in the original collection\n const collection = new DocCollection({\n schema,\n disableBacklinkIndex: true,\n disableSearchIndex: true,\n });\n collection.meta.initialize();\n const job = new Job({\n collection,\n middlewares: [defaultImageProxyMiddleware],\n });\n const mdAdapter = new MarkdownAdapter(job);\n const doc = await mdAdapter.toDoc({\n file: answer,\n assets: job.assetsManager,\n });\n if (!doc) {\n console.error('Failed to convert markdown to doc');\n }\n return doc as Doc;\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport { PaymentRequiredError, UnauthorizedError } from '@blocksuite/blocks';\nimport { Slot } from '@blocksuite/store';\n\nexport interface AIUserInfo {\n id: string;\n email: string;\n name: string;\n avatarUrl: string | null;\n}\n\nexport interface AIChatParams {\n host: EditorHost;\n mode?: 'page' | 'edgeless';\n // Auto select and append selection to input via `Continue with AI` action.\n autoSelect?: boolean;\n}\n\nexport type ActionEventType =\n | 'started'\n | 'finished'\n | 'error'\n | 'aborted:paywall'\n | 'aborted:login-required'\n | 'aborted:server-error'\n | 'aborted:stop'\n | 'result:insert'\n | 'result:replace'\n | 'result:use-as-caption'\n | 'result:add-page'\n | 'result:add-note'\n | 'result:continue-in-chat'\n | 'result:discard'\n | 'result:retry';\n\n/**\n * AI provider for the block suite\n *\n * To use it, downstream (affine) has to provide AI actions implementation,\n * user info etc\n *\n * TODO: breakdown into different parts?\n */\nexport class AIProvider {\n static get slots() {\n return AIProvider.instance.slots;\n }\n\n static get actions() {\n return AIProvider.instance.actions;\n }\n\n static get userInfo() {\n return AIProvider.instance.userInfoFn();\n }\n\n static get photoEngine() {\n return AIProvider.instance.photoEngine;\n }\n\n static get histories() {\n return AIProvider.instance.histories;\n }\n\n static get actionHistory() {\n return AIProvider.instance.actionHistory;\n }\n\n static get toggleGeneralAIOnboarding() {\n return AIProvider.instance.toggleGeneralAIOnboarding;\n }\n\n static get forkChat() {\n return AIProvider.instance.forkChat;\n }\n\n private static readonly instance = new AIProvider();\n\n static LAST_ACTION_SESSIONID = '';\n\n static LAST_ROOT_SESSION_ID = '';\n\n static MAX_LOCAL_HISTORY = 10;\n\n private readonly actions: Partial = {};\n\n private photoEngine: BlockSuitePresets.AIPhotoEngineService | null = null;\n\n private histories: BlockSuitePresets.AIHistoryService | null = null;\n\n private toggleGeneralAIOnboarding: ((value: boolean) => void) | null = null;\n\n private forkChat:\n | ((\n options: BlockSuitePresets.AIForkChatSessionOptions\n ) => string | Promise)\n | null = null;\n\n private readonly slots = {\n // use case: when user selects \"continue in chat\" in an ask ai result panel\n // do we need to pass the context to the chat panel?\n requestOpenWithChat: new Slot(),\n requestInsertTemplate: new Slot<{\n template: string;\n mode: 'page' | 'edgeless';\n }>(),\n requestLogin: new Slot<{ host: EditorHost }>(),\n requestUpgradePlan: new Slot<{ host: EditorHost }>(),\n // when an action is requested to run in edgeless mode (show a toast in affine)\n requestRunInEdgeless: new Slot<{ host: EditorHost }>(),\n // stream of AI actions triggered by users\n actions: new Slot<{\n action: keyof BlockSuitePresets.AIActions;\n options: BlockSuitePresets.AITextActionOptions;\n event: ActionEventType;\n }>(),\n // downstream can emit this slot to notify ai presets that user info has been updated\n userInfo: new Slot(),\n // add more if needed\n toggleChatCards: new Slot<{\n visible: boolean;\n ok?: boolean;\n }>(),\n };\n\n // track the history of triggered actions (in memory only)\n private readonly actionHistory: {\n action: keyof BlockSuitePresets.AIActions;\n options: BlockSuitePresets.AITextActionOptions;\n }[] = [];\n\n private userInfoFn: () => AIUserInfo | Promise | null = () =>\n null;\n\n private provideAction(\n id: T,\n action: (\n ...options: Parameters\n ) => ReturnType\n ): void {\n if (this.actions[id]) {\n console.warn(`AI action ${id} is already provided`);\n }\n\n // @ts-expect-error TODO: maybe fix this\n this.actions[id] = (\n ...args: Parameters\n ) => {\n const options = args[0];\n const slots = this.slots;\n slots.actions.emit({\n action: id,\n options,\n event: 'started',\n });\n this.actionHistory.push({ action: id, options });\n if (this.actionHistory.length > AIProvider.MAX_LOCAL_HISTORY) {\n this.actionHistory.shift();\n }\n // wrap the action with slot actions\n const result: BlockSuitePresets.TextStream | Promise = action(\n ...args\n );\n const isTextStream = (\n m: BlockSuitePresets.TextStream | Promise\n ): m is BlockSuitePresets.TextStream =>\n Reflect.has(m, Symbol.asyncIterator);\n if (isTextStream(result)) {\n return {\n [Symbol.asyncIterator]: async function* () {\n try {\n yield* result;\n slots.actions.emit({\n action: id,\n options,\n event: 'finished',\n });\n } catch (err) {\n slots.actions.emit({\n action: id,\n options,\n event: 'error',\n });\n if (err instanceof PaymentRequiredError) {\n slots.actions.emit({\n action: id,\n options,\n event: 'aborted:paywall',\n });\n } else if (err instanceof UnauthorizedError) {\n slots.actions.emit({\n action: id,\n options,\n event: 'aborted:login-required',\n });\n } else {\n slots.actions.emit({\n action: id,\n options,\n event: 'aborted:server-error',\n });\n }\n throw err;\n }\n },\n };\n } else {\n return result\n .then(result => {\n slots.actions.emit({\n action: id,\n options,\n event: 'finished',\n });\n return result;\n })\n .catch(err => {\n slots.actions.emit({\n action: id,\n options,\n event: 'error',\n });\n if (err instanceof PaymentRequiredError) {\n slots.actions.emit({\n action: id,\n options,\n event: 'aborted:paywall',\n });\n }\n throw err;\n });\n }\n };\n }\n\n static provide(\n id: 'userInfo',\n fn: () => AIUserInfo | Promise | null\n ): void;\n\n static provide(\n id: 'histories',\n service: BlockSuitePresets.AIHistoryService\n ): void;\n\n static provide(\n id: 'photoEngine',\n engine: BlockSuitePresets.AIPhotoEngineService\n ): void;\n\n static provide(\n id: 'forkChat',\n fn: (\n options: BlockSuitePresets.AIForkChatSessionOptions\n ) => string | Promise\n ): void;\n\n static provide(id: 'onboarding', fn: (value: boolean) => void): void;\n\n // actions:\n static provide(\n id: T,\n action: (\n ...options: Parameters\n ) => ReturnType\n ): void;\n\n static provide(id: unknown, action: unknown) {\n if (id === 'userInfo') {\n AIProvider.instance.userInfoFn = action as () => AIUserInfo;\n } else if (id === 'histories') {\n AIProvider.instance.histories =\n action as BlockSuitePresets.AIHistoryService;\n } else if (id === 'photoEngine') {\n AIProvider.instance.photoEngine =\n action as BlockSuitePresets.AIPhotoEngineService;\n } else if (id === 'onboarding') {\n AIProvider.instance.toggleGeneralAIOnboarding = action as (\n value: boolean\n ) => void;\n } else if (id === 'forkChat') {\n AIProvider.instance.forkChat = action as (\n options: BlockSuitePresets.AIForkChatSessionOptions\n ) => string | Promise;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n AIProvider.instance.provideAction(id as any, action as any);\n }\n }\n}\n","import { type ActionEventType, AIProvider } from '../provider';\n\nexport function reportResponse(event: ActionEventType) {\n const lastAction = AIProvider.actionHistory.at(-1);\n if (!lastAction) return;\n\n AIProvider.slots.actions.emit({\n action: lastAction.action,\n options: lastAction.options,\n event,\n });\n}\n","import type { BlockComponent, EditorHost } from '@blocksuite/block-std';\nimport {\n AFFINE_EDGELESS_COPILOT_WIDGET,\n type EdgelessCopilotWidget,\n type EdgelessRootService,\n matchFlavours,\n MindmapElementModel,\n type ShapeElementModel,\n} from '@blocksuite/blocks';\n\nexport function mindMapToMarkdown(mindmap: MindmapElementModel) {\n let markdownStr = '';\n\n const traverse = (\n node: MindmapElementModel['tree']['children'][number],\n indent: number = 0\n ) => {\n const text = (node.element as ShapeElementModel).text?.toString() ?? '';\n\n markdownStr += `${' '.repeat(indent)}- ${text}\\n`;\n\n if (node.children) {\n node.children.forEach(node => traverse(node, indent + 2));\n }\n };\n\n traverse(mindmap.tree, 0);\n\n return markdownStr;\n}\n\nexport function isMindMapRoot(ele: BlockSuite.EdgelessModel) {\n const group = ele?.group;\n\n return group instanceof MindmapElementModel && group.tree.element === ele;\n}\n\nexport function isMindmapChild(ele: BlockSuite.EdgelessModel) {\n return ele?.group instanceof MindmapElementModel && !isMindMapRoot(ele);\n}\n\nexport function getService(host: EditorHost) {\n const edgelessService = host.spec.getService(\n 'affine:page'\n ) as EdgelessRootService;\n\n return edgelessService;\n}\n\nexport function getEdgelessCopilotWidget(\n host: EditorHost\n): EdgelessCopilotWidget {\n const rootBlockId = host.doc.root?.id as string;\n const copilotWidget = host.view.getWidget(\n AFFINE_EDGELESS_COPILOT_WIDGET,\n rootBlockId\n ) as EdgelessCopilotWidget;\n\n return copilotWidget;\n}\n\nexport function findNoteBlockModel(blockElement: BlockComponent) {\n let curBlock = blockElement;\n while (curBlock) {\n if (matchFlavours(curBlock.model, ['affine:note'])) {\n return curBlock.model;\n }\n if (matchFlavours(curBlock.model, ['affine:page', 'affine:surface'])) {\n return null;\n }\n curBlock = curBlock.parentBlock;\n }\n return null;\n}\n","import type {\n BlockComponent,\n EditorHost,\n TextSelection,\n} from '@blocksuite/block-std';\nimport type { AffineAIPanelWidget } from '@blocksuite/blocks';\nimport { isInsideEdgelessEditor } from '@blocksuite/blocks';\nimport { type BlockModel, Slice } from '@blocksuite/store';\n\nimport {\n insertFromMarkdown,\n markDownToDoc,\n markdownToSnapshot,\n} from './markdown-utils';\n\nconst getNoteId = (blockElement: BlockComponent) => {\n let element = blockElement;\n while (element.flavour !== 'affine:note') {\n element = element.parentBlock;\n }\n\n return element.model.id;\n};\n\nconst setBlockSelection = (\n host: EditorHost,\n parent: BlockComponent,\n models: BlockModel[]\n) => {\n const selections = models\n .map(model => model.id)\n .map(blockId => host.selection.create('block', { blockId }));\n\n if (isInsideEdgelessEditor(host)) {\n const surfaceElementId = getNoteId(parent);\n const surfaceSelection = host.selection.create(\n 'surface',\n selections[0].blockId,\n [surfaceElementId],\n true\n );\n\n selections.push(surfaceSelection);\n host.selection.set(selections);\n } else {\n host.selection.setGroup('note', selections);\n }\n};\n\nexport const insert = async (\n host: EditorHost,\n content: string,\n selectBlock: BlockComponent,\n below: boolean = true\n) => {\n const blockParent = selectBlock.parentBlock;\n const index = blockParent.model.children.findIndex(\n model => model.id === selectBlock.model.id\n );\n const insertIndex = below ? index + 1 : index;\n\n const { doc } = host;\n const models = await insertFromMarkdown(\n host,\n content,\n doc,\n blockParent.model.id,\n insertIndex\n );\n await host.updateComplete;\n requestAnimationFrame(() => setBlockSelection(host, blockParent, models));\n};\n\nexport const insertBelow = async (\n host: EditorHost,\n content: string,\n selectBlock: BlockComponent\n) => {\n await insert(host, content, selectBlock, true);\n};\n\nexport const insertAbove = async (\n host: EditorHost,\n content: string,\n selectBlock: BlockComponent\n) => {\n await insert(host, content, selectBlock, false);\n};\n\nexport const replace = async (\n host: EditorHost,\n content: string,\n firstBlock: BlockComponent,\n selectedModels: BlockModel[],\n textSelection?: TextSelection\n) => {\n const firstBlockParent = firstBlock.parentBlock;\n const firstIndex = firstBlockParent.model.children.findIndex(\n model => model.id === firstBlock.model.id\n );\n\n if (textSelection) {\n const { snapshot, job } = await markdownToSnapshot(content, host);\n await job.snapshotToSlice(\n snapshot,\n host.doc,\n firstBlockParent.model.id,\n firstIndex + 1\n );\n } else {\n selectedModels.forEach(model => {\n host.doc.deleteBlock(model);\n });\n\n const { doc } = host;\n const models = await insertFromMarkdown(\n host,\n content,\n doc,\n firstBlockParent.model.id,\n firstIndex\n );\n\n await host.updateComplete;\n requestAnimationFrame(() =>\n setBlockSelection(host, firstBlockParent, models)\n );\n }\n};\n\nexport const copyTextAnswer = async (panel: AffineAIPanelWidget) => {\n const host = panel.host;\n if (!panel.answer) {\n return false;\n }\n return copyText(host, panel.answer);\n};\n\nexport const copyText = async (host: EditorHost, text: string) => {\n const previewDoc = await markDownToDoc(host, text);\n const models = previewDoc\n .getBlocksByFlavour('affine:note')\n .map(b => b.model)\n .flatMap(model => model.children);\n const slice = Slice.fromModels(previewDoc, models);\n await host.std.clipboard.copySlice(slice);\n return true;\n};\n","import type { EditorHost } from '@blocksuite/block-std';\nimport {\n type CopilotSelectionController,\n type FrameBlockModel,\n ImageBlockModel,\n type SurfaceBlockComponent,\n} from '@blocksuite/blocks';\nimport { BlocksUtils, EdgelessRootService } from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport {\n type BlockModel,\n type DraftModel,\n Slice,\n toDraftModel,\n} from '@blocksuite/store';\n\nimport { getEdgelessCopilotWidget, getService } from './edgeless';\nimport { getContentFromSlice } from './markdown-utils';\n\nexport const getRootService = (host: EditorHost) => {\n return host.std.spec.getService('affine:page');\n};\n\nexport function getEdgelessRootFromEditor(editor: EditorHost) {\n const edgelessRoot = editor.getElementsByTagName('affine-edgeless-root')[0];\n if (!edgelessRoot) {\n alert('Please switch to edgeless mode');\n throw new Error('Please open switch to edgeless mode');\n }\n return edgelessRoot;\n}\nexport function getEdgelessService(editor: EditorHost) {\n const rootService = editor.std.spec.getService('affine:page');\n if (rootService instanceof EdgelessRootService) {\n return rootService;\n }\n alert('Please switch to edgeless mode');\n throw new Error('Please open switch to edgeless mode');\n}\n\nexport async function selectedToCanvas(editor: EditorHost) {\n const edgelessRoot = getEdgelessRootFromEditor(editor);\n const { notes, frames, shapes, images } = BlocksUtils.splitElements(\n edgelessRoot.service.selection.selectedElements\n );\n if (notes.length + frames.length + images.length + shapes.length === 0) {\n return;\n }\n const canvas = await edgelessRoot.clipboardController.toCanvas(\n [...notes, ...frames, ...images],\n shapes\n );\n if (!canvas) {\n return;\n }\n return canvas;\n}\n\nexport async function frameToCanvas(\n frame: FrameBlockModel,\n editor: EditorHost\n) {\n const edgelessRoot = getEdgelessRootFromEditor(editor);\n const { notes, frames, shapes, images } = BlocksUtils.splitElements(\n edgelessRoot.service.frame.getElementsInFrame(frame, true)\n );\n if (notes.length + frames.length + images.length + shapes.length === 0) {\n return;\n }\n const canvas = await edgelessRoot.clipboardController.toCanvas(\n [...notes, ...frames, ...images],\n shapes\n );\n if (!canvas) {\n return;\n }\n return canvas;\n}\n\nexport async function selectedToPng(editor: EditorHost) {\n return (await selectedToCanvas(editor))?.toDataURL('image/png');\n}\n\nexport function getSelectedModels(editorHost: EditorHost) {\n const chain = editorHost.std.command.chain();\n const [_, ctx] = chain\n .getSelectedModels({\n types: ['block', 'text'],\n })\n .run();\n const { selectedModels } = ctx;\n return selectedModels;\n}\n\nfunction traverse(model: DraftModel, drafts: DraftModel[]) {\n const isDatabase = model.flavour === 'affine:database';\n const children = isDatabase\n ? model.children\n : model.children.filter(child => {\n const idx = drafts.findIndex(m => m.id === child.id);\n return idx >= 0;\n });\n\n children.forEach(child => {\n const idx = drafts.findIndex(m => m.id === child.id);\n if (idx >= 0) {\n drafts.splice(idx, 1);\n }\n traverse(child, drafts);\n });\n model.children = children;\n}\n\nexport async function getTextContentFromBlockModels(\n editorHost: EditorHost,\n models: BlockModel[],\n type: 'markdown' | 'plain-text' = 'markdown'\n) {\n // Currently only filter out images and databases\n const selectedTextModels = models.filter(\n model =>\n !BlocksUtils.matchFlavours(model, ['affine:image', 'affine:database'])\n );\n const drafts = selectedTextModels.map(toDraftModel);\n drafts.forEach(draft => traverse(draft, drafts));\n const slice = Slice.fromModels(editorHost.std.doc, drafts);\n return getContentFromSlice(editorHost, slice, type);\n}\n\nexport async function getSelectedTextContent(\n editorHost: EditorHost,\n type: 'markdown' | 'plain-text' = 'markdown'\n) {\n const selectedModels = getSelectedModels(editorHost);\n assertExists(selectedModels);\n return getTextContentFromBlockModels(editorHost, selectedModels, type);\n}\n\nexport async function selectAboveBlocks(editorHost: EditorHost, num = 10) {\n let selectedModels = getSelectedModels(editorHost);\n assertExists(selectedModels);\n\n const lastLeafModel = selectedModels[selectedModels.length - 1];\n\n let noteModel: BlockModel | null = lastLeafModel;\n let lastRootModel: BlockModel | null = null;\n while (noteModel && noteModel.flavour !== 'affine:note') {\n lastRootModel = noteModel;\n noteModel = editorHost.doc.getParent(noteModel);\n }\n assertExists(noteModel);\n assertExists(lastRootModel);\n\n const endIndex = noteModel.children.indexOf(lastRootModel) + 1;\n const startIndex = Math.max(0, endIndex - num);\n const startBlock = noteModel.children[startIndex];\n\n selectedModels = [];\n let stop = false;\n const traverse = (model: BlockModel): void => {\n if (stop) return;\n\n selectedModels.push(model);\n\n if (model === lastLeafModel) {\n stop = true;\n return;\n }\n\n model.children.forEach(child => traverse(child));\n };\n noteModel.children.slice(startIndex, endIndex).forEach(traverse);\n\n const { selection } = editorHost;\n selection.set([\n selection.create('text', {\n from: {\n blockId: startBlock.id,\n index: 0,\n length: startBlock.text?.length ?? 0,\n },\n to: {\n blockId: lastLeafModel.id,\n index: 0,\n length: selection.find('text')?.from.index ?? 0,\n },\n }),\n ]);\n\n return getTextContentFromBlockModels(editorHost, selectedModels);\n}\n\nexport const stopPropagation = (e: Event) => {\n e.stopPropagation();\n};\n\nexport function getSurfaceElementFromEditor(editor: EditorHost) {\n const { doc } = editor;\n const surfaceModel = doc.getBlockByFlavour('affine:surface')[0];\n assertExists(surfaceModel);\n\n const surfaceId = surfaceModel.id;\n const surfaceElement = editor.querySelector(\n `affine-surface[data-block-id=\"${surfaceId}\"]`\n ) as SurfaceBlockComponent;\n assertExists(surfaceElement);\n\n return surfaceElement;\n}\n\nexport const getFirstImageInFrame = (\n frame: FrameBlockModel,\n editor: EditorHost\n) => {\n const edgelessRoot = getEdgelessRootFromEditor(editor);\n const elements = edgelessRoot.service.frame.getElementsInFrame(frame, false);\n const image = elements.find(ele => {\n if (!BlocksUtils.isCanvasElement(ele)) {\n return ele.flavour === 'affine:image';\n }\n return false;\n }) as ImageBlockModel | undefined;\n return image?.id;\n};\n\nexport const getSelections = (\n host: EditorHost,\n mode: 'flat' | 'highest' = 'flat'\n) => {\n const [_, data] = host.command\n .chain()\n .tryAll(chain => [\n chain.getTextSelection(),\n chain.getBlockSelections(),\n chain.getImageSelections(),\n ])\n .getSelectedBlocks({ types: ['text', 'block', 'image'], mode })\n .run();\n\n return data;\n};\n\nexport const getSelectedImagesAsBlobs = async (host: EditorHost) => {\n const [_, data] = host.command\n .chain()\n .tryAll(chain => [\n chain.getTextSelection(),\n chain.getBlockSelections(),\n chain.getImageSelections(),\n ])\n .getSelectedBlocks({\n types: ['block', 'image'],\n })\n .run();\n\n const blobs = await Promise.all(\n data.selectedBlocks?.map(async b => {\n const sourceId = (b.model as ImageBlockModel).sourceId;\n if (!sourceId) return null;\n const blob = await host.doc.blobSync.get(sourceId);\n if (!blob) return null;\n return new File([blob], sourceId);\n }) ?? []\n );\n return blobs.filter((blob): blob is File => !!blob);\n};\n\nexport const getSelectedNoteAnchor = (host: EditorHost, id: string) => {\n return host.querySelector(`[data-portal-block-id=\"${id}\"] .note-background`);\n};\n\nexport function getCopilotSelectedElems(\n host: EditorHost\n): BlockSuite.EdgelessModel[] {\n const service = getService(host);\n const copilotWidget = getEdgelessCopilotWidget(host);\n\n if (copilotWidget.visible) {\n return (service.tool.controllers['copilot'] as CopilotSelectionController)\n .selectedElements;\n }\n\n return service.selection.selectedElements;\n}\n\nexport const imageCustomInput = async (host: EditorHost) => {\n const selectedElements = getCopilotSelectedElems(host);\n if (selectedElements.length !== 1) return;\n\n const imageBlock = selectedElements[0];\n if (!(imageBlock instanceof ImageBlockModel)) return;\n if (!imageBlock.sourceId) return;\n\n const blob = await host.doc.blobSync.get(imageBlock.sourceId);\n if (!blob) return;\n\n return {\n attachments: [blob],\n };\n};\n","import type { EditorHost } from '@blocksuite/block-std';\nimport {\n AFFINE_AI_PANEL_WIDGET,\n AffineAIPanelWidget,\n type AffineAIPanelWidgetConfig,\n type AIItemConfig,\n ImageBlockModel,\n isInsideEdgelessEditor,\n matchFlavours,\n NoteDisplayMode,\n} from '@blocksuite/blocks';\nimport { assertExists, Bound } from '@blocksuite/global/utils';\nimport type { TemplateResult } from 'lit';\n\nimport {\n AIPenIcon,\n AIStarIconWithAnimation,\n ChatWithAIIcon,\n CreateIcon,\n DiscardIcon,\n InsertBelowIcon,\n InsertTopIcon,\n ReplaceIcon,\n RetryIcon,\n} from './_common/icons';\nimport { INSERT_ABOVE_ACTIONS } from './actions/consts';\nimport { createTextRenderer } from './messages/text';\nimport { AIProvider } from './provider';\nimport { reportResponse } from './utils/action-reporter';\nimport { findNoteBlockModel, getService } from './utils/edgeless';\nimport {\n copyTextAnswer,\n insertAbove,\n insertBelow,\n replace,\n} from './utils/editor-actions';\nimport { insertFromMarkdown } from './utils/markdown-utils';\nimport { getSelections } from './utils/selection-utils';\n\nfunction getSelection(host: EditorHost) {\n const textSelection = host.selection.find('text');\n const mode = textSelection ? 'flat' : 'highest';\n const { selectedBlocks } = getSelections(host, mode);\n assertExists(selectedBlocks);\n const length = selectedBlocks.length;\n const firstBlock = selectedBlocks[0];\n const lastBlock = selectedBlocks[length - 1];\n const selectedModels = selectedBlocks.map(block => block.model);\n return {\n textSelection,\n selectedModels,\n firstBlock,\n lastBlock,\n };\n}\n\nfunction asCaption(\n host: EditorHost,\n id?: T\n): AIItemConfig {\n return {\n name: 'Use as caption',\n icon: AIPenIcon,\n showWhen: () => {\n const panel = getAIPanel(host);\n return id === 'generateCaption' && !!panel.answer;\n },\n handler: () => {\n reportResponse('result:use-as-caption');\n const panel = getAIPanel(host);\n const caption = panel.answer;\n if (!caption) return;\n\n const { selectedBlocks } = getSelections(host);\n if (!selectedBlocks || selectedBlocks.length !== 1) return;\n\n const imageBlock = selectedBlocks[0].model;\n if (!(imageBlock instanceof ImageBlockModel)) return;\n\n host.doc.updateBlock(imageBlock, { caption });\n panel.hide();\n },\n };\n}\n\nfunction createNewNote(host: EditorHost): AIItemConfig {\n return {\n name: 'Create new note',\n icon: CreateIcon,\n showWhen: () => {\n const panel = getAIPanel(host);\n return !!panel.answer && isInsideEdgelessEditor(host);\n },\n handler: () => {\n reportResponse('result:add-note');\n // get the note block\n const { selectedBlocks } = getSelections(host);\n if (!selectedBlocks || !selectedBlocks.length) return;\n const firstBlock = selectedBlocks[0];\n const noteModel = findNoteBlockModel(firstBlock);\n if (!noteModel) return;\n\n // create a new note block at the left of the current note block\n const bound = Bound.deserialize(noteModel.xywh);\n const newBound = new Bound(bound.x - bound.w - 20, bound.y, bound.w, 72);\n const doc = host.doc;\n const panel = getAIPanel(host);\n const service = getService(host);\n doc.transact(() => {\n assertExists(doc.root);\n const noteBlockId = doc.addBlock(\n 'affine:note',\n {\n xywh: newBound.serialize(),\n displayMode: NoteDisplayMode.EdgelessOnly,\n index: service.generateIndex('affine:note'),\n },\n doc.root.id\n );\n\n assertExists(panel.answer);\n insertFromMarkdown(host, panel.answer, doc, noteBlockId)\n .then(() => {\n service.selection.set({\n elements: [noteBlockId],\n editing: false,\n });\n\n // set the viewport to show the new note block and original note block\n const newNote = doc.getBlock(noteBlockId)?.model;\n if (!newNote || !matchFlavours(newNote, ['affine:note'])) return;\n const newNoteBound = Bound.deserialize(newNote.xywh);\n\n const bounds = [bound, newNoteBound];\n const { zoom, centerX, centerY } = service.getFitToScreenData(\n [20, 20, 20, 20],\n bounds\n );\n service.viewport.setViewport(zoom, [centerX, centerY]);\n })\n .catch(err => {\n console.error(err);\n });\n });\n // hide the panel\n panel.hide();\n },\n };\n}\n\nasync function replaceWithAnswer(panel: AffineAIPanelWidget) {\n const { host } = panel;\n const selection = getSelection(host);\n if (!selection || !panel.answer) return;\n\n const { textSelection, firstBlock, selectedModels } = selection;\n await replace(host, panel.answer, firstBlock, selectedModels, textSelection);\n\n panel.hide();\n}\n\nasync function insertAnswerBelow(panel: AffineAIPanelWidget) {\n const { host } = panel;\n const selection = getSelection(host);\n\n if (!selection || !panel.answer) {\n return;\n }\n\n const { lastBlock } = selection;\n await insertBelow(host, panel.answer, lastBlock);\n panel.hide();\n}\n\nasync function insertAnswerAbove(panel: AffineAIPanelWidget) {\n const { host } = panel;\n const selection = getSelection(host);\n if (!selection || !panel.answer) return;\n\n const { firstBlock } = selection;\n await insertAbove(host, panel.answer, firstBlock);\n panel.hide();\n}\n\nexport function buildTextResponseConfig<\n T extends keyof BlockSuitePresets.AIActions,\n>(panel: AffineAIPanelWidget, id?: T) {\n const host = panel.host;\n\n return [\n {\n name: 'Response',\n items: [\n {\n name: 'Insert below',\n icon: InsertBelowIcon,\n showWhen: () =>\n !!panel.answer && (!id || !INSERT_ABOVE_ACTIONS.includes(id)),\n handler: () => {\n reportResponse('result:insert');\n insertAnswerBelow(panel).catch(console.error);\n },\n },\n {\n name: 'Insert above',\n icon: InsertTopIcon,\n showWhen: () =>\n !!panel.answer && !!id && INSERT_ABOVE_ACTIONS.includes(id),\n handler: () => {\n reportResponse('result:insert');\n insertAnswerAbove(panel).catch(console.error);\n },\n },\n asCaption(host, id),\n {\n name: 'Replace selection',\n icon: ReplaceIcon,\n showWhen: () => !!panel.answer,\n handler: () => {\n reportResponse('result:replace');\n replaceWithAnswer(panel).catch(console.error);\n },\n },\n createNewNote(host),\n ],\n },\n {\n name: '',\n items: [\n {\n name: 'Continue in chat',\n icon: ChatWithAIIcon,\n handler: () => {\n reportResponse('result:continue-in-chat');\n AIProvider.slots.requestOpenWithChat.emit({ host });\n panel.hide();\n },\n },\n {\n name: 'Regenerate',\n icon: RetryIcon,\n handler: () => {\n reportResponse('result:retry');\n panel.generate();\n },\n },\n {\n name: 'Discard',\n icon: DiscardIcon,\n handler: () => {\n panel.discard();\n },\n },\n ],\n },\n ];\n}\n\nexport function buildErrorResponseConfig<\n T extends keyof BlockSuitePresets.AIActions,\n>(panel: AffineAIPanelWidget, id?: T) {\n const host = panel.host;\n\n return [\n {\n name: 'Response',\n items: [\n {\n name: 'Replace selection',\n icon: ReplaceIcon,\n showWhen: () => !!panel.answer,\n handler: () => {\n replaceWithAnswer(panel).catch(console.error);\n },\n },\n {\n name: 'Insert below',\n icon: InsertBelowIcon,\n showWhen: () =>\n !!panel.answer && (!id || !INSERT_ABOVE_ACTIONS.includes(id)),\n handler: () => {\n insertAnswerBelow(panel).catch(console.error);\n },\n },\n {\n name: 'Insert above',\n icon: InsertTopIcon,\n showWhen: () =>\n !!panel.answer && !!id && INSERT_ABOVE_ACTIONS.includes(id),\n handler: () => {\n reportResponse('result:insert');\n insertAnswerAbove(panel).catch(console.error);\n },\n },\n asCaption(host, id),\n createNewNote(host),\n ],\n },\n {\n name: '',\n items: [\n {\n name: 'Retry',\n icon: RetryIcon,\n showWhen: () => true,\n handler: () => {\n reportResponse('result:retry');\n panel.generate();\n },\n },\n {\n name: 'Discard',\n icon: DiscardIcon,\n showWhen: () => !!panel.answer,\n handler: () => {\n panel.discard();\n },\n },\n ],\n },\n ];\n}\n\nexport function buildFinishConfig(\n panel: AffineAIPanelWidget,\n id?: T\n) {\n return {\n responses: buildTextResponseConfig(panel, id),\n actions: [],\n };\n}\n\nexport function buildErrorConfig(\n panel: AffineAIPanelWidget,\n id?: T\n) {\n return {\n upgrade: () => {\n AIProvider.slots.requestUpgradePlan.emit({ host: panel.host });\n panel.hide();\n },\n login: () => {\n AIProvider.slots.requestLogin.emit({ host: panel.host });\n panel.hide();\n },\n cancel: () => {\n panel.hide();\n },\n responses: buildErrorResponseConfig(panel, id),\n };\n}\n\nexport function buildGeneratingConfig(generatingIcon?: TemplateResult<1>) {\n return {\n generatingIcon: generatingIcon ?? AIStarIconWithAnimation,\n };\n}\n\nexport function buildCopyConfig(panel: AffineAIPanelWidget) {\n return {\n allowed: true,\n onCopy: () => {\n return copyTextAnswer(panel);\n },\n };\n}\n\nexport function buildAIPanelConfig(\n panel: AffineAIPanelWidget\n): AffineAIPanelWidgetConfig {\n return {\n answerRenderer: createTextRenderer(panel.host, { maxHeight: 320 }),\n finishStateConfig: buildFinishConfig(panel),\n generatingStateConfig: buildGeneratingConfig(),\n errorStateConfig: buildErrorConfig(panel),\n copy: buildCopyConfig(panel),\n };\n}\n\nexport const getAIPanel = (host: EditorHost): AffineAIPanelWidget => {\n const rootBlockId = host.doc.root?.id;\n assertExists(rootBlockId);\n const aiPanel = host.view.getWidget(AFFINE_AI_PANEL_WIDGET, rootBlockId);\n assertExists(aiPanel);\n if (!(aiPanel instanceof AffineAIPanelWidget)) {\n throw new Error('AI panel not found');\n }\n return aiPanel;\n};\n","import type { EditorHost } from '@blocksuite/block-std';\nimport type {\n AffineAIPanelWidget,\n AffineAIPanelWidgetConfig,\n AIError,\n} from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport type { TemplateResult } from 'lit';\n\nimport {\n buildCopyConfig,\n buildErrorConfig,\n buildFinishConfig,\n buildGeneratingConfig,\n getAIPanel,\n} from '../ai-panel';\nimport { createTextRenderer } from '../messages/text';\nimport { AIProvider } from '../provider';\nimport { reportResponse } from '../utils/action-reporter';\nimport {\n getSelectedImagesAsBlobs,\n getSelectedTextContent,\n getSelections,\n selectAboveBlocks,\n} from '../utils/selection-utils';\n\nexport function bindTextStream(\n stream: BlockSuitePresets.TextStream,\n {\n update,\n finish,\n signal,\n }: {\n update: (text: string) => void;\n finish: (state: 'success' | 'error' | 'aborted', err?: AIError) => void;\n signal?: AbortSignal;\n }\n) {\n (async () => {\n let answer = '';\n signal?.addEventListener('abort', () => {\n finish('aborted');\n reportResponse('aborted:stop');\n });\n for await (const data of stream) {\n if (signal?.aborted) {\n return;\n }\n answer += data;\n update(answer);\n }\n finish('success');\n })().catch(err => {\n if (signal?.aborted) return;\n if (err.name === 'AbortError') {\n finish('aborted');\n } else {\n finish('error', err);\n }\n });\n}\n\nexport function actionToStream(\n id: T,\n signal?: AbortSignal,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >,\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n const action = AIProvider.actions[id];\n if (!action || typeof action !== 'function') return;\n return (host: EditorHost): BlockSuitePresets.TextStream => {\n let stream: BlockSuitePresets.TextStream | undefined;\n return {\n async *[Symbol.asyncIterator]() {\n const { currentTextSelection, selectedBlocks } = getSelections(host);\n\n let markdown: string;\n let attachments: File[] = [];\n\n if (currentTextSelection?.isCollapsed()) {\n markdown = await selectAboveBlocks(host);\n } else {\n [markdown, attachments] = await Promise.all([\n getSelectedTextContent(host),\n getSelectedImagesAsBlobs(host),\n ]);\n }\n\n // for now if there are more than one selected blocks, we will not omit the attachments\n const sendAttachments =\n selectedBlocks?.length === 1 && attachments.length > 0;\n const models = selectedBlocks?.map(block => block.model);\n const control = trackerOptions?.control ?? 'format-bar';\n const where = trackerOptions?.where ?? 'ai-panel';\n const options = {\n ...variants,\n attachments: sendAttachments ? attachments : undefined,\n input: sendAttachments ? '' : markdown,\n stream: true,\n host,\n models,\n signal,\n control,\n where,\n docId: host.doc.id,\n workspaceId: host.doc.collection.id,\n } as Parameters[0];\n // @ts-expect-error TODO(@Peng): maybe fix this\n stream = action(options);\n if (!stream) return;\n yield* stream;\n },\n };\n };\n}\n\nexport function actionToGenerateAnswer<\n T extends keyof BlockSuitePresets.AIActions,\n>(\n id: T,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >,\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n return (host: EditorHost) => {\n return ({\n signal,\n update,\n finish,\n }: {\n input: string;\n signal?: AbortSignal;\n update: (text: string) => void;\n finish: (state: 'success' | 'error' | 'aborted', err?: AIError) => void;\n }) => {\n const { selectedBlocks: blocks } = getSelections(host);\n if (!blocks || blocks.length === 0) return;\n const stream = actionToStream(\n id,\n signal,\n variants,\n trackerOptions\n )?.(host);\n if (!stream) return;\n bindTextStream(stream, { update, finish, signal });\n };\n };\n}\n\n/**\n * TODO: Should update config according to the action type\n * When support mind-map. generate image, generate slides on doc mode or in edgeless note block\n * Currently, only support text action\n */\nfunction updateAIPanelConfig(\n aiPanel: AffineAIPanelWidget,\n id: T,\n generatingIcon: TemplateResult<1>,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >,\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n const { config, host } = aiPanel;\n assertExists(config);\n config.generateAnswer = actionToGenerateAnswer(\n id,\n variants,\n trackerOptions\n )(host);\n config.answerRenderer = createTextRenderer(host, { maxHeight: 320 });\n config.finishStateConfig = buildFinishConfig(aiPanel, id);\n config.generatingStateConfig = buildGeneratingConfig(generatingIcon);\n config.errorStateConfig = buildErrorConfig(aiPanel);\n config.copy = buildCopyConfig(aiPanel);\n config.discardCallback = () => {\n reportResponse('result:discard');\n };\n}\n\nexport function actionToHandler(\n id: T,\n generatingIcon: TemplateResult<1>,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >,\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n return (host: EditorHost) => {\n const aiPanel = getAIPanel(host);\n updateAIPanelConfig(aiPanel, id, generatingIcon, variants, trackerOptions);\n const { selectedBlocks: blocks } = getSelections(aiPanel.host);\n if (!blocks || blocks.length === 0) return;\n const block = blocks.at(-1);\n assertExists(block);\n aiPanel.toggle(block, 'placeholder');\n };\n}\n\nexport function handleInlineAskAIAction(host: EditorHost) {\n const panel = getAIPanel(host);\n const selection = host.selection.find('text');\n const lastBlockPath = selection\n ? (selection.to?.blockId ?? selection.blockId)\n : null;\n if (!lastBlockPath) return;\n const block = host.view.getBlock(lastBlockPath);\n if (!block) return;\n const generateAnswer: AffineAIPanelWidgetConfig['generateAnswer'] = ({\n finish,\n input,\n signal,\n update,\n }) => {\n if (!AIProvider.actions.chat) return;\n\n // recover selection to get content from above blocks\n assertExists(selection);\n host.selection.set([selection]);\n\n selectAboveBlocks(host)\n .then(context => {\n assertExists(AIProvider.actions.chat);\n const stream = AIProvider.actions.chat({\n input: `${context}\\n${input}`,\n stream: true,\n host,\n where: 'inline-chat-panel',\n control: 'chat-send',\n docId: host.doc.id,\n workspaceId: host.doc.collection.id,\n });\n bindTextStream(stream, { update, finish, signal });\n })\n .catch(console.error);\n };\n assertExists(panel.config);\n panel.config.generateAnswer = generateAnswer;\n panel.toggle(block);\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport type {\n AffineAIPanelWidgetConfig,\n MindmapStyle,\n} from '@blocksuite/blocks';\nimport { markdownToMindmap, MiniMindmapPreview } from '@blocksuite/blocks';\nimport { noop } from '@blocksuite/global/utils';\nimport { html, nothing } from 'lit';\n\nimport { getAIPanel } from '../ai-panel';\n\nnoop(MiniMindmapPreview);\n\nexport const createMindmapRenderer: (\n host: EditorHost,\n /**\n * Used to store data for later use during rendering.\n */\n ctx: {\n get: () => Record;\n set: (data: Record) => void;\n },\n style?: MindmapStyle\n) => AffineAIPanelWidgetConfig['answerRenderer'] = (host, ctx, style) => {\n return (answer, state) => {\n if (state === 'generating') {\n const panel = getAIPanel(host);\n panel.generatingElement?.updateLoadingProgress(2);\n }\n\n if (state !== 'finished' && state !== 'error') {\n return nothing;\n }\n\n return html``;\n };\n};\n\n/**\n * Creates a renderer for executing a handler.\n * The ai panel will not display anything after the answer is generated.\n */\nexport const createMindmapExecuteRenderer: (\n host: EditorHost,\n /**\n * Used to store data for later use during rendering.\n */\n ctx: {\n get: () => Record;\n set: (data: Record) => void;\n },\n handler: (ctx: {\n get: () => Record;\n set: (data: Record) => void;\n }) => void\n) => AffineAIPanelWidgetConfig['answerRenderer'] = (host, ctx, handler) => {\n return (answer, state) => {\n if (state !== 'finished') {\n const panel = getAIPanel(host);\n panel.generatingElement?.updateLoadingProgress(2);\n return nothing;\n }\n\n ctx.set({\n node: markdownToMindmap(answer, host.doc),\n });\n\n handler(ctx);\n\n return nothing;\n };\n};\n","import type { EditorHost } from '@blocksuite/block-std';\nimport { MarkdownAdapter, titleMiddleware } from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport { type BlockModel, Job, type Slice } from '@blocksuite/store';\n\nexport async function getMarkdownFromSlice(host: EditorHost, slice: Slice) {\n const job = new Job({\n collection: host.std.doc.collection,\n middlewares: [titleMiddleware],\n });\n const markdownAdapter = new MarkdownAdapter(job);\n const markdown = await markdownAdapter.fromSlice(slice);\n if (!markdown) {\n return '';\n }\n\n return markdown.file;\n}\nexport const markdownToSnapshot = async (\n markdown: string,\n host: EditorHost\n) => {\n const job = new Job({ collection: host.std.doc.collection });\n const markdownAdapter = new MarkdownAdapter(job);\n const { blockVersions, workspaceVersion, pageVersion } =\n host.std.doc.collection.meta;\n if (!blockVersions || !workspaceVersion || !pageVersion)\n throw new Error(\n 'Need blockVersions, workspaceVersion, pageVersion meta information to get slice'\n );\n\n const payload = {\n file: markdown,\n assets: job.assetsManager,\n blockVersions,\n pageVersion,\n workspaceVersion,\n workspaceId: host.std.doc.collection.id,\n pageId: host.std.doc.id,\n };\n\n const snapshot = await markdownAdapter.toSliceSnapshot(payload);\n assertExists(snapshot, 'import markdown failed, expected to get a snapshot');\n\n return {\n snapshot,\n job,\n };\n};\nexport async function insertFromMarkdown(\n host: EditorHost,\n markdown: string,\n parent?: string,\n index?: number\n) {\n const { snapshot, job } = await markdownToSnapshot(markdown, host);\n\n const snapshots = snapshot.content[0].children;\n\n const models: BlockModel[] = [];\n for (let i = 0; i < snapshots.length; i++) {\n const blockSnapshot = snapshots[i];\n const model = await job.snapshotToBlock(\n blockSnapshot,\n host.std.doc,\n parent,\n (index ?? 0) + i\n );\n if (model) {\n models.push(model);\n }\n }\n\n return models;\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport {\n BlocksUtils,\n EdgelessRootService,\n type FrameBlockModel,\n type ImageBlockModel,\n type SurfaceBlockComponent,\n} from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport { Slice } from '@blocksuite/store';\n\nimport { getMarkdownFromSlice } from './markdown-utils';\n\nexport const getRootService = (host: EditorHost) => {\n return host.std.spec.getService('affine:page');\n};\n\nexport function getEdgelessRootFromEditor(editor: EditorHost) {\n const edgelessRoot = editor.getElementsByTagName('affine-edgeless-root')[0];\n if (!edgelessRoot) {\n alert('Please switch to edgeless mode');\n throw new Error('Please open switch to edgeless mode');\n }\n return edgelessRoot;\n}\nexport function getEdgelessService(editor: EditorHost) {\n const rootService = editor.std.spec.getService('affine:page');\n if (rootService instanceof EdgelessRootService) {\n return rootService;\n }\n alert('Please switch to edgeless mode');\n throw new Error('Please open switch to edgeless mode');\n}\n\nexport async function selectedToCanvas(editor: EditorHost) {\n const edgelessRoot = getEdgelessRootFromEditor(editor);\n const { notes, frames, shapes, images } = BlocksUtils.splitElements(\n edgelessRoot.service.selection.selectedElements\n );\n if (notes.length + frames.length + images.length + shapes.length === 0) {\n return;\n }\n const canvas = await edgelessRoot.clipboardController.toCanvas(\n [...notes, ...frames, ...images],\n shapes\n );\n if (!canvas) {\n return;\n }\n return canvas;\n}\n\nexport async function frameToCanvas(\n frame: FrameBlockModel,\n editor: EditorHost\n) {\n const edgelessRoot = getEdgelessRootFromEditor(editor);\n const { notes, frames, shapes, images } = BlocksUtils.splitElements(\n edgelessRoot.service.frame.getElementsInFrame(frame, true)\n );\n if (notes.length + frames.length + images.length + shapes.length === 0) {\n return;\n }\n const canvas = await edgelessRoot.clipboardController.toCanvas(\n [...notes, ...frames, ...images],\n shapes\n );\n if (!canvas) {\n return;\n }\n return canvas;\n}\n\nexport async function selectedToPng(editor: EditorHost) {\n return (await selectedToCanvas(editor))?.toDataURL('image/png');\n}\n\nexport async function getSelectedTextContent(editorHost: EditorHost) {\n const slice = Slice.fromModels(\n editorHost.std.doc,\n getRootService(editorHost).selectedModels\n );\n return getMarkdownFromSlice(editorHost, slice);\n}\n\nexport const stopPropagation = (e: Event) => {\n e.stopPropagation();\n};\n\nexport function getSurfaceElementFromEditor(editor: EditorHost) {\n const { doc } = editor;\n const surfaceModel = doc.getBlockByFlavour('affine:surface')[0];\n assertExists(surfaceModel);\n\n const surfaceId = surfaceModel.id;\n const surfaceElement = editor.querySelector(\n `affine-surface[data-block-id=\"${surfaceId}\"]`\n ) as SurfaceBlockComponent;\n assertExists(surfaceElement);\n\n return surfaceElement;\n}\n\nexport const getFirstImageInFrame = (\n frame: FrameBlockModel,\n editor: EditorHost\n) => {\n const edgelessRoot = getEdgelessRootFromEditor(editor);\n const elements = edgelessRoot.service.frame.getElementsInFrame(frame, false);\n const image = elements.find(ele => {\n if (!BlocksUtils.isCanvasElement(ele)) {\n return ele.flavour === 'affine:image';\n }\n return false;\n }) as ImageBlockModel | undefined;\n return image?.id;\n};\n","import { Bound } from '@blocksuite/global/utils';\nimport { nanoid } from '@blocksuite/store';\n\nimport { AIProvider } from '../provider';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst replaceText = (text: Record, template: any) => {\n if (template != null && typeof template === 'object') {\n if (Array.isArray(template)) {\n template.forEach(v => replaceText(text, v));\n return;\n }\n if (typeof template.insert === 'string') {\n template.insert = text[template.insert] ?? template.insert;\n }\n Object.values(template).forEach(v => replaceText(text, v));\n return;\n }\n};\n\nfunction seededRNG(seed: string) {\n const a = 1664525;\n const c = 1013904223;\n const m = 2 ** 32;\n const seededNumber = stringToNumber(seed);\n return ((a * seededNumber + c) % m) / m;\n\n function stringToNumber(str: string) {\n let res = 0;\n for (let i = 0; i < str.length; i++) {\n const character = str.charCodeAt(i);\n res += character;\n }\n return res;\n }\n}\n\nconst getImageUrlByKeyword =\n (keyword: string) =>\n async (w: number, h: number): Promise => {\n const photos = await AIProvider.photoEngine?.searchImages({\n query: keyword,\n width: w,\n height: h,\n });\n\n if (photos == null || photos.length === 0) {\n return ''; // fixme: give a default image\n }\n\n // use a stable random seed\n const rng = seededRNG(`${w}.${h}.${keyword}`);\n return photos[Math.floor(rng * photos.length)];\n };\n\nconst getImages = async (\n images: Record Promise | string>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: any\n): Promise => {\n const imgs: Record<\n string,\n {\n id: string;\n width: number;\n height: number;\n }\n > = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const run = (data: any) => {\n if (data != null && typeof data === 'object') {\n if (Array.isArray(data)) {\n data.forEach(v => run(v));\n return;\n }\n if (typeof data.caption === 'string') {\n const bound = Bound.deserialize(data.xywh);\n const id = nanoid();\n data.sourceId = id;\n imgs[data.caption] = {\n id: id,\n width: bound.w,\n height: bound.h,\n };\n delete data.caption;\n }\n Object.values(data).forEach(v => run(v));\n return;\n }\n };\n run(template);\n const list = await Promise.all(\n Object.entries(imgs).map(async ([name, data]) => {\n const getImage = images[name];\n if (!getImage) {\n return;\n }\n const url = await getImage(data.width, data.height);\n return {\n id: data.id,\n url,\n } satisfies TemplateImage;\n })\n );\n const notNull = (v?: TemplateImage): v is TemplateImage => {\n return v != null;\n };\n return list.filter(notNull);\n};\n\nexport type PPTSection = {\n title: string;\n content: string;\n keywords: string;\n};\n\nexport type TemplateImage = {\n id: string;\n url: string;\n};\n\ntype DocTemplate = {\n images: TemplateImage[];\n content: unknown;\n};\n\nconst createBasicCover = async (\n title: string,\n section1: PPTSection\n): Promise => {\n const templates = (await import('./templates/cover.json')).default;\n const template = getRandomElement(templates);\n replaceText(\n {\n title: title,\n 'section1.title': section1.title,\n 'section1.content': section1.content,\n },\n template\n );\n return {\n images: await getImages(\n {\n 'section1.image': getImageUrlByKeyword(section1.keywords),\n },\n template\n ),\n content: template,\n };\n};\n\nfunction getRandomElement(arr: T[]): T {\n return JSON.parse(\n JSON.stringify(arr[Math.floor(Math.random() * arr.length)])\n );\n}\n\nconst basic1section = async (\n title: string,\n section1: PPTSection\n): Promise => {\n const templates = (await import('./templates/one.json')).default;\n const template = getRandomElement(templates);\n replaceText(\n {\n title: title,\n 'section1.title': section1.title,\n 'section1.content': section1.content,\n },\n template\n );\n const images = await getImages(\n {\n 'section1.image': getImageUrlByKeyword(section1.keywords),\n 'section1.image2': getImageUrlByKeyword(section1.keywords),\n 'section1.image3': getImageUrlByKeyword(section1.keywords),\n },\n template\n );\n\n return {\n images: images,\n content: template,\n };\n};\n\nconst basic2section = async (\n title: string,\n section1: PPTSection,\n section2: PPTSection\n): Promise => {\n const templates = (await import('./templates/two.json')).default;\n const template = getRandomElement(templates);\n replaceText(\n {\n title: title,\n 'section1.title': section1.title,\n 'section1.content': section1.content,\n 'section2.title': section2.title,\n 'section2.content': section2.content,\n },\n template\n );\n return {\n images: await getImages(\n {\n 'section1.image': getImageUrlByKeyword(section1.keywords),\n 'section2.image': getImageUrlByKeyword(section2.keywords),\n background: () =>\n 'https://cdn.affine.pro/ppt-images/background/basic_2_selection_background.png',\n },\n template\n ),\n content: template,\n };\n};\n\nconst basic3section = async (\n title: string,\n section1: PPTSection,\n section2: PPTSection,\n section3: PPTSection\n): Promise => {\n const templates = (await import('./templates/three.json')).default;\n const template = getRandomElement(templates);\n replaceText(\n {\n title: title,\n 'section1.title': section1.title,\n 'section1.content': section1.content,\n 'section2.title': section2.title,\n 'section2.content': section2.content,\n 'section3.title': section3.title,\n 'section3.content': section3.content,\n },\n template\n );\n return {\n images: await getImages(\n {\n 'section1.image': getImageUrlByKeyword(section1.keywords),\n 'section2.image': getImageUrlByKeyword(section2.keywords),\n 'section3.image': getImageUrlByKeyword(section3.keywords),\n background: () =>\n 'https://cdn.affine.pro/ppt-images/background/basic_3_selection_background.png',\n },\n template\n ),\n content: template,\n };\n};\n\nconst basic4section = async (\n title: string,\n section1: PPTSection,\n section2: PPTSection,\n section3: PPTSection,\n section4: PPTSection\n): Promise => {\n const templates = (await import('./templates/four.json')).default;\n const template = getRandomElement(templates);\n replaceText(\n {\n title: title,\n 'section1.title': section1.title,\n 'section1.content': section1.content,\n 'section2.title': section2.title,\n 'section2.content': section2.content,\n 'section3.title': section3.title,\n 'section3.content': section3.content,\n 'section4.title': section4.title,\n 'section4.content': section4.content,\n },\n template\n );\n return {\n images: await getImages(\n {\n 'section1.image': getImageUrlByKeyword(section1.keywords),\n 'section2.image': getImageUrlByKeyword(section2.keywords),\n 'section3.image': getImageUrlByKeyword(section3.keywords),\n 'section4.image': getImageUrlByKeyword(section4.keywords),\n background: () =>\n 'https://cdn.affine.pro/ppt-images/background/basic_4_selection_background.png',\n },\n template\n ),\n content: template,\n };\n};\n\nexport type PPTDoc = {\n isCover: boolean;\n title: string;\n sections: PPTSection[];\n};\n\nexport const basicTheme = (doc: PPTDoc) => {\n if (doc.isCover) {\n return createBasicCover(doc.title, doc.sections[0]);\n }\n if (doc.sections.length === 1) {\n return basic1section(doc.title, doc.sections[0]);\n }\n if (doc.sections.length === 2) {\n return basic2section(doc.title, doc.sections[0], doc.sections[1]);\n }\n if (doc.sections.length === 3) {\n return basic3section(\n doc.title,\n doc.sections[0],\n doc.sections[1],\n doc.sections[2]\n );\n }\n return basic4section(\n doc.title,\n doc.sections[0],\n doc.sections[1],\n doc.sections[2],\n doc.sections[3]\n );\n};\n","import type { EditorHost } from '@blocksuite/block-std';\nimport type { EdgelessRootService } from '@blocksuite/blocks';\nimport type { BlockSnapshot } from '@blocksuite/store';\n\nimport { markdownToSnapshot } from '../_common/markdown-utils';\nimport { getSurfaceElementFromEditor } from '../_common/selection-utils';\nimport {\n basicTheme,\n type PPTDoc,\n type PPTSection,\n type TemplateImage,\n} from './template';\n\nexport const PPTBuilder = (host: EditorHost) => {\n const service = host.spec.getService('affine:page');\n const docs: PPTDoc[] = [];\n const contents: unknown[] = [];\n const allImages: TemplateImage[][] = [];\n\n const addDoc = async (block: BlockSnapshot) => {\n const sections = block.children.map(v => {\n const title = getText(v);\n const keywords = getText(v.children[0]);\n const content = getText(v.children[1]);\n return {\n title,\n keywords,\n content,\n } satisfies PPTSection;\n });\n const doc: PPTDoc = {\n isCover: docs.length === 0,\n title: getText(block),\n sections,\n };\n docs.push(doc);\n\n if (doc.isCover) return;\n const job = service.createTemplateJob('template');\n const { images, content } = await basicTheme(doc);\n contents.push(content);\n allImages.push(images);\n if (images.length) {\n await Promise.all(\n images.map(({ id, url }) =>\n fetch(url)\n .then(res => res.blob())\n .then(blob => job.job.assets.set(id, blob))\n )\n );\n }\n await job.insertTemplate(content);\n getSurfaceElementFromEditor(host).refresh();\n };\n\n return {\n process: async (text: string) => {\n try {\n const snapshot = await markdownToSnapshot(text, host);\n\n const block = snapshot.snapshot.content[0];\n for (const child of block.children) {\n await addDoc(child);\n const { centerX, centerY, zoom } = service.getFitToScreenData();\n service.viewport.setViewport(zoom, [centerX, centerY]);\n }\n } catch (e) {\n console.error(e);\n }\n\n return { contents, images: allImages };\n },\n done: async (text: string) => {\n const snapshot = await markdownToSnapshot(text, host);\n const block = snapshot.snapshot.content[0];\n await addDoc(block.children[block.children.length - 1]);\n },\n };\n};\n\nconst getText = (block: BlockSnapshot) => {\n // @ts-expect-error allow\n return block.props.text?.delta?.[0]?.insert ?? '';\n};\n","export function preprocessHtml(answer: string) {\n const start = answer.indexOf('');\n const end = answer.indexOf('');\n return answer.slice(start, end + ''.length);\n}\n","import { fetchImage } from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\n\nexport async function fetchImageToFile(\n url: string,\n filename: string,\n imageProxy?: string\n): Promise {\n try {\n const res = await fetchImage(url, undefined, imageProxy);\n if (res && res.ok) {\n let blob = await res.blob();\n if (!blob.type || !blob.type.startsWith('image/')) {\n blob = await convertToPng(blob).then(tmp => tmp || blob);\n }\n return new File([blob], filename, { type: blob.type || 'image/png' });\n }\n } catch (err) {\n console.error(err);\n }\n\n return fetchImageFallback(url, filename);\n}\n\nfunction fetchImageFallback(\n url: string,\n filename: string\n): Promise {\n return new Promise(resolve => {\n const img = new Image();\n img.onload = () => {\n const c = document.createElement('canvas');\n c.width = img.width;\n c.height = img.height;\n const ctx = c.getContext('2d');\n assertExists(ctx);\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = 'high';\n ctx.drawImage(img, 0, 0);\n c.toBlob(blob => {\n if (blob) {\n return resolve(new File([blob], filename, { type: blob.type }));\n }\n resolve();\n }, 'image/png');\n };\n img.onerror = () => resolve();\n img.crossOrigin = 'anonymous';\n img.src = url;\n });\n}\n\nfunction convertToPng(blob: Blob): Promise {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.addEventListener('load', _ => {\n const img = new Image();\n img.onload = () => {\n const c = document.createElement('canvas');\n c.width = img.width;\n c.height = img.height;\n const ctx = c.getContext('2d');\n assertExists(ctx);\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = 'high';\n ctx.drawImage(img, 0, 0);\n c.toBlob(resolve, 'image/png');\n };\n img.onerror = () => resolve(null);\n img.src = reader.result as string;\n });\n reader.addEventListener('error', () => resolve(null));\n reader.readAsDataURL(blob);\n });\n}\n\nexport function readBlobAsURL(blob: Blob | File) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = e => {\n if (typeof e.target?.result === 'string') {\n resolve(e.target.result);\n } else {\n reject();\n }\n };\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n}\n\nexport function canvasToBlob(\n canvas: HTMLCanvasElement,\n type = 'image/png',\n quality?: number\n) {\n return new Promise(resolve =>\n canvas.toBlob(resolve, type, quality)\n );\n}\n\nexport function randomSeed(min = 0, max = Date.now()) {\n return Math.round(Math.random() * (max - min)) + min;\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport type {\n AffineAIPanelWidget,\n AIItemConfig,\n EdgelessCopilotWidget,\n EdgelessElementToolbarWidget,\n EdgelessRootService,\n MindmapElementModel,\n ShapeElementModel,\n SurfaceBlockModel,\n} from '@blocksuite/blocks';\nimport {\n DeleteIcon,\n EDGELESS_ELEMENT_TOOLBAR_WIDGET,\n EDGELESS_TEXT_BLOCK_MIN_HEIGHT,\n EDGELESS_TEXT_BLOCK_MIN_WIDTH,\n EdgelessTextBlockModel,\n fitContent,\n ImageBlockModel,\n InsertBelowIcon,\n NoteDisplayMode,\n ResetIcon,\n} from '@blocksuite/blocks';\nimport { assertExists, Bound } from '@blocksuite/global/utils';\nimport type { TemplateResult } from 'lit';\n\nimport { AIPenIcon, ChatWithAIIcon } from '../_common/icons';\nimport { insertFromMarkdown } from '../_common/markdown-utils';\nimport { getSurfaceElementFromEditor } from '../_common/selection-utils';\nimport { getAIPanel } from '../ai-panel';\nimport { AIProvider } from '../provider';\nimport { reportResponse } from '../utils/action-reporter';\nimport {\n getEdgelessCopilotWidget,\n getService,\n isMindMapRoot,\n} from '../utils/edgeless';\nimport { preprocessHtml } from '../utils/html';\nimport { fetchImageToFile } from '../utils/image';\nimport {\n getCopilotSelectedElems,\n getEdgelessRootFromEditor,\n getEdgelessService,\n} from '../utils/selection-utils';\nimport { EXCLUDING_INSERT_ACTIONS, generatingStages } from './consts';\nimport type { CtxRecord } from './types';\n\ntype FinishConfig = Exclude<\n AffineAIPanelWidget['config'],\n null\n>['finishStateConfig'];\n\ntype ErrorConfig = Exclude<\n AffineAIPanelWidget['config'],\n null\n>['errorStateConfig'];\n\nexport function getElementToolbar(\n host: EditorHost\n): EdgelessElementToolbarWidget {\n const rootBlockId = host.doc.root?.id as string;\n const elementToolbar = host.view.getWidget(\n EDGELESS_ELEMENT_TOOLBAR_WIDGET,\n rootBlockId\n ) as EdgelessElementToolbarWidget;\n\n return elementToolbar;\n}\n\nexport function getTriggerEntry(host: EditorHost) {\n const copilotWidget = getEdgelessCopilotWidget(host);\n\n return copilotWidget.visible ? 'selection' : 'toolbar';\n}\n\nexport function discard(\n panel: AffineAIPanelWidget,\n _: EdgelessCopilotWidget\n): AIItemConfig {\n return {\n name: 'Discard',\n icon: DeleteIcon,\n showWhen: () => !!panel.answer,\n handler: () => {\n panel.discard();\n },\n };\n}\n\nexport function retry(panel: AffineAIPanelWidget): AIItemConfig {\n return {\n name: 'Retry',\n icon: ResetIcon,\n handler: () => {\n reportResponse('result:retry');\n panel.generate();\n },\n };\n}\n\nexport function createInsertResp(\n id: T,\n handler: (host: EditorHost, ctx: CtxRecord) => void,\n host: EditorHost,\n ctx: CtxRecord,\n buttonText: string = 'Insert below'\n): AIItemConfig {\n return {\n name: buttonText,\n icon: InsertBelowIcon,\n showWhen: () => {\n const panel = getAIPanel(host);\n return !EXCLUDING_INSERT_ACTIONS.includes(id) && !!panel.answer;\n },\n handler: () => {\n reportResponse('result:insert');\n handler(host, ctx);\n const panel = getAIPanel(host);\n panel.hide();\n },\n };\n}\n\nexport function asCaption(\n id: T,\n host: EditorHost\n): AIItemConfig {\n return {\n name: 'Use as caption',\n icon: AIPenIcon,\n showWhen: () => {\n const panel = getAIPanel(host);\n return id === 'generateCaption' && !!panel.answer;\n },\n handler: () => {\n reportResponse('result:use-as-caption');\n const panel = getAIPanel(host);\n const caption = panel.answer;\n if (!caption) return;\n\n const selectedElements = getCopilotSelectedElems(host);\n if (selectedElements.length !== 1) return;\n\n const imageBlock = selectedElements[0];\n if (!(imageBlock instanceof ImageBlockModel)) return;\n\n host.doc.updateBlock(imageBlock, { caption });\n panel.hide();\n },\n };\n}\n\ntype MindMapNode = {\n text: string;\n children: MindMapNode[];\n};\n\nfunction insertBelow(\n host: EditorHost,\n markdown: string,\n parentId: string,\n index = 0\n) {\n insertFromMarkdown(host, markdown, parentId, index)\n .then(() => {\n const service = getService(host);\n\n service.selection.set({\n elements: [parentId],\n editing: false,\n });\n })\n .catch(err => {\n console.error(err);\n });\n}\n\nfunction createBlockAndInsert(\n host: EditorHost,\n markdown: string,\n type: 'edgelessText' | 'note'\n) {\n const doc = host.doc;\n const edgelessCopilot = getEdgelessCopilotWidget(host);\n doc.transact(() => {\n assertExists(doc.root);\n let blockId = '';\n const bounds = edgelessCopilot.determineInsertionBounds(\n EDGELESS_TEXT_BLOCK_MIN_WIDTH,\n EDGELESS_TEXT_BLOCK_MIN_HEIGHT\n );\n const surfaceBlock = doc.getBlocksByFlavour('affine:surface')[0];\n if (type === 'edgelessText') {\n blockId = doc.addBlock(\n 'affine:edgeless-text',\n {\n xywh: bounds.serialize(),\n },\n surfaceBlock.id\n );\n } else {\n const bounds = edgelessCopilot.determineInsertionBounds(800, 95);\n blockId = doc.addBlock(\n 'affine:note',\n {\n xywh: bounds.serialize(),\n displayMode: NoteDisplayMode.EdgelessOnly,\n },\n doc.root.id\n );\n }\n\n insertBelow(host, markdown, blockId);\n });\n}\n\n/**\n * defaultHandler is the default handler for inserting AI response into the edgeless document.\n * Three situations are handled by this handler:\n * 1. When selection is a single EdgelessText block, insert the response to the last of the block.\n * 2. When selections are multiple EdgelessText blocks, insert the response to a new EdgelessBlock.\n * 3. Otherwise, insert the response to a new Note block.\n * @param host EditorHost\n */\nconst defaultHandler = (host: EditorHost) => {\n const panel = getAIPanel(host);\n const selectedElements = getCopilotSelectedElems(host);\n\n assertExists(panel.answer);\n if (\n selectedElements.length === 1 &&\n selectedElements[0] instanceof EdgelessTextBlockModel\n ) {\n const edgelessTextBlockId = selectedElements[0].id;\n const index = selectedElements[0].children.length;\n insertBelow(host, panel.answer, edgelessTextBlockId, index);\n } else if (\n selectedElements.length > 1 &&\n selectedElements.every(el => el instanceof EdgelessTextBlockModel)\n ) {\n createBlockAndInsert(host, panel.answer, 'edgelessText');\n } else {\n createBlockAndInsert(host, panel.answer, 'note');\n }\n};\n\n/**\n * Image handler for inserting generated image into the edgeless document.\n * Should make the inserting image size same with the input image if there is an input image.\n * @param host\n */\nconst imageHandler = (host: EditorHost) => {\n const aiPanel = getAIPanel(host);\n // `DataURL` or `URL`\n const data = aiPanel.answer;\n if (!data) return;\n\n const edgelessCopilot = getEdgelessCopilotWidget(host);\n const bounds = edgelessCopilot.determineInsertionBounds();\n const selectedElements = getCopilotSelectedElems(host);\n const selectedImageBlockModel = selectedElements.find(\n model => model instanceof ImageBlockModel\n );\n const selectedBound = selectedImageBlockModel\n ? Bound.deserialize(selectedImageBlockModel.xywh)\n : null;\n\n edgelessCopilot.hideCopilotPanel();\n aiPanel.hide();\n\n const filename = 'image';\n const imageProxy = host.std.clipboard.configs.get('imageProxy');\n\n fetchImageToFile(data, filename, imageProxy)\n .then(img => {\n if (!img) return;\n\n const edgelessRoot = getEdgelessRootFromEditor(host);\n const { minX, minY } = bounds;\n const [x, y] = edgelessRoot.service.viewport.toViewCoord(minX, minY);\n\n host.doc.transact(() => {\n edgelessRoot\n .addImages([img], [x, y], true)\n .then(blockIds => {\n const imageBlockId = blockIds[0];\n const imageBlock = host.doc.getBlock(imageBlockId);\n if (!imageBlock || !selectedBound) return;\n\n // Update the image width and height to the same with the selected image\n const imageModel = imageBlock.model as ImageBlockModel;\n const imageBound = Bound.deserialize(imageModel.xywh);\n const newBound = new Bound(\n imageBound.x,\n imageBound.y,\n selectedBound.w,\n selectedBound.h\n );\n host.doc.updateBlock(imageModel, { xywh: newBound.serialize() });\n })\n .catch(console.error);\n });\n })\n .catch(console.error);\n};\n\nexport const responses: {\n [key in keyof Partial]: (\n host: EditorHost,\n ctx: CtxRecord\n ) => void;\n} = {\n expandMindmap: (host, ctx) => {\n const [surface] = host.doc.getBlockByFlavour(\n 'affine:surface'\n ) as SurfaceBlockModel[];\n\n const elements = ctx.get()[\n 'selectedElements'\n ] as BlockSuite.EdgelessModel[];\n const data = ctx.get() as {\n node: MindMapNode;\n };\n\n queueMicrotask(() => {\n getAIPanel(host).hide();\n });\n\n const mindmap = elements[0].group as MindmapElementModel;\n\n if (!data?.node) return;\n\n if (data.node.children) {\n data.node.children.forEach(childTree => {\n mindmap.addTree(elements[0].id, childTree);\n });\n\n const subtree = mindmap.getNode(elements[0].id);\n\n if (!subtree) return;\n\n surface.doc.transact(() => {\n const updateNodeSize = (node: typeof subtree) => {\n fitContent(node.element as ShapeElementModel);\n\n node.children.forEach(child => {\n updateNodeSize(child);\n });\n };\n\n updateNodeSize(subtree);\n });\n\n setTimeout(() => {\n const edgelessService = getEdgelessService(host);\n\n edgelessService.selection.set({\n elements: [subtree.element.id],\n editing: false,\n });\n });\n }\n },\n brainstormMindmap: (host, ctx) => {\n const aiPanel = getAIPanel(host);\n const edgelessService = getEdgelessService(host);\n const edgelessCopilot = getEdgelessCopilotWidget(host);\n const selectionRect = edgelessCopilot.selectionModelRect;\n const [surface] = host.doc.getBlockByFlavour(\n 'affine:surface'\n ) as SurfaceBlockModel[];\n const elements = ctx.get()[\n 'selectedElements'\n ] as BlockSuite.EdgelessModel[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = ctx.get() as any;\n let newGenerated = true;\n\n // This means regenerate\n if (isMindMapRoot(elements[0])) {\n const mindmap = elements[0].group as MindmapElementModel;\n const xywh = mindmap.tree.element.xywh;\n\n surface.removeElement(mindmap.id);\n\n if (data.node) {\n data.node.xywh = xywh;\n newGenerated = false;\n }\n }\n\n edgelessCopilot.hideCopilotPanel();\n aiPanel.hide();\n\n const mindmapId = surface.addElement({\n type: 'mindmap',\n children: data.node,\n style: data.style,\n });\n const mindmap = surface.getElementById(mindmapId) as MindmapElementModel;\n\n host.doc.transact(() => {\n mindmap.childElements.forEach(shape => {\n fitContent(shape as ShapeElementModel);\n });\n });\n\n edgelessService.telemetryService?.track('CanvasElementAdded', {\n control: 'ai',\n page: 'whiteboard editor',\n module: 'toolbar',\n segment: 'toolbar',\n type: 'mindmap',\n });\n\n queueMicrotask(() => {\n if (newGenerated && selectionRect) {\n mindmap.moveTo([\n selectionRect.x,\n selectionRect.y,\n selectionRect.width,\n selectionRect.height,\n ]);\n }\n });\n\n // This is a workaround to make sure mindmap and other microtask are done\n setTimeout(() => {\n edgelessService.viewport.setViewportByBound(\n mindmap.elementBound,\n [20, 20, 20, 20],\n true\n );\n\n edgelessService.selection.set({\n elements: [mindmap.tree.element.id],\n editing: false,\n });\n });\n },\n makeItReal: (host, ctx) => {\n const aiPanel = getAIPanel(host);\n let html = aiPanel.answer;\n if (!html) return;\n html = preprocessHtml(html);\n\n const edgelessCopilot = getEdgelessCopilotWidget(host);\n const [surface] = host.doc.getBlockByFlavour(\n 'affine:surface'\n ) as SurfaceBlockModel[];\n\n const data = ctx.get();\n const bounds = edgelessCopilot.determineInsertionBounds(\n (data['width'] as number) || 800,\n (data['height'] as number) || 600\n );\n\n edgelessCopilot.hideCopilotPanel();\n aiPanel.hide();\n\n const edgelessRoot = getEdgelessRootFromEditor(host);\n\n host.doc.transact(() => {\n edgelessRoot.doc.addBlock(\n 'affine:embed-html',\n {\n html,\n design: 'ai:makeItReal', // as tag\n xywh: bounds.serialize(),\n },\n surface.id\n );\n });\n },\n createSlides: (host, ctx) => {\n const data = ctx.get();\n const contents = data.contents as unknown[];\n if (!contents) return;\n const images = data.images as { url: string; id: string }[][];\n const service = host.spec.getService('affine:page');\n\n (async function () {\n for (let i = 0; i < contents.length - 1; i++) {\n const image = images[i];\n const content = contents[i];\n const job = service.createTemplateJob('template');\n await Promise.all(\n image.map(({ id, url }) =>\n fetch(url)\n .then(res => res.blob())\n .then(blob => job.job.assets.set(id, blob))\n )\n );\n await job.insertTemplate(content);\n getSurfaceElementFromEditor(host).refresh();\n }\n })().catch(console.error);\n },\n createImage: imageHandler,\n processImage: imageHandler,\n filterImage: imageHandler,\n};\n\nconst getButtonText: {\n [key in keyof Partial]: (\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >\n ) => string | undefined;\n} = {\n brainstormMindmap: variants => {\n return variants?.regenerate ? 'Replace' : undefined;\n },\n};\n\nexport function getInsertAndReplaceHandler<\n T extends keyof BlockSuitePresets.AIActions,\n>(\n id: T,\n host: EditorHost,\n ctx: CtxRecord,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >\n) {\n const handler = responses[id] ?? defaultHandler;\n const buttonText = getButtonText[id]?.(variants) ?? undefined;\n\n return createInsertResp(id, handler, host, ctx, buttonText);\n}\n\nexport function actionToResponse(\n id: T,\n host: EditorHost,\n ctx: CtxRecord,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >\n): FinishConfig {\n return {\n responses: [\n {\n name: 'Response',\n items: [\n {\n name: 'Continue in chat',\n icon: ChatWithAIIcon,\n handler: () => {\n reportResponse('result:continue-in-chat');\n const panel = getAIPanel(host);\n AIProvider.slots.requestOpenWithChat.emit({ host });\n panel.hide();\n },\n },\n getInsertAndReplaceHandler(id, host, ctx, variants),\n asCaption(id, host),\n retry(getAIPanel(host)),\n discard(getAIPanel(host), getEdgelessCopilotWidget(host)),\n ],\n },\n ],\n actions: [],\n };\n}\n\nexport function actionToGenerating(\n id: T,\n generatingIcon: TemplateResult<1>\n) {\n return {\n generatingIcon,\n stages: generatingStages[id],\n };\n}\n\nexport function actionToErrorResponse<\n T extends keyof BlockSuitePresets.AIActions,\n>(\n panel: AffineAIPanelWidget,\n id: T,\n host: EditorHost,\n ctx: CtxRecord,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >\n): ErrorConfig {\n return {\n upgrade: () => {\n AIProvider.slots.requestUpgradePlan.emit({ host: panel.host });\n panel.hide();\n },\n login: () => {\n AIProvider.slots.requestLogin.emit({ host: panel.host });\n panel.hide();\n },\n cancel: () => {\n panel.hide();\n },\n responses: [\n {\n name: 'Response',\n items: [getInsertAndReplaceHandler(id, host, ctx, variants)],\n },\n {\n name: '',\n items: [\n retry(getAIPanel(host)),\n discard(getAIPanel(host), getEdgelessCopilotWidget(host)),\n ],\n },\n ],\n };\n}\n","import type { EditorHost } from '@blocksuite/block-std';\nimport type {\n AffineAIPanelWidget,\n AIError,\n EdgelessCopilotWidget,\n MindmapElementModel,\n} from '@blocksuite/blocks';\nimport {\n BlocksUtils,\n EdgelessTextBlockModel,\n EmbedSyncedDocModel,\n ImageBlockModel,\n NoteBlockModel,\n ShapeElementModel,\n TextElementModel,\n} from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport { AIChatBlockModel } from '@blocksuite/presets';\nimport { Slice } from '@blocksuite/store';\nimport type { TemplateResult } from 'lit';\n\nimport { getAIPanel } from '../ai-panel';\nimport {\n createMindmapExecuteRenderer,\n createMindmapRenderer,\n} from '../messages/mindmap';\nimport { createSlidesRenderer } from '../messages/slides-renderer';\nimport { createTextRenderer } from '../messages/text';\nimport { createIframeRenderer, createImageRenderer } from '../messages/wrapper';\nimport { AIProvider } from '../provider';\nimport { reportResponse } from '../utils/action-reporter';\nimport {\n getEdgelessCopilotWidget,\n isMindmapChild,\n isMindMapRoot,\n} from '../utils/edgeless';\nimport { copyTextAnswer } from '../utils/editor-actions';\nimport { getContentFromSlice } from '../utils/markdown-utils';\nimport {\n getCopilotSelectedElems,\n getSelectedNoteAnchor,\n getSelections,\n} from '../utils/selection-utils';\nimport { EXCLUDING_COPY_ACTIONS, IMAGE_ACTIONS } from './consts';\nimport { bindTextStream } from './doc-handler';\nimport {\n actionToErrorResponse,\n actionToGenerating,\n actionToResponse,\n getElementToolbar,\n responses,\n} from './edgeless-response';\nimport type { CtxRecord } from './types';\n\ntype AnswerRenderer = NonNullable<\n AffineAIPanelWidget['config']\n>['answerRenderer'];\n\nfunction actionToRenderer(\n id: T,\n host: EditorHost,\n ctx: CtxRecord\n): AnswerRenderer {\n if (id === 'brainstormMindmap') {\n const selectedElements = ctx.get()[\n 'selectedElements'\n ] as BlockSuite.EdgelessModel[];\n\n if (\n isMindMapRoot(selectedElements[0] || isMindmapChild(selectedElements[0]))\n ) {\n const mindmap = selectedElements[0].group as MindmapElementModel;\n\n return createMindmapRenderer(host, ctx, mindmap.style);\n }\n\n return createMindmapRenderer(host, ctx);\n }\n\n if (id === 'expandMindmap') {\n return createMindmapExecuteRenderer(host, ctx, ctx => {\n responses['expandMindmap']?.(host, ctx);\n });\n }\n\n if (id === 'createSlides') {\n return createSlidesRenderer(host, ctx);\n }\n\n if (id === 'makeItReal') {\n return createIframeRenderer(host, { height: 300 });\n }\n\n if (IMAGE_ACTIONS.includes(id)) {\n return createImageRenderer(host, { height: 300 });\n }\n\n return createTextRenderer(host, { maxHeight: 320 });\n}\n\nasync function getContentFromEmbedSyncedDocModel(\n host: EditorHost,\n models: EmbedSyncedDocModel[]\n) {\n const slice = Slice.fromModels(host.doc, models);\n return (await getContentFromSlice(host, slice)).trim();\n}\n\nasync function getContentFromHubBlockModel(\n host: EditorHost,\n models: EdgelessTextBlockModel[] | NoteBlockModel[]\n) {\n return (\n await Promise.all(\n models.map(model => {\n const slice = Slice.fromModels(host.doc, model.children);\n return getContentFromSlice(host, slice);\n })\n )\n )\n .map(content => content.trim())\n .filter(content => content.length);\n}\n\nexport async function getContentFromSelected(\n host: EditorHost,\n selected: BlockSuite.EdgelessModel[]\n) {\n type RemoveUndefinedKey = T & {\n [P in K]-?: Exclude;\n };\n\n function isShapeWithText(\n el: ShapeElementModel\n ): el is RemoveUndefinedKey {\n return el.text !== undefined && el.text.length !== 0;\n }\n\n function isImageWithCaption(\n el: ImageBlockModel\n ): el is RemoveUndefinedKey {\n return el.caption !== undefined && el.caption.length !== 0;\n }\n\n const { notes, texts, shapes, images, edgelessTexts, embedSyncedDocs } =\n selected.reduce<{\n notes: NoteBlockModel[];\n texts: TextElementModel[];\n shapes: RemoveUndefinedKey[];\n images: RemoveUndefinedKey[];\n edgelessTexts: EdgelessTextBlockModel[];\n embedSyncedDocs: EmbedSyncedDocModel[];\n }>(\n (pre, cur) => {\n if (cur instanceof NoteBlockModel) {\n pre.notes.push(cur);\n } else if (cur instanceof TextElementModel) {\n pre.texts.push(cur);\n } else if (cur instanceof ShapeElementModel && isShapeWithText(cur)) {\n pre.shapes.push(cur);\n } else if (cur instanceof ImageBlockModel && isImageWithCaption(cur)) {\n pre.images.push(cur);\n } else if (cur instanceof EdgelessTextBlockModel) {\n pre.edgelessTexts.push(cur);\n } else if (cur instanceof EmbedSyncedDocModel) {\n pre.embedSyncedDocs.push(cur);\n }\n\n return pre;\n },\n {\n notes: [],\n texts: [],\n shapes: [],\n images: [],\n edgelessTexts: [],\n embedSyncedDocs: [],\n }\n );\n\n const noteContent = await getContentFromHubBlockModel(host, notes);\n const edgelessTextContent = await getContentFromHubBlockModel(\n host,\n edgelessTexts\n );\n const syncedDocsContent = await getContentFromEmbedSyncedDocModel(\n host,\n embedSyncedDocs\n );\n\n return `${noteContent.join('\\n')}\n${edgelessTextContent.join('\\n')}\n${syncedDocsContent}\n${texts.map(text => text.text.toString()).join('\\n')}\n${shapes.map(shape => shape.text.toString()).join('\\n')}\n${images.map(image => image.caption.toString()).join('\\n')}\n`.trim();\n}\n\nfunction getTextFromSelected(host: EditorHost) {\n const selected = getCopilotSelectedElems(host);\n return getContentFromSelected(host, selected);\n}\n\nfunction actionToStream(\n id: T,\n signal?: AbortSignal,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >,\n extract?: (\n host: EditorHost,\n ctx: CtxRecord\n ) => Promise<{\n content?: string;\n attachments?: (string | Blob)[];\n seed?: string;\n } | void>,\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n const action = AIProvider.actions[id];\n\n if (!action || typeof action !== 'function') return;\n\n if (extract && typeof extract === 'function') {\n return (host: EditorHost, ctx: CtxRecord): BlockSuitePresets.TextStream => {\n let stream: BlockSuitePresets.TextStream | undefined;\n const control = trackerOptions?.control || 'format-bar';\n const where = trackerOptions?.where || 'ai-panel';\n return {\n async *[Symbol.asyncIterator]() {\n const models = getCopilotSelectedElems(host);\n const options = {\n ...variants,\n signal,\n input: '',\n stream: true,\n control,\n where,\n models,\n host,\n docId: host.doc.id,\n workspaceId: host.doc.collection.id,\n } as Parameters[0];\n\n const data = await extract(host, ctx);\n if (data) {\n Object.assign(options, data);\n }\n\n // @ts-expect-error TODO(@Peng): maybe fix this\n stream = action(options);\n if (!stream) return;\n yield* stream;\n },\n };\n };\n }\n\n return (host: EditorHost): BlockSuitePresets.TextStream => {\n let stream: BlockSuitePresets.TextStream | undefined;\n return {\n async *[Symbol.asyncIterator]() {\n const panel = getAIPanel(host);\n const models = getCopilotSelectedElems(host);\n const markdown = await getTextFromSelected(panel.host);\n\n const options = {\n ...variants,\n signal,\n input: markdown,\n stream: true,\n where: 'ai-panel',\n models,\n control: 'format-bar',\n host,\n docId: host.doc.id,\n workspaceId: host.doc.collection.id,\n } as Parameters[0];\n\n // @ts-expect-error TODO(@Peng): maybe fix this\n stream = action(options);\n if (!stream) return;\n yield* stream;\n },\n };\n };\n}\n\nfunction actionToGeneration(\n id: T,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >,\n extract?: (\n host: EditorHost,\n ctx: CtxRecord\n ) => Promise<{\n content?: string;\n attachments?: (string | Blob)[];\n seed?: string;\n } | void>,\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n return (host: EditorHost, ctx: CtxRecord) => {\n return ({\n signal,\n update,\n finish,\n }: {\n input: string;\n signal?: AbortSignal;\n update: (text: string) => void;\n finish: (state: 'success' | 'error' | 'aborted', err?: AIError) => void;\n }) => {\n if (!extract) {\n const selectedElements = getCopilotSelectedElems(host);\n if (selectedElements.length === 0) return;\n }\n\n const stream = actionToStream(\n id,\n signal,\n variants,\n extract,\n trackerOptions\n )?.(host, ctx);\n\n if (!stream) return;\n\n bindTextStream(stream, { update, finish, signal });\n };\n };\n}\n\nfunction updateEdgelessAIPanelConfig<\n T extends keyof BlockSuitePresets.AIActions,\n>(\n aiPanel: AffineAIPanelWidget,\n edgelessCopilot: EdgelessCopilotWidget,\n id: T,\n generatingIcon: TemplateResult<1>,\n ctx: CtxRecord,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >,\n customInput?: (\n host: EditorHost,\n ctx: CtxRecord\n ) => Promise<{\n input?: string;\n content?: string;\n attachments?: (string | Blob)[];\n seed?: string;\n } | void>,\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n const host = aiPanel.host;\n const { config } = aiPanel;\n assertExists(config);\n config.answerRenderer = actionToRenderer(id, host, ctx);\n config.generateAnswer = actionToGeneration(\n id,\n variants,\n customInput,\n trackerOptions\n )(host, ctx);\n config.finishStateConfig = actionToResponse(id, host, ctx, variants);\n config.generatingStateConfig = actionToGenerating(id, generatingIcon);\n config.errorStateConfig = actionToErrorResponse(\n aiPanel,\n id,\n host,\n ctx,\n variants\n );\n config.copy = {\n allowed: !EXCLUDING_COPY_ACTIONS.includes(id),\n onCopy: () => {\n return copyTextAnswer(aiPanel);\n },\n };\n config.discardCallback = () => {\n reportResponse('result:discard');\n };\n config.hideCallback = () => {\n aiPanel.updateComplete\n .finally(() => {\n edgelessCopilot.edgeless.service.tool.switchToDefaultMode({\n elements: [],\n editing: false,\n });\n host.selection.clear();\n edgelessCopilot.lockToolbar(false);\n })\n .catch(console.error);\n };\n}\n\nexport function actionToHandler(\n id: T,\n generatingIcon: TemplateResult<1>,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >,\n customInput?: (\n host: EditorHost,\n ctx: CtxRecord\n ) => Promise<{\n input?: string;\n content?: string;\n attachments?: (string | Blob)[];\n seed?: string;\n } | void>,\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n return (host: EditorHost) => {\n const aiPanel = getAIPanel(host);\n const edgelessCopilot = getEdgelessCopilotWidget(host);\n let internal: Record = {};\n const selectedElements = getCopilotSelectedElems(host);\n const { selectedBlocks } = getSelections(host);\n const ctx = {\n get() {\n return {\n ...internal,\n selectedElements,\n };\n },\n set(data: Record) {\n internal = data;\n },\n };\n\n edgelessCopilot.hideCopilotPanel();\n edgelessCopilot.lockToolbar(true);\n\n updateEdgelessAIPanelConfig(\n aiPanel,\n edgelessCopilot,\n id,\n generatingIcon,\n ctx,\n variants,\n customInput,\n trackerOptions\n );\n\n const elementToolbar = getElementToolbar(host);\n const isEmpty = selectedElements.length === 0;\n const isCreateImageAction = id === 'createImage';\n const isMakeItRealAction = !isCreateImageAction && id === 'makeItReal';\n let referenceElement = null;\n let togglePanel = () => Promise.resolve(isEmpty);\n\n if (selectedBlocks && selectedBlocks.length !== 0) {\n referenceElement = selectedBlocks.at(-1);\n } else if (edgelessCopilot.visible && edgelessCopilot.selectionElem) {\n referenceElement = edgelessCopilot.selectionElem;\n } else if (elementToolbar.toolbarVisible) {\n referenceElement = getElementToolbar(host);\n } else if (!isEmpty) {\n const lastSelected = selectedElements.at(-1)?.id;\n assertExists(lastSelected);\n referenceElement = getSelectedNoteAnchor(host, lastSelected);\n }\n\n if (!referenceElement) return;\n\n if (isCreateImageAction || isMakeItRealAction) {\n togglePanel = async () => {\n if (isEmpty) return true;\n const { notes, shapes, images, edgelessTexts, embedSyncedDocs } =\n BlocksUtils.splitElements(selectedElements);\n const blocks = [\n ...notes,\n ...shapes,\n ...images,\n ...edgelessTexts,\n ...embedSyncedDocs,\n ];\n if (blocks.length === 0) return true;\n const content = await getContentFromSelected(host, blocks);\n ctx.set({\n content,\n });\n return content.length === 0;\n };\n }\n\n togglePanel()\n .then(isEmpty => {\n aiPanel.toggle(referenceElement, isEmpty ? undefined : 'placeholder');\n })\n .catch(console.error);\n };\n}\n\nexport function noteBlockOrTextShowWhen(\n _: unknown,\n __: unknown,\n host: EditorHost\n) {\n const selected = getCopilotSelectedElems(host);\n\n return selected.some(\n el =>\n el instanceof NoteBlockModel ||\n el instanceof TextElementModel ||\n el instanceof EdgelessTextBlockModel\n );\n}\n\n/**\n * Checks if the selected element is a NoteBlockModel with a single child element of code block.\n */\nexport function noteWithCodeBlockShowWen(\n _: unknown,\n __: unknown,\n host: EditorHost\n) {\n const selected = getCopilotSelectedElems(host);\n if (!selected.length) return false;\n\n return (\n selected[0] instanceof NoteBlockModel &&\n selected[0].children.length === 1 &&\n BlocksUtils.matchFlavours(selected[0].children[0], ['affine:code'])\n );\n}\n\nexport function mindmapChildShowWhen(\n _: unknown,\n __: unknown,\n host: EditorHost\n) {\n const selected = getCopilotSelectedElems(host);\n\n return selected.length === 1 && isMindmapChild(selected[0]);\n}\n\nexport function imageOnlyShowWhen(_: unknown, __: unknown, host: EditorHost) {\n const selected = getCopilotSelectedElems(host);\n\n return selected.length === 1 && selected[0] instanceof ImageBlockModel;\n}\n\nexport function mindmapRootShowWhen(_: unknown, __: unknown, host: EditorHost) {\n const selected = getCopilotSelectedElems(host);\n\n return selected.length === 1 && isMindMapRoot(selected[0]);\n}\n\n// TODO(@chen): remove this function after the new AI chat block related function is fully implemented\nexport function notAllAIChatBlockShowWhen(\n _: unknown,\n __: unknown,\n host: EditorHost\n) {\n const selected = getCopilotSelectedElems(host);\n if (selected.length === 0) return true;\n\n const allAIChatBlocks = selected.every(\n model => model instanceof AIChatBlockModel\n );\n return !allAIChatBlocks;\n}\n","import type { getCopilotHistoriesQuery, RequestOptions } from '@affine/graphql';\nimport type { EditorHost } from '@blocksuite/block-std';\nimport type { BlockModel } from '@blocksuite/store';\n\nexport const translateLangs = [\n 'English',\n 'Spanish',\n 'German',\n 'French',\n 'Italian',\n 'Simplified Chinese',\n 'Traditional Chinese',\n 'Japanese',\n 'Russian',\n 'Korean',\n] as const;\n\nexport const textTones = [\n 'Professional',\n 'Informal',\n 'Friendly',\n 'Critical',\n 'Humorous',\n] as const;\n\nexport const imageFilterStyles = [\n 'Clay style',\n 'Sketch style',\n 'Anime style',\n 'Pixel style',\n] as const;\n\nexport const imageProcessingTypes = [\n 'Clearer',\n 'Remove background',\n 'Convert to sticker',\n] as const;\n\nexport type CtxRecord = {\n get(): Record;\n set(data: Record): void;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace BlockSuitePresets {\n type TrackerControl =\n | 'format-bar'\n | 'slash-menu'\n | 'chat-send'\n | 'block-action-bar';\n\n type TrackerWhere =\n | 'chat-panel'\n | 'inline-chat-panel'\n | 'ai-panel'\n | 'ai-chat-block';\n\n interface TrackerOptions {\n control: TrackerControl;\n where: TrackerWhere;\n }\n\n interface AITextActionOptions {\n input?: string;\n stream?: boolean;\n attachments?: (string | File | Blob)[]; // blob could only be strings for the moments (url or data urls)\n signal?: AbortSignal;\n retry?: boolean;\n\n // action's context\n docId: string;\n workspaceId: string;\n\n // internal context\n host: EditorHost;\n models?: (BlockModel | BlockSuite.SurfaceElementModel)[];\n control: TrackerControl;\n where: TrackerWhere;\n }\n\n interface AIForkChatSessionOptions {\n docId: string;\n workspaceId: string;\n sessionId: string;\n latestMessageId: string;\n }\n\n interface AIImageActionOptions extends AITextActionOptions {\n content?: string;\n seed?: string;\n }\n\n interface FilterImageOptions extends AIImageActionOptions {\n style: (typeof imageFilterStyles)[number];\n }\n\n interface ProcessImageOptions extends AIImageActionOptions {\n type: (typeof imageProcessingTypes)[number];\n }\n\n type TextStream = {\n [Symbol.asyncIterator](): AsyncIterableIterator;\n };\n\n type AIActionTextResponse =\n T['stream'] extends true ? TextStream : Promise;\n\n interface ChatOptions extends AITextActionOptions {\n sessionId?: string;\n isRootSession?: boolean;\n }\n\n interface TranslateOptions extends AITextActionOptions {\n lang: (typeof translateLangs)[number];\n }\n\n interface ChangeToneOptions extends AITextActionOptions {\n tone: (typeof textTones)[number];\n }\n\n interface ExpandMindMap extends AITextActionOptions {\n mindmap: string;\n }\n\n interface BrainstormMindMap extends AITextActionOptions {\n regenerate?: boolean;\n }\n\n interface AIActions {\n // chat is a bit special because it's has a internally maintained session\n chat(options: T): AIActionTextResponse;\n\n summary(\n options: T\n ): AIActionTextResponse;\n improveWriting(\n options: T\n ): AIActionTextResponse;\n improveGrammar(\n options: T\n ): AIActionTextResponse;\n fixSpelling(\n options: T\n ): AIActionTextResponse;\n createHeadings(\n options: T\n ): AIActionTextResponse;\n makeLonger(\n options: T\n ): AIActionTextResponse;\n makeShorter(\n options: T\n ): AIActionTextResponse;\n continueWriting(\n options: T\n ): AIActionTextResponse;\n checkCodeErrors(\n options: T\n ): AIActionTextResponse;\n explainCode(\n options: T\n ): AIActionTextResponse;\n writeArticle(\n options: T\n ): AIActionTextResponse;\n writeTwitterPost(\n options: T\n ): AIActionTextResponse;\n writePoem(\n options: T\n ): AIActionTextResponse;\n writeBlogPost(\n options: T\n ): AIActionTextResponse;\n brainstorm(\n options: T\n ): AIActionTextResponse;\n writeOutline(\n options: T\n ): AIActionTextResponse;\n\n explainImage(\n options: T\n ): AIActionTextResponse;\n\n findActions(\n options: T\n ): AIActionTextResponse;\n\n // mindmap\n brainstormMindmap(\n options: T\n ): AIActionTextResponse;\n expandMindmap(\n options: T\n ): AIActionTextResponse;\n\n // presentation\n createSlides(\n options: T\n ): AIActionTextResponse;\n\n // explain this\n explain(\n options: T\n ): AIActionTextResponse;\n\n // actions with variants\n translate(\n options: T\n ): AIActionTextResponse;\n changeTone(\n options: T\n ): AIActionTextResponse;\n\n // make it real, image to text\n makeItReal(\n options: T\n ): AIActionTextResponse;\n createImage(\n options: T\n ): AIActionTextResponse;\n processImage(\n options: T\n ): AIActionTextResponse;\n filterImage(\n options: T\n ): AIActionTextResponse;\n generateCaption(\n options: T\n ): AIActionTextResponse;\n }\n\n // TODO(@Peng): should be refactored to get rid of implement details (like messages, action, role, etc.)\n interface AIHistory {\n sessionId: string;\n tokens: number;\n action: string;\n createdAt: string;\n messages: {\n id: string; // message id\n content: string;\n createdAt: string;\n role: MessageRole;\n attachments?: string[];\n }[];\n }\n\n type MessageRole = 'user' | 'assistant';\n\n type AIHistoryIds = Pick & {\n messages: Pick<\n AIHistory['messages'][number],\n 'id' | 'createdAt' | 'role'\n >[];\n };\n\n interface AIHistoryService {\n // non chat histories\n actions: (\n workspaceId: string,\n docId?: string\n ) => Promise;\n chats: (\n workspaceId: string,\n docId?: string,\n options?: RequestOptions<\n typeof getCopilotHistoriesQuery\n >['variables']['options']\n ) => Promise;\n cleanup: (\n workspaceId: string,\n docId: string,\n sessionIds: string[]\n ) => Promise;\n ids: (\n workspaceId: string,\n docId?: string,\n options?: RequestOptions<\n typeof getCopilotHistoriesQuery\n >['variables']['options']\n ) => Promise;\n }\n\n interface AIPhotoEngineService {\n searchImages(options: {\n width: number;\n height: number;\n query: string;\n }): Promise;\n }\n }\n}\n","import {\n type AIItemGroupConfig,\n AIStarIconWithAnimation,\n BlocksUtils,\n MindmapElementModel,\n ShapeElementModel,\n TextElementModel,\n} from '@blocksuite/blocks';\n\nimport {\n AIExpandMindMapIcon,\n AIImageIcon,\n AIImageIconWithAnimation,\n AIMindMapIcon,\n AIMindMapIconWithAnimation,\n AIPenIcon,\n AIPenIconWithAnimation,\n AIPresentationIcon,\n AIPresentationIconWithAnimation,\n AISearchIcon,\n ChatWithAIIcon,\n CommentIcon,\n ExplainIcon,\n ImproveWritingIcon,\n LanguageIcon,\n LongerIcon,\n MakeItRealIcon,\n MakeItRealIconWithAnimation,\n SelectionIcon,\n ShorterIcon,\n ToneIcon,\n} from '../../_common/icons';\nimport {\n actionToHandler,\n imageOnlyShowWhen,\n mindmapChildShowWhen,\n mindmapRootShowWhen,\n notAllAIChatBlockShowWhen,\n noteBlockOrTextShowWhen,\n noteWithCodeBlockShowWen,\n} from '../../actions/edgeless-handler';\nimport {\n imageFilterStyles,\n imageProcessingTypes,\n textTones,\n translateLangs,\n} from '../../actions/types';\nimport { getAIPanel } from '../../ai-panel';\nimport { AIProvider } from '../../provider';\nimport { mindMapToMarkdown } from '../../utils/edgeless';\nimport { canvasToBlob, randomSeed } from '../../utils/image';\nimport {\n getCopilotSelectedElems,\n getEdgelessRootFromEditor,\n imageCustomInput,\n} from '../../utils/selection-utils';\n\nconst translateSubItem = translateLangs.map(lang => {\n return {\n type: lang,\n handler: actionToHandler('translate', AIStarIconWithAnimation, { lang }),\n };\n});\n\nconst toneSubItem = textTones.map(tone => {\n return {\n type: tone,\n handler: actionToHandler('changeTone', AIStarIconWithAnimation, { tone }),\n };\n});\n\nexport const imageFilterSubItem = imageFilterStyles.map(style => {\n return {\n type: style,\n handler: actionToHandler(\n 'filterImage',\n AIImageIconWithAnimation,\n {\n style,\n },\n imageCustomInput\n ),\n };\n});\n\nexport const imageProcessingSubItem = imageProcessingTypes.map(type => {\n return {\n type,\n handler: actionToHandler(\n 'processImage',\n AIImageIconWithAnimation,\n {\n type,\n },\n imageCustomInput\n ),\n };\n});\n\nconst othersGroup: AIItemGroupConfig = {\n name: 'others',\n items: [\n {\n name: 'Continue with AI',\n icon: CommentIcon,\n showWhen: () => true,\n handler: host => {\n const panel = getAIPanel(host);\n AIProvider.slots.requestOpenWithChat.emit({\n host,\n mode: 'edgeless',\n autoSelect: true,\n });\n panel.hide();\n },\n },\n {\n name: 'Open AI Chat',\n icon: ChatWithAIIcon,\n showWhen: () => true,\n handler: host => {\n const panel = getAIPanel(host);\n AIProvider.slots.requestOpenWithChat.emit({ host, mode: 'edgeless' });\n panel.hide();\n },\n },\n ],\n};\n\nconst editGroup: AIItemGroupConfig = {\n name: 'edit with ai',\n items: [\n {\n name: 'Translate to',\n icon: LanguageIcon,\n showWhen: noteBlockOrTextShowWhen,\n subItem: translateSubItem,\n },\n {\n name: 'Change tone to',\n icon: ToneIcon,\n showWhen: noteBlockOrTextShowWhen,\n subItem: toneSubItem,\n },\n {\n name: 'Improve writing',\n icon: ImproveWritingIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('improveWriting', AIStarIconWithAnimation),\n },\n\n {\n name: 'Make it longer',\n icon: LongerIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('makeLonger', AIStarIconWithAnimation),\n },\n {\n name: 'Make it shorter',\n icon: ShorterIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('makeShorter', AIStarIconWithAnimation),\n },\n {\n name: 'Continue writing',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('continueWriting', AIPenIconWithAnimation),\n },\n ],\n};\n\nconst draftGroup: AIItemGroupConfig = {\n name: 'draft with ai',\n items: [\n {\n name: 'Write an article about this',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('writeArticle', AIPenIconWithAnimation),\n },\n {\n name: 'Write a tweet about this',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('writeTwitterPost', AIPenIconWithAnimation),\n },\n {\n name: 'Write a poem about this',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('writePoem', AIPenIconWithAnimation),\n },\n {\n name: 'Write a blog post about this',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('writeBlogPost', AIPenIconWithAnimation),\n },\n {\n name: 'Brainstorm ideas about this',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('brainstorm', AIPenIconWithAnimation),\n },\n ],\n};\n\nconst reviewGroup: AIItemGroupConfig = {\n name: 'review with ai',\n items: [\n {\n name: 'Fix spelling',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('fixSpelling', AIStarIconWithAnimation),\n },\n {\n name: 'Fix grammar',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('improveGrammar', AIStarIconWithAnimation),\n },\n {\n name: 'Explain this image',\n icon: AIPenIcon,\n showWhen: imageOnlyShowWhen,\n handler: actionToHandler(\n 'explainImage',\n AIStarIconWithAnimation,\n undefined,\n imageCustomInput\n ),\n },\n {\n name: 'Explain this code',\n icon: ExplainIcon,\n showWhen: noteWithCodeBlockShowWen,\n handler: actionToHandler('explainCode', AIStarIconWithAnimation),\n },\n {\n name: 'Check code error',\n icon: ExplainIcon,\n showWhen: noteWithCodeBlockShowWen,\n handler: actionToHandler('checkCodeErrors', AIStarIconWithAnimation),\n },\n {\n name: 'Explain selection',\n icon: SelectionIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('explain', AIStarIconWithAnimation),\n },\n ],\n};\n\nconst generateGroup: AIItemGroupConfig = {\n name: 'generate with ai',\n items: [\n {\n name: 'Summarize',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('summary', AIPenIconWithAnimation),\n },\n {\n name: 'Generate headings',\n icon: AIPenIcon,\n handler: actionToHandler('createHeadings', AIPenIconWithAnimation),\n showWhen: noteBlockOrTextShowWhen,\n beta: true,\n },\n {\n name: 'Generate an image',\n icon: AIImageIcon,\n showWhen: notAllAIChatBlockShowWhen,\n handler: actionToHandler(\n 'createImage',\n AIImageIconWithAnimation,\n undefined,\n async (host, ctx) => {\n const selectedElements = getCopilotSelectedElems(host);\n const len = selectedElements.length;\n\n const aiPanel = getAIPanel(host);\n // text to image\n // from user input\n if (len === 0) {\n const content = aiPanel.inputText?.trim();\n if (!content) return;\n return {\n content,\n };\n }\n\n let content = (ctx.get()['content'] as string) || '';\n\n // from user input\n if (content.length === 0) {\n content = aiPanel.inputText?.trim() || '';\n }\n\n const {\n images,\n shapes,\n notes: _,\n frames: __,\n } = BlocksUtils.splitElements(selectedElements);\n\n const pureShapes = shapes.filter(\n e =>\n !(\n e instanceof TextElementModel ||\n (e instanceof ShapeElementModel && e.text?.length)\n )\n );\n\n // text to image\n if (content.length && images.length + pureShapes.length === 0) {\n return {\n content,\n };\n }\n\n // image to image\n const edgelessRoot = getEdgelessRootFromEditor(host);\n const canvas = await edgelessRoot.clipboardController.toCanvas(\n images,\n pureShapes,\n {\n dpr: 1,\n padding: 0,\n background: 'white',\n }\n );\n if (!canvas) return;\n\n const png = await canvasToBlob(canvas);\n if (!png) return;\n return {\n content,\n attachments: [png],\n seed: String(randomSeed()),\n };\n }\n ),\n },\n {\n name: 'Generate outline',\n icon: AIPenIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('writeOutline', AIPenIconWithAnimation),\n },\n {\n name: 'Expand from this mind map node',\n icon: AIExpandMindMapIcon,\n showWhen: mindmapChildShowWhen,\n handler: actionToHandler(\n 'expandMindmap',\n AIMindMapIconWithAnimation,\n undefined,\n function (host) {\n const selected = getCopilotSelectedElems(host);\n const firstSelected = selected[0] as ShapeElementModel;\n const mindmap = firstSelected?.group;\n\n if (!(mindmap instanceof MindmapElementModel)) {\n return Promise.resolve({});\n }\n\n return Promise.resolve({\n input: firstSelected.text?.toString() ?? '',\n mindmap: mindMapToMarkdown(mindmap),\n });\n }\n ),\n beta: true,\n },\n {\n name: 'Brainstorm ideas with mind map',\n icon: AIMindMapIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('brainstormMindmap', AIMindMapIconWithAnimation),\n },\n {\n name: 'Regenerate mind map',\n icon: AIMindMapIcon,\n showWhen: mindmapRootShowWhen,\n handler: actionToHandler(\n 'brainstormMindmap',\n AIMindMapIconWithAnimation,\n {\n regenerate: true,\n }\n ),\n },\n {\n name: 'Generate presentation',\n icon: AIPresentationIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('createSlides', AIPresentationIconWithAnimation),\n beta: true,\n },\n {\n name: 'Make it real',\n icon: MakeItRealIcon,\n beta: true,\n showWhen: notAllAIChatBlockShowWhen,\n handler: actionToHandler(\n 'makeItReal',\n MakeItRealIconWithAnimation,\n undefined,\n async (host, ctx) => {\n const selectedElements = getCopilotSelectedElems(host);\n\n // from user input\n if (selectedElements.length === 0) {\n const aiPanel = getAIPanel(host);\n const content = aiPanel.inputText?.trim();\n if (!content) return;\n return {\n content,\n };\n }\n\n const { notes, frames, shapes, images, edgelessTexts } =\n BlocksUtils.splitElements(selectedElements);\n const f = frames.length;\n const i = images.length;\n const n = notes.length;\n const s = shapes.length;\n const e = edgelessTexts.length;\n\n if (f + i + n + s + e === 0) {\n return;\n }\n let content = (ctx.get()['content'] as string) || '';\n\n // single note, text\n if (\n i === 0 &&\n n + s + e === 1 &&\n (n === 1 ||\n e === 1 ||\n (s === 1 && shapes[0] instanceof TextElementModel))\n ) {\n return {\n content,\n };\n }\n\n // from user input\n if (content.length === 0) {\n const aiPanel = getAIPanel(host);\n content = aiPanel.inputText?.trim() || '';\n }\n\n const edgelessRoot = getEdgelessRootFromEditor(host);\n const canvas = await edgelessRoot.clipboardController.toCanvas(\n [...notes, ...frames, ...images],\n shapes,\n {\n dpr: 1,\n background: 'white',\n }\n );\n if (!canvas) return;\n const png = await canvasToBlob(canvas);\n if (!png) return;\n ctx.set({\n width: canvas.width,\n height: canvas.height,\n });\n\n return {\n content,\n attachments: [png],\n };\n }\n ),\n },\n {\n name: 'AI image filter',\n icon: ImproveWritingIcon,\n showWhen: imageOnlyShowWhen,\n subItem: imageFilterSubItem,\n subItemOffset: [12, -4],\n beta: true,\n },\n {\n name: 'Image processing',\n icon: AIImageIcon,\n showWhen: imageOnlyShowWhen,\n subItem: imageProcessingSubItem,\n subItemOffset: [12, -6],\n beta: true,\n },\n {\n name: 'Generate a caption',\n icon: AIPenIcon,\n showWhen: imageOnlyShowWhen,\n beta: true,\n handler: actionToHandler(\n 'generateCaption',\n AIStarIconWithAnimation,\n undefined,\n imageCustomInput\n ),\n },\n {\n name: 'Find actions',\n icon: AISearchIcon,\n showWhen: noteBlockOrTextShowWhen,\n handler: actionToHandler('findActions', AIStarIconWithAnimation),\n beta: true,\n },\n ],\n};\n\nexport const edgelessActionGroups = [\n reviewGroup,\n editGroup,\n generateGroup,\n draftGroup,\n othersGroup,\n];\n","import type {\n AIItemGroupConfig,\n EdgelessCopilotWidget,\n EdgelessElementToolbarWidget,\n EdgelessRootBlockComponent,\n} from '@blocksuite/blocks';\nimport { EdgelessCopilotToolbarEntry } from '@blocksuite/blocks';\nimport { noop } from '@blocksuite/global/utils';\nimport { html } from 'lit';\n\nimport { edgelessActionGroups } from './actions-config';\n\nnoop(EdgelessCopilotToolbarEntry);\n\nexport function setupEdgelessCopilot(widget: EdgelessCopilotWidget) {\n widget.groups = edgelessActionGroups;\n}\n\nexport function setupEdgelessElementToolbarEntry(\n widget: EdgelessElementToolbarWidget\n) {\n widget.registerEntry({\n when: () => {\n return true;\n },\n render: (edgeless: EdgelessRootBlockComponent) => {\n const chain = edgeless.service.std.command.chain();\n const filteredGroups = edgelessActionGroups.reduce((pre, group) => {\n const filtered = group.items.filter(item =>\n item.showWhen?.(chain, 'edgeless', edgeless.host)\n );\n\n if (filtered.length > 0) pre.push({ ...group, items: filtered });\n\n return pre;\n }, [] as AIItemGroupConfig[]);\n\n if (filteredGroups.every(group => group.items.length === 0)) return null;\n\n return html``;\n },\n });\n}\n","import axios from 'axios';\nimport type { CommandKeyToData } from '@blocksuite/block-std';\nimport {\n type AffineFormatBarWidget,\n BoldIcon,\n BulletedListIcon,\n CheckBoxIcon,\n CodeIcon,\n DatabaseTableViewIcon20,\n Heading1Icon,\n Heading2Icon,\n Heading3Icon,\n Heading4Icon,\n Heading5Icon,\n Heading6Icon,\n ItalicIcon,\n LinkIcon,\n NumberedListIcon,\n QuoteIcon,\n StrikethroughIcon,\n TextIcon,\n UnderlineIcon,\n} from '@blocksuite/blocks';\nimport { createSimplePortal } from '@blocksuite/blocks/_common/components/portal';\nimport { DATABASE_CONVERT_WHITE_LIST } from '@blocksuite/blocks/_common/configs/quick-action/database-convert-view';\nimport {\n convertSelectedBlocksToLinkedDoc,\n getTitleFromSelectedModels,\n notifyDocCreated,\n} from '@blocksuite/blocks/_common/utils/render-linked-doc';\nimport { assertExists } from '@blocksuite/global/utils';\nimport { html } from 'lit';\nimport { EditorHost } from '@blocksuite/block-std';\n\nexport const ARMSIcon = html``;\n\nexport function setupFormatBarEntry(formatBar: AffineFormatBarWidget) {\n console.log(\"=======call==========\");\n toolbarDefaultConfig(formatBar);\n}\n\nexport function toolbarDefaultConfig(toolbar: AffineFormatBarWidget) {\n toolbar\n .clearConfig()\n .addParagraphDropdown()\n .addDivider()\n .addTextStyleToggle({\n key: 'bold',\n action: chain => chain.toggleBold().run(),\n icon: BoldIcon,\n })\n .addTextStyleToggle({\n key: 'italic',\n action: chain => chain.toggleItalic().run(),\n icon: ItalicIcon,\n })\n .addTextStyleToggle({\n key: 'underline',\n action: chain => chain.toggleUnderline().run(),\n icon: UnderlineIcon,\n })\n .addTextStyleToggle({\n key: 'strike',\n action: chain => chain.toggleStrike().run(),\n icon: StrikethroughIcon,\n })\n .addTextStyleToggle({\n key: 'code',\n action: chain => chain.toggleCode().run(),\n icon: CodeIcon,\n })\n .addTextStyleToggle({\n key: 'link',\n action: chain => chain.toggleLink().run(),\n icon: LinkIcon,\n })\n .addDivider()\n .addHighlighterDropdown()\n .addDivider()\n .addInlineAction({\n id: 'convert-to-database',\n name: 'Create Data Table & Kanban Board',\n icon: DatabaseTableViewIcon20,\n isActive: () => false,\n action: () => {\n createSimplePortal({\n template: html``,\n });\n },\n showWhen: chain => {\n const middleware = (count = 0) => {\n return (\n ctx: CommandKeyToData<'selectedBlocks'>,\n next: () => void\n ) => {\n const { selectedBlocks } = ctx;\n if (!selectedBlocks || selectedBlocks.length === count) return;\n\n const allowed = selectedBlocks.every(block =>\n DATABASE_CONVERT_WHITE_LIST.includes(block.flavour)\n );\n if (!allowed) return;\n\n next();\n };\n };\n let [result] = chain\n .getTextSelection()\n .getSelectedBlocks({\n types: ['text'],\n })\n .inline(middleware(1))\n .run();\n\n if (result) return true;\n\n [result] = chain\n .tryAll(chain => [\n chain.getBlockSelections(),\n chain.getImageSelections(),\n ])\n .getSelectedBlocks({\n types: ['block', 'image'],\n })\n .inline(middleware(0))\n .run();\n\n return result;\n },\n })\n .addDivider()\n .addInlineAction({\n id: 'convert-to-linked-doc',\n name: '드래그 한 내용을 A-RMS에 요구사항으로 등록 + 하위 요구사항 페이지 생성',\n icon: ARMSIcon,\n isActive: () => false,\n action: (chain, formatBar) => {\n const [_, ctx] = chain\n .getSelectedModels({\n types: ['block', 'text'],\n mode: 'highest',\n })\n .run();\n const { selectedModels } = ctx;\n assertExists(selectedModels);\n\n if (!selectedModels.length) return;\n\n const host = formatBar.host;\n host.selection.clear();\n\n const doc = host.doc;\n const autofill = getTitleFromSelectedModels(selectedModels);\n\n void promptDocTitle(host, autofill).then(title => {\n if (title === null) return;\n const linkedDoc = convertSelectedBlocksToLinkedDoc(\n doc,\n selectedModels,\n title\n );\n console.log(\"========================\");\n console.log(selectedModels);\n console.log(title);\n console.log(\"========================\");\n const linkedDocService = host.spec.getService(\n 'affine:embed-linked-doc'\n );\n linkedDocService.slots.linkedDocCreated.emit({ docId: linkedDoc.id });\n notifyDocCreated(host, doc);\n host.spec\n .getService('affine:page')\n .telemetryService?.track('DocCreated', {\n control: 'create linked doc',\n page: 'doc editor',\n module: 'format toolbar',\n type: 'embed-linked-doc',\n });\n host.spec\n .getService('affine:page')\n .telemetryService?.track('LinkedDocCreated', {\n control: 'create linked doc',\n page: 'doc editor',\n module: 'format toolbar',\n type: 'embed-linked-doc',\n });\n console.log('여기에서 ARMS 연동');\n\n console.log(linkedDoc.Text);\n console.log(linkedDoc.id);\n arms_add_req(title, host);\n });\n },\n showWhen: chain => {\n const [_, ctx] = chain\n .getSelectedModels({\n types: ['block', 'text'],\n mode: 'highest',\n })\n .run();\n const { selectedModels } = ctx;\n return !!selectedModels && selectedModels.length > 0;\n },\n })\n .addBlockTypeSwitch({\n flavour: 'affine:paragraph',\n type: 'text',\n name: 'Text',\n icon: TextIcon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:paragraph',\n type: 'h1',\n name: 'Heading 1',\n icon: Heading1Icon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:paragraph',\n type: 'h2',\n name: 'Heading 2',\n icon: Heading2Icon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:paragraph',\n type: 'h3',\n name: 'Heading 3',\n icon: Heading3Icon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:paragraph',\n type: 'h4',\n name: 'Heading 4',\n icon: Heading4Icon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:paragraph',\n type: 'h5',\n name: 'Heading 5',\n icon: Heading5Icon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:paragraph',\n type: 'h6',\n name: 'Heading 6',\n icon: Heading6Icon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:list',\n type: 'bulleted',\n name: 'Bulleted List',\n icon: BulletedListIcon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:list',\n type: 'numbered',\n name: 'Numbered List',\n icon: NumberedListIcon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:list',\n type: 'todo',\n name: 'To-do List',\n icon: CheckBoxIcon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:code',\n name: 'Code Block',\n icon: CodeIcon,\n })\n .addBlockTypeSwitch({\n flavour: 'affine:paragraph',\n type: 'quote',\n name: 'Quote',\n icon: QuoteIcon,\n });\n}\n\nexport function promptDocTitle(host: EditorHost, autofill?: string) {\n\n console.log(\"promptDocTitle\");\n\n const notification =\n host.std.spec.getService('affine:page').notificationService;\n if (!notification) return Promise.resolve(undefined);\n\n const selection = document.getSelection();\n if (!selection || selection.rangeCount === 0) return false;\n const range = selection.getRangeAt(0);\n console.log(range.startContainer.data);\n console.log(range.endContainer.data);\n\n var req_title = \"\";\n if(range.startContainer.data.toString() == range.endContainer.data.toString()){\n req_title = range.startContainer.data.toString();\n }else{\n req_title = range.startContainer.data.toString() + \" \" + range.endContainer.data.toString();\n }\n\n return notification.prompt({\n title: \"A-RMS 요구사항 생성\",\n message:'드래그한 부분을 A-RMS에 요구사항을 생성합니다. \\n또한 요구사항 하위 페이지를 구성합니다.',\n inputTitle: '요구사항 제목', // 241223 추가\n placeholder: autofill,\n autofill: \"[ADOC-REQ] \" + req_title,\n //documentURI\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n versionSelect: true, // 241223 추가\n // productOptions: , // 241223 추가\n // versionOptions: , // 241223 추가\n });\n\n}\n\n\nasync function arms_add_req(title: string, host: EditorHost) {\n\n // GET 요청\n // @ts-ignore\n await axios({\n method: 'get',\n url: '/api/auth/arms',\n params: {\n c_title: title,\n c_req_pdservice_link: 11,\n c_req_pdservice_versionset_link: '[\"37\"]',\n c_req_contents: '제품(*서비스) 이름 : A' + '\\n' +\n '제품(*서비스) 버전 : B' + '\\n' +\n '제품(*서비스) 내용 : Adoc 문서 제목 : ' + host.std.range.host.ownerDocument.title,\n c_req_desc: '설명',\n c_req_etc: '비고'\n },\n headers: {\n 'Access-Control-Allow-Origin': '*'\n },\n crossDomain: true\n })\n .then((res) => {\n console.log(res.data);\n })\n .catch((err) => {\n console.error(err);\n });\n\n}\n","import type { Chain, EditorHost, InitCommandCtx } from '@blocksuite/block-std';\nimport {\n type AIItemGroupConfig,\n type AISubItemConfig,\n type CopilotSelectionController,\n EDGELESS_ELEMENT_TOOLBAR_WIDGET,\n type EdgelessElementToolbarWidget,\n matchFlavours,\n} from '@blocksuite/blocks';\nimport type { TemplateResult } from 'lit';\n\nimport { actionToHandler } from '../actions/doc-handler';\nimport { actionToHandler as edgelessActionToHandler } from '../actions/edgeless-handler';\nimport {\n imageFilterStyles,\n imageProcessingTypes,\n textTones,\n translateLangs,\n} from '../actions/types';\nimport { getAIPanel } from '../ai-panel';\nimport { AIProvider } from '../provider';\nimport {\n getSelectedImagesAsBlobs,\n getSelectedTextContent,\n getSelections,\n} from '../utils/selection-utils';\nimport {\n AIDoneIcon,\n AIImageIcon,\n AIImageIconWithAnimation,\n AIMindMapIcon,\n AIPenIcon,\n AIPenIconWithAnimation,\n AIPresentationIcon,\n AIPresentationIconWithAnimation,\n AISearchIcon,\n AIStarIconWithAnimation,\n ChatWithAIIcon,\n CommentIcon,\n ExplainIcon,\n ImproveWritingIcon,\n LanguageIcon,\n LongerIcon,\n MakeItRealIcon,\n MakeItRealIconWithAnimation,\n SelectionIcon,\n ShorterIcon,\n ToneIcon,\n} from './icons';\n\nexport const translateSubItem: AISubItemConfig[] = translateLangs.map(lang => {\n return {\n type: lang,\n handler: actionToHandler('translate', AIStarIconWithAnimation, { lang }),\n };\n});\n\nexport const toneSubItem: AISubItemConfig[] = textTones.map(tone => {\n return {\n type: tone,\n handler: actionToHandler('changeTone', AIStarIconWithAnimation, { tone }),\n };\n});\n\nexport function createImageFilterSubItem(\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n return imageFilterStyles.map(style => {\n return {\n type: style,\n handler: edgelessHandler(\n 'filterImage',\n AIImageIconWithAnimation,\n {\n style,\n },\n trackerOptions\n ),\n };\n });\n}\n\nexport function createImageProcessingSubItem(\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n return imageProcessingTypes.map(type => {\n return {\n type,\n handler: edgelessHandler(\n 'processImage',\n AIImageIconWithAnimation,\n {\n type,\n },\n trackerOptions\n ),\n };\n });\n}\n\nconst blockActionTrackerOptions: BlockSuitePresets.TrackerOptions = {\n control: 'block-action-bar',\n where: 'ai-panel',\n};\n\nconst textBlockShowWhen = (chain: Chain) => {\n const [_, ctx] = chain\n .getSelectedModels({\n types: ['block', 'text'],\n })\n .run();\n const { selectedModels } = ctx;\n if (!selectedModels || selectedModels.length === 0) return false;\n\n return selectedModels.some(model =>\n matchFlavours(model, ['affine:paragraph', 'affine:list'])\n );\n};\n\nconst codeBlockShowWhen = (chain: Chain) => {\n const [_, ctx] = chain\n .getSelectedModels({\n types: ['block', 'text'],\n })\n .run();\n const { selectedModels } = ctx;\n if (!selectedModels || selectedModels.length > 1) return false;\n\n const model = selectedModels[0];\n return matchFlavours(model, ['affine:code']);\n};\n\nconst imageBlockShowWhen = (chain: Chain) => {\n const [_, ctx] = chain\n .getSelectedModels({\n types: ['block'],\n })\n .run();\n const { selectedModels } = ctx;\n if (!selectedModels || selectedModels.length > 1) return false;\n\n const model = selectedModels[0];\n return matchFlavours(model, ['affine:image']);\n};\n\nconst EditAIGroup: AIItemGroupConfig = {\n name: 'edit with ai',\n items: [\n {\n name: 'Translate to',\n icon: LanguageIcon,\n showWhen: textBlockShowWhen,\n subItem: translateSubItem,\n },\n {\n name: 'Change tone to',\n icon: ToneIcon,\n showWhen: textBlockShowWhen,\n subItem: toneSubItem,\n },\n {\n name: 'Improve writing',\n icon: ImproveWritingIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('improveWriting', AIStarIconWithAnimation),\n },\n {\n name: 'Make it longer',\n icon: LongerIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('makeLonger', AIStarIconWithAnimation),\n },\n {\n name: 'Make it shorter',\n icon: ShorterIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('makeShorter', AIStarIconWithAnimation),\n },\n {\n name: 'Continue writing',\n icon: AIPenIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('continueWriting', AIPenIconWithAnimation),\n },\n ],\n};\n\nconst DraftAIGroup: AIItemGroupConfig = {\n name: 'draft with ai',\n items: [\n {\n name: 'Write an article about this',\n icon: AIPenIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('writeArticle', AIPenIconWithAnimation),\n },\n {\n name: 'Write a tweet about this',\n icon: AIPenIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('writeTwitterPost', AIPenIconWithAnimation),\n },\n {\n name: 'Write a poem about this',\n icon: AIPenIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('writePoem', AIPenIconWithAnimation),\n },\n {\n name: 'Write a blog post about this',\n icon: AIPenIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('writeBlogPost', AIPenIconWithAnimation),\n },\n {\n name: 'Brainstorm ideas about this',\n icon: AIPenIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('brainstorm', AIPenIconWithAnimation),\n },\n ],\n};\n\n// actions that initiated from a note in edgeless mode\n// 1. when running in doc mode, call requestRunInEdgeless (let affine to show toast)\n// 2. when running in edgeless mode\n// a. get selected in the note and let the edgeless action to handle it\n// b. insert the result using the note shape\nfunction edgelessHandler(\n id: T,\n generatingIcon: TemplateResult<1>,\n variants?: Omit<\n Parameters[0],\n keyof BlockSuitePresets.AITextActionOptions\n >,\n trackerOptions?: BlockSuitePresets.TrackerOptions\n) {\n return (host: EditorHost) => {\n if (host.doc.root?.id === undefined) return;\n const edgeless = (\n host.view.getWidget(\n EDGELESS_ELEMENT_TOOLBAR_WIDGET,\n host.doc.root.id\n ) as EdgelessElementToolbarWidget\n )?.edgeless;\n\n if (!edgeless) {\n AIProvider.slots.requestRunInEdgeless.emit({ host });\n } else {\n edgeless.tools.setEdgelessTool({ type: 'copilot' });\n const currentController = edgeless.tools.controllers[\n 'copilot'\n ] as CopilotSelectionController;\n const selectedElements = edgeless.service.selection.selectedElements;\n currentController.updateDragPointsWith(selectedElements, 10);\n currentController.draggingAreaUpdated.emit(false); // do not show edgeless panel\n\n return edgelessActionToHandler(\n id,\n generatingIcon,\n variants,\n async () => {\n const selections = getSelections(host);\n const [markdown, attachments] = await Promise.all([\n getSelectedTextContent(host),\n getSelectedImagesAsBlobs(host),\n ]);\n // for now if there are more than one selected blocks, we will not omit the attachments\n const sendAttachments =\n selections?.selectedBlocks?.length === 1 && attachments.length > 0;\n return {\n attachments: sendAttachments ? attachments : undefined,\n content: sendAttachments ? '' : markdown,\n };\n },\n trackerOptions\n )(host);\n }\n };\n}\n\nconst ReviewWIthAIGroup: AIItemGroupConfig = {\n name: 'review with ai',\n items: [\n {\n name: 'Fix spelling',\n icon: AIDoneIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('fixSpelling', AIStarIconWithAnimation),\n },\n {\n name: 'Fix grammar',\n icon: AIDoneIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('improveGrammar', AIStarIconWithAnimation),\n },\n {\n name: 'Explain this image',\n icon: AIPenIcon,\n showWhen: imageBlockShowWhen,\n handler: actionToHandler('explainImage', AIStarIconWithAnimation),\n },\n {\n name: 'Explain this code',\n icon: ExplainIcon,\n showWhen: codeBlockShowWhen,\n handler: actionToHandler('explainCode', AIStarIconWithAnimation),\n },\n {\n name: 'Check code error',\n icon: ExplainIcon,\n showWhen: codeBlockShowWhen,\n handler: actionToHandler('checkCodeErrors', AIStarIconWithAnimation),\n },\n {\n name: 'Explain selection',\n icon: SelectionIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('explain', AIStarIconWithAnimation),\n },\n ],\n};\n\nconst GenerateWithAIGroup: AIItemGroupConfig = {\n name: 'generate with ai',\n items: [\n {\n name: 'Summarize',\n icon: AIPenIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('summary', AIPenIconWithAnimation),\n },\n {\n name: 'Generate headings',\n icon: AIPenIcon,\n beta: true,\n handler: actionToHandler('createHeadings', AIPenIconWithAnimation),\n showWhen: chain => {\n const [_, ctx] = chain\n .getSelectedModels({\n types: ['block', 'text'],\n })\n .run();\n const { selectedModels } = ctx;\n if (!selectedModels || selectedModels.length === 0) return false;\n\n return selectedModels.every(\n model =>\n matchFlavours(model, ['affine:paragraph', 'affine:list']) &&\n !model.type.startsWith('h')\n );\n },\n },\n {\n name: 'Generate an image',\n icon: AIImageIcon,\n showWhen: textBlockShowWhen,\n handler: edgelessHandler('createImage', AIImageIconWithAnimation),\n },\n {\n name: 'Generate outline',\n icon: AIPenIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('writeOutline', AIPenIconWithAnimation),\n },\n {\n name: 'Brainstorm ideas with mind map',\n icon: AIMindMapIcon,\n showWhen: textBlockShowWhen,\n handler: edgelessHandler('brainstormMindmap', AIPenIconWithAnimation),\n },\n {\n name: 'Generate presentation',\n icon: AIPresentationIcon,\n showWhen: textBlockShowWhen,\n handler: edgelessHandler('createSlides', AIPresentationIconWithAnimation),\n beta: true,\n },\n {\n name: 'Make it real',\n icon: MakeItRealIcon,\n beta: true,\n showWhen: textBlockShowWhen,\n handler: edgelessHandler('makeItReal', MakeItRealIconWithAnimation),\n },\n {\n name: 'Find actions',\n icon: AISearchIcon,\n showWhen: textBlockShowWhen,\n handler: actionToHandler('findActions', AIStarIconWithAnimation),\n beta: true,\n },\n ],\n};\n\nconst OthersAIGroup: AIItemGroupConfig = {\n name: 'Others',\n items: [\n {\n name: 'Continue with AI',\n icon: CommentIcon,\n handler: host => {\n const panel = getAIPanel(host);\n AIProvider.slots.requestOpenWithChat.emit({ host, autoSelect: true });\n panel.hide();\n },\n },\n {\n name: 'Open AI Chat',\n icon: ChatWithAIIcon,\n handler: host => {\n const panel = getAIPanel(host);\n AIProvider.slots.requestOpenWithChat.emit({ host });\n panel.hide();\n },\n },\n ],\n};\n\nexport const AIItemGroups: AIItemGroupConfig[] = [\n ReviewWIthAIGroup,\n EditAIGroup,\n GenerateWithAIGroup,\n DraftAIGroup,\n OthersAIGroup,\n];\n\nexport function buildAIImageItemGroups(): AIItemGroupConfig[] {\n return [\n {\n name: 'edit with ai',\n items: [\n {\n name: 'Explain this image',\n icon: AIImageIcon,\n showWhen: () => true,\n handler: actionToHandler(\n 'explainImage',\n AIStarIconWithAnimation,\n undefined,\n blockActionTrackerOptions\n ),\n },\n ],\n },\n {\n name: 'generate with ai',\n items: [\n {\n name: 'Generate an image',\n icon: AIImageIcon,\n showWhen: () => true,\n handler: edgelessHandler(\n 'createImage',\n AIImageIconWithAnimation,\n undefined,\n blockActionTrackerOptions\n ),\n },\n {\n name: 'Image processing',\n icon: AIImageIcon,\n showWhen: () => true,\n subItem: createImageProcessingSubItem(blockActionTrackerOptions),\n subItemOffset: [12, -6],\n beta: true,\n },\n {\n name: 'AI image filter',\n icon: ImproveWritingIcon,\n showWhen: () => true,\n subItem: createImageFilterSubItem(blockActionTrackerOptions),\n subItemOffset: [12, -4],\n beta: true,\n },\n {\n name: 'Generate a caption',\n icon: AIPenIcon,\n showWhen: () => true,\n beta: true,\n handler: actionToHandler(\n 'generateCaption',\n AIStarIconWithAnimation,\n undefined,\n blockActionTrackerOptions\n ),\n },\n ],\n },\n OthersAIGroup,\n ];\n}\n\nexport function buildAICodeItemGroups(): AIItemGroupConfig[] {\n return [\n {\n name: 'edit with ai',\n items: [\n {\n name: 'Explain this code',\n icon: ExplainIcon,\n showWhen: () => true,\n handler: actionToHandler(\n 'explainCode',\n AIStarIconWithAnimation,\n undefined,\n blockActionTrackerOptions\n ),\n },\n {\n name: 'Check code error',\n icon: ExplainIcon,\n showWhen: () => true,\n handler: actionToHandler(\n 'checkCodeErrors',\n AIStarIconWithAnimation,\n undefined,\n blockActionTrackerOptions\n ),\n },\n ],\n },\n OthersAIGroup,\n ];\n}\n","import '../../_common/components/ask-ai-button';\n\nimport type {\n AffineImageToolbarWidget,\n ImageBlockComponent,\n} from '@blocksuite/blocks';\nimport { html } from 'lit';\n\nimport type { AskAIButtonOptions } from '../../_common/components/ask-ai-button';\nimport { buildAIImageItemGroups } from '../../_common/config';\n\nconst AIImageItemGroups = buildAIImageItemGroups();\nconst buttonOptions: AskAIButtonOptions = {\n size: 'small',\n backgroundColor: 'var(--affine-white)',\n panelWidth: 300,\n};\n\nexport function setupImageToolbarEntry(imageToolbar: AffineImageToolbarWidget) {\n const onAskAIClick = () => {\n const { host } = imageToolbar;\n const { selection } = host;\n const imageBlock = imageToolbar.block;\n selection.setGroup('note', [\n selection.create('image', { blockId: imageBlock.blockId }),\n ]);\n };\n imageToolbar.buildDefaultConfig();\n imageToolbar.addConfigItems(\n [\n {\n type: 'custom',\n render(imageBlock: ImageBlockComponent, onClick?: () => void) {\n return html` {\n e.stopPropagation();\n onAskAIClick();\n onClick?.();\n }}\n >`;\n },\n showWhen: imageBlockComponent => !imageBlockComponent.doc.readonly,\n },\n ],\n 0\n );\n}\n","import type {\n AffineSlashMenuContext,\n AIItemConfig,\n} from '@blocksuite/blocks';\nimport {\n AFFINE_AI_PANEL_WIDGET,\n AffineSlashMenuWidget,\n AIStarIcon,\n} from '@blocksuite/blocks';\n\nexport function setupSlashMenuEntry(slashMenu: AffineSlashMenuWidget) {\n\n const showWhenWrapper =\n (item?: AIItemConfig) =>\n ({ rootComponent }: AffineSlashMenuContext) => {\n const affineAIPanelWidget = rootComponent.host.view.getWidget(\n AFFINE_AI_PANEL_WIDGET,\n rootComponent.model.id\n );\n if (affineAIPanelWidget === null) return false;\n\n const chain = rootComponent.host.command.chain();\n const editorMode = rootComponent.service.docModeService.getMode(\n rootComponent.doc.id\n );\n\n return item?.showWhen?.(chain, editorMode, rootComponent.host) ?? true;\n };\n\n const menu = slashMenu.config.items.slice();\n /* DrawIo 추가 */\n menu.unshift({\n name: 'DrawIO',\n icon: AIStarIcon,\n showWhen: showWhenWrapper(),\n action: () => {\n window.open('https://www.a-rms.net/reference/drawio/', '_blank');\n },\n });\n /* AIMenuItems, Ask AI 메뉴 삭제 */\n slashMenu.config = {\n ...AffineSlashMenuWidget.DEFAULT_CONFIG,\n items: menu,\n };\n}\n","import type { BlockSpec } from '@blocksuite/block-std';\nimport {\n AFFINE_AI_PANEL_WIDGET,\n AFFINE_EDGELESS_COPILOT_WIDGET,\n AffineFormatBarWidget,\n AffineImageToolbarWidget,\n AffineSlashMenuWidget,\n EdgelessCopilotWidget,\n EdgelessElementToolbarWidget,\n EdgelessRootBlockSpec,\n ImageBlockSpec,\n PageRootBlockSpec,\n ParagraphBlockService,\n ParagraphBlockSpec,\n} from '@blocksuite/blocks';\nimport { assertInstanceOf } from '@blocksuite/global/utils';\nimport { literal, unsafeStatic } from 'lit/static-html.js';\n\nimport {\n setupEdgelessCopilot,\n setupEdgelessElementToolbarEntry,\n} from './entries/edgeless/index';\nimport { setupFormatBarEntry } from './entries/format-bar/setup-format-bar';\nimport { setupImageToolbarEntry } from './entries/image-toolbar/setup-image-toolbar';\nimport { setupSlashMenuEntry } from './entries/slash-menu/setup-slash-menu';\n\nexport const AIPageRootBlockSpec: BlockSpec = {\n ...PageRootBlockSpec,\n view: {\n ...PageRootBlockSpec.view,\n widgets: {\n ...PageRootBlockSpec.view.widgets,\n [AFFINE_AI_PANEL_WIDGET]: literal`${unsafeStatic(\n AFFINE_AI_PANEL_WIDGET\n )}`,\n },\n },\n setup: (slots, disposableGroup) => {\n PageRootBlockSpec.setup?.(slots, disposableGroup);\n disposableGroup.add(\n slots.widgetConnected.on(view => {\n // if (view.component instanceof AffineAIPanelWidget) { 'space' key : AI 입력창 삭제\n // view.component.style.width = '630px';\n // view.component.config = buildAIPanelConfig(view.component);\n // setupSpaceEntry(view.component);\n // }\n\n if (view.component instanceof AffineFormatBarWidget) {\n setupFormatBarEntry(view.component);\n }\n\n if (view.component instanceof AffineSlashMenuWidget) {\n setupSlashMenuEntry(view.component);\n }\n })\n );\n },\n};\n\nexport const AIEdgelessRootBlockSpec: BlockSpec = {\n ...EdgelessRootBlockSpec,\n view: {\n ...EdgelessRootBlockSpec.view,\n widgets: {\n ...EdgelessRootBlockSpec.view.widgets,\n [AFFINE_EDGELESS_COPILOT_WIDGET]: literal`${unsafeStatic(\n AFFINE_EDGELESS_COPILOT_WIDGET\n )}`,\n [AFFINE_AI_PANEL_WIDGET]: literal`${unsafeStatic(\n AFFINE_AI_PANEL_WIDGET\n )}`,\n },\n },\n setup(slots, disposableGroup) {\n EdgelessRootBlockSpec.setup?.(slots, disposableGroup);\n slots.widgetConnected.on(view => {\n // if (view.component instanceof AffineAIPanelWidget) { 'space' key : AI 입력창 삭제\n // view.component.style.width = '430px';\n // view.component.config = buildAIPanelConfig(view.component);\n // setupSpaceEntry(view.component);\n // }\n\n if (view.component instanceof EdgelessCopilotWidget) {\n setupEdgelessCopilot(view.component);\n }\n\n if (view.component instanceof EdgelessElementToolbarWidget) {\n setupEdgelessElementToolbarEntry(view.component);\n }\n\n if (view.component instanceof AffineFormatBarWidget) {\n setupFormatBarEntry(view.component);\n }\n\n if (view.component instanceof AffineSlashMenuWidget) {\n setupSlashMenuEntry(view.component);\n }\n });\n },\n};\n\nexport const AIParagraphBlockSpec: BlockSpec = {\n ...ParagraphBlockSpec,\n setup(slots, disposableGroup) {\n ParagraphBlockSpec.setup?.(slots, disposableGroup);\n slots.mounted.on(({ service }) => {\n assertInstanceOf(service, ParagraphBlockService);\n service.placeholderGenerator = model => {\n if (model.type === 'text') {\n return \"Type '/' for commands\";\n }\n\n const placeholders = {\n h1: 'Heading 1',\n h2: 'Heading 2',\n h3: 'Heading 3',\n h4: 'Heading 4',\n h5: 'Heading 5',\n h6: 'Heading 6',\n quote: '',\n };\n return placeholders[model.type];\n };\n });\n },\n};\n\n// export const AICodeBlockSpec: BlockSpec = {\n// ...CodeBlockSpec,\n// setup(slots, disposableGroup) {\n// CodeBlockSpec.setup?.(slots, disposableGroup);\n// slots.widgetConnected.on(view => {\n// if (view.component instanceof AffineCodeToolbarWidget) {\n// setupCodeToolbarEntry(view.component);\n// }\n// });\n// },\n// };\n\nexport const AIImageBlockSpec: BlockSpec = {\n ...ImageBlockSpec,\n setup(slots, disposableGroup) {\n ImageBlockSpec.setup?.(slots, disposableGroup);\n slots.widgetConnected.on(view => {\n if (view.component instanceof AffineImageToolbarWidget) {\n setupImageToolbarEntry(view.component);\n }\n });\n },\n};\n","import { html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\n\nexport const renderImages = (images: string[]) => {\n return html`\n
\n ${repeat(\n images,\n image => image,\n image => {\n return html`
\n \n
`;\n }\n )}\n
`;\n};\n","export const HISTORY_IMAGE_ACTIONS = [\n 'image',\n 'AI image filter clay style',\n 'AI image filter sketch style',\n 'AI image filter anime style',\n 'AI image filter pixel style',\n 'Clearer',\n 'Remove background',\n 'Convert to sticker',\n];\n","import { ChatHistoryOrder } from '@affine/graphql';\nimport type {\n BlockSelection,\n EditorHost,\n TextSelection,\n} from '@blocksuite/block-std';\nimport type {\n DocMode,\n EdgelessRootService,\n ImageSelection,\n PageRootService,\n} from '@blocksuite/blocks';\nimport {\n BlocksUtils,\n getElementsBound,\n NoteDisplayMode,\n} from '@blocksuite/blocks';\nimport { Bound, type SerializedXYWH } from '@blocksuite/global/utils';\nimport { type ChatMessage } from '@blocksuite/presets';\nimport type { Doc } from '@blocksuite/store';\nimport type { TemplateResult } from 'lit';\n\nimport { AIProvider, type AIUserInfo } from '../provider';\nimport { reportResponse } from '../utils/action-reporter';\nimport { insertBelow, replace } from '../utils/editor-actions';\nimport { insertFromMarkdown } from '../utils/markdown-utils';\nimport { BlockIcon, CreateIcon, InsertBelowIcon, ReplaceIcon } from './icons';\n\nconst { matchFlavours } = BlocksUtils;\n\ntype Selections = {\n text?: TextSelection;\n blocks?: BlockSelection[];\n images?: ImageSelection[];\n};\n\nexport type ChatAction = {\n icon: TemplateResult<1>;\n title: string;\n toast: string;\n showWhen: (host: EditorHost) => boolean;\n handler: (\n host: EditorHost,\n content: string,\n currentSelections: Selections,\n chatSessionId?: string,\n messageId?: string\n ) => Promise;\n};\n\nexport async function queryHistoryMessages(\n workspaceId: string,\n docId: string,\n forkSessionId: string\n) {\n // Get fork session messages\n const histories = await AIProvider.histories?.chats(workspaceId, docId, {\n sessionId: forkSessionId,\n messageOrder: ChatHistoryOrder.asc,\n });\n\n if (!histories || !histories.length) {\n return [];\n }\n\n return histories[0].messages;\n}\n\n// Construct user info with messages\nexport function constructUserInfoWithMessages(\n messages: ChatMessage[],\n userInfo: AIUserInfo | null\n) {\n return messages.map(message => {\n const { role, id, content, createdAt } = message;\n const isUser = role === 'user';\n const userInfoProps = isUser\n ? {\n userId: userInfo?.id,\n userName: userInfo?.name,\n avatarUrl: userInfo?.avatarUrl ?? undefined,\n }\n : {};\n return {\n id,\n role,\n content,\n createdAt,\n attachments: [],\n ...userInfoProps,\n };\n });\n}\n\nexport async function constructRootChatBlockMessages(\n doc: Doc,\n forkSessionId: string\n) {\n // Convert chat messages to AI chat block messages\n const userInfo = await AIProvider.userInfo;\n const forkMessages = await queryHistoryMessages(\n doc.collection.id,\n doc.id,\n forkSessionId\n );\n return constructUserInfoWithMessages(forkMessages, userInfo);\n}\n\nfunction getViewportCenter(\n mode: DocMode,\n rootService: PageRootService | EdgelessRootService\n) {\n const center = { x: 400, y: 50 };\n if (mode === 'page') {\n const viewport = rootService.editPropsStore.getStorage('viewport');\n if (viewport) {\n if ('xywh' in viewport) {\n const bound = Bound.deserialize(viewport.xywh);\n center.x = bound.x + bound.w / 2;\n center.y = bound.y + bound.h / 2;\n } else {\n center.x = viewport.centerX;\n center.y = viewport.centerY;\n }\n }\n } else {\n // Else we should get latest viewport center from the edgeless root service\n const edgelessService = rootService as EdgelessRootService;\n center.x = edgelessService.viewport.centerX;\n center.y = edgelessService.viewport.centerY;\n }\n\n return center;\n}\n\n// Add AI chat block and focus on it\nfunction addAIChatBlock(\n host: EditorHost,\n messages: ChatMessage[],\n sessionId: string,\n viewportCenter: { x: number; y: number },\n index: string\n) {\n if (!messages.length || !sessionId) {\n return;\n }\n\n const { doc } = host;\n const surfaceBlock = doc\n .getBlocks()\n .find(block => block.flavour === 'affine:surface');\n if (!surfaceBlock) {\n return;\n }\n\n // Add AI chat block to the center of the viewport\n const width = 300; // AI_CHAT_BLOCK_WIDTH = 300\n const height = 320; // AI_CHAT_BLOCK_HEIGHT = 320\n const x = viewportCenter.x - width / 2;\n const y = viewportCenter.y - height / 2;\n const bound = new Bound(x, y, width, height);\n const aiChatBlockId = doc.addBlock(\n 'affine:embed-ai-chat' as keyof BlockSuite.BlockModels,\n {\n xywh: bound.serialize(),\n messages: JSON.stringify(messages),\n index,\n sessionId,\n rootWorkspaceId: doc.collection.id,\n rootDocId: doc.id,\n },\n surfaceBlock.id\n );\n\n return aiChatBlockId;\n}\n\nexport function promptDocTitle(host: EditorHost, autofill?: string) {\n const notification =\n host.std.spec.getService('affine:page').notificationService;\n if (!notification) return Promise.resolve(undefined);\n\n return notification.prompt({\n title: 'Create linked doc',\n message: 'Enter a title for the new doc.',\n placeholder: 'Untitled',\n autofill,\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n });\n}\n\nconst REPLACE_SELECTION = {\n icon: ReplaceIcon,\n title: 'Replace selection',\n showWhen: (host: EditorHost) => {\n const textSelection = host.selection.find('text');\n const blockSelections = host.selection.filter('block');\n if (\n (!textSelection || textSelection.from.length === 0) &&\n blockSelections?.length === 0\n ) {\n return false;\n }\n return true;\n },\n toast: 'Successfully replaced',\n handler: async (\n host: EditorHost,\n content: string,\n currentSelections: Selections\n ) => {\n const currentTextSelection = currentSelections.text;\n const currentBlockSelections = currentSelections.blocks;\n const [_, data] = host.command\n .chain()\n .getSelectedBlocks({\n currentTextSelection,\n currentBlockSelections,\n })\n .run();\n if (!data.selectedBlocks) return false;\n\n reportResponse('result:replace');\n\n if (currentTextSelection) {\n const { doc } = host;\n const block = doc.getBlock(currentTextSelection.blockId);\n if (matchFlavours(block?.model ?? null, ['affine:paragraph'])) {\n block?.model.text?.replace(\n currentTextSelection.from.index,\n currentTextSelection.from.length,\n content\n );\n return true;\n }\n }\n\n await replace(\n host,\n content,\n data.selectedBlocks[0],\n data.selectedBlocks.map(block => block.model),\n currentTextSelection\n );\n return true;\n },\n};\n\nconst INSERT_BELOW = {\n icon: InsertBelowIcon,\n title: 'Insert below',\n showWhen: () => true,\n toast: 'Successfully inserted',\n handler: async (\n host: EditorHost,\n content: string,\n currentSelections: Selections\n ) => {\n const currentTextSelection = currentSelections.text;\n const currentBlockSelections = currentSelections.blocks;\n const currentImageSelections = currentSelections.images;\n const [_, data] = host.command\n .chain()\n .getSelectedBlocks({\n currentTextSelection,\n currentBlockSelections,\n currentImageSelections,\n })\n .run();\n if (!data.selectedBlocks) return false;\n reportResponse('result:insert');\n await insertBelow(\n host,\n content,\n data.selectedBlocks[data.selectedBlocks?.length - 1]\n );\n return true;\n },\n};\n\nconst SAVE_CHAT_TO_BLOCK_ACTION: ChatAction = {\n icon: BlockIcon,\n title: 'Save chat to block',\n toast: 'Successfully saved chat to a block',\n showWhen: () => true,\n handler: async (\n host: EditorHost,\n _,\n __,\n chatSessionId?: string,\n messageId?: string\n ) => {\n // The chat session id and the latest message id are required to fork the chat session\n const parentSessionId = chatSessionId;\n if (!messageId || !parentSessionId) {\n return false;\n }\n\n const rootService = host.spec.getService('affine:page');\n const surfaceService = host.spec.getService('affine:surface');\n if (!rootService || !surfaceService) return false;\n\n const { docModeService, notificationService } = rootService;\n const { layer } = surfaceService;\n const curMode = docModeService.getMode();\n const viewportCenter = getViewportCenter(curMode, rootService);\n const newBlockIndex = layer.generateIndex('affine:embed-ai-chat');\n // If current mode is not edgeless, switch to edgeless mode first\n if (curMode !== 'edgeless') {\n // Set mode to edgeless\n docModeService.setMode('edgeless');\n // Notify user to switch to edgeless mode\n notificationService?.notify({\n title: 'Save chat to a block',\n accent: 'info',\n message:\n 'This feature is not available in the page editor. Switch to edgeless mode.',\n onClose: function (): void {},\n });\n }\n\n try {\n const newSessionId = await AIProvider.forkChat?.({\n workspaceId: host.doc.collection.id,\n docId: host.doc.id,\n sessionId: parentSessionId,\n latestMessageId: messageId,\n });\n\n if (!newSessionId) {\n return false;\n }\n\n // Get messages before the latest message\n const messages = await constructRootChatBlockMessages(\n host.doc,\n newSessionId\n );\n\n // After switching to edgeless mode, the user can save the chat to a block\n const blockId = addAIChatBlock(\n host,\n messages,\n newSessionId,\n viewportCenter,\n newBlockIndex\n );\n if (!blockId) {\n return false;\n }\n\n rootService.telemetryService?.track('CanvasElementAdded', {\n control: 'manually save',\n page: 'whiteboard editor',\n module: 'ai chat panel',\n segment: 'right sidebar',\n type: 'chat block',\n category: 'root',\n });\n return true;\n } catch (err) {\n console.error(err);\n notificationService?.notify({\n title: 'Failed to save chat to a block',\n accent: 'error',\n onClose: function (): void {},\n });\n return false;\n }\n },\n};\n\nconst ADD_TO_EDGELESS_AS_NOTE = {\n icon: CreateIcon,\n title: 'Add to edgeless as note',\n showWhen: () => true,\n toast: 'New note created',\n handler: async (host: EditorHost, content: string) => {\n reportResponse('result:add-note');\n const { doc } = host;\n const service = host.spec.getService('affine:page');\n const elements = service.selection.selectedElements;\n\n const props: { displayMode: NoteDisplayMode; xywh?: SerializedXYWH } = {\n displayMode: NoteDisplayMode.EdgelessOnly,\n };\n\n if (elements.length > 0) {\n const bound = getElementsBound(\n elements.map(e => Bound.deserialize(e.xywh))\n );\n const newBound = new Bound(bound.x, bound.maxY + 10, bound.w);\n props.xywh = newBound.serialize();\n }\n\n const id = doc.addBlock('affine:note', props, doc.root?.id);\n\n await insertFromMarkdown(host, content, doc, id, 0);\n\n service.selection.set({\n elements: [id],\n editing: false,\n });\n\n return true;\n },\n};\n\nconst CREATE_AS_DOC = {\n icon: CreateIcon,\n title: 'Create as a doc',\n showWhen: () => true,\n toast: 'New doc created',\n handler: (host: EditorHost, content: string) => {\n reportResponse('result:add-page');\n const newDoc = host.doc.collection.createDoc();\n newDoc.load();\n const rootId = newDoc.addBlock('affine:page');\n newDoc.addBlock('affine:surface', {}, rootId);\n const noteId = newDoc.addBlock('affine:note', {}, rootId);\n\n host.spec.getService('affine:page').slots.docLinkClicked.emit({\n docId: newDoc.id,\n });\n let complete = false;\n (function addContent() {\n if (complete) return;\n const newHost = document.querySelector('editor-host');\n // FIXME: this is a hack to wait for the host to be ready, now we don't have a way to know if the new host is ready\n if (!newHost || newHost === host) {\n setTimeout(addContent, 100);\n return;\n }\n complete = true;\n const { doc } = newHost;\n insertFromMarkdown(newHost, content, doc, noteId, 0).catch(console.error);\n })();\n\n return true;\n },\n};\n\nconst CREATE_AS_LINKED_DOC = {\n icon: CreateIcon,\n title: 'Create as a linked doc',\n showWhen: () => true,\n toast: 'New doc created',\n handler: async (host: EditorHost, content: string) => {\n reportResponse('result:add-page');\n\n const { doc } = host;\n const surfaceBlock = doc\n .getBlocks()\n .find(block => block.flavour === 'affine:surface');\n if (!surfaceBlock) {\n return false;\n }\n\n const service = host.spec.getService('affine:page');\n const mode = service.docModeService.getMode();\n if (mode !== 'edgeless') {\n return false;\n }\n\n // Create a new doc and add the content to it\n const newDoc = host.doc.collection.createDoc();\n newDoc.load();\n const rootId = newDoc.addBlock('affine:page');\n newDoc.addBlock('affine:surface', {}, rootId);\n const noteId = newDoc.addBlock('affine:note', {}, rootId);\n await insertFromMarkdown(host, content, newDoc, noteId, 0);\n\n // Add a linked doc card to link to the new doc\n const elements = service.selection.selectedElements;\n const width = 364;\n const height = 390;\n let x = 0;\n let y = 0;\n if (elements.length) {\n // Calculate the bound of the selected elements first\n const bound = getElementsBound(\n elements.map(e => Bound.deserialize(e.xywh))\n );\n x = bound.x;\n y = bound.y + bound.h + 100;\n }\n\n // If the selected elements are not in the viewport, center the linked doc card\n if (x === Number.POSITIVE_INFINITY || y === Number.POSITIVE_INFINITY) {\n const viewportCenter = getViewportCenter(mode, service);\n x = viewportCenter.x - width / 2;\n y = viewportCenter.y - height / 2;\n }\n\n service.addBlock(\n 'affine:embed-linked-doc',\n {\n xywh: `[${x}, ${y}, ${width}, ${height}]`,\n style: 'vertical',\n pageId: newDoc.id,\n },\n surfaceBlock.id\n );\n\n return true;\n },\n};\n\nconst CommonActions: ChatAction[] = [REPLACE_SELECTION, INSERT_BELOW];\n\nexport const PageEditorActions = [\n ...CommonActions,\n CREATE_AS_DOC,\n SAVE_CHAT_TO_BLOCK_ACTION,\n];\n\nexport const EdgelessEditorActions = [\n ...CommonActions,\n ADD_TO_EDGELESS_AS_NOTE,\n SAVE_CHAT_TO_BLOCK_ACTION,\n];\n\nexport const ChatBlockPeekViewActions = [\n ADD_TO_EDGELESS_AS_NOTE,\n CREATE_AS_LINKED_DOC,\n];\n","import {\n ArticleIcon,\n CommunicateIcon,\n MindmapIcon,\n PreloadImageIcon,\n PreloadPenIcon,\n} from '../_common/icons.js';\nimport { AIProvider } from '../provider.js';\nimport completeWritingWithAI from './templates/completeWritingWithAI.zip';\nimport freelyCommunicateWithAI from './templates/freelyCommunicateWithAI.zip';\nimport readAforeign from './templates/readAforeign.zip';\nimport redHat from './templates/redHat.zip';\nimport TidyMindMapV3 from './templates/TidyMindMapV3.zip';\n\nexport const AIPreloadConfig = [\n {\n icon: ArticleIcon,\n text: 'Read a foreign language article with AI',\n handler: () => {\n AIProvider.slots.requestInsertTemplate.emit({\n template: readAforeign,\n mode: 'edgeless',\n });\n },\n },\n {\n icon: MindmapIcon,\n text: 'Tidy a article with AI MindMap Action',\n handler: () => {\n AIProvider.slots.requestInsertTemplate.emit({\n template: TidyMindMapV3,\n mode: 'edgeless',\n });\n },\n },\n {\n icon: PreloadImageIcon,\n text: 'Add illustrations to the article',\n handler: () => {\n AIProvider.slots.requestInsertTemplate.emit({\n template: redHat,\n mode: 'edgeless',\n });\n },\n },\n {\n icon: PreloadPenIcon,\n text: 'Complete writing with AI',\n handler: () => {\n AIProvider.slots.requestInsertTemplate.emit({\n template: completeWritingWithAI,\n mode: 'edgeless',\n });\n },\n },\n {\n icon: CommunicateIcon,\n text: 'Freely communicate with AI',\n handler: () => {\n AIProvider.slots.requestInsertTemplate.emit({\n template: freelyCommunicateWithAI,\n mode: 'edgeless',\n });\n },\n },\n];\n","import { baseTheme } from '@toeverything/theme';\nimport { css, unsafeCSS } from 'lit';\n\nexport const PeekViewStyles = css`\n :host {\n width: 100%;\n height: 100%;\n }\n\n .ai-chat-block-peek-view-container {\n gap: 8px;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: start;\n flex-direction: column;\n box-sizing: border-box;\n padding: 24px 120px 16px 120px;\n font-family: ${unsafeCSS(baseTheme.fontSansFamily)};\n }\n\n .ai-chat-messages-container {\n display: flex;\n align-items: center;\n justify-content: start;\n flex-direction: column;\n box-sizing: border-box;\n width: 100%;\n color: var(--affine-text-primary-color);\n line-height: 22px;\n font-size: var(--affine-font-sm);\n overflow-y: auto;\n overflow-x: hidden;\n flex: 1;\n gap: 24px;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n\n .new-chat-messages-container {\n width: 100%;\n box-sizing: border-box;\n min-height: 450px;\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n\n .ai-chat-messages-container::-webkit-scrollbar {\n display: none;\n }\n\n .assistant-message-container {\n width: 100%;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .peek-view-footer {\n padding: 0 12px;\n width: 100%;\n height: 20px;\n display: flex;\n gap: 4px;\n align-items: center;\n color: var(--affine-text-secondary-color);\n font-size: var(--affine-font-xs);\n user-select: none;\n }\n`;\n","import type { EdgelessRootService } from '@blocksuite/blocks';\nimport { Bound } from '@blocksuite/global/utils';\nimport {\n type AIChatBlockModel,\n CHAT_BLOCK_HEIGHT,\n CHAT_BLOCK_WIDTH,\n} from '@blocksuite/presets';\n\n/**\n * Calculates the bounding box for a child block\n * Based on the parent block's position and the existing connectors.\n * Place the child block to the right of the parent block as much as possible.\n * If the parent block already has connected child blocks\n * Distribute them evenly along the y-axis as much as possible.\n * @param parentModel - The model of the parent block.\n * @param service - The EdgelessRootService instance.\n * @returns The calculated bounding box for the child block.\n */\nexport function calcChildBound(\n parentModel: AIChatBlockModel,\n service: EdgelessRootService\n) {\n const parentXYWH = Bound.deserialize(parentModel.xywh);\n const { x: parentX, y: parentY, w: parentWidth } = parentXYWH;\n\n const connectors = service.getConnectors(parentModel.id);\n const gapX = CHAT_BLOCK_WIDTH;\n const gapY = 60;\n const defaultX = parentX + parentWidth + gapX;\n const defaultY = parentY;\n\n if (!connectors.length) {\n return new Bound(defaultX, defaultY, CHAT_BLOCK_WIDTH, CHAT_BLOCK_HEIGHT);\n } else {\n // Filter out the connectors which source is the parent block\n const childConnectors = connectors.filter(\n connector => connector.source.id === parentModel.id\n );\n // Get all the target blocks of the child connectors\n const targetBlocks = childConnectors\n .map(connector => connector.target.id)\n .filter(id => id !== undefined)\n .map(id => service.getElementById(id))\n .filter(block => !!block);\n\n if (targetBlocks.length) {\n // Sort target blocks by their y position\n targetBlocks.sort(\n (a, b) => Bound.deserialize(a.xywh).y - Bound.deserialize(b.xywh).y\n );\n\n let x, y;\n // Calculate the position based on the number of target blocks\n const middleIndex = Math.floor((targetBlocks.length - 1) / 2);\n const middleBlock = targetBlocks[middleIndex];\n const { y: middleY, h: middleHeight } = Bound.deserialize(\n middleBlock.xywh\n );\n const lastBlock = targetBlocks[targetBlocks.length - 1];\n const {\n x: lastX,\n y: lastY,\n h: lastHeight,\n } = Bound.deserialize(lastBlock.xywh);\n\n if (targetBlocks.length % 2 === 0) {\n // If even number of target blocks\n // place the new bound above the middle block with same same gap as the last block\n x = lastX;\n const gap = lastY - (middleY + middleHeight);\n y = middleY - gap - CHAT_BLOCK_HEIGHT;\n } else {\n // If odd number of target blocks, place the new bound below the last block with a gap\n x = lastX;\n y = lastY + lastHeight + gapY;\n }\n\n return new Bound(x, y, CHAT_BLOCK_WIDTH, CHAT_BLOCK_HEIGHT);\n } else {\n // If no valid target blocks, fallback to default position\n return new Bound(defaultX, defaultY, CHAT_BLOCK_WIDTH, CHAT_BLOCK_HEIGHT);\n }\n }\n}\n","import FiveWTwoH from './edgeless/5W2H.json';\nimport ConceptMap from './edgeless/Concept Map.json';\nimport Flowchart from './edgeless/Flowchart.json';\nimport SMART from './edgeless/SMART.json';\nimport SWOT from './edgeless/SWOT.json';\nimport FourPMarketingMatrix from './edgeless/4P Marketing Matrix.json';\nimport Storyboard from './edgeless/Storyboard.json';\nimport UserJourneyMap from './edgeless/User Journey Map.json';\nimport BusinessProposal from './edgeless/Business Proposal.json';\nimport DataAnalysis from './edgeless/Data Analysis.json';\nimport SimplePresentation from './edgeless/Simple Presentation.json';\nimport FishboneDiagram from './edgeless/Fishbone Diagram.json';\nimport GanttChart from './edgeless/Gantt Chart.json';\nimport MonthlyCalendar from './edgeless/Monthly Calendar.json';\nimport ProjectPlanning from './edgeless/Project Planning.json';\nimport ProjectTrackingKanban from './edgeless/Project Tracking Kanban.json';\n\nconst templates = {\n 'Brainstorming': [\n FiveWTwoH,\n ConceptMap,\n Flowchart,\n SMART,\n SWOT\n ],\n 'Marketing': [\n FourPMarketingMatrix,\n Storyboard,\n UserJourneyMap\n ],\n 'Presentation': [\n BusinessProposal,\n DataAnalysis,\n SimplePresentation\n ],\n 'Project Management': [\n FishboneDiagram,\n GanttChart,\n MonthlyCalendar,\n ProjectPlanning,\n ProjectTrackingKanban\n ]\n}\n\nfunction lcs(text1: string, text2: string) {\n const dp: number[][] = Array.from({ length: text1.length + 1 })\n .fill(null)\n .map(() => Array.from({length: text2.length + 1}).fill(0));\n\n for (let i = 1; i <= text1.length; i++) {\n for (let j = 1; j <= text2.length; j++) {\n if (text1[i - 1] === text2[j - 1]) {\n dp[i][j] = dp[i - 1][j - 1] + 1;\n } else {\n dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);\n }\n }\n }\n\n return dp[text1.length][text2.length];\n}\n\nexport const builtInTemplates = {\n list: async (category: string) => {\n // @ts-expect-error type should be asserted when using\n return templates[category] ?? []\n },\n\n categories: async () => {\n return Object.keys(templates)\n },\n\n search: async(query: string) => {\n const candidates: unknown[] = [];\n const cates = Object.keys(templates);\n\n query = query.toLowerCase();\n\n for(let cate of cates) {\n // @ts-expect-error type should be asserted when using\n const templatesOfCate = templates[cate];\n\n for(let temp of templatesOfCate) {\n if(lcs(query, temp.name.toLowerCase()) === query.length) {\n candidates.push(temp);\n }\n }\n }\n\n return candidates;\n },\n}\n","\n/* eslint-disable */\n// @ts-nocheck\n\nimport stickerCover000 from './stickers/Arrows/Cover/arrow-1.svg';\nimport stickerContent000 from './stickers/Arrows/Content/arrow-1.svg';\nimport stickerCover001 from './stickers/Arrows/Cover/arrow-2.svg';\nimport stickerContent001 from './stickers/Arrows/Content/arrow-2.svg';\nimport stickerCover002 from './stickers/Arrows/Cover/arrow-3.svg';\nimport stickerContent002 from './stickers/Arrows/Content/arrow-3.svg';\nimport stickerCover003 from './stickers/Arrows/Cover/arrow-4.svg';\nimport stickerContent003 from './stickers/Arrows/Content/arrow-4.svg';\nimport stickerCover004 from './stickers/Arrows/Cover/arrow-5.svg';\nimport stickerContent004 from './stickers/Arrows/Content/arrow-5.svg';\nimport stickerCover005 from './stickers/Arrows/Cover/arrow-6.svg';\nimport stickerContent005 from './stickers/Arrows/Content/arrow-6.svg';\nimport stickerCover006 from './stickers/Arrows/Cover/arrow-7.svg';\nimport stickerContent006 from './stickers/Arrows/Content/arrow-7.svg';\nimport stickerCover007 from './stickers/Arrows/Cover/arrow-8.svg';\nimport stickerContent007 from './stickers/Arrows/Content/arrow-8.svg';\nimport stickerCover008 from './stickers/Arrows/Cover/arrow-9.svg';\nimport stickerContent008 from './stickers/Arrows/Content/arrow-9.svg';\nimport stickerCover009 from './stickers/Arrows/Cover/arrow-10.svg';\nimport stickerContent009 from './stickers/Arrows/Content/arrow-10.svg';\nimport stickerCover010 from './stickers/Arrows/Cover/arrow-11.svg';\nimport stickerContent010 from './stickers/Arrows/Content/arrow-11.svg';\nimport stickerCover011 from './stickers/Arrows/Cover/arrow-12.svg';\nimport stickerContent011 from './stickers/Arrows/Content/arrow-12.svg';\nimport stickerCover012 from './stickers/Arrows/Cover/arrow-13.svg';\nimport stickerContent012 from './stickers/Arrows/Content/arrow-13.svg';\nimport stickerCover013 from './stickers/Arrows/Cover/arrow-14.svg';\nimport stickerContent013 from './stickers/Arrows/Content/arrow-14.svg';\nimport stickerCover014 from './stickers/Arrows/Cover/arrow-15.svg';\nimport stickerContent014 from './stickers/Arrows/Content/arrow-15.svg';\nimport stickerCover015 from './stickers/Arrows/Cover/arrow-16.svg';\nimport stickerContent015 from './stickers/Arrows/Content/arrow-16.svg';\nimport stickerCover016 from './stickers/Arrows/Cover/arrow-17.svg';\nimport stickerContent016 from './stickers/Arrows/Content/arrow-17.svg';\nimport stickerCover017 from './stickers/Arrows/Cover/arrow-18.svg';\nimport stickerContent017 from './stickers/Arrows/Content/arrow-18.svg';\nimport stickerCover018 from './stickers/Arrows/Cover/arrow-19.svg';\nimport stickerContent018 from './stickers/Arrows/Content/arrow-19.svg';\nimport stickerCover019 from './stickers/Arrows/Cover/arrow-20.svg';\nimport stickerContent019 from './stickers/Arrows/Content/arrow-20.svg';\nimport stickerCover020 from './stickers/Arrows/Cover/arrow-21.svg';\nimport stickerContent020 from './stickers/Arrows/Content/arrow-21.svg';\nimport stickerCover021 from './stickers/Arrows/Cover/arrow-22.svg';\nimport stickerContent021 from './stickers/Arrows/Content/arrow-22.svg';\nimport stickerCover022 from './stickers/Arrows/Cover/arrow-23.svg';\nimport stickerContent022 from './stickers/Arrows/Content/arrow-23.svg';\nimport stickerCover023 from './stickers/Arrows/Cover/arrow-24.svg';\nimport stickerContent023 from './stickers/Arrows/Content/arrow-24.svg';\nimport stickerCover024 from './stickers/Arrows/Cover/arrow-25.svg';\nimport stickerContent024 from './stickers/Arrows/Content/arrow-25.svg';\nimport stickerCover025 from './stickers/Arrows/Cover/arrow-26.svg';\nimport stickerContent025 from './stickers/Arrows/Content/arrow-26.svg';\nimport stickerCover026 from './stickers/Arrows/Cover/arrow-27.svg';\nimport stickerContent026 from './stickers/Arrows/Content/arrow-27.svg';\nimport stickerCover027 from './stickers/Arrows/Cover/arrow-28.svg';\nimport stickerContent027 from './stickers/Arrows/Content/arrow-28.svg';\nimport stickerCover028 from './stickers/Arrows/Cover/arrow-29.svg';\nimport stickerContent028 from './stickers/Arrows/Content/arrow-29.svg';\nimport stickerCover029 from './stickers/Arrows/Cover/arrow-30.svg';\nimport stickerContent029 from './stickers/Arrows/Content/arrow-30.svg';\nimport stickerCover030 from './stickers/Arrows/Cover/arrow-31.svg';\nimport stickerContent030 from './stickers/Arrows/Content/arrow-31.svg';\nimport stickerCover031 from './stickers/Arrows/Cover/arrow-32.svg';\nimport stickerContent031 from './stickers/Arrows/Content/arrow-32.svg';\nimport stickerCover032 from './stickers/Arrows/Cover/arrow-33.svg';\nimport stickerContent032 from './stickers/Arrows/Content/arrow-33.svg';\nimport stickerCover033 from './stickers/Arrows/Cover/arrow-34.svg';\nimport stickerContent033 from './stickers/Arrows/Content/arrow-34.svg';\nimport stickerCover034 from './stickers/Arrows/Cover/arrow-35.svg';\nimport stickerContent034 from './stickers/Arrows/Content/arrow-35.svg';\nimport stickerCover035 from './stickers/Arrows/Cover/arrow-36.svg';\nimport stickerContent035 from './stickers/Arrows/Content/arrow-36.svg';\nimport stickerCover036 from './stickers/Arrows/Cover/arrow-37.svg';\nimport stickerContent036 from './stickers/Arrows/Content/arrow-37.svg';\nimport stickerCover037 from './stickers/Arrows/Cover/arrow-38.svg';\nimport stickerContent037 from './stickers/Arrows/Content/arrow-38.svg';\nimport stickerCover038 from './stickers/Arrows/Cover/arrow-39.svg';\nimport stickerContent038 from './stickers/Arrows/Content/arrow-39.svg';\nimport stickerCover039 from './stickers/Arrows/Cover/arrow-40.svg';\nimport stickerContent039 from './stickers/Arrows/Content/arrow-40.svg';\nimport stickerCover040 from './stickers/Arrows/Cover/arrow-41.svg';\nimport stickerContent040 from './stickers/Arrows/Content/arrow-41.svg';\nimport stickerCover041 from './stickers/Arrows/Cover/arrow-42.svg';\nimport stickerContent041 from './stickers/Arrows/Content/arrow-42.svg';\nimport stickerCover042 from './stickers/Arrows/Cover/arrow-43.svg';\nimport stickerContent042 from './stickers/Arrows/Content/arrow-43.svg';\nimport stickerCover043 from './stickers/Arrows/Cover/arrow-44.svg';\nimport stickerContent043 from './stickers/Arrows/Content/arrow-44.svg';\nimport stickerCover044 from './stickers/Arrows/Cover/arrow-45.svg';\nimport stickerContent044 from './stickers/Arrows/Content/arrow-45.svg';\nimport stickerCover045 from './stickers/Arrows/Cover/arrow-46.svg';\nimport stickerContent045 from './stickers/Arrows/Content/arrow-46.svg';\nimport stickerCover046 from './stickers/Arrows/Cover/arrow-47.svg';\nimport stickerContent046 from './stickers/Arrows/Content/arrow-47.svg';\nimport stickerCover047 from './stickers/Arrows/Cover/arrow-48.svg';\nimport stickerContent047 from './stickers/Arrows/Content/arrow-48.svg';\nimport stickerCover048 from './stickers/Arrows/Cover/arrow-49.svg';\nimport stickerContent048 from './stickers/Arrows/Content/arrow-49.svg';\nimport stickerCover049 from './stickers/Arrows/Cover/arrow-50.svg';\nimport stickerContent049 from './stickers/Arrows/Content/arrow-50.svg';\nimport stickerCover050 from './stickers/Arrows/Cover/arrow-51.svg';\nimport stickerContent050 from './stickers/Arrows/Content/arrow-51.svg';\nimport stickerCover051 from './stickers/Arrows/Cover/arrow-52.svg';\nimport stickerContent051 from './stickers/Arrows/Content/arrow-52.svg';\nimport stickerCover052 from './stickers/Arrows/Cover/arrow-53.svg';\nimport stickerContent052 from './stickers/Arrows/Content/arrow-53.svg';\nimport stickerCover053 from './stickers/Arrows/Cover/arrow-54.svg';\nimport stickerContent053 from './stickers/Arrows/Content/arrow-54.svg';\nimport stickerCover054 from './stickers/Arrows/Cover/arrow-55.svg';\nimport stickerContent054 from './stickers/Arrows/Content/arrow-55.svg';\nimport stickerCover055 from './stickers/Arrows/Cover/arrow-56.svg';\nimport stickerContent055 from './stickers/Arrows/Content/arrow-56.svg';\nimport stickerCover056 from './stickers/Arrows/Cover/arrow-57.svg';\nimport stickerContent056 from './stickers/Arrows/Content/arrow-57.svg';\nimport stickerCover057 from './stickers/Arrows/Cover/arrow-58.svg';\nimport stickerContent057 from './stickers/Arrows/Content/arrow-58.svg';\nimport stickerCover058 from './stickers/Arrows/Cover/arrow-59.svg';\nimport stickerContent058 from './stickers/Arrows/Content/arrow-59.svg';\nimport stickerCover059 from './stickers/Arrows/Cover/arrow-60.svg';\nimport stickerContent059 from './stickers/Arrows/Content/arrow-60.svg';\nimport stickerCover060 from './stickers/Arrows/Cover/arrow-61.svg';\nimport stickerContent060 from './stickers/Arrows/Content/arrow-61.svg';\nimport stickerCover061 from './stickers/Arrows/Cover/arrow-62.svg';\nimport stickerContent061 from './stickers/Arrows/Content/arrow-62.svg';\nimport stickerCover062 from './stickers/Arrows/Cover/arrow-63.svg';\nimport stickerContent062 from './stickers/Arrows/Content/arrow-63.svg';\nimport stickerCover063 from './stickers/Arrows/Cover/arrow-64.svg';\nimport stickerContent063 from './stickers/Arrows/Content/arrow-64.svg';\nimport stickerCover064 from './stickers/Arrows/Cover/arrow-65.svg';\nimport stickerContent064 from './stickers/Arrows/Content/arrow-65.svg';\nimport stickerCover065 from './stickers/Arrows/Cover/arrow-66.svg';\nimport stickerContent065 from './stickers/Arrows/Content/arrow-66.svg';\nimport stickerCover066 from './stickers/Arrows/Cover/arrow-67.svg';\nimport stickerContent066 from './stickers/Arrows/Content/arrow-67.svg';\nimport stickerCover067 from './stickers/Arrows/Cover/arrow-68.svg';\nimport stickerContent067 from './stickers/Arrows/Content/arrow-68.svg';\nimport stickerCover068 from './stickers/Arrows/Cover/arrow-69.svg';\nimport stickerContent068 from './stickers/Arrows/Content/arrow-69.svg';\nimport stickerCover069 from './stickers/Arrows/Cover/arrow-70.svg';\nimport stickerContent069 from './stickers/Arrows/Content/arrow-70.svg';\nimport stickerCover070 from './stickers/Arrows/Cover/arrow-71.svg';\nimport stickerContent070 from './stickers/Arrows/Content/arrow-71.svg';\nimport stickerCover071 from './stickers/Arrows/Cover/arrow-72.svg';\nimport stickerContent071 from './stickers/Arrows/Content/arrow-72.svg';\nimport stickerCover072 from './stickers/Arrows/Cover/arrow-73.svg';\nimport stickerContent072 from './stickers/Arrows/Content/arrow-73.svg';\nimport stickerCover073 from './stickers/Arrows/Cover/arrow-74.svg';\nimport stickerContent073 from './stickers/Arrows/Content/arrow-74.svg';\nimport stickerCover074 from './stickers/Arrows/Cover/arrow-75.svg';\nimport stickerContent074 from './stickers/Arrows/Content/arrow-75.svg';\nimport stickerCover075 from './stickers/Arrows/Cover/arrow-76.svg';\nimport stickerContent075 from './stickers/Arrows/Content/arrow-76.svg';\nimport stickerCover076 from './stickers/Arrows/Cover/arrow-77.svg';\nimport stickerContent076 from './stickers/Arrows/Content/arrow-77.svg';\nimport stickerCover077 from './stickers/Arrows/Cover/arrow-78.svg';\nimport stickerContent077 from './stickers/Arrows/Content/arrow-78.svg';\nimport stickerCover078 from './stickers/Arrows/Cover/arrow-79.svg';\nimport stickerContent078 from './stickers/Arrows/Content/arrow-79.svg';\nimport stickerCover079 from './stickers/Arrows/Cover/arrow-80.svg';\nimport stickerContent079 from './stickers/Arrows/Content/arrow-80.svg';\nimport stickerCover080 from './stickers/Arrows/Cover/arrow-81.svg';\nimport stickerContent080 from './stickers/Arrows/Content/arrow-81.svg';\nimport stickerCover081 from './stickers/Arrows/Cover/arrow-82.svg';\nimport stickerContent081 from './stickers/Arrows/Content/arrow-82.svg';\nimport stickerCover082 from './stickers/Arrows/Cover/arrow-83.svg';\nimport stickerContent082 from './stickers/Arrows/Content/arrow-83.svg';\nimport stickerCover083 from './stickers/Arrows/Cover/arrow-84.svg';\nimport stickerContent083 from './stickers/Arrows/Content/arrow-84.svg';\nimport stickerCover084 from './stickers/Arrows/Cover/arrow-85.svg';\nimport stickerContent084 from './stickers/Arrows/Content/arrow-85.svg';\nimport stickerCover085 from './stickers/Arrows/Cover/arrow-86.svg';\nimport stickerContent085 from './stickers/Arrows/Content/arrow-86.svg';\nimport stickerCover086 from './stickers/Arrows/Cover/arrow-87.svg';\nimport stickerContent086 from './stickers/Arrows/Content/arrow-87.svg';\nimport stickerCover087 from './stickers/Arrows/Cover/arrow-88.svg';\nimport stickerContent087 from './stickers/Arrows/Content/arrow-88.svg';\nimport stickerCover088 from './stickers/Arrows/Cover/arrow-89.svg';\nimport stickerContent088 from './stickers/Arrows/Content/arrow-89.svg';\nimport stickerCover089 from './stickers/Arrows/Cover/arrow-90.svg';\nimport stickerContent089 from './stickers/Arrows/Content/arrow-90.svg';\nimport stickerCover090 from './stickers/Arrows/Cover/arrow-91.svg';\nimport stickerContent090 from './stickers/Arrows/Content/arrow-91.svg';\nimport stickerCover091 from './stickers/Arrows/Cover/arrow-92.svg';\nimport stickerContent091 from './stickers/Arrows/Content/arrow-92.svg';\nimport stickerCover092 from './stickers/Arrows/Cover/arrow-93.svg';\nimport stickerContent092 from './stickers/Arrows/Content/arrow-93.svg';\nimport stickerCover093 from './stickers/Arrows/Cover/arrow-94.svg';\nimport stickerContent093 from './stickers/Arrows/Content/arrow-94.svg';\nimport stickerCover094 from './stickers/Arrows/Cover/arrow-95.svg';\nimport stickerContent094 from './stickers/Arrows/Content/arrow-95.svg';\nimport stickerCover095 from './stickers/Arrows/Cover/arrow-96.svg';\nimport stickerContent095 from './stickers/Arrows/Content/arrow-96.svg';\nimport stickerCover096 from './stickers/Arrows/Cover/arrow-97.svg';\nimport stickerContent096 from './stickers/Arrows/Content/arrow-97.svg';\nimport stickerCover097 from './stickers/Arrows/Cover/arrow-98.svg';\nimport stickerContent097 from './stickers/Arrows/Content/arrow-98.svg';\nimport stickerCover098 from './stickers/Arrows/Cover/arrow-99.svg';\nimport stickerContent098 from './stickers/Arrows/Content/arrow-99.svg';\nimport stickerCover099 from './stickers/Arrows/Cover/arrow-100.svg';\nimport stickerContent099 from './stickers/Arrows/Content/arrow-100.svg';\nimport stickerCover100 from './stickers/Arrows/Cover/arrow-101.svg';\nimport stickerContent100 from './stickers/Arrows/Content/arrow-101.svg';\nimport stickerCover101 from './stickers/Arrows/Cover/arrow-102.svg';\nimport stickerContent101 from './stickers/Arrows/Content/arrow-102.svg';\nimport stickerCover102 from './stickers/Arrows/Cover/arrow-103.svg';\nimport stickerContent102 from './stickers/Arrows/Content/arrow-103.svg';\nimport stickerCover103 from './stickers/Arrows/Cover/arrow-104.svg';\nimport stickerContent103 from './stickers/Arrows/Content/arrow-104.svg';\nimport stickerCover104 from './stickers/Arrows/Cover/arrow-105.svg';\nimport stickerContent104 from './stickers/Arrows/Content/arrow-105.svg';\nimport stickerCover105 from './stickers/Arrows/Cover/arrow-106.svg';\nimport stickerContent105 from './stickers/Arrows/Content/arrow-106.svg';\nimport stickerCover106 from './stickers/Arrows/Cover/arrow-107.svg';\nimport stickerContent106 from './stickers/Arrows/Content/arrow-107.svg';\nimport stickerCover107 from './stickers/Arrows/Cover/arrow-108.svg';\nimport stickerContent107 from './stickers/Arrows/Content/arrow-108.svg';\nimport stickerCover108 from './stickers/Arrows/Cover/arrow-109.svg';\nimport stickerContent108 from './stickers/Arrows/Content/arrow-109.svg';\nimport stickerCover109 from './stickers/Arrows/Cover/arrow-110.svg';\nimport stickerContent109 from './stickers/Arrows/Content/arrow-110.svg';\nimport stickerCover110 from './stickers/Arrows/Cover/arrow-111.svg';\nimport stickerContent110 from './stickers/Arrows/Content/arrow-111.svg';\nimport stickerCover111 from './stickers/Arrows/Cover/arrow-112.svg';\nimport stickerContent111 from './stickers/Arrows/Content/arrow-112.svg';\nimport stickerCover112 from './stickers/Arrows/Cover/arrow-113.svg';\nimport stickerContent112 from './stickers/Arrows/Content/arrow-113.svg';\nimport stickerCover113 from './stickers/Arrows/Cover/arrow-114.svg';\nimport stickerContent113 from './stickers/Arrows/Content/arrow-114.svg';\nimport stickerCover114 from './stickers/Arrows/Cover/arrow-115.svg';\nimport stickerContent114 from './stickers/Arrows/Content/arrow-115.svg';\nimport stickerCover115 from './stickers/Arrows/Cover/arrow-116.svg';\nimport stickerContent115 from './stickers/Arrows/Content/arrow-116.svg';\nimport stickerCover116 from './stickers/Arrows/Cover/arrow-117.svg';\nimport stickerContent116 from './stickers/Arrows/Content/arrow-117.svg';\nimport stickerCover117 from './stickers/Arrows/Cover/arrow-118.svg';\nimport stickerContent117 from './stickers/Arrows/Content/arrow-118.svg';\nimport stickerCover118 from './stickers/Arrows/Cover/arrow-119.svg';\nimport stickerContent118 from './stickers/Arrows/Content/arrow-119.svg';\nimport stickerCover119 from './stickers/Arrows/Cover/arrow-120.svg';\nimport stickerContent119 from './stickers/Arrows/Content/arrow-120.svg';\nimport stickerCover120 from './stickers/Arrows/Cover/arrow-121.svg';\nimport stickerContent120 from './stickers/Arrows/Content/arrow-121.svg';\nimport stickerCover121 from './stickers/Arrows/Cover/arrow-122.svg';\nimport stickerContent121 from './stickers/Arrows/Content/arrow-122.svg';\nimport stickerCover122 from './stickers/Arrows/Cover/arrow-123.svg';\nimport stickerContent122 from './stickers/Arrows/Content/arrow-123.svg';\nimport stickerCover123 from './stickers/Arrows/Cover/arrow-124.svg';\nimport stickerContent123 from './stickers/Arrows/Content/arrow-124.svg';\nimport stickerCover124 from './stickers/Arrows/Cover/arrow-125.svg';\nimport stickerContent124 from './stickers/Arrows/Content/arrow-125.svg';\nimport stickerCover125 from './stickers/Arrows/Cover/arrow-126.svg';\nimport stickerContent125 from './stickers/Arrows/Content/arrow-126.svg';\nimport stickerCover126 from './stickers/Arrows/Cover/arrow-127.svg';\nimport stickerContent126 from './stickers/Arrows/Content/arrow-127.svg';\nimport stickerCover127 from './stickers/Arrows/Cover/arrow-128.svg';\nimport stickerContent127 from './stickers/Arrows/Content/arrow-128.svg';\nimport stickerCover128 from './stickers/Arrows/Cover/arrow-129.svg';\nimport stickerContent128 from './stickers/Arrows/Content/arrow-129.svg';\nimport stickerCover129 from './stickers/Arrows/Cover/arrow-130.svg';\nimport stickerContent129 from './stickers/Arrows/Content/arrow-130.svg';\nimport stickerCover130 from './stickers/Arrows/Cover/arrow-131.svg';\nimport stickerContent130 from './stickers/Arrows/Content/arrow-131.svg';\nimport stickerCover131 from './stickers/Arrows/Cover/arrow-132.svg';\nimport stickerContent131 from './stickers/Arrows/Content/arrow-132.svg';\nimport stickerCover132 from './stickers/Arrows/Cover/arrow-133.svg';\nimport stickerContent132 from './stickers/Arrows/Content/arrow-133.svg';\nimport stickerCover133 from './stickers/Arrows/Cover/arrow-134.svg';\nimport stickerContent133 from './stickers/Arrows/Content/arrow-134.svg';\nimport stickerCover134 from './stickers/Arrows/Cover/arrow-135.svg';\nimport stickerContent134 from './stickers/Arrows/Content/arrow-135.svg';\nimport stickerCover135 from './stickers/Arrows/Cover/arrow-136.svg';\nimport stickerContent135 from './stickers/Arrows/Content/arrow-136.svg';\nimport stickerCover136 from './stickers/Arrows/Cover/arrow-137.svg';\nimport stickerContent136 from './stickers/Arrows/Content/arrow-137.svg';\nimport stickerCover137 from './stickers/Arrows/Cover/arrow-138.svg';\nimport stickerContent137 from './stickers/Arrows/Content/arrow-138.svg';\nimport stickerCover138 from './stickers/Arrows/Cover/arrow-139.svg';\nimport stickerContent138 from './stickers/Arrows/Content/arrow-139.svg';\nimport stickerCover139 from './stickers/Arrows/Cover/arrow-140.svg';\nimport stickerContent139 from './stickers/Arrows/Content/arrow-140.svg';\nimport stickerCover140 from './stickers/Arrows/Cover/arrow-141.svg';\nimport stickerContent140 from './stickers/Arrows/Content/arrow-141.svg';\nimport stickerCover141 from './stickers/Arrows/Cover/arrow-142.svg';\nimport stickerContent141 from './stickers/Arrows/Content/arrow-142.svg';\nimport stickerCover142 from './stickers/Arrows/Cover/arrow-143.svg';\nimport stickerContent142 from './stickers/Arrows/Content/arrow-143.svg';\nimport stickerCover143 from './stickers/Arrows/Cover/arrow-144.svg';\nimport stickerContent143 from './stickers/Arrows/Content/arrow-144.svg';\nimport stickerCover144 from './stickers/Arrows/Cover/arrow-145.svg';\nimport stickerContent144 from './stickers/Arrows/Content/arrow-145.svg';\nimport stickerCover145 from './stickers/Arrows/Cover/arrow-146.svg';\nimport stickerContent145 from './stickers/Arrows/Content/arrow-146.svg';\nimport stickerCover146 from './stickers/Arrows/Cover/arrow-147.svg';\nimport stickerContent146 from './stickers/Arrows/Content/arrow-147.svg';\nimport stickerCover147 from './stickers/Arrows/Cover/arrow-148.svg';\nimport stickerContent147 from './stickers/Arrows/Content/arrow-148.svg';\nimport stickerCover148 from './stickers/Arrows/Cover/arrow-149.svg';\nimport stickerContent148 from './stickers/Arrows/Content/arrow-149.svg';\nimport stickerCover149 from './stickers/Arrows/Cover/arrow-150.svg';\nimport stickerContent149 from './stickers/Arrows/Content/arrow-150.svg';\nimport stickerCover150 from './stickers/Arrows/Cover/arrow-151.svg';\nimport stickerContent150 from './stickers/Arrows/Content/arrow-151.svg';\nimport stickerCover151 from './stickers/Arrows/Cover/arrow-152.svg';\nimport stickerContent151 from './stickers/Arrows/Content/arrow-152.svg';\nimport stickerCover152 from './stickers/Arrows/Cover/arrow-153.svg';\nimport stickerContent152 from './stickers/Arrows/Content/arrow-153.svg';\nimport stickerCover153 from './stickers/Arrows/Cover/arrow-154.svg';\nimport stickerContent153 from './stickers/Arrows/Content/arrow-154.svg';\nimport stickerCover154 from './stickers/Arrows/Cover/arrow-155.svg';\nimport stickerContent154 from './stickers/Arrows/Content/arrow-155.svg';\nimport stickerCover155 from './stickers/Arrows/Cover/arrow-156.svg';\nimport stickerContent155 from './stickers/Arrows/Content/arrow-156.svg';\nimport stickerCover156 from './stickers/Arrows/Cover/arrow-157.svg';\nimport stickerContent156 from './stickers/Arrows/Content/arrow-157.svg';\nimport stickerCover157 from './stickers/Arrows/Cover/arrow-158.svg';\nimport stickerContent157 from './stickers/Arrows/Content/arrow-158.svg';\nimport stickerCover158 from './stickers/Arrows/Cover/arrow-159.svg';\nimport stickerContent158 from './stickers/Arrows/Content/arrow-159.svg';\nimport stickerCover159 from './stickers/Arrows/Cover/arrow-160.svg';\nimport stickerContent159 from './stickers/Arrows/Content/arrow-160.svg';\nimport stickerCover160 from './stickers/Arrows/Cover/arrow-161.svg';\nimport stickerContent160 from './stickers/Arrows/Content/arrow-161.svg';\nimport stickerCover161 from './stickers/Arrows/Cover/arrow-162.svg';\nimport stickerContent161 from './stickers/Arrows/Content/arrow-162.svg';\nimport stickerCover162 from './stickers/Arrows/Cover/arrow-163.svg';\nimport stickerContent162 from './stickers/Arrows/Content/arrow-163.svg';\nimport stickerCover163 from './stickers/Arrows/Cover/arrow-164.svg';\nimport stickerContent163 from './stickers/Arrows/Content/arrow-164.svg';\nimport stickerCover164 from './stickers/Arrows/Cover/arrow-165.svg';\nimport stickerContent164 from './stickers/Arrows/Content/arrow-165.svg';\nimport stickerCover165 from './stickers/Arrows/Cover/arrow-166.svg';\nimport stickerContent165 from './stickers/Arrows/Content/arrow-166.svg';\nimport stickerCover166 from './stickers/Arrows/Cover/arrow-167.svg';\nimport stickerContent166 from './stickers/Arrows/Content/arrow-167.svg';\nimport stickerCover167 from './stickers/Arrows/Cover/arrow-168.svg';\nimport stickerContent167 from './stickers/Arrows/Content/arrow-168.svg';\nimport stickerCover168 from './stickers/Arrows/Cover/arrow-169.svg';\nimport stickerContent168 from './stickers/Arrows/Content/arrow-169.svg';\nimport stickerCover169 from './stickers/Arrows/Cover/arrow-170.svg';\nimport stickerContent169 from './stickers/Arrows/Content/arrow-170.svg';\nimport stickerCover170 from './stickers/Arrows/Cover/arrow-171.svg';\nimport stickerContent170 from './stickers/Arrows/Content/arrow-171.svg';\nimport stickerCover171 from './stickers/Arrows/Cover/arrow-172.svg';\nimport stickerContent171 from './stickers/Arrows/Content/arrow-172.svg';\nimport stickerCover172 from './stickers/Arrows/Cover/arrow-173.svg';\nimport stickerContent172 from './stickers/Arrows/Content/arrow-173.svg';\nimport stickerCover173 from './stickers/Arrows/Cover/arrow-174.svg';\nimport stickerContent173 from './stickers/Arrows/Content/arrow-174.svg';\nimport stickerCover174 from './stickers/Arrows/Cover/arrow-175.svg';\nimport stickerContent174 from './stickers/Arrows/Content/arrow-175.svg';\nimport stickerCover175 from './stickers/Arrows/Cover/arrow-176.svg';\nimport stickerContent175 from './stickers/Arrows/Content/arrow-176.svg';\nimport stickerCover176 from './stickers/Arrows/Cover/arrow-177.svg';\nimport stickerContent176 from './stickers/Arrows/Content/arrow-177.svg';\nimport stickerCover177 from './stickers/Arrows/Cover/arrow-178.svg';\nimport stickerContent177 from './stickers/Arrows/Content/arrow-178.svg';\nimport stickerCover178 from './stickers/Arrows/Cover/arrow-179.svg';\nimport stickerContent178 from './stickers/Arrows/Content/arrow-179.svg';\nimport stickerCover179 from './stickers/Arrows/Cover/arrow-180.svg';\nimport stickerContent179 from './stickers/Arrows/Content/arrow-180.svg';\nimport stickerCover180 from './stickers/Arrows/Cover/arrow-181.svg';\nimport stickerContent180 from './stickers/Arrows/Content/arrow-181.svg';\nimport stickerCover181 from './stickers/Arrows/Cover/arrow-182.svg';\nimport stickerContent181 from './stickers/Arrows/Content/arrow-182.svg';\nimport stickerCover182 from './stickers/Arrows/Cover/arrow-183.svg';\nimport stickerContent182 from './stickers/Arrows/Content/arrow-183.svg';\nimport stickerCover183 from './stickers/Arrows/Cover/arrow-184.svg';\nimport stickerContent183 from './stickers/Arrows/Content/arrow-184.svg';\nimport stickerCover184 from './stickers/Arrows/Cover/arrow-185.svg';\nimport stickerContent184 from './stickers/Arrows/Content/arrow-185.svg';\nimport stickerCover185 from './stickers/Arrows/Cover/source.svg';\nimport stickerContent185 from './stickers/Arrows/Content/source.svg';\nimport stickerCover186 from './stickers/Cheeky Piggies/Cover/Crybaby.svg';\nimport stickerContent186 from './stickers/Cheeky Piggies/Content/Crybaby.svg';\nimport stickerCover187 from './stickers/Cheeky Piggies/Cover/Drool.svg';\nimport stickerContent187 from './stickers/Cheeky Piggies/Content/Drool.svg';\nimport stickerCover188 from './stickers/Cheeky Piggies/Cover/Fuming.svg';\nimport stickerContent188 from './stickers/Cheeky Piggies/Content/Fuming.svg';\nimport stickerCover189 from './stickers/Cheeky Piggies/Cover/Hi~.svg';\nimport stickerContent189 from './stickers/Cheeky Piggies/Content/Hi~.svg';\nimport stickerCover190 from './stickers/Cheeky Piggies/Cover/Holding Tears.svg';\nimport stickerContent190 from './stickers/Cheeky Piggies/Content/Holding Tears.svg';\nimport stickerCover191 from './stickers/Cheeky Piggies/Cover/Love Blows.svg';\nimport stickerContent191 from './stickers/Cheeky Piggies/Content/Love Blows.svg';\nimport stickerCover192 from './stickers/Cheeky Piggies/Cover/Me_ Really_.svg';\nimport stickerContent192 from './stickers/Cheeky Piggies/Content/Me_ Really_.svg';\nimport stickerCover193 from './stickers/Cheeky Piggies/Cover/OK.svg';\nimport stickerContent193 from './stickers/Cheeky Piggies/Content/OK.svg';\nimport stickerCover194 from './stickers/Cheeky Piggies/Cover/Sassy Flick.svg';\nimport stickerContent194 from './stickers/Cheeky Piggies/Content/Sassy Flick.svg';\nimport stickerCover195 from './stickers/Cheeky Piggies/Cover/Shockwave.svg';\nimport stickerContent195 from './stickers/Cheeky Piggies/Content/Shockwave.svg';\nimport stickerCover196 from './stickers/Cheeky Piggies/Cover/Snooze Drool.svg';\nimport stickerContent196 from './stickers/Cheeky Piggies/Content/Snooze Drool.svg';\nimport stickerCover197 from './stickers/Cheeky Piggies/Cover/Swag.svg';\nimport stickerContent197 from './stickers/Cheeky Piggies/Content/Swag.svg';\nimport stickerCover198 from './stickers/Cheeky Piggies/Cover/Sweatdrop.svg';\nimport stickerContent198 from './stickers/Cheeky Piggies/Content/Sweatdrop.svg';\nimport stickerCover199 from './stickers/Cheeky Piggies/Cover/Thumbs Up.svg';\nimport stickerContent199 from './stickers/Cheeky Piggies/Content/Thumbs Up.svg';\nimport stickerCover200 from './stickers/Cheeky Piggies/Cover/What_.svg';\nimport stickerContent200 from './stickers/Cheeky Piggies/Content/What_.svg';\nimport stickerCover201 from './stickers/Contorted Stickers/Cover/AFFiNE.svg';\nimport stickerContent201 from './stickers/Contorted Stickers/Content/AFFiNE.svg';\nimport stickerCover202 from './stickers/Contorted Stickers/Cover/AI.svg';\nimport stickerContent202 from './stickers/Contorted Stickers/Content/AI.svg';\nimport stickerCover203 from './stickers/Contorted Stickers/Cover/Cat.svg';\nimport stickerContent203 from './stickers/Contorted Stickers/Content/Cat.svg';\nimport stickerCover204 from './stickers/Contorted Stickers/Cover/Closed.svg';\nimport stickerContent204 from './stickers/Contorted Stickers/Content/Closed.svg';\nimport stickerCover205 from './stickers/Contorted Stickers/Cover/Eyes.svg';\nimport stickerContent205 from './stickers/Contorted Stickers/Content/Eyes.svg';\nimport stickerCover206 from './stickers/Contorted Stickers/Cover/Fire.svg';\nimport stickerContent206 from './stickers/Contorted Stickers/Content/Fire.svg';\nimport stickerCover207 from './stickers/Contorted Stickers/Cover/Info.svg';\nimport stickerContent207 from './stickers/Contorted Stickers/Content/Info.svg';\nimport stickerCover208 from './stickers/Contorted Stickers/Cover/King.svg';\nimport stickerContent208 from './stickers/Contorted Stickers/Content/King.svg';\nimport stickerCover209 from './stickers/Contorted Stickers/Cover/Love Face.svg';\nimport stickerContent209 from './stickers/Contorted Stickers/Content/Love Face.svg';\nimport stickerCover210 from './stickers/Contorted Stickers/Cover/Love.svg';\nimport stickerContent210 from './stickers/Contorted Stickers/Content/Love.svg';\nimport stickerCover211 from './stickers/Contorted Stickers/Cover/Notice.svg';\nimport stickerContent211 from './stickers/Contorted Stickers/Content/Notice.svg';\nimport stickerCover212 from './stickers/Contorted Stickers/Cover/Pin.svg';\nimport stickerContent212 from './stickers/Contorted Stickers/Content/Pin.svg';\nimport stickerCover213 from './stickers/Contorted Stickers/Cover/Question.svg';\nimport stickerContent213 from './stickers/Contorted Stickers/Content/Question.svg';\nimport stickerCover214 from './stickers/Contorted Stickers/Cover/Smile Face.svg';\nimport stickerContent214 from './stickers/Contorted Stickers/Content/Smile Face.svg';\nimport stickerCover215 from './stickers/Contorted Stickers/Cover/Stop.svg';\nimport stickerContent215 from './stickers/Contorted Stickers/Content/Stop.svg';\nimport stickerCover216 from './stickers/Paper/Cover/+1.svg';\nimport stickerContent216 from './stickers/Paper/Content/+1.svg';\nimport stickerCover217 from './stickers/Paper/Cover/A lot of question.svg';\nimport stickerContent217 from './stickers/Paper/Content/A lot of question.svg';\nimport stickerCover218 from './stickers/Paper/Cover/AFFiNE AI.svg';\nimport stickerContent218 from './stickers/Paper/Content/AFFiNE AI.svg';\nimport stickerCover219 from './stickers/Paper/Cover/Arrow.svg';\nimport stickerContent219 from './stickers/Paper/Content/Arrow.svg';\nimport stickerCover220 from './stickers/Paper/Cover/Atention.svg';\nimport stickerContent220 from './stickers/Paper/Content/Atention.svg';\nimport stickerCover221 from './stickers/Paper/Cover/Blue Screen.svg';\nimport stickerContent221 from './stickers/Paper/Content/Blue Screen.svg';\nimport stickerCover222 from './stickers/Paper/Cover/Boom.svg';\nimport stickerContent222 from './stickers/Paper/Content/Boom.svg';\nimport stickerCover223 from './stickers/Paper/Cover/Cool.svg';\nimport stickerContent223 from './stickers/Paper/Content/Cool.svg';\nimport stickerCover224 from './stickers/Paper/Cover/Dino.svg';\nimport stickerContent224 from './stickers/Paper/Content/Dino.svg';\nimport stickerCover225 from './stickers/Paper/Cover/Histogram.svg';\nimport stickerContent225 from './stickers/Paper/Content/Histogram.svg';\nimport stickerCover226 from './stickers/Paper/Cover/Local First.svg';\nimport stickerContent226 from './stickers/Paper/Content/Local First.svg';\nimport stickerCover227 from './stickers/Paper/Cover/Medal.svg';\nimport stickerContent227 from './stickers/Paper/Content/Medal.svg';\nimport stickerCover228 from './stickers/Paper/Cover/Notice.svg';\nimport stickerContent228 from './stickers/Paper/Content/Notice.svg';\nimport stickerCover229 from './stickers/Paper/Cover/Pin.svg';\nimport stickerContent229 from './stickers/Paper/Content/Pin.svg';\nimport stickerCover230 from './stickers/Paper/Cover/Star.svg';\nimport stickerContent230 from './stickers/Paper/Content/Star.svg';\n\nfunction buildStickerTemplate(data) {\n return {\n name: data.name,\n preview: data.cover,\n type: 'sticker',\n assets: {\n [data.hash]: data.content,\n },\n content: {\n type: 'page',\n meta: {\n id: 'doc:home',\n title: 'Sticker',\n createDate: 1701765881935,\n tags: [],\n },\n blocks: {\n type: 'block',\n id: 'block:1VxnfD_8xb',\n flavour: 'affine:page',\n props: {\n title: {\n '$blocksuite:internal:text$': true,\n delta: [\n {\n insert: 'Sticker',\n },\n ],\n },\n },\n children: [\n {\n type: 'block',\n id: 'block:pcmYJQ63hX',\n flavour: 'affine:surface',\n props: {\n elements: {},\n },\n children: [\n {\n type: 'block',\n id: 'block:N24al1Qgl7',\n flavour: 'affine:image',\n props: {\n caption: '',\n sourceId: data.hash,\n width: 0,\n height: 0,\n index: 'b0D',\n xywh: '[0,0,460,430]',\n rotate: 0,\n },\n children: [],\n },\n ],\n },\n ],\n },\n },\n };\n}\n\nfunction lcs(text1: string, text2: string) {\n const dp: number[][] = Array.from({ length: text1.length + 1 })\n .fill(null)\n .map(() => Array.from({length: text2.length + 1}).fill(0));\n\n for (let i = 1; i <= text1.length; i++) {\n for (let j = 1; j <= text2.length; j++) {\n if (text1[i - 1] === text2[j - 1]) {\n dp[i][j] = dp[i - 1][j - 1] + 1;\n } else {\n dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);\n }\n }\n }\n\n return dp[text1.length][text2.length];\n}\n\nconst templates = {\n \"Arrows\": [ buildStickerTemplate({\n name: \"arrow-1\",\n cover: stickerCover000,\n content: stickerContent000,\n hash: \"YaaYGysUizxrn-koKS9MlYXg2R2zpQecoFx08jya0aQ=\",\n }),\n buildStickerTemplate({\n name: \"arrow-2\",\n cover: stickerCover001,\n content: stickerContent001,\n hash: \"T3QfBMbD4gWhI6lL4TRNe5FMat02T2YBvPe-Rm4FkrY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-3\",\n cover: stickerCover002,\n content: stickerContent002,\n hash: \"zfqg42rHf9B8I74XfxaZ4-mXnmFlwX9SZk47AN-MuY8=\",\n }),\n buildStickerTemplate({\n name: \"arrow-4\",\n cover: stickerCover003,\n content: stickerContent003,\n hash: \"OYOorxDDTlC73QmhkhpxYlpCl00nZGG_MY3fCaChAyw=\",\n }),\n buildStickerTemplate({\n name: \"arrow-5\",\n cover: stickerCover004,\n content: stickerContent004,\n hash: \"lVpqGZ4JOJLnF8Lj6LUr3HXt8Uzg14HUKTdy61mA06E=\",\n }),\n buildStickerTemplate({\n name: \"arrow-6\",\n cover: stickerCover005,\n content: stickerContent005,\n hash: \"YQvXGmyQ5CMoeQOqiICDhRlPMx4GxJbK1s1VcCgWJXg=\",\n }),\n buildStickerTemplate({\n name: \"arrow-7\",\n cover: stickerCover006,\n content: stickerContent006,\n hash: \"W0soM0fGEdNGDj8Aes2l2XpXfC8ib-8zpCw8HbEMcsI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-8\",\n cover: stickerCover007,\n content: stickerContent007,\n hash: \"UU1vpJSy17AzURffXHIfQbkNPQ8nH5_Z60xTYUy2ifI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-9\",\n cover: stickerCover008,\n content: stickerContent008,\n hash: \"SrCFM2aHAyR6-oBEqHdhiflZVmVL2zt-rDbgLtANvAM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-10\",\n cover: stickerCover009,\n content: stickerContent009,\n hash: \"lehO7Xs0UKt0MR8RyZ6kV74M_zCy0GgrTSiOD7oNRmE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-11\",\n cover: stickerCover010,\n content: stickerContent010,\n hash: \"_dXUvx5tTcm4IykbislTxwNoSLJ4g3oqmd7A9x4ONdY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-12\",\n cover: stickerCover011,\n content: stickerContent011,\n hash: \"cwaReNMJ3a7-qEjDWyiqV-BZB3hH7yJmm7xTRyEQktM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-13\",\n cover: stickerCover012,\n content: stickerContent012,\n hash: \"OZS78ZRp59njtnYy4EMPrDJRBaW7GHCHOAnlB7oquBo=\",\n }),\n buildStickerTemplate({\n name: \"arrow-14\",\n cover: stickerCover013,\n content: stickerContent013,\n hash: \"3htAxVQCWAm3c0_xy0sUXKB_TAzwqwcodLA2W-633nA=\",\n }),\n buildStickerTemplate({\n name: \"arrow-15\",\n cover: stickerCover014,\n content: stickerContent014,\n hash: \"xjqPPHMP_NtP_T4c8SDW-9XMiZJOf01BnXATYq7WwUc=\",\n }),\n buildStickerTemplate({\n name: \"arrow-16\",\n cover: stickerCover015,\n content: stickerContent015,\n hash: \"celWgMBt-s1RP6U9e4XY0Cl2DbQ640-d-dmmKJOTPbU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-17\",\n cover: stickerCover016,\n content: stickerContent016,\n hash: \"tlHzKPxi-aD8VBnvYY92WL44AXLrS1fiiAT4Q2BZM0A=\",\n }),\n buildStickerTemplate({\n name: \"arrow-18\",\n cover: stickerCover017,\n content: stickerContent017,\n hash: \"_XMVZ9Ky61ezOSN9lhOUpIozBo8s0rzWDnb7wmOhpXA=\",\n }),\n buildStickerTemplate({\n name: \"arrow-19\",\n cover: stickerCover018,\n content: stickerContent018,\n hash: \"Wz0AJRnxvmUP5tVN2lauHdJ8zTaM9YNp6bDGqz1oeJk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-20\",\n cover: stickerCover019,\n content: stickerContent019,\n hash: \"spOLMoa4_zQrMdEQVp7N9WNP2p-fidto0KBHPcONRPE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-21\",\n cover: stickerCover020,\n content: stickerContent020,\n hash: \"h38dM2XAmu4KuVJX9ub4KN0BRoTz9HL0bSF6wsH-GZU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-22\",\n cover: stickerCover021,\n content: stickerContent021,\n hash: \"Q06vAxpk3bVg7tPPx6d_rLt_BXSn2XtQm04Y83o5mVE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-23\",\n cover: stickerCover022,\n content: stickerContent022,\n hash: \"A4rLg-FbEFkqP7NMZV1clkPRT-QINd26jg16Fa3fVwU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-24\",\n cover: stickerCover023,\n content: stickerContent023,\n hash: \"WvD3rniT5lIIXDPzZjLDRFA8Dyh9fyZXu3pTWEtF1-s=\",\n }),\n buildStickerTemplate({\n name: \"arrow-25\",\n cover: stickerCover024,\n content: stickerContent024,\n hash: \"Qvp034XeuAbYvvHqbJJ6FYU15EqR9JMSQwNVLBVHeyk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-26\",\n cover: stickerCover025,\n content: stickerContent025,\n hash: \"e7hjjnG2FI3n2dfUfRg5Knpn944nnMQYhdr1LVCNhRU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-27\",\n cover: stickerCover026,\n content: stickerContent026,\n hash: \"c8fsJDnXqHrRFg3Ju83wRHa1RCO9k3o2NFF1Tjr8thQ=\",\n }),\n buildStickerTemplate({\n name: \"arrow-28\",\n cover: stickerCover027,\n content: stickerContent027,\n hash: \"JGY17Y2grsR8lGd0sZf85_ZjL6-uvAp0ONtX3FK95ck=\",\n }),\n buildStickerTemplate({\n name: \"arrow-29\",\n cover: stickerCover028,\n content: stickerContent028,\n hash: \"F4YbPiTTNGq9cyiqSKjIxAEBYdWORNLFYxHMmfAs24o=\",\n }),\n buildStickerTemplate({\n name: \"arrow-30\",\n cover: stickerCover029,\n content: stickerContent029,\n hash: \"wDMTQN26VcBOOF9nDhlem7ovgKLdNbFOvPyEDoHk6H0=\",\n }),\n buildStickerTemplate({\n name: \"arrow-31\",\n cover: stickerCover030,\n content: stickerContent030,\n hash: \"c9p-sdq9YXFyNcsfgn6CC6n-DNDi9MxAW7v-4u_sLbo=\",\n }),\n buildStickerTemplate({\n name: \"arrow-32\",\n cover: stickerCover031,\n content: stickerContent031,\n hash: \"lQr19wl2u3bkJ4y_q5BaLDe6K2DtIpu8AUktOAEou38=\",\n }),\n buildStickerTemplate({\n name: \"arrow-33\",\n cover: stickerCover032,\n content: stickerContent032,\n hash: \"wGi2efXTFGlBV97YvMm72_miToeWITK_SfSgEmL04LY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-34\",\n cover: stickerCover033,\n content: stickerContent033,\n hash: \"-nOQjmN_oJrfSZqwRVK5SxKVNcLNDjsgd1CkpOyBIyY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-35\",\n cover: stickerCover034,\n content: stickerContent034,\n hash: \"I0WOQG_uY4j7l7xonH2D0dEpcvsqE7g5h_B8ZZqxBgI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-36\",\n cover: stickerCover035,\n content: stickerContent035,\n hash: \"Cov5L8kmEp9w5xza4bDj_EQ6u--_Xx1GNO3vcGgx3YE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-37\",\n cover: stickerCover036,\n content: stickerContent036,\n hash: \"3V1oNO4Mpy2GMi8uAqSqpYXYPJBGp_1ZCgDaEl9wVxI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-38\",\n cover: stickerCover037,\n content: stickerContent037,\n hash: \"uvdQrHq3w8jVwJe5KRBJHi9kd0CmEJl2sZfAEj2XKdM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-39\",\n cover: stickerCover038,\n content: stickerContent038,\n hash: \"Az86WgB08HFKq7bUIokNEw-nEp42A27Gt3_ZbJXksyw=\",\n }),\n buildStickerTemplate({\n name: \"arrow-40\",\n cover: stickerCover039,\n content: stickerContent039,\n hash: \"X0XV84s7C0Kdu3YwrSPgENA9ljWCXzSXpgY3A-xyaXA=\",\n }),\n buildStickerTemplate({\n name: \"arrow-41\",\n cover: stickerCover040,\n content: stickerContent040,\n hash: \"mYOSSo5okBDq6skCILrS8LTpW6-xfwusBoKVlkuCkzQ=\",\n }),\n buildStickerTemplate({\n name: \"arrow-42\",\n cover: stickerCover041,\n content: stickerContent041,\n hash: \"4l6wtVF-XjqEnsKe-IorebIcgUG4GGLLLlbns2LFh5Y=\",\n }),\n buildStickerTemplate({\n name: \"arrow-43\",\n cover: stickerCover042,\n content: stickerContent042,\n hash: \"3gR8h5LNWKGH8gA2C5_AjzrfDZD62pgJADPVTFDDaCw=\",\n }),\n buildStickerTemplate({\n name: \"arrow-44\",\n cover: stickerCover043,\n content: stickerContent043,\n hash: \"qDhEedh5a5F5qXuGGec6_y_v4Qp1TFrgtuKqF4PG9Xc=\",\n }),\n buildStickerTemplate({\n name: \"arrow-45\",\n cover: stickerCover044,\n content: stickerContent044,\n hash: \"R2Xz-yMk_8lA_svgD8p0kt1qEiDoNh0kmqggaMcqLAE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-46\",\n cover: stickerCover045,\n content: stickerContent045,\n hash: \"zJ8gOpjZ-v9dgH7lsJBohyTCPqCLCY_hAmRLkgnXuOs=\",\n }),\n buildStickerTemplate({\n name: \"arrow-47\",\n cover: stickerCover046,\n content: stickerContent046,\n hash: \"AmYp6Sz1U336rD4IbOlLFg0vxCbuhhSXbqBdXz7Uxjw=\",\n }),\n buildStickerTemplate({\n name: \"arrow-48\",\n cover: stickerCover047,\n content: stickerContent047,\n hash: \"TKnls2KcG0don7CExsXGfGoCR__wxKHywMClrdalLt4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-49\",\n cover: stickerCover048,\n content: stickerContent048,\n hash: \"39a8HJTi7-d-fWMsbS52trjZRXv6dCeZprY3C7Z87K8=\",\n }),\n buildStickerTemplate({\n name: \"arrow-50\",\n cover: stickerCover049,\n content: stickerContent049,\n hash: \"EbBer46rRfgwQrkn-wmvGtlnPt8E0BPtys5AZaAiCBg=\",\n }),\n buildStickerTemplate({\n name: \"arrow-51\",\n cover: stickerCover050,\n content: stickerContent050,\n hash: \"0AUgxWzhjSlb6dJ00JdlaDauf3XYbu6s5LkREGOQu2o=\",\n }),\n buildStickerTemplate({\n name: \"arrow-52\",\n cover: stickerCover051,\n content: stickerContent051,\n hash: \"lod43ond8UWBEt1BuCtARNI4CR4dxM7rWpslbDpgI64=\",\n }),\n buildStickerTemplate({\n name: \"arrow-53\",\n cover: stickerCover052,\n content: stickerContent052,\n hash: \"Jacw1kzigDegUKTqoGCblNRKLZ1x5v0DKdDzeX1ZOI4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-54\",\n cover: stickerCover053,\n content: stickerContent053,\n hash: \"Kt1rXTJAbBpYPBFa503w_lT5tB3T1elds1FAFZP3uSQ=\",\n }),\n buildStickerTemplate({\n name: \"arrow-55\",\n cover: stickerCover054,\n content: stickerContent054,\n hash: \"B9NdjtekEcN5oAl5OJNCS_nLpKejXTRNgsCoHDlrMOU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-56\",\n cover: stickerCover055,\n content: stickerContent055,\n hash: \"qHg56iOOdWQuE-rZaow6EjW8xCmM8KW89s2kUXnsPPk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-57\",\n cover: stickerCover056,\n content: stickerContent056,\n hash: \"10MHITGc7WLFxUHX48DBaT4kGB4-_U387XnY8sLckyk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-58\",\n cover: stickerCover057,\n content: stickerContent057,\n hash: \"AR3Vb5Ls8s1bYxNcKyqNp1hzbEN_0ONG7XbCOOP9MIQ=\",\n }),\n buildStickerTemplate({\n name: \"arrow-59\",\n cover: stickerCover058,\n content: stickerContent058,\n hash: \"FhklHxC9FkPnYOelqR9fmyDePimgC2AdFUal9lQTxT0=\",\n }),\n buildStickerTemplate({\n name: \"arrow-60\",\n cover: stickerCover059,\n content: stickerContent059,\n hash: \"qxGeYRvhJdFiDHFKeh1x1PFdGOwMB5vcS_TS84plCnU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-61\",\n cover: stickerCover060,\n content: stickerContent060,\n hash: \"KAdP7kc19_WdMA8-liEOPC1ziXaxTXmA7tppdFq8e9s=\",\n }),\n buildStickerTemplate({\n name: \"arrow-62\",\n cover: stickerCover061,\n content: stickerContent061,\n hash: \"UnGxrjNjKzW34c_q1Aot6xquEa2tmLht9FjTSM4tABg=\",\n }),\n buildStickerTemplate({\n name: \"arrow-63\",\n cover: stickerCover062,\n content: stickerContent062,\n hash: \"T7jQAdOwCgw3q4kPSWiuhMuiTyYSqc66OSnvfs9FRJ0=\",\n }),\n buildStickerTemplate({\n name: \"arrow-64\",\n cover: stickerCover063,\n content: stickerContent063,\n hash: \"sKzuGfE90E8IIluGiUwuyx8OJKbvoTReiOAHDCSRp1M=\",\n }),\n buildStickerTemplate({\n name: \"arrow-65\",\n cover: stickerCover064,\n content: stickerContent064,\n hash: \"XI_NKdIzwCHUdpKJWIjLbcIRAfqWcndTysQM4rih9ts=\",\n }),\n buildStickerTemplate({\n name: \"arrow-66\",\n cover: stickerCover065,\n content: stickerContent065,\n hash: \"RleQTrXAxdfBAULTfmrQniFREUI_Qsz4dTjmDGhccQo=\",\n }),\n buildStickerTemplate({\n name: \"arrow-67\",\n cover: stickerCover066,\n content: stickerContent066,\n hash: \"x5TMf4rI1S-YzA0V9wERKTdOaMbRKBZD1NDu_1I5THY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-68\",\n cover: stickerCover067,\n content: stickerContent067,\n hash: \"a6KuDZVNqxg1m8zcdPJ5X37yp1Z2RaPBibLON6DHG_o=\",\n }),\n buildStickerTemplate({\n name: \"arrow-69\",\n cover: stickerCover068,\n content: stickerContent068,\n hash: \"w9ONvmYzWnZZOOjQNGZHNvHBj4O_tEii3aSSk27604E=\",\n }),\n buildStickerTemplate({\n name: \"arrow-70\",\n cover: stickerCover069,\n content: stickerContent069,\n hash: \"q-TzLIs1Vnom51w4gCmvmcsB_X8ZzauX-reEqIzL4AE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-71\",\n cover: stickerCover070,\n content: stickerContent070,\n hash: \"nJt3Lie_4lb7JfZvJYbr_JbanmvN2HspMw11Cd1FsGw=\",\n }),\n buildStickerTemplate({\n name: \"arrow-72\",\n cover: stickerCover071,\n content: stickerContent071,\n hash: \"_4yssK79DQYCjYpmVR71G1J_jGDsWqUpnLRjl2fxl1g=\",\n }),\n buildStickerTemplate({\n name: \"arrow-73\",\n cover: stickerCover072,\n content: stickerContent072,\n hash: \"XxN6YXRVZMVXGhkZbuqrTGZapUCKWQ5eCKkWqzWpm6o=\",\n }),\n buildStickerTemplate({\n name: \"arrow-74\",\n cover: stickerCover073,\n content: stickerContent073,\n hash: \"gTDGr6agieS0aX7Zqn_JeHzXwK_4zh_bu21dT_azrEg=\",\n }),\n buildStickerTemplate({\n name: \"arrow-75\",\n cover: stickerCover074,\n content: stickerContent074,\n hash: \"cQQFdMzD9BHwFEKveUdf4TBSSn5v6RzFEWRgNbT-2aE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-76\",\n cover: stickerCover075,\n content: stickerContent075,\n hash: \"jLYcblTKLLbF3LqlH2y6hct4davXDEGzgL47IYNgjMA=\",\n }),\n buildStickerTemplate({\n name: \"arrow-77\",\n cover: stickerCover076,\n content: stickerContent076,\n hash: \"_mWNkJ8I_nAuO7KsPgKm-3MjAutNc-WSS0uYvvKlYz8=\",\n }),\n buildStickerTemplate({\n name: \"arrow-78\",\n cover: stickerCover077,\n content: stickerContent077,\n hash: \"koB_mtrAP5nO43INYL17oBFgMcdAOBg01myAEa-WeaU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-79\",\n cover: stickerCover078,\n content: stickerContent078,\n hash: \"sxgXGRnY1INaau0E7lB-9BIUdKSDuRv3yhkhZ735WNo=\",\n }),\n buildStickerTemplate({\n name: \"arrow-80\",\n cover: stickerCover079,\n content: stickerContent079,\n hash: \"WoKb0XxY2vkV9qwFyGMYC0T7sPFlUmP9CZIKypuDM4Q=\",\n }),\n buildStickerTemplate({\n name: \"arrow-81\",\n cover: stickerCover080,\n content: stickerContent080,\n hash: \"eKh09dHTXqvmMICV1HoJeEKQUBFP3uD0n6dB2qs6etM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-82\",\n cover: stickerCover081,\n content: stickerContent081,\n hash: \"uaezPvW7KieyG0_58MD6BkJEbfjnnUpQBIE3ZhsRGiw=\",\n }),\n buildStickerTemplate({\n name: \"arrow-83\",\n cover: stickerCover082,\n content: stickerContent082,\n hash: \"1EGNaIXzya6Gy_MhxB_nuvzVWVa3osLYhcAj6ZpX4BI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-84\",\n cover: stickerCover083,\n content: stickerContent083,\n hash: \"mvQMRlR_GJ8tp8ncap4jIgBmPalapJV-cJVdTRMZgXM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-85\",\n cover: stickerCover084,\n content: stickerContent084,\n hash: \"qFvtDG3q_nsUl5FR3cPH6bcfkbVwOWn1XCyac8QoQBY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-86\",\n cover: stickerCover085,\n content: stickerContent085,\n hash: \"uXpsDDpWzxUBu2OaMxFJFGkHuJDQ59NTQXocl5HmiNE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-87\",\n cover: stickerCover086,\n content: stickerContent086,\n hash: \"2V5PR2qrVW516Td2advDoYFrQVPO2HGHv82xZ5jxVds=\",\n }),\n buildStickerTemplate({\n name: \"arrow-88\",\n cover: stickerCover087,\n content: stickerContent087,\n hash: \"YxmlQ71SPxltuf3pHx6DUOvCFtQB9z9nCgETxX4iW8Y=\",\n }),\n buildStickerTemplate({\n name: \"arrow-89\",\n cover: stickerCover088,\n content: stickerContent088,\n hash: \"hIeVzZMwHE5mKg7s0cQ__4v9MIOKNbgvoYybrChR9_c=\",\n }),\n buildStickerTemplate({\n name: \"arrow-90\",\n cover: stickerCover089,\n content: stickerContent089,\n hash: \"e2Fh3BuJJ9r3eyN92MeLeP-rTfGVgtGw4-10BeIfR-c=\",\n }),\n buildStickerTemplate({\n name: \"arrow-91\",\n cover: stickerCover090,\n content: stickerContent090,\n hash: \"quwM6cyRSvnsn1j6fsB4saZUpAxooky3F_9BSLKn21Y=\",\n }),\n buildStickerTemplate({\n name: \"arrow-92\",\n cover: stickerCover091,\n content: stickerContent091,\n hash: \"poYBN2TaRZ2vqOU7SSDl2lfftpWZxqQW0iC7JWK-EaA=\",\n }),\n buildStickerTemplate({\n name: \"arrow-93\",\n cover: stickerCover092,\n content: stickerContent092,\n hash: \"XWVUNPUtdC-XouXk1lduRIftYPrv6evaATxUWnUh7P0=\",\n }),\n buildStickerTemplate({\n name: \"arrow-94\",\n cover: stickerCover093,\n content: stickerContent093,\n hash: \"9MGtE1XdWXKTCdBJr7nnA5bpcxLCCu_A8aBBSWzpCSI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-95\",\n cover: stickerCover094,\n content: stickerContent094,\n hash: \"hgMEGBkWqMHfIkWVLcZ1PbK-LVqRxgXYapd6EuBWcaA=\",\n }),\n buildStickerTemplate({\n name: \"arrow-96\",\n cover: stickerCover095,\n content: stickerContent095,\n hash: \"IceU12pEQ7MBcrQC35LhJ_Zn3L04QuFV3Mdv7YT7FMk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-97\",\n cover: stickerCover096,\n content: stickerContent096,\n hash: \"o_H8jR75oxwJEF9JZobNHeQaxz_UXNeGyVHErb95bo4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-98\",\n cover: stickerCover097,\n content: stickerContent097,\n hash: \"T_Nv1A4TIaiyXAwt8gljpkAT2Z3J_LTB02_x-fx3QfY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-99\",\n cover: stickerCover098,\n content: stickerContent098,\n hash: \"RKbA1LvkNKrqITLidXxAtkabVSmqXn4CyUBc3CZ3oKc=\",\n }),\n buildStickerTemplate({\n name: \"arrow-100\",\n cover: stickerCover099,\n content: stickerContent099,\n hash: \"YHrOpB868jEjxFoCAEjx11RMw7AEhnLEoBCMwlt3LYo=\",\n }),\n buildStickerTemplate({\n name: \"arrow-101\",\n cover: stickerCover100,\n content: stickerContent100,\n hash: \"maGNtNtcIRjZNSCvmrg06iUnJa1w5Nf4JvzSmIGY8ws=\",\n }),\n buildStickerTemplate({\n name: \"arrow-102\",\n cover: stickerCover101,\n content: stickerContent101,\n hash: \"ODaH0-jBWhlR0xy2ELPGP78Xokjrr5VjoQnfPZu0EcE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-103\",\n cover: stickerCover102,\n content: stickerContent102,\n hash: \"qYjgNfKU265UxXMDWPWYUNsjeN46VUYS6jnEJ4xeQUI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-104\",\n cover: stickerCover103,\n content: stickerContent103,\n hash: \"Tj0oBWQKtSO_1528dsfUlwgOqnPq8EBhC7aZYDWXfhs=\",\n }),\n buildStickerTemplate({\n name: \"arrow-105\",\n cover: stickerCover104,\n content: stickerContent104,\n hash: \"KJS9VQh7NVNidvVTr8ue0mHPABDIe_OCqlWYejZr1Hg=\",\n }),\n buildStickerTemplate({\n name: \"arrow-106\",\n cover: stickerCover105,\n content: stickerContent105,\n hash: \"Ut25LI6ck53-qeZ78Cydd0R3l1Rc6NORHudUd6wvTj4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-107\",\n cover: stickerCover106,\n content: stickerContent106,\n hash: \"7HpyfAAitzLHycn52giubS8TI7nVsR29LQ1oP4m8tEs=\",\n }),\n buildStickerTemplate({\n name: \"arrow-108\",\n cover: stickerCover107,\n content: stickerContent107,\n hash: \"eoAS3h5skTCH12LqQ1_XkpZkZnSiJIoz51l-Q7Hhcuc=\",\n }),\n buildStickerTemplate({\n name: \"arrow-109\",\n cover: stickerCover108,\n content: stickerContent108,\n hash: \"MagxHByjiJ2s33LdBCxP9JNTEy-qnHdYJ_EOg1OYdb4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-110\",\n cover: stickerCover109,\n content: stickerContent109,\n hash: \"UoOMFSmjXcHqtngkSNdx68zRVhU5Hp3uxERKLlooQVY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-111\",\n cover: stickerCover110,\n content: stickerContent110,\n hash: \"m2DEb21bFxLa6XkfLvCtxmIQfnDDllSdOrxXvFcOMT4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-112\",\n cover: stickerCover111,\n content: stickerContent111,\n hash: \"OokShOsH5aZC5Zbfh8Lkqj01HoPbnfbjdQkJQaaw3ug=\",\n }),\n buildStickerTemplate({\n name: \"arrow-113\",\n cover: stickerCover112,\n content: stickerContent112,\n hash: \"dnKWQym8Dgz0UzYcUaK2tfph0kp7PrP0pY1wEFIcgZ0=\",\n }),\n buildStickerTemplate({\n name: \"arrow-114\",\n cover: stickerCover113,\n content: stickerContent113,\n hash: \"QrU4_P6AF-1K1EaD68OHBQf0uPXOhTG24QfdcqOMa1Y=\",\n }),\n buildStickerTemplate({\n name: \"arrow-115\",\n cover: stickerCover114,\n content: stickerContent114,\n hash: \"GMkgR0E8CJUZ-tmyXAElVSAYz_NRG4sYrZdOv2oRB3Q=\",\n }),\n buildStickerTemplate({\n name: \"arrow-116\",\n cover: stickerCover115,\n content: stickerContent115,\n hash: \"UHl_GxFYv6N0vv14tia8ikpumzM_0U60tQBu7IRRgas=\",\n }),\n buildStickerTemplate({\n name: \"arrow-117\",\n cover: stickerCover116,\n content: stickerContent116,\n hash: \"djrkvvGtEKWqJaKEJYEtULt3-irEqCbrKpR9ZO5ZfEs=\",\n }),\n buildStickerTemplate({\n name: \"arrow-118\",\n cover: stickerCover117,\n content: stickerContent117,\n hash: \"FSjNcXiifqvpDqKTJgJmAbftD_NwfbUm5ls24hupE3A=\",\n }),\n buildStickerTemplate({\n name: \"arrow-119\",\n cover: stickerCover118,\n content: stickerContent118,\n hash: \"_-fmAAV8-Y_46ovEt7Cj4vjpguT_IUTNXMfzwmzpXvM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-120\",\n cover: stickerCover119,\n content: stickerContent119,\n hash: \"GkDSsSD4vncYvGWmx5jD-VkyGLPZe74i34HHEV6lxs4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-121\",\n cover: stickerCover120,\n content: stickerContent120,\n hash: \"54oAfew92u5k2i2m_wKzDrDKCZMPVwecWPNu-j8SlYI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-122\",\n cover: stickerCover121,\n content: stickerContent121,\n hash: \"KORPcjmy9n9mMG0vqyxmBQA-4vJ0RjD7KoS5S45T3jw=\",\n }),\n buildStickerTemplate({\n name: \"arrow-123\",\n cover: stickerCover122,\n content: stickerContent122,\n hash: \"Qz59poJguyJw9AGiHRRPf3PW0ZeE8OgglRSmBa1D2rc=\",\n }),\n buildStickerTemplate({\n name: \"arrow-124\",\n cover: stickerCover123,\n content: stickerContent123,\n hash: \"GKr2EbYxDpz_q1Zkr6JJXTFzfSHUt2LJFbRAD75h9Bw=\",\n }),\n buildStickerTemplate({\n name: \"arrow-125\",\n cover: stickerCover124,\n content: stickerContent124,\n hash: \"WFMY2PQ03BRTNXwBu1JnMUUymFpkYMrRXDtnSPdldHQ=\",\n }),\n buildStickerTemplate({\n name: \"arrow-126\",\n cover: stickerCover125,\n content: stickerContent125,\n hash: \"gmsqvXOgIMM16zlHXLbfwZABSzAN3C0FBGq5Wk-v1xg=\",\n }),\n buildStickerTemplate({\n name: \"arrow-127\",\n cover: stickerCover126,\n content: stickerContent126,\n hash: \"e5bXvc6Uf0qPkajmzAL0sNSg8gFHPhPpKGh3O5eh1M0=\",\n }),\n buildStickerTemplate({\n name: \"arrow-128\",\n cover: stickerCover127,\n content: stickerContent127,\n hash: \"XDRUK8DczeG1-oCVPE8NGSkKT0DWo4LebdZ_qcW-frk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-129\",\n cover: stickerCover128,\n content: stickerContent128,\n hash: \"7OUGO8MAMnuXrlJTa3n9tV_97BEUdmvUTEJJ_Su5o00=\",\n }),\n buildStickerTemplate({\n name: \"arrow-130\",\n cover: stickerCover129,\n content: stickerContent129,\n hash: \"UBjSYs2MzMR8knqu3SkZNerIpoQAesAFv9jb9y0qaWM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-131\",\n cover: stickerCover130,\n content: stickerContent130,\n hash: \"gw0lkMrt8Nxf7VH4WB82psFO1CI1cge29F2FFDE6HVU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-132\",\n cover: stickerCover131,\n content: stickerContent131,\n hash: \"JgcPNXMXJrlbGiVc_IyLcwxiAYjXVGTQKxZLvGnr_uk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-133\",\n cover: stickerCover132,\n content: stickerContent132,\n hash: \"luQXiAzIJ7hxWEqiG483JKupOtkFpgOAKKgI8Wzms1o=\",\n }),\n buildStickerTemplate({\n name: \"arrow-134\",\n cover: stickerCover133,\n content: stickerContent133,\n hash: \"H5XE_wOB5dg1TKso2zxseeXIubLIhSwNZ3Py3n9k-FE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-135\",\n cover: stickerCover134,\n content: stickerContent134,\n hash: \"HtTxkr8kBtSDHy7HW2_E_csFc4KhDRi3Z5gkZyDm4kM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-136\",\n cover: stickerCover135,\n content: stickerContent135,\n hash: \"sDe_sAZ9japs2uB025cVp5qViZVw4m2LeAWE6HZKQnU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-137\",\n cover: stickerCover136,\n content: stickerContent136,\n hash: \"75EsFpQ8QYEh2z-sLanaSWaJttlvuthbMPzQJjply64=\",\n }),\n buildStickerTemplate({\n name: \"arrow-138\",\n cover: stickerCover137,\n content: stickerContent137,\n hash: \"MLrbqX_vUy3k6lm42iKp4qJZWzXFDzf1DxzjQghElqI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-139\",\n cover: stickerCover138,\n content: stickerContent138,\n hash: \"PQ4Qj4DuBFKF4J5SOmW2jcNLjtlIcnzoYYfiEdFU5Hk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-140\",\n cover: stickerCover139,\n content: stickerContent139,\n hash: \"y8nOErU_v0Ko_nvzIhSlilF0ue6lbSTE7D3Tdla5cYo=\",\n }),\n buildStickerTemplate({\n name: \"arrow-141\",\n cover: stickerCover140,\n content: stickerContent140,\n hash: \"rta9VUGWRd_0PQ-5ZATrec3K4TKzPfoOXZ4aQbYJlC8=\",\n }),\n buildStickerTemplate({\n name: \"arrow-142\",\n cover: stickerCover141,\n content: stickerContent141,\n hash: \"JLhISwmOHa6UNuU5cQSXRZHWdbtWF-B7m7whN7H-440=\",\n }),\n buildStickerTemplate({\n name: \"arrow-143\",\n cover: stickerCover142,\n content: stickerContent142,\n hash: \"FPtqso4jtpd234L1b2f8aYJVSpoMdjrbDuTjTkGFSl8=\",\n }),\n buildStickerTemplate({\n name: \"arrow-144\",\n cover: stickerCover143,\n content: stickerContent143,\n hash: \"7O9NNBRHcHVsVWpzgx7gYSjR5F93SRw4MV2n53b-rfo=\",\n }),\n buildStickerTemplate({\n name: \"arrow-145\",\n cover: stickerCover144,\n content: stickerContent144,\n hash: \"Zy_Qh9RquYQy-NAqdd4f71SnULIw4kfih0clDMUXoJU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-146\",\n cover: stickerCover145,\n content: stickerContent145,\n hash: \"unLJEDYQ-wmBigb-qUBQMoHbAkr0kpzmNaAkurJPd9I=\",\n }),\n buildStickerTemplate({\n name: \"arrow-147\",\n cover: stickerCover146,\n content: stickerContent146,\n hash: \"zFD6YXAGNl_BaxcnPe-MwXOj-6v1IoHWkyBb21ssnrE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-148\",\n cover: stickerCover147,\n content: stickerContent147,\n hash: \"P6zOprXE8RAaqavT7JB_2Wm8TTtKe9SlWDslfayDG3I=\",\n }),\n buildStickerTemplate({\n name: \"arrow-149\",\n cover: stickerCover148,\n content: stickerContent148,\n hash: \"qDvs8pxqTYqjZRSIvjr4JIcLo00MMK5-REo_foIxqGk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-150\",\n cover: stickerCover149,\n content: stickerContent149,\n hash: \"Xmw_3s09sxS2x68zK_4tKRJchcEGPOT4ekldYUBwuhc=\",\n }),\n buildStickerTemplate({\n name: \"arrow-151\",\n cover: stickerCover150,\n content: stickerContent150,\n hash: \"ncvXReXL12IJ_-jSPP3MNoaUm0sbJEiwDFbSOCm5YrA=\",\n }),\n buildStickerTemplate({\n name: \"arrow-152\",\n cover: stickerCover151,\n content: stickerContent151,\n hash: \"tc6g4G4P6sXFh_-RyIwC-mPARxlI9GGTWT2qM4qGQv8=\",\n }),\n buildStickerTemplate({\n name: \"arrow-153\",\n cover: stickerCover152,\n content: stickerContent152,\n hash: \"fgv878SEsW1-XSuSQvmtfvSEGTz6n2d_bkEX2LpFhxM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-154\",\n cover: stickerCover153,\n content: stickerContent153,\n hash: \"ehrIzGjsE2q-5vqSG_mv8QBpMp9KYacRxxh9MoRgj4Y=\",\n }),\n buildStickerTemplate({\n name: \"arrow-155\",\n cover: stickerCover154,\n content: stickerContent154,\n hash: \"kLQkz14oGfs8pra_VArR6TwO6u08J3S58n4qfIm54PM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-156\",\n cover: stickerCover155,\n content: stickerContent155,\n hash: \"rkK3vR72XGsQ7HnaZlaQe_ooBNy7wvELFPl-hIOR_Vk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-157\",\n cover: stickerCover156,\n content: stickerContent156,\n hash: \"QEKKz5wIKf2cQotvTq3C86KkXhDMqSbE2lylbwkXDh4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-158\",\n cover: stickerCover157,\n content: stickerContent157,\n hash: \"sqjVjNiIlEF3tO8g9JVEFScUKCPBY0caznqsP0G9H9Y=\",\n }),\n buildStickerTemplate({\n name: \"arrow-159\",\n cover: stickerCover158,\n content: stickerContent158,\n hash: \"2HmHLWQm_D9n8s-b8ozrmwfMLusAZ9ZJ6Ho2CAvvIDU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-160\",\n cover: stickerCover159,\n content: stickerContent159,\n hash: \"oITqoWKu7lLGPUuIYVaxeZriD-9ScH54HJ_GSUEGeWY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-161\",\n cover: stickerCover160,\n content: stickerContent160,\n hash: \"tT1v09rMg2t7jsjdBQlan-VhY3zn2HOQNt41bQz-CB4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-162\",\n cover: stickerCover161,\n content: stickerContent161,\n hash: \"n5sh39cXKuzEt3xgOKe5qXL4jcxAWq-ofTPsZVFkQS0=\",\n }),\n buildStickerTemplate({\n name: \"arrow-163\",\n cover: stickerCover162,\n content: stickerContent162,\n hash: \"HVd59C5Za0TPfjZ7VP2VkgT33gdGL9EEod2JtyiKMzI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-164\",\n cover: stickerCover163,\n content: stickerContent163,\n hash: \"2-UWNL3XDEYX1zQkORaDLLePdZDYYUdB8LdnxU3uGMA=\",\n }),\n buildStickerTemplate({\n name: \"arrow-165\",\n cover: stickerCover164,\n content: stickerContent164,\n hash: \"1-kbw2QzT09CqljGliDnNnqOIeDimVBCYaSgLkPMPsE=\",\n }),\n buildStickerTemplate({\n name: \"arrow-166\",\n cover: stickerCover165,\n content: stickerContent165,\n hash: \"m3NKcP-reCn2I5O2do79AtYyC-WvKEgWOYfFCUhsxDk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-167\",\n cover: stickerCover166,\n content: stickerContent166,\n hash: \"7_2MDEWn8DO6re_dBgDXqST_KD8P8oU8fLqCXgqX5yU=\",\n }),\n buildStickerTemplate({\n name: \"arrow-168\",\n cover: stickerCover167,\n content: stickerContent167,\n hash: \"uqghDJdRp3nYpE3w3bDhga8Hplwl9Wqj610njR0IF_Y=\",\n }),\n buildStickerTemplate({\n name: \"arrow-169\",\n cover: stickerCover168,\n content: stickerContent168,\n hash: \"L8rCxau1aGk5jTgkDJnJOxKuR5AJ8c0m6ba7-A7nJ44=\",\n }),\n buildStickerTemplate({\n name: \"arrow-170\",\n cover: stickerCover169,\n content: stickerContent169,\n hash: \"E3KTyPCwLWhSMK_yEYUJIBvcBEDahQDyBq3iWCidIrk=\",\n }),\n buildStickerTemplate({\n name: \"arrow-171\",\n cover: stickerCover170,\n content: stickerContent170,\n hash: \"mpnL0nWiiZQgc8J2k3waH0KfEatljxPRyqiDOMls0EM=\",\n }),\n buildStickerTemplate({\n name: \"arrow-172\",\n cover: stickerCover171,\n content: stickerContent171,\n hash: \"wOh96Sl2ZJa_dOYHD6jasbMmdy8M-vnui64gX5L-kLY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-173\",\n cover: stickerCover172,\n content: stickerContent172,\n hash: \"Jcz5e418FcYZO3VkkFT7_2agkFzjFEsaA2zepwdOjgc=\",\n }),\n buildStickerTemplate({\n name: \"arrow-174\",\n cover: stickerCover173,\n content: stickerContent173,\n hash: \"NX8g8xaf9VaR_IUxYFvGN4W96gtY08t1xn3o7ABRO7c=\",\n }),\n buildStickerTemplate({\n name: \"arrow-175\",\n cover: stickerCover174,\n content: stickerContent174,\n hash: \"wB3lJNTCUkHF3-TL9DLlevqxHlLHdJxi7HoR5r0Wg08=\",\n }),\n buildStickerTemplate({\n name: \"arrow-176\",\n cover: stickerCover175,\n content: stickerContent175,\n hash: \"jn9sQ9iPETR1k3hep0hH03f74x-nWtpDsFHP3h2yor8=\",\n }),\n buildStickerTemplate({\n name: \"arrow-177\",\n cover: stickerCover176,\n content: stickerContent176,\n hash: \"9GO5x53CdMLEodGlKfjBwMHcUDMZ2KoxFrxKdy3i1DY=\",\n }),\n buildStickerTemplate({\n name: \"arrow-178\",\n cover: stickerCover177,\n content: stickerContent177,\n hash: \"PAwkZBx_VXXXPLHhPJtf4fpWbYa4YJe8iZbhsovXrB4=\",\n }),\n buildStickerTemplate({\n name: \"arrow-179\",\n cover: stickerCover178,\n content: stickerContent178,\n hash: \"SJR0JAX-p8esSoC6csYz1fRl3AXBs3VJglyf5nd8Deg=\",\n }),\n buildStickerTemplate({\n name: \"arrow-180\",\n cover: stickerCover179,\n content: stickerContent179,\n hash: \"cTLltuV1M3z6lmdrtDDx0MbHJUnKp7KVG-WanFqjxTI=\",\n }),\n buildStickerTemplate({\n name: \"arrow-181\",\n cover: stickerCover180,\n content: stickerContent180,\n hash: \"enogocPOFTCe_-q8scyRcK2E326DG_3h8YM0CvoPyuw=\",\n }),\n buildStickerTemplate({\n name: \"arrow-182\",\n cover: stickerCover181,\n content: stickerContent181,\n hash: \"iNTYzdLr4Y5sbhnjgAWgXFuf7WYB03oxzKVDfudR42k=\",\n }),\n buildStickerTemplate({\n name: \"arrow-183\",\n cover: stickerCover182,\n content: stickerContent182,\n hash: \"FuV06U5Dc6S8b8m3pp0fml_1Imi_wMfVOZEAUOM_71g=\",\n }),\n buildStickerTemplate({\n name: \"arrow-184\",\n cover: stickerCover183,\n content: stickerContent183,\n hash: \"SQdUoVHFVgchAjKVwpaLSdvrqKsi9hkJh1b3Ev85S-w=\",\n }),\n buildStickerTemplate({\n name: \"arrow-185\",\n cover: stickerCover184,\n content: stickerContent184,\n hash: \"vADqPOh_77ICtLfNIWFfI0IvORhi8GFitltmLfk1TKk=\",\n }),\n buildStickerTemplate({\n name: \"source\",\n cover: stickerCover185,\n content: stickerContent185,\n hash: \"jrNiKwN_bph3bSCDPhK5EkzUATynRUUxhrDvcMkDNEQ=\",\n }),],\n\"Cheeky Piggies\": [ buildStickerTemplate({\n name: \"Crybaby\",\n cover: stickerCover186,\n content: stickerContent186,\n hash: \"bRWBcaZveq6swjn8MwKVISsVnAr2tf4ZHTSTU-eRA5Q=\",\n }),\n buildStickerTemplate({\n name: \"Drool\",\n cover: stickerCover187,\n content: stickerContent187,\n hash: \"BUwkYl7SHNQCypB_SvkggKwAD3XxCRUPV6dorpW_ki0=\",\n }),\n buildStickerTemplate({\n name: \"Fuming\",\n cover: stickerCover188,\n content: stickerContent188,\n hash: \"Iu2DZ5PecYn6Rg7ONIzLqIVZa2v5WYnRKkMv8qTD8a8=\",\n }),\n buildStickerTemplate({\n name: \"Hi~\",\n cover: stickerCover189,\n content: stickerContent189,\n hash: \"h6r0wW-eIhWUF1AkN_EnHv-q8VfpZ4NOQKKTsbU8RPc=\",\n }),\n buildStickerTemplate({\n name: \"Holding Tears\",\n cover: stickerCover190,\n content: stickerContent190,\n hash: \"NnXjSqFfmw_D3Ne13JOx0yXIWtA9Exm6hggPGDgDfgc=\",\n }),\n buildStickerTemplate({\n name: \"Love Blows\",\n cover: stickerCover191,\n content: stickerContent191,\n hash: \"Oggqz68tzBBYevbwcwXqZjb4im48-f3hh94wf8RS-Ok=\",\n }),\n buildStickerTemplate({\n name: \"Me_ Really_\",\n cover: stickerCover192,\n content: stickerContent192,\n hash: \"W8dfy2MD-Fu2VOIPcYfHOuPNBnEIWcFg8TJJeta9iOc=\",\n }),\n buildStickerTemplate({\n name: \"OK\",\n cover: stickerCover193,\n content: stickerContent193,\n hash: \"aTpuWm7bxzUevhFn_xyIz0HO5YD-I4GmdoPvmw590PY=\",\n }),\n buildStickerTemplate({\n name: \"Sassy Flick\",\n cover: stickerCover194,\n content: stickerContent194,\n hash: \"ai5PdJq184Vxlagtbo5fo90RIvT7K0kQtKlhFF0T3h0=\",\n }),\n buildStickerTemplate({\n name: \"Shockwave\",\n cover: stickerCover195,\n content: stickerContent195,\n hash: \"NfiIZ-FHd2XWYF8L7pp8X1M3nGTM3-005VUtCOchld8=\",\n }),\n buildStickerTemplate({\n name: \"Snooze Drool\",\n cover: stickerCover196,\n content: stickerContent196,\n hash: \"HiRDmqZNvnKQDBX05caQF4Fg9PHh4_ZS0n_alWZcQ_M=\",\n }),\n buildStickerTemplate({\n name: \"Swag\",\n cover: stickerCover197,\n content: stickerContent197,\n hash: \"4bEGq5-p-s6HfbtbVNwGEvEg-YEQ8wA8NA7Uj_vxTBE=\",\n }),\n buildStickerTemplate({\n name: \"Sweatdrop\",\n cover: stickerCover198,\n content: stickerContent198,\n hash: \"6axmrPIHx4ahOGB_TtjLOPh4J6HYggLxxx0VGxnMu2E=\",\n }),\n buildStickerTemplate({\n name: \"Thumbs Up\",\n cover: stickerCover199,\n content: stickerContent199,\n hash: \"r97GwoejPTxjumyvS9kdAnB16nZvlM81xsHo0FqdUrM=\",\n }),\n buildStickerTemplate({\n name: \"What_\",\n cover: stickerCover200,\n content: stickerContent200,\n hash: \"JqWfcP9Q0kGE4wDuVZCi4lW2U7O15trpL--fdNrRJvQ=\",\n }),],\n\"Contorted Stickers\": [ buildStickerTemplate({\n name: \"AFFiNE\",\n cover: stickerCover201,\n content: stickerContent201,\n hash: \"i3piAMnoD4STQnEjTrAe_ZRdwHcD34n-sJZY8IN1blg=\",\n }),\n buildStickerTemplate({\n name: \"AI\",\n cover: stickerCover202,\n content: stickerContent202,\n hash: \"VZJPB8ZBVtiZ-m04KNtlguY_t9VLx4itHILIQ3l1MRw=\",\n }),\n buildStickerTemplate({\n name: \"Cat\",\n cover: stickerCover203,\n content: stickerContent203,\n hash: \"IS6xbnAo5WXDRxnP98UBkdOP2Zt2luQXEojcLfnfsR4=\",\n }),\n buildStickerTemplate({\n name: \"Closed\",\n cover: stickerCover204,\n content: stickerContent204,\n hash: \"wzrJyCiyflFnyvvHdH2XONsuwbuw119wiFCekvopsmQ=\",\n }),\n buildStickerTemplate({\n name: \"Eyes\",\n cover: stickerCover205,\n content: stickerContent205,\n hash: \"eT4Nbl90OC9ivTjRBmEabaWqjdmITjCgOtTJNSJu1SU=\",\n }),\n buildStickerTemplate({\n name: \"Fire\",\n cover: stickerCover206,\n content: stickerContent206,\n hash: \"cQnt7T9qxI5-It-reeo3E4XVA3HA89L2myi1k2EJfn8=\",\n }),\n buildStickerTemplate({\n name: \"Info\",\n cover: stickerCover207,\n content: stickerContent207,\n hash: \"kwKlgzVYNRk4AyOJs3Xtyt0vMWovo-7BfEqaWndDInM=\",\n }),\n buildStickerTemplate({\n name: \"King\",\n cover: stickerCover208,\n content: stickerContent208,\n hash: \"W-RCNTaadPNEI9OALAGHqv1cGmYD1y7KxIRGLsbr-DM=\",\n }),\n buildStickerTemplate({\n name: \"Love Face\",\n cover: stickerCover209,\n content: stickerContent209,\n hash: \"51B1S9eZ1rgxT-zG5npI_5l1sGss6dTVYiyut5fNPrs=\",\n }),\n buildStickerTemplate({\n name: \"Love\",\n cover: stickerCover210,\n content: stickerContent210,\n hash: \"fK5Bk7hxwSEHuNQ2WfO-ysII_T20z37P1JvLf00ocUQ=\",\n }),\n buildStickerTemplate({\n name: \"Notice\",\n cover: stickerCover211,\n content: stickerContent211,\n hash: \"RS787c3FcijjBEhKrKFa6KwB8ZINUD5MSCEMWL7F53w=\",\n }),\n buildStickerTemplate({\n name: \"Pin\",\n cover: stickerCover212,\n content: stickerContent212,\n hash: \"HDozRCXEtlDfNFFs3sSozkvXUVAP3XXd3zQVI8aW1ak=\",\n }),\n buildStickerTemplate({\n name: \"Question\",\n cover: stickerCover213,\n content: stickerContent213,\n hash: \"bvNeY3Q-At8NxFzcjTYx_mn3YnJkbUhh6XEBp3xB0Uk=\",\n }),\n buildStickerTemplate({\n name: \"Smile Face\",\n cover: stickerCover214,\n content: stickerContent214,\n hash: \"nBVc87wjO0NnM4utzjOLxjUzFjeFcf90C0jkgrpBhrA=\",\n }),\n buildStickerTemplate({\n name: \"Stop\",\n cover: stickerCover215,\n content: stickerContent215,\n hash: \"oH6E3y8ZpdgrMGbtcSX5k3NASEkgayohDCEoO0eU7hE=\",\n }),],\n\"Paper\": [ buildStickerTemplate({\n name: \"+1\",\n cover: stickerCover216,\n content: stickerContent216,\n hash: \"FEF1FPZ9H1lIO54e6gP5RlNNZqukz3ADuzPFgog5qH4=\",\n }),\n buildStickerTemplate({\n name: \"A lot of question\",\n cover: stickerCover217,\n content: stickerContent217,\n hash: \"yKPa7vqOxC6rh-e0SVdlp0RwMWQ9mzDKTtE5g2UnHGk=\",\n }),\n buildStickerTemplate({\n name: \"AFFiNE AI\",\n cover: stickerCover218,\n content: stickerContent218,\n hash: \"FwBs2WApEGkiFmu1XR4fHZ_7fOlSsSBdYEyGs2lDeLk=\",\n }),\n buildStickerTemplate({\n name: \"Arrow\",\n cover: stickerCover219,\n content: stickerContent219,\n hash: \"evuSkommPr7PBAWCioYDRQpKPZGoY6izIGev2C8Xdt0=\",\n }),\n buildStickerTemplate({\n name: \"Atention\",\n cover: stickerCover220,\n content: stickerContent220,\n hash: \"Lmvftjmkw5oQEyZ2VP6eTohbXgQyEtNWKkrg9AbDknI=\",\n }),\n buildStickerTemplate({\n name: \"Blue Screen\",\n cover: stickerCover221,\n content: stickerContent221,\n hash: \"30OHymd5x-3zr_5KxQm3DzVfxyWWAf0QnmfHpIOoLzQ=\",\n }),\n buildStickerTemplate({\n name: \"Boom\",\n cover: stickerCover222,\n content: stickerContent222,\n hash: \"mpTlbN8fJWJUMlHcCCrQuzKTK844-F9YuebgR0kgJa8=\",\n }),\n buildStickerTemplate({\n name: \"Cool\",\n cover: stickerCover223,\n content: stickerContent223,\n hash: \"3OujPx_YOY1MTqmgrbWaNDJlJeoLNvTWw96gW22rxps=\",\n }),\n buildStickerTemplate({\n name: \"Dino\",\n cover: stickerCover224,\n content: stickerContent224,\n hash: \"j13ZqHGUnVdGW3_1uWw_sFYeHj1SFoNsi5JwrTvpC-k=\",\n }),\n buildStickerTemplate({\n name: \"Histogram\",\n cover: stickerCover225,\n content: stickerContent225,\n hash: \"A1oGPUmv-Ypb-W7_jPgpSsVGA71J8njyr9f-97UnJQg=\",\n }),\n buildStickerTemplate({\n name: \"Local First\",\n cover: stickerCover226,\n content: stickerContent226,\n hash: \"LFIRZK4TswzJvThRO2Vch_aqfY2UZ6kjAyAEsQS-hHM=\",\n }),\n buildStickerTemplate({\n name: \"Medal\",\n cover: stickerCover227,\n content: stickerContent227,\n hash: \"cMIe6PYQLi0s9ryW3fbiXA9ACs3YsQFDtKjlfliXTC8=\",\n }),\n buildStickerTemplate({\n name: \"Notice\",\n cover: stickerCover228,\n content: stickerContent228,\n hash: \"oafBAmM8MB094GI9I4U2iG6TWoZpCoa4nDmGY2eH_Kw=\",\n }),\n buildStickerTemplate({\n name: \"Pin\",\n cover: stickerCover229,\n content: stickerContent229,\n hash: \"kEy0pTA3dsClFtIwaJJV9NZQvn2xib-biyFJvRp9tzM=\",\n }),\n buildStickerTemplate({\n name: \"Star\",\n cover: stickerCover230,\n content: stickerContent230,\n hash: \"Au-JbxT7XZvvDueaVg37tJ4kyH9vLxiC7tLgcbrZV48=\",\n }),],\n}\n\nexport const builtInTemplates = {\n list: async (category: string) => {\n return templates[category] ?? []\n },\n\n categories: async () => {\n return Object.keys(templates)\n },\n\n search: async(query: string) => {\n const candidates: unknown[] = [];\n const cates = Object.keys(templates);\n\n query = query.toLowerCase();\n\n for(const cate of cates) {\n const templatesOfCate = templates[cate];\n\n for(const temp of templatesOfCate) {\n if(lcs(query, temp.name.toLowerCase()) === query.length) {\n candidates.push(temp);\n }\n }\n }\n\n return candidates;\n },\n}\n","import { builtInTemplates as builtInEdgelessTemplates } from '@affine/templates/edgeless';\nimport { builtInTemplates as builtInStickersTemplates } from '@affine/templates/stickers';\nimport type { TemplateManager } from '@blocksuite/blocks';\nimport { EdgelessTemplatePanel } from '@blocksuite/blocks';\n\nEdgelessTemplatePanel.templates.extend(\n builtInStickersTemplates as TemplateManager\n);\nEdgelessTemplatePanel.templates.extend(\n builtInEdgelessTemplates as TemplateManager\n);\n","import '@affine/env/constant';\nimport './edgeless-template';\n\nimport { setupGlobal } from '@affine/env/global';\nimport { ResizeObserver } from '@juggle/resize-observer';\n\nsetupGlobal();\n\nwindow.ResizeObserver = ResizeObserver;\n","import type { ReactNode } from 'react';\n\n// TODO(@Peng): need better way for composing different precondition strategies\nexport enum PreconditionStrategy {\n Always,\n InPaperOrEdgeless,\n InPaper,\n InEdgeless,\n InEdgelessPresentationMode,\n NoSearchResult,\n Never,\n}\n\nexport type CommandCategory =\n | 'editor:insert-object'\n | 'editor:page'\n | 'editor:edgeless'\n | 'affine:recent'\n | 'affine:pages'\n | 'affine:edgeless'\n | 'affine:collections'\n | 'affine:navigation'\n | 'affine:creation'\n | 'affine:settings'\n | 'affine:layout'\n | 'affine:updates'\n | 'affine:help'\n | 'affine:general'\n | 'affine:results';\n\nexport interface KeybindingOptions {\n binding: string;\n capture?: boolean;\n // some keybindings are already registered in blocksuite\n // we can skip the registration of these keybindings __FOR NOW__\n skipRegister?: boolean;\n}\n\nexport interface AffineCommandOptions {\n id: string;\n // a set of predefined precondition strategies, but also allow user to customize their own\n // note: this only controls the visibility of the command, not the availability (e.g., shortcut keybinding still works)\n preconditionStrategy?: PreconditionStrategy | (() => boolean);\n // main text on the left..\n // make text a function so that we can do i18n and interpolation when we need to\n label:\n | string\n | (() => string)\n | {\n title: string;\n subTitle?: string;\n }\n | (() => {\n title: string;\n subTitle?: string;\n });\n icon: ReactNode; // TODO(@JimmFly): need a mapping from string -> React element/SVG\n category?: CommandCategory;\n // we use https://github.com/jamiebuilds/tinykeys so that we can use the same keybinding definition\n // for both mac and windows\n keyBinding?: KeybindingOptions | string;\n run: () => void | Promise;\n}\n\nexport interface AffineCommand {\n readonly id: string;\n readonly preconditionStrategy: PreconditionStrategy | (() => boolean);\n readonly label: {\n title: string;\n subTitle?: string;\n };\n readonly icon?: ReactNode; // icon name\n readonly category: CommandCategory;\n readonly keyBinding?: KeybindingOptions;\n run(): void | Promise;\n}\n\nexport function createAffineCommand(\n options: AffineCommandOptions\n): AffineCommand {\n return {\n id: options.id,\n run: options.run,\n icon: options.icon,\n preconditionStrategy:\n options.preconditionStrategy ?? PreconditionStrategy.Always,\n category: options.category ?? 'affine:general',\n get label() {\n let label = options.label;\n label = typeof label === 'function' ? label?.() : label;\n label =\n typeof label === 'string'\n ? {\n title: label,\n }\n : label;\n return label;\n },\n keyBinding:\n typeof options.keyBinding === 'string'\n ? { binding: options.keyBinding }\n : options.keyBinding,\n };\n}\n","import { DebugLogger } from '@affine/debug';\n// @ts-expect-error upstream type is wrong\nimport { createKeybindingsHandler } from 'tinykeys';\n\nimport type { AffineCommand, AffineCommandOptions } from './command';\nimport { createAffineCommand } from './command';\n\nconst commandLogger = new DebugLogger('command:registry');\n\ninterface KeyBindingMap {\n [keybinding: string]: (event: KeyboardEvent) => void;\n}\n\nexport interface KeyBindingOptions {\n /**\n * Key presses will listen to this event (default: \"keydown\").\n */\n event?: 'keydown' | 'keyup';\n\n /**\n * Whether to capture the event during the capture phase (default: false).\n */\n capture?: boolean;\n\n /**\n * Keybinding sequences will wait this long between key presses before\n * cancelling (default: 1000).\n *\n * **Note:** Setting this value too low (i.e. `300`) will be too fast for many\n * of your users.\n */\n timeout?: number;\n}\n\nconst bindKeys = (\n target: Window | HTMLElement,\n keyBindingMap: KeyBindingMap,\n options: KeyBindingOptions = {}\n) => {\n const event = options.event ?? 'keydown';\n const onKeyEvent = createKeybindingsHandler(keyBindingMap, options);\n target.addEventListener(event, onKeyEvent, options.capture);\n return () => {\n target.removeEventListener(event, onKeyEvent, options.capture);\n };\n};\n\nexport const AffineCommandRegistry = new (class {\n readonly commands: Map = new Map();\n\n register(options: AffineCommandOptions) {\n if (this.commands.has(options.id)) {\n commandLogger.warn(`Command ${options.id} already registered.`);\n return () => {};\n }\n const command = createAffineCommand(options);\n this.commands.set(command.id, command);\n\n let unsubKb: (() => void) | undefined;\n\n if (\n command.keyBinding &&\n !command.keyBinding.skipRegister &&\n typeof window !== 'undefined'\n ) {\n const { binding: keybinding, capture } = command.keyBinding;\n unsubKb = bindKeys(\n window,\n {\n [keybinding]: (e: Event) => {\n e.preventDefault();\n command.run()?.catch(e => {\n console.error(`Failed to run command [${command.id}]`, e);\n });\n },\n },\n {\n capture,\n }\n );\n }\n\n commandLogger.debug(`Registered command ${command.id}`);\n return () => {\n unsubKb?.();\n this.commands.delete(command.id);\n commandLogger.debug(`Unregistered command ${command.id}`);\n };\n }\n\n get(id: string): AffineCommand | undefined {\n if (!this.commands.has(id)) {\n commandLogger.warn(`Command ${id} not registered.`);\n return undefined;\n }\n return this.commands.get(id);\n }\n\n getAll(): AffineCommand[] {\n return Array.from(this.commands.values());\n }\n})();\n\nexport function registerAffineCommand(options: AffineCommandOptions) {\n return AffineCommandRegistry.register(options);\n}\n","import type { useI18n } from '@affine/i18n';\nimport { ImportIcon, PlusIcon } from '@blocksuite/icons/rc';\nimport type { createStore } from 'jotai';\n\nimport { openCreateWorkspaceModalAtom } from '../atoms';\nimport type { usePageHelper } from '../components/blocksuite/block-suite-page-list/utils';\nimport { track } from '../mixpanel';\nimport { registerAffineCommand } from './registry';\n\nexport function registerAffineCreationCommands({\n store,\n pageHelper,\n t,\n}: {\n t: ReturnType;\n store: ReturnType;\n pageHelper: ReturnType;\n}) {\n const unsubs: Array<() => void> = [];\n unsubs.push(\n registerAffineCommand({\n id: 'affine:new-page',\n category: 'affine:creation',\n label: t['com.arms.cmdk.affine.new-page'](),\n icon: ,\n keyBinding: environment.isDesktop\n ? {\n binding: '$mod+N',\n skipRegister: true,\n }\n : undefined,\n run() {\n track.$.cmdk.creation.createDoc({ mode: 'page' });\n\n pageHelper.createPage();\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:new-edgeless-page',\n category: 'affine:creation',\n icon: ,\n label: t['com.arms.cmdk.affine.new-edgeless-page'](),\n run() {\n track.$.cmdk.creation.createDoc({\n mode: 'edgeless',\n });\n\n pageHelper.createEdgeless();\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:new-workspace',\n category: 'affine:creation',\n icon: ,\n label: t['com.arms.cmdk.affine.new-workspace'](),\n run() {\n track.$.cmdk.workspace.createWorkspace();\n\n store.set(openCreateWorkspaceModalAtom, 'new');\n },\n })\n );\n unsubs.push(\n registerAffineCommand({\n id: 'affine:import-workspace',\n category: 'affine:creation',\n icon: ,\n label: t['com.arms.cmdk.affine.import-workspace'](),\n preconditionStrategy: () => {\n return environment.isDesktop;\n },\n run() {\n track.$.cmdk.workspace.createWorkspace({\n control: 'import',\n });\n\n store.set(openCreateWorkspaceModalAtom, 'add');\n },\n })\n );\n\n return () => {\n unsubs.forEach(unsub => unsub());\n };\n}\n","import type { useI18n } from '@affine/i18n';\nimport { ContactWithUsIcon, NewIcon } from '@blocksuite/icons/rc';\nimport type { createStore } from 'jotai';\n\nimport { openSettingModalAtom } from '../atoms';\nimport { track } from '../mixpanel';\nimport { popupWindow } from '../utils';\nimport { registerAffineCommand } from './registry';\n\nexport function registerAffineHelpCommands({\n t,\n store,\n}: {\n t: ReturnType;\n store: ReturnType;\n}) {\n const unsubs: Array<() => void> = [];\n unsubs.push(\n registerAffineCommand({\n id: 'affine:help-whats-new',\n category: 'affine:help',\n icon: ,\n label: t['com.arms.cmdk.affine.whats-new'](),\n run() {\n track.$.cmdk.help.openChangelog();\n popupWindow(runtimeConfig.changelogUrl);\n },\n })\n );\n unsubs.push(\n registerAffineCommand({\n id: 'affine:help-contact-us',\n category: 'affine:help',\n icon: ,\n label: t['com.arms.cmdk.affine.contact-us'](),\n run() {\n track.$.cmdk.help.contactUs();\n store.set(openSettingModalAtom, {\n open: true,\n activeTab: 'about',\n workspaceMetadata: null,\n });\n },\n })\n );\n\n return () => {\n unsubs.forEach(unsub => unsub());\n };\n}\n","import type { useI18n } from '@affine/i18n';\nimport { SidebarIcon } from '@blocksuite/icons/rc';\nimport type { createStore } from 'jotai';\n\nimport { appSidebarOpenAtom } from '../components/app-sidebar';\nimport { track } from '../mixpanel';\nimport { registerAffineCommand } from './registry';\n\nexport function registerAffineLayoutCommands({\n t,\n store,\n}: {\n t: ReturnType;\n store: ReturnType;\n}) {\n const unsubs: Array<() => void> = [];\n unsubs.push(\n registerAffineCommand({\n id: 'affine:toggle-left-sidebar',\n category: 'affine:layout',\n icon: ,\n label: () =>\n store.get(appSidebarOpenAtom)\n ? t['com.arms.cmdk.affine.left-sidebar.collapse']()\n : t['com.arms.cmdk.affine.left-sidebar.expand'](),\n\n keyBinding: {\n binding: '$mod+/',\n },\n run() {\n track.$.navigationPanel.$.toggle();\n\n store.set(appSidebarOpenAtom, v => !v);\n },\n })\n );\n\n return () => {\n unsubs.forEach(unsub => unsub());\n };\n}\n","import { WorkspaceSubPath } from '@affine/core/shared';\nimport type { useI18n } from '@affine/i18n';\nimport { ArrowRightBigIcon } from '@blocksuite/icons/rc';\nimport type { DocCollection } from '@blocksuite/store';\nimport type { createStore } from 'jotai';\n\nimport { openSettingModalAtom, openWorkspaceListModalAtom } from '../atoms';\nimport type { useNavigateHelper } from '../hooks/use-navigate-helper';\nimport { track } from '../mixpanel';\nimport { registerAffineCommand } from './registry';\n\nexport function registerAffineNavigationCommands({\n t,\n store,\n docCollection,\n navigationHelper,\n}: {\n t: ReturnType;\n store: ReturnType;\n navigationHelper: ReturnType;\n docCollection: DocCollection;\n}) {\n const unsubs: Array<() => void> = [];\n unsubs.push(\n registerAffineCommand({\n id: 'affine:goto-all-pages',\n category: 'affine:navigation',\n icon: ,\n label: t['com.arms.cmdk.affine.navigation.goto-all-pages'](),\n run() {\n track.$.cmdk.navigation.navigate({\n to: 'allDocs',\n });\n\n navigationHelper.jumpToSubPath(docCollection.id, WorkspaceSubPath.ALL);\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:goto-collection-list',\n category: 'affine:navigation',\n icon: ,\n label: 'Go to Collection List',\n run() {\n track.$.cmdk.navigation.navigate({\n to: 'collectionList',\n });\n\n navigationHelper.jumpToCollections(docCollection.id);\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:goto-tag-list',\n category: 'affine:navigation',\n icon: ,\n label: 'Go to Tag List',\n run() {\n track.$.cmdk.navigation.navigate({\n to: 'tagList',\n });\n\n navigationHelper.jumpToTags(docCollection.id);\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:goto-workspace',\n category: 'affine:navigation',\n icon: ,\n label: t['com.arms.cmdk.affine.navigation.goto-workspace'](),\n run() {\n track.$.cmdk.navigation.navigate({\n to: 'workspace',\n });\n\n store.set(openWorkspaceListModalAtom, true);\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:open-settings',\n category: 'affine:navigation',\n icon: ,\n label: t['com.arms.cmdk.affine.navigation.open-settings'](),\n keyBinding: '$mod+,',\n run() {\n track.$.cmdk.settings.openSettings();\n store.set(openSettingModalAtom, s => ({\n activeTab: 'appearance',\n open: !s.open,\n }));\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:open-account',\n category: 'affine:navigation',\n icon: ,\n label: t['com.arms.cmdk.affine.navigation.open-account-settings'](),\n run() {\n track.$.cmdk.settings.openSettings({ to: 'account' });\n store.set(openSettingModalAtom, s => ({\n activeTab: 'account',\n open: !s.open,\n }));\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:goto-trash',\n category: 'affine:navigation',\n icon: ,\n label: t['com.arms.cmdk.affine.navigation.goto-trash'](),\n run() {\n track.$.cmdk.navigation.navigate({\n to: 'trash',\n });\n\n navigationHelper.jumpToSubPath(\n docCollection.id,\n WorkspaceSubPath.TRASH\n );\n },\n })\n );\n\n return () => {\n unsubs.forEach(unsub => unsub());\n };\n}\n","import type { useI18n } from '@affine/i18n';\nimport { SettingsIcon } from '@blocksuite/icons/rc';\nimport type { AffineEditorContainer } from '@blocksuite/presets';\nimport { appSettingAtom } from '@toeverything/infra';\nimport type { createStore } from 'jotai';\nimport type { useTheme } from 'next-themes';\n\nimport type { useLanguageHelper } from '../hooks/affine/use-language-helper';\nimport { track } from '../mixpanel';\nimport { registerAffineCommand } from './registry';\n\nexport function registerAffineSettingsCommands({\n t,\n store,\n theme,\n languageHelper,\n}: {\n t: ReturnType;\n store: ReturnType;\n theme: ReturnType;\n languageHelper: ReturnType;\n editor: AffineEditorContainer | null;\n}) {\n const unsubs: Array<() => void> = [];\n const { onLanguageChange, languagesList, currentLanguage } = languageHelper;\n\n // color modes\n unsubs.push(\n registerAffineCommand({\n id: 'affine:change-color-mode-to-auto',\n label: `${t['com.arms.cmdk.affine.color-mode.to']()} ${t[\n 'com.arms.themeSettings.system'\n ]()}`,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () => theme.theme !== 'system',\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'theme',\n value: 'system',\n });\n theme.setTheme('system');\n },\n })\n );\n unsubs.push(\n registerAffineCommand({\n id: 'affine:change-color-mode-to-dark',\n label: `${t['com.arms.cmdk.affine.color-mode.to']()} ${t[\n 'com.arms.themeSettings.dark'\n ]()}`,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () => theme.theme !== 'dark',\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'theme',\n value: 'dark',\n });\n theme.setTheme('dark');\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:change-color-mode-to-light',\n label: `${t['com.arms.cmdk.affine.color-mode.to']()} ${t[\n 'com.arms.themeSettings.light'\n ]()}`,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () => theme.theme !== 'light',\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'theme',\n value: 'light',\n });\n\n theme.setTheme('light');\n },\n })\n );\n\n // Font styles\n unsubs.push(\n registerAffineCommand({\n id: 'affine:change-font-style-to-sans',\n label: `${t['com.arms.cmdk.affine.font-style.to']()} ${t[\n 'com.arms.appearanceSettings.fontStyle.sans'\n ]()}`,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () =>\n store.get(appSettingAtom).fontStyle !== 'Sans',\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'fontStyle',\n value: 'Sans',\n });\n\n store.set(appSettingAtom, prev => ({\n ...prev,\n fontStyle: 'Sans',\n }));\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:change-font-style-to-serif',\n label: `${t['com.arms.cmdk.affine.font-style.to']()} ${t[\n 'com.arms.appearanceSettings.fontStyle.serif'\n ]()}`,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () =>\n store.get(appSettingAtom).fontStyle !== 'Serif',\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'fontStyle',\n value: 'Serif',\n });\n\n store.set(appSettingAtom, prev => ({\n ...prev,\n fontStyle: 'Serif',\n }));\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:change-font-style-to-mono',\n label: `${t['com.arms.cmdk.affine.font-style.to']()} ${t[\n 'com.arms.appearanceSettings.fontStyle.mono'\n ]()}`,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () =>\n store.get(appSettingAtom).fontStyle !== 'Mono',\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'fontStyle',\n value: 'Mono',\n });\n\n store.set(appSettingAtom, prev => ({\n ...prev,\n fontStyle: 'Mono',\n }));\n },\n })\n );\n\n // Display Language\n languagesList.forEach(language => {\n unsubs.push(\n registerAffineCommand({\n id: `affine:change-display-language-to-${language.name}`,\n label: `${t['com.arms.cmdk.affine.display-language.to']()} ${\n language.originalName\n }`,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () => currentLanguage?.tag !== language.tag,\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'language',\n value: language.name,\n });\n\n onLanguageChange(language.tag);\n },\n })\n );\n });\n\n // Layout Style\n unsubs.push(\n registerAffineCommand({\n id: `affine:change-client-border-style`,\n label: () => `${t['com.arms.cmdk.affine.client-border-style.to']()} ${t[\n store.get(appSettingAtom).clientBorder\n ? 'com.arms.cmdk.affine.switch-state.off'\n : 'com.arms.cmdk.affine.switch-state.on'\n ]()}\n `,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () => environment.isDesktop,\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'clientBorder',\n value: store.get(appSettingAtom).clientBorder ? 'off' : 'on',\n });\n store.set(appSettingAtom, prev => ({\n ...prev,\n clientBorder: !prev.clientBorder,\n }));\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: `affine:change-full-width-layout`,\n label: () =>\n `${t['com.arms.cmdk.affine.full-width-layout.to']()} ${t[\n store.get(appSettingAtom).fullWidthLayout\n ? 'com.arms.cmdk.affine.switch-state.off'\n : 'com.arms.cmdk.affine.switch-state.on'\n ]()}`,\n category: 'affine:settings',\n icon: ,\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'fullWidthLayout',\n value: store.get(appSettingAtom).fullWidthLayout ? 'off' : 'on',\n });\n\n store.set(appSettingAtom, prev => ({\n ...prev,\n fullWidthLayout: !prev.fullWidthLayout,\n }));\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: `affine:change-noise-background-on-the-sidebar`,\n label: () =>\n `${t['com.arms.cmdk.affine.noise-background-on-the-sidebar.to']()} ${t[\n store.get(appSettingAtom).enableNoisyBackground\n ? 'com.arms.cmdk.affine.switch-state.off'\n : 'com.arms.cmdk.affine.switch-state.on'\n ]()}`,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () => environment.isDesktop,\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'enableNoisyBackground',\n value: store.get(appSettingAtom).enableNoisyBackground ? 'off' : 'on',\n });\n\n store.set(appSettingAtom, prev => ({\n ...prev,\n enableNoisyBackground: !prev.enableNoisyBackground,\n }));\n },\n })\n );\n\n unsubs.push(\n registerAffineCommand({\n id: `affine:change-translucent-ui-on-the-sidebar`,\n label: () =>\n `${t['com.arms.cmdk.affine.translucent-ui-on-the-sidebar.to']()} ${t[\n store.get(appSettingAtom).enableBlurBackground\n ? 'com.arms.cmdk.affine.switch-state.off'\n : 'com.arms.cmdk.affine.switch-state.on'\n ]()}`,\n category: 'affine:settings',\n icon: ,\n preconditionStrategy: () => environment.isDesktop && environment.isMacOs,\n run() {\n track.$.cmdk.settings.changeAppSetting({\n key: 'enableBlurBackground',\n value: store.get(appSettingAtom).enableBlurBackground ? 'off' : 'on',\n });\n store.set(appSettingAtom, prev => ({\n ...prev,\n enableBlurBackground: !prev.enableBlurBackground,\n }));\n },\n })\n );\n\n return () => {\n unsubs.forEach(unsub => unsub());\n };\n}\n","import { notify } from '@affine/component';\nimport { updateReadyAtom } from '@affine/core/hooks/use-app-updater';\nimport { apis } from '@affine/electron-api';\nimport type { useI18n } from '@affine/i18n';\nimport { ResetIcon } from '@blocksuite/icons/rc';\nimport type { createStore } from 'jotai';\n\nimport { track } from '../mixpanel';\nimport { registerAffineCommand } from './registry';\n\nexport function registerAffineUpdatesCommands({\n t,\n store,\n}: {\n t: ReturnType;\n store: ReturnType;\n}) {\n const unsubs: Array<() => void> = [];\n\n unsubs.push(\n registerAffineCommand({\n id: 'affine:restart-to-upgrade',\n category: 'affine:updates',\n icon: ,\n label: t['com.arms.cmdk.affine.restart-to-upgrade'](),\n preconditionStrategy: () => !!store.get(updateReadyAtom),\n run() {\n track.$.cmdk.updates.quitAndInstall();\n\n apis?.updater.quitAndInstall().catch(err => {\n notify.error({\n title: 'Failed to restart to upgrade',\n message: 'Please restart the app manually to upgrade.',\n });\n console.error(err);\n });\n },\n })\n );\n\n return () => {\n unsubs.forEach(unsub => unsub());\n };\n}\n","import type { FC } from 'react';\n\nexport interface FallbackProps {\n error: T;\n resetError?: () => void;\n}\n\nexport const ERROR_REFLECT_KEY = Symbol('ERROR_REFLECT_KEY');\n\nexport function createErrorFallback(\n ErrorConstructor: abstract new (...args: any[]) => T,\n Component: FC>\n): FC> {\n Reflect.set(Component, ERROR_REFLECT_KEY, ErrorConstructor);\n return Component;\n}\n","import {\n GlobalContextService,\n useLiveData,\n useServices,\n} from '@toeverything/infra';\nimport { useEffect } from 'react';\nimport { useLocation, useParams } from 'react-router-dom';\n\nexport interface DumpInfoProps {\n error: any;\n}\n\nexport const DumpInfo = (_props: DumpInfoProps) => {\n const { globalContextService } = useServices({ GlobalContextService });\n const location = useLocation();\n const currentWorkspaceId = useLiveData(\n globalContextService.globalContext.workspaceId.$\n );\n const path = location.pathname;\n const query = useParams();\n useEffect(() => {\n console.info('DumpInfo', {\n path,\n query,\n currentWorkspaceId: currentWorkspaceId,\n });\n }, [path, query, currentWorkspaceId]);\n return null;\n};\n","import { Button } from '@affine/component/ui/button';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { Trans, useI18n } from '@affine/i18n';\nimport { useTheme } from 'next-themes';\nimport type { FC, PropsWithChildren, ReactNode } from 'react';\nimport { useState } from 'react';\n\nimport imageUrlFor404 from '../error-assets/404-status.assets.svg';\nimport imageUrlForDark500 from '../error-assets/dark-500-status.assets.svg';\nimport imageUrlForLight500 from '../error-assets/light-500-status.assets.svg';\nimport * as styles from './error-detail.css';\n\nexport enum ErrorStatus {\n NotFound = 404,\n Unexpected = 500,\n}\n\nexport interface ErrorDetailProps extends PropsWithChildren {\n status?: ErrorStatus;\n direction?: 'column' | 'row';\n title: string;\n description: ReactNode | Array;\n buttonText?: string;\n onButtonClick?: () => void | Promise;\n resetError?: () => void;\n withoutImage?: boolean;\n}\n\nconst imageMap = new Map([\n [\n ErrorStatus.NotFound,\n {\n light: imageUrlFor404, // TODO(@catsjuice): Ask designer for dark/light mode image.\n dark: imageUrlFor404,\n },\n ],\n [\n ErrorStatus.Unexpected,\n {\n light: imageUrlForLight500, // TODO(@catsjuice): Split assets lib and use image hook to handle light and dark.\n dark: imageUrlForDark500,\n },\n ],\n]);\n\n/**\n * TODO(@eyhn): Unify with NotFoundPage.\n */\nexport const ErrorDetail: FC = props => {\n const {\n status = ErrorStatus.Unexpected,\n direction = 'row',\n description,\n onButtonClick,\n resetError,\n withoutImage,\n } = props;\n const descriptions = Array.isArray(description) ? description : [description];\n const [isBtnLoading, setBtnLoading] = useState(false);\n const t = useI18n();\n const { resolvedTheme } = useTheme();\n\n const onBtnClick = useAsyncCallback(async () => {\n try {\n setBtnLoading(true);\n await onButtonClick?.();\n resetError?.(); // Only reset when retry success.\n } finally {\n setBtnLoading(false);\n }\n }, [onButtonClick, resetError]);\n\n return (\n
\n
\n

{props.title}

\n {descriptions.map((item, i) => (\n

\n {item}\n

\n ))}\n
\n \n {props.buttonText ?? t['com.arms.error.retry']()}\n \n
\n
\n {withoutImage ? null : (\n \n )}\n
\n );\n};\n\nexport function ContactUS() {\n return (\n \n If you are still experiencing this issue, please{' '}\n \n contact us through the community.\n \n \n );\n}\n","import \"../core/src/components/affine/affine-error-boundary/error-basic/error-detail.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/affine-error-boundary/error-basic/error-detail.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Lnc2aGNqazAgewogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDEwMCU7CiAgZ2FwOiAyMHB4Owp9Ci53NmhjamsxIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWF4LXdpZHRoOiA0MjBweDsKfQoudzZoY2prMiB7CiAgZm9udC1zaXplOiAzMnB4OwogIGxpbmUtaGVpZ2h0OiA0NHB4OwogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KLnc2aGNqazMgewogIGhlaWdodDogMTc4cHg7CiAgbWF4LXdpZHRoOiA0MDBweDsKICBmbGV4LWdyb3c6IDE7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKfQoudzZoY2prNCB7CiAgbWFyZ2luLXRvcDogMjRweDsKfQoudzZoY2prNSB7CiAgbWFyZ2luLXRvcDogMjRweDsKfQoudzZoY2prNiB7CiAgd2lkdGg6IDIwcHg7CiAgaGVpZ2h0OiAxMDAlOwp9\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var errorDescription = 'w6hcjk4';\nexport var errorDetailStyle = 'w6hcjk1';\nexport var errorDivider = 'w6hcjk6';\nexport var errorFooter = 'w6hcjk5';\nexport var errorImage = 'w6hcjk3';\nexport var errorLayout = 'w6hcjk0';\nexport var errorTitle = 'w6hcjk2';","import { useI18n } from '@affine/i18n';\nimport type { FC } from 'react';\nimport { useCallback } from 'react';\n\nimport { ErrorDetail } from '../error-basic/error-detail';\nimport type { FallbackProps } from '../error-basic/fallback-creator';\n\n/**\n * TODO(@eyhn): Support reload and retry two reset actions in page error and area error.\n */\nexport const AnyErrorFallback: FC = props => {\n const { error } = props;\n const t = useI18n();\n\n const reloadPage = useCallback(() => {\n document.location.reload();\n }, []);\n\n return (\n \n );\n};\n","import { NoPageRootError } from '@affine/core/components/blocksuite/block-suite-editor/no-page-error';\nimport { useI18n } from '@affine/i18n';\n\nimport { ContactUS, ErrorDetail } from '../error-basic/error-detail';\nimport { createErrorFallback } from '../error-basic/fallback-creator';\n\nexport const NoPageRootFallback = createErrorFallback(\n NoPageRootError,\n props => {\n const { resetError } = props;\n const t = useI18n();\n\n return (\n }\n resetError={resetError}\n />\n );\n }\n);\n","import { PageNotFoundError } from '@affine/env/constant';\nimport { useI18n } from '@affine/i18n';\nimport { useCallback } from 'react';\n\nimport {\n RouteLogic,\n useNavigateHelper,\n} from '../../../../hooks/use-navigate-helper';\nimport { ErrorDetail, ErrorStatus } from '../error-basic/error-detail';\nimport { createErrorFallback } from '../error-basic/fallback-creator';\n\nexport const PageNotFoundDetail = createErrorFallback(PageNotFoundError, () => {\n const t = useI18n();\n const { jumpToIndex } = useNavigateHelper();\n\n const onBtnClick = useCallback(\n () => jumpToIndex(RouteLogic.REPLACE),\n [jumpToIndex]\n );\n\n return (\n \n );\n});\n","import { getCurrentStore } from '@toeverything/infra';\nimport { Provider } from 'jotai/react';\nimport type { FC } from 'react';\nimport { useMemo } from 'react';\n\nimport * as styles from './affine-error-fallback.css';\nimport type { FallbackProps } from './error-basic/fallback-creator';\nimport { ERROR_REFLECT_KEY } from './error-basic/fallback-creator';\nimport { DumpInfo } from './error-basic/info-logger';\nimport { AnyErrorFallback } from './error-fallbacks/any-error-fallback';\nimport { NoPageRootFallback } from './error-fallbacks/no-page-root-fallback';\nimport { PageNotFoundDetail } from './error-fallbacks/page-not-found-fallback';\nimport { RecoverableErrorFallback } from './error-fallbacks/recoverable-error-fallback';\n\n/**\n * Register all fallback components here.\n * If have new one just add it to the set.\n */\nconst fallbacks = new Set([\n PageNotFoundDetail,\n RecoverableErrorFallback,\n NoPageRootFallback,\n]);\n\nfunction getErrorFallbackComponent(error: any): FC {\n for (const Component of fallbacks) {\n const ErrorConstructor = Reflect.get(Component, ERROR_REFLECT_KEY);\n if (ErrorConstructor && error instanceof ErrorConstructor) {\n return Component as FC;\n }\n }\n return AnyErrorFallback;\n}\n\nexport interface AffineErrorFallbackProps extends FallbackProps {\n height?: number | string;\n}\n\nexport const AffineErrorFallback: FC = props => {\n const { error, resetError, height } = props;\n const Component = useMemo(() => getErrorFallbackComponent(error), [error]);\n\n return (\n
\n \n \n \n \n
\n );\n};\n","import { useI18n } from '@affine/i18n';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { RecoverableError } from '../../../../unexpected-application-state/errors';\nimport { ContactUS, ErrorDetail } from '../error-basic/error-detail';\nimport { createErrorFallback } from '../error-basic/fallback-creator';\n\nexport const RecoverableErrorFallback = createErrorFallback(\n RecoverableError,\n props => {\n const { error, resetError } = props;\n const t = useI18n();\n const [count, rerender] = useState(0);\n\n const canRetry = error.canRetry();\n const buttonDesc = useMemo(() => {\n if (canRetry) {\n return t['com.arms.error.refetch']();\n }\n return t['com.arms.error.reload']();\n }, [canRetry, t]);\n const onRetry = useCallback(async () => {\n if (canRetry) {\n rerender(count + 1);\n await error.retry();\n } else {\n document.location.reload();\n }\n }, [error, count, canRetry]);\n\n return (\n ]}\n />\n );\n }\n);\n","export abstract class RecoverableError extends Error {\n protected ttl = 3;\n\n canRetry(): boolean {\n return this.ttl > 0;\n }\n\n abstract retry(): void | Promise;\n}\n\n// the first session request failed after login or signup succeed.\n// should give a hint to the user to refetch the session.\nexport class SessionFetchErrorRightAfterLoginOrSignUp extends RecoverableError {\n constructor(\n message: string,\n private readonly onRetry: () => void\n ) {\n super(message);\n }\n\n retry(): void {\n if (this.ttl <= 0) {\n return;\n }\n try {\n this.onRetry();\n } finally {\n this.ttl--;\n }\n }\n}\n","import \"../core/src/components/affine/affine-error-boundary/affine-error-fallback.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/affine-error-boundary/affine-error-fallback.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LnZ3MDU3eDAgewogIGhlaWdodDogMTAwJTsKICB3aWR0aDogMTAwJTsKfQ==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var viewport = 'vw057x0';","import { ErrorBoundary, type FallbackRender } from '@sentry/react';\nimport type { FC, PropsWithChildren } from 'react';\nimport { useCallback } from 'react';\n\nimport { AffineErrorFallback } from './affine-error-fallback';\n\nexport { type FallbackProps } from './error-basic/fallback-creator';\n\nexport interface AffineErrorBoundaryProps extends PropsWithChildren {\n height?: number | string;\n}\n\n/**\n * TODO(@eyhn): Unify with SWRErrorBoundary\n */\nexport const AffineErrorBoundary: FC = props => {\n const fallbackRender: FallbackRender = useCallback(\n fallbackProps => {\n return ;\n },\n [props.height]\n );\n\n const onError = useCallback((error: unknown, componentStack?: string) => {\n console.error('Uncaught error:', error, componentStack);\n }, []);\n\n return (\n \n {props.children}\n \n );\n};\n","import type { ReactElement } from 'react';\n\nimport { useAppSettingHelper } from '../../hooks/affine/use-app-setting-helper';\nimport { AppSidebarFallback } from '../app-sidebar';\nimport type { WorkspaceRootProps } from '../workspace';\nimport {\n AppContainer as AppContainerWithoutSettings,\n MainContainer,\n} from '../workspace';\n\nexport const AppContainer = (props: WorkspaceRootProps) => {\n const { appSettings } = useAppSettingHelper();\n\n return (\n \n );\n};\n\nexport const AppFallback = (): ReactElement => {\n return (\n \n \n \n \n );\n};\n","import { useConfirmModal } from '@affine/component';\nimport { authAtom } from '@affine/core/atoms';\nimport { useI18n } from '@affine/i18n';\nimport { atom, useAtom, useSetAtom } from 'jotai';\nimport { useCallback, useEffect } from 'react';\n\nexport const showAILoginRequiredAtom = atom(false);\n\nexport const AiLoginRequiredModal = () => {\n const t = useI18n();\n const [open, setOpen] = useAtom(showAILoginRequiredAtom);\n const setAuth = useSetAtom(authAtom);\n const { openConfirmModal, closeConfirmModal } = useConfirmModal();\n\n const openSignIn = useCallback(() => {\n setAuth(prev => ({ ...prev, openModal: true }));\n }, [setAuth]);\n\n useEffect(() => {\n if (open) {\n openConfirmModal({\n title: t['com.arms.ai.login-required.dialog-title'](),\n description: t['com.arms.ai.login-required.dialog-content'](),\n onConfirm: () => {\n setOpen(false);\n openSignIn();\n },\n confirmText: t['com.arms.ai.login-required.dialog-confirm'](),\n confirmButtonOptions: {\n variant: 'primary',\n },\n cancelText: t['com.arms.ai.login-required.dialog-cancel'](),\n onOpenChange: setOpen,\n });\n } else {\n closeConfirmModal();\n }\n }, [closeConfirmModal, open, openConfirmModal, openSignIn, setOpen, t]);\n\n return null;\n};\n","import { apis } from '@affine/electron-api';\nimport { Turnstile } from '@marsidev/react-turnstile';\nimport { atom, useAtom, useSetAtom } from 'jotai';\nimport { useEffect, useRef } from 'react';\nimport useSWR from 'swr';\n\nimport * as style from './style.css';\n\ntype Challenge = {\n challenge: string;\n resource: string;\n};\n\nconst challengeFetcher = async (url: string) => {\n if (!environment.isDesktop) {\n return undefined;\n }\n\n const res = await fetch(url);\n if (!res.ok) {\n throw new Error('Failed to fetch challenge');\n }\n const challenge = (await res.json()) as Challenge;\n if (!challenge || !challenge.challenge || !challenge.resource) {\n throw new Error('Invalid challenge');\n }\n\n return challenge;\n};\nconst generateChallengeResponse = async (challenge: string) => {\n if (!environment.isDesktop) {\n return undefined;\n }\n\n return await apis?.ui?.getChallengeResponse(challenge);\n};\n\nconst captchaAtom = atom(undefined);\nconst responseAtom = atom(undefined);\n\nexport const Captcha = () => {\n const setCaptcha = useSetAtom(captchaAtom);\n const [response] = useAtom(responseAtom);\n\n if (!runtimeConfig.enableCaptcha) {\n return null;\n }\n\n if (environment.isDesktop) {\n if (response) {\n return
Making Challenge
;\n } else {\n return
Verified Client
;\n }\n }\n\n return (\n \n );\n};\n\nexport const useCaptcha = (): [string | undefined, string?] => {\n const [verifyToken] = useAtom(captchaAtom);\n const [response, setResponse] = useAtom(responseAtom);\n\n const { data: challenge } = useSWR('/api/auth/challenge', challengeFetcher, {\n suspense: false,\n revalidateOnFocus: false,\n });\n const prevChallenge = useRef('');\n\n useEffect(() => {\n if (\n runtimeConfig.enableCaptcha &&\n environment.isDesktop &&\n challenge?.challenge &&\n prevChallenge.current !== challenge.challenge\n ) {\n prevChallenge.current = challenge.challenge;\n generateChallengeResponse(challenge.resource)\n .then(setResponse)\n .catch(err => {\n console.error('Error getting challenge response:', err);\n });\n }\n }, [challenge, setResponse]);\n\n if (!runtimeConfig.enableCaptcha) {\n return ['XXXX.DUMMY.TOKEN.XXXX'];\n }\n\n if (environment.isDesktop) {\n if (response) {\n return [response, challenge?.challenge];\n } else {\n return [undefined, challenge?.challenge];\n }\n }\n\n return [verifyToken];\n};\n","import { notify, Wrapper } from '@affine/component';\nimport {\n AuthContent,\n AuthInput,\n BackButton,\n ModalHeader,\n} from '@affine/component/auth-components';\nimport { Button } from '@affine/component/ui/button';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport {\n sendChangeEmailMutation,\n sendChangePasswordEmailMutation,\n sendSetPasswordEmailMutation,\n sendVerifyEmailMutation,\n} from '@affine/graphql';\nimport { useI18n } from '@affine/i18n';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { useCallback, useState } from 'react';\n\nimport { useMutation } from '../../../hooks/use-mutation';\nimport { ServerConfigService } from '../../../modules/cloud';\nimport type { AuthPanelProps } from './index';\n\nconst useEmailTitle = (emailType: AuthPanelProps['emailType']) => {\n const t = useI18n();\n\n switch (emailType) {\n case 'setPassword':\n return t['com.arms.auth.set.password']();\n case 'changePassword':\n return t['com.arms.auth.reset.password']();\n case 'changeEmail':\n return t['com.arms.settings.email.action.change']();\n case 'verifyEmail':\n return t['com.arms.settings.email.action.verify']();\n }\n};\n\nconst useNotificationHint = (emailType: AuthPanelProps['emailType']) => {\n const t = useI18n();\n\n switch (emailType) {\n case 'setPassword':\n return t['com.arms.auth.sent.set.password.hint']();\n case 'changePassword':\n return t['com.arms.auth.sent.change.password.hint']();\n case 'changeEmail':\n case 'verifyEmail':\n return t['com.arms.auth.sent.verify.email.hint']();\n }\n};\nconst useButtonContent = (emailType: AuthPanelProps['emailType']) => {\n const t = useI18n();\n\n switch (emailType) {\n case 'setPassword':\n return t['com.arms.auth.send.set.password.link']();\n case 'changePassword':\n return t['com.arms.auth.send.reset.password.link']();\n case 'changeEmail':\n case 'verifyEmail':\n return t['com.arms.auth.send.verify.email.hint']();\n }\n};\n\nconst useSendEmail = (emailType: AuthPanelProps['emailType']) => {\n const {\n trigger: sendChangePasswordEmail,\n isMutating: isChangePasswordMutating,\n } = useMutation({\n mutation: sendChangePasswordEmailMutation,\n });\n const { trigger: sendSetPasswordEmail, isMutating: isSetPasswordMutating } =\n useMutation({\n mutation: sendSetPasswordEmailMutation,\n });\n const { trigger: sendChangeEmail, isMutating: isChangeEmailMutating } =\n useMutation({\n mutation: sendChangeEmailMutation,\n });\n const { trigger: sendVerifyEmail, isMutating: isVerifyEmailMutation } =\n useMutation({\n mutation: sendVerifyEmailMutation,\n });\n\n return {\n loading:\n isChangePasswordMutating ||\n isSetPasswordMutating ||\n isChangeEmailMutating ||\n isVerifyEmailMutation,\n sendEmail: useCallback(\n (email: string) => {\n let trigger: (args: {\n email: string;\n callbackUrl: string;\n }) => Promise;\n let callbackUrl;\n switch (emailType) {\n case 'setPassword':\n trigger = sendSetPasswordEmail;\n callbackUrl = 'setPassword';\n break;\n case 'changePassword':\n trigger = sendChangePasswordEmail;\n callbackUrl = 'changePassword';\n break;\n case 'changeEmail':\n trigger = sendChangeEmail;\n callbackUrl = 'changeEmail';\n break;\n case 'verifyEmail':\n trigger = sendVerifyEmail;\n callbackUrl = 'verify-email';\n break;\n }\n // TODO(@eyhn): add error handler\n return trigger({\n email,\n callbackUrl: `/auth/${callbackUrl}?isClient=${\n environment.isDesktop ? 'true' : 'false'\n }`,\n });\n },\n [\n emailType,\n sendChangeEmail,\n sendChangePasswordEmail,\n sendSetPasswordEmail,\n sendVerifyEmail,\n ]\n ),\n };\n};\n\nexport const SendEmail = ({\n setAuthState,\n email,\n emailType,\n}: AuthPanelProps) => {\n const t = useI18n();\n const serverConfig = useService(ServerConfigService).serverConfig;\n\n const passwordLimits = useLiveData(\n serverConfig.credentialsRequirement$.map(r => r?.password)\n );\n const [hasSentEmail, setHasSentEmail] = useState(false);\n\n const title = useEmailTitle(emailType);\n const hint = useNotificationHint(emailType);\n const buttonContent = useButtonContent(emailType);\n const { loading, sendEmail } = useSendEmail(emailType);\n\n const onSendEmail = useAsyncCallback(async () => {\n // TODO(@eyhn): add error handler\n await sendEmail(email);\n\n notify.success({ title: hint });\n setHasSentEmail(true);\n }, [email, hint, sendEmail]);\n\n const onBack = useCallback(() => {\n setAuthState('signIn');\n }, [setAuthState]);\n\n if (!passwordLimits) {\n // TODO(@eyhn): loading & error UI\n return null;\n }\n\n const content =\n emailType === 'setPassword'\n ? t['com.arms.auth.set.password.message']({\n min: String(passwordLimits.minLength),\n max: String(passwordLimits.maxLength),\n })\n : emailType === 'changePassword'\n ? t['com.arms.auth.reset.password.message']()\n : emailType === 'changeEmail' || emailType === 'verifyEmail'\n ? t['com.arms.auth.verify.email.message']({ email })\n : null;\n\n return (\n <>\n \n {content}\n\n \n \n \n\n \n {hasSentEmail ? t['com.arms.auth.sent']() : buttonContent}\n \n \n \n );\n};\n","export const emailRegex =\n /^(?:(?:[^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@(?:(?:\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|((?:[a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n","import { notify, Skeleton } from '@affine/component';\nimport { Button } from '@affine/component/ui/button';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { track } from '@affine/core/mixpanel';\nimport { OAuthProviderType } from '@affine/graphql';\nimport { GithubIcon, GoogleDuotoneIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport type { ReactElement } from 'react';\nimport { useState } from 'react';\n\nimport { AuthService, ServerConfigService } from '../../../modules/cloud';\n\nconst OAuthProviderMap: Record<\n OAuthProviderType,\n {\n icon: ReactElement;\n }\n> = {\n [OAuthProviderType.Google]: {\n icon: ,\n },\n\n [OAuthProviderType.GitHub]: {\n icon: ,\n },\n\n [OAuthProviderType.OIDC]: {\n // TODO(@catsjuice): Add OIDC icon\n icon: ,\n },\n};\n\nexport function OAuth({ redirectUri }: { redirectUri?: string | null }) {\n const serverConfig = useService(ServerConfigService).serverConfig;\n const oauth = useLiveData(serverConfig.features$.map(r => r?.oauth));\n const oauthProviders = useLiveData(\n serverConfig.config$.map(r => r?.oauthProviders)\n );\n\n if (!oauth) {\n return (\n <>\n
\n \n \n );\n }\n\n return oauthProviders?.map(provider => (\n \n ));\n}\n\nfunction OAuthProvider({\n provider,\n redirectUri,\n}: {\n provider: OAuthProviderType;\n redirectUri?: string | null;\n}) {\n const { icon } = OAuthProviderMap[provider];\n const authService = useService(AuthService);\n const [isConnecting, setIsConnecting] = useState(false);\n\n const onClick = useAsyncCallback(async () => {\n try {\n setIsConnecting(true);\n await authService.signInOauth(provider, redirectUri);\n } catch (err) {\n console.error(err);\n notify.error({ title: 'Failed to sign in, please try again.' });\n } finally {\n setIsConnecting(false);\n track.$.$.auth.oauth({ provider });\n }\n }, [authService, provider, redirectUri]);\n\n return (\n \n Continue with {provider}\n {isConnecting && '...'}\n \n );\n}\n","import type { AuthModalProps as AuthModalBaseProps } from '@affine/component/auth-components';\nimport { AuthModal as AuthModalBase } from '@affine/component/auth-components';\nimport type { FC } from 'react';\nimport { useCallback, useMemo } from 'react';\n\nimport { AfterSignInSendEmail } from './after-sign-in-send-email';\nimport { AfterSignUpSendEmail } from './after-sign-up-send-email';\nimport { SendEmail } from './send-email';\nimport { SignIn } from './sign-in';\nimport { SignInWithPassword } from './sign-in-with-password';\n\nexport type AuthProps = {\n state:\n | 'signIn'\n | 'afterSignUpSendEmail'\n | 'afterSignInSendEmail'\n // throw away\n | 'signInWithPassword'\n | 'sendEmail';\n setAuthState: (state: AuthProps['state']) => void;\n setAuthEmail: (state: AuthProps['email']) => void;\n setEmailType: (state: AuthProps['emailType']) => void;\n email: string;\n emailType: 'setPassword' | 'changePassword' | 'changeEmail' | 'verifyEmail';\n onSignedIn?: () => void;\n};\n\nexport type AuthPanelProps = {\n email: string;\n setAuthState: AuthProps['setAuthState'];\n setAuthEmail: AuthProps['setAuthEmail'];\n setEmailType: AuthProps['setEmailType'];\n emailType: AuthProps['emailType'];\n onSignedIn?: () => void;\n};\n\nconst config: {\n [k in AuthProps['state']]: FC;\n} = {\n signIn: SignIn,\n afterSignUpSendEmail: AfterSignUpSendEmail,\n afterSignInSendEmail: AfterSignInSendEmail,\n signInWithPassword: SignInWithPassword,\n sendEmail: SendEmail,\n};\n\nexport const AuthModal: FC = ({\n open,\n state,\n setOpen,\n email,\n setAuthEmail,\n setAuthState,\n setEmailType,\n emailType,\n}) => {\n const onSignedIn = useCallback(() => {\n setAuthState('signIn');\n setAuthEmail('');\n setOpen(false);\n }, [setAuthState, setAuthEmail, setOpen]);\n\n return (\n \n \n \n );\n};\n\nexport const AuthPanel: FC = ({\n state,\n email,\n setAuthEmail,\n setAuthState,\n setEmailType,\n emailType,\n onSignedIn,\n}) => {\n const CurrentPanel = useMemo(() => {\n return config[state];\n }, [state]);\n\n return (\n \n );\n};\n","import { notify } from '@affine/component';\nimport { AuthInput, ModalHeader } from '@affine/component/auth-components';\nimport { Button } from '@affine/component/ui/button';\nimport { authAtom } from '@affine/core/atoms';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { track } from '@affine/core/mixpanel';\nimport { Trans, useI18n } from '@affine/i18n';\nimport { ArrowRightBigIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { cssVar } from '@toeverything/theme';\nimport { useAtomValue } from 'jotai';\nimport type { FC } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\n\nimport { AuthService } from '../../../modules/cloud';\nimport { emailRegex } from '../../../utils/email-regex';\nimport type { AuthPanelProps } from './index';\nimport { OAuth } from './oauth';\nimport * as style from './style.css';\nimport { Captcha, useCaptcha } from './use-captcha';\n\nfunction validateEmail(email: string) {\n return emailRegex.test(email);\n}\n\nexport const SignIn: FC = ({\n setAuthState,\n setAuthEmail,\n email,\n onSignedIn,\n}) => {\n const t = useI18n();\n const authService = useService(AuthService);\n const [searchParams] = useSearchParams();\n const [isMutating, setIsMutating] = useState(false);\n const [verifyToken, challenge] = useCaptcha();\n\n const [isValidEmail, setIsValidEmail] = useState(true);\n const { openModal } = useAtomValue(authAtom);\n\n useEffect(() => {\n const timeout = setInterval(() => {\n // revalidate session to get the latest status\n authService.session.revalidate();\n }, 3000);\n return () => {\n clearInterval(timeout);\n };\n }, [authService]);\n const loginStatus = useLiveData(authService.session.status$);\n if (loginStatus === 'authenticated' && openModal) {\n onSignedIn?.();\n }\n\n const onContinue = useAsyncCallback(async () => {\n if (!validateEmail(email)) {\n setIsValidEmail(false);\n return;\n }\n\n setIsValidEmail(true);\n\n setIsMutating(true);\n\n setAuthEmail(email);\n try {\n const { hasPassword, isExist: isUserExist } =\n await authService.checkUserByEmail(email);\n\n if (verifyToken) {\n if (isUserExist) {\n // provider password sign-in if user has by default\n // If with payment, onl support email sign in to avoid redirect to affine app\n if (hasPassword) {\n setAuthState('signInWithPassword');\n } else {\n track.$.$.auth.signIn();\n await authService.sendEmailMagicLink(\n email,\n verifyToken,\n challenge,\n searchParams.get('redirect_uri')\n );\n setAuthState('afterSignInSendEmail');\n }\n } else {\n await authService.sendEmailMagicLink(\n email,\n verifyToken,\n challenge,\n searchParams.get('redirect_uri')\n );\n track.$.$.auth.signUp();\n setAuthState('afterSignUpSendEmail');\n }\n }\n } catch (err) {\n console.error(err);\n\n // TODO(@eyhn): better error handling\n notify.error({\n title: 'Failed to send email. Please try again.',\n });\n }\n\n setIsMutating(false);\n }, [\n authService,\n challenge,\n email,\n searchParams,\n setAuthEmail,\n setAuthState,\n verifyToken,\n ]);\n\n return (\n <>\n \n\n \n\n
\n {\n setAuthEmail(value);\n },\n [setAuthEmail]\n )}\n error={!isValidEmail}\n errorHint={isValidEmail ? '' : t['com.arms.auth.sign.email.error']()}\n onEnter={onContinue}\n />\n\n {verifyToken ? null : }\n\n {verifyToken ? (\n }\n suffixStyle={{ width: 20, height: 20, color: cssVar('blue') }}\n onClick={onContinue}\n >\n {t['com.arms.auth.sign.email.continue']()}\n \n ) : null}\n\n
\n {/*prettier-ignore*/}\n \n By clicking "Continue with Google/Email" above, you acknowledge that\n you agree to AFFiNE's Terms of Conditions and Privacy Policy.\n \n
\n
\n \n );\n};\n","import { notify } from '@affine/component';\nimport {\n AuthContent,\n BackButton,\n CountDownRender,\n ModalHeader,\n} from '@affine/component/auth-components';\nimport { Button } from '@affine/component/ui/button';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { Trans, useI18n } from '@affine/i18n';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport type { FC } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { AuthService } from '../../../modules/cloud';\nimport type { AuthPanelProps } from './index';\nimport * as style from './style.css';\nimport { Captcha, useCaptcha } from './use-captcha';\n\nexport const AfterSignUpSendEmail: FC = ({\n setAuthState,\n email,\n onSignedIn,\n}) => {\n const [resendCountDown, setResendCountDown] = useState(60);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setResendCountDown(c => Math.max(c - 1, 0));\n }, 1000);\n\n return () => {\n clearInterval(timer);\n };\n }, []);\n\n const [isSending, setIsSending] = useState(false);\n const t = useI18n();\n const authService = useService(AuthService);\n const loginStatus = useLiveData(authService.session.status$);\n useEffect(() => {\n const timeout = setInterval(() => {\n // revalidate session to get the latest status\n authService.session.revalidate();\n }, 3000);\n return () => {\n clearInterval(timeout);\n };\n }, [authService]);\n if (loginStatus === 'authenticated') {\n onSignedIn?.();\n }\n\n const [verifyToken, challenge] = useCaptcha();\n\n const onResendClick = useAsyncCallback(async () => {\n setIsSending(true);\n try {\n if (verifyToken) {\n await authService.sendEmailMagicLink(email, verifyToken, challenge);\n }\n setResendCountDown(60);\n } catch (err) {\n console.error(err);\n notify.error({\n title: 'Failed to send email, please try again.',\n });\n }\n setIsSending(false);\n }, [authService, challenge, email, verifyToken]);\n\n return (\n <>\n \n \n }}\n />\n {t['com.arms.auth.sign.sent.email.message.sent-tips.sign-up']()}\n \n\n
\n {resendCountDown <= 0 ? (\n <>\n \n \n {t['com.arms.auth.sign.auth.code.resend.hint']()}\n \n \n ) : (\n
\n
{t['com.arms.auth.sent']()}
\n \n
\n )}\n
\n\n
\n {t['com.arms.auth.sign.auth.code.message']()}\n
\n\n {\n setAuthState('signIn');\n }, [setAuthState])}\n />\n \n );\n};\n","import { notify } from '@affine/component';\nimport {\n AuthContent,\n BackButton,\n CountDownRender,\n ModalHeader,\n} from '@affine/component/auth-components';\nimport { Button } from '@affine/component/ui/button';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { AuthService } from '@affine/core/modules/cloud';\nimport { Trans, useI18n } from '@affine/i18n';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport type { AuthPanelProps } from './index';\nimport * as style from './style.css';\nimport { Captcha, useCaptcha } from './use-captcha';\n\nexport const AfterSignInSendEmail = ({\n setAuthState,\n email,\n onSignedIn,\n}: AuthPanelProps) => {\n const [resendCountDown, setResendCountDown] = useState(60);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setResendCountDown(c => Math.max(c - 1, 0));\n }, 1000);\n\n return () => {\n clearInterval(timer);\n };\n }, []);\n\n const [isSending, setIsSending] = useState(false);\n\n const t = useI18n();\n const authService = useService(AuthService);\n useEffect(() => {\n const timer = setInterval(() => {\n authService.session.revalidate();\n }, 3000);\n\n return () => {\n clearInterval(timer);\n };\n }, [authService]);\n const loginStatus = useLiveData(authService.session.status$);\n const [verifyToken, challenge] = useCaptcha();\n\n if (loginStatus === 'authenticated') {\n onSignedIn?.();\n }\n\n const onResendClick = useAsyncCallback(async () => {\n setIsSending(true);\n try {\n if (verifyToken) {\n setResendCountDown(60);\n await authService.sendEmailMagicLink(email, verifyToken, challenge);\n }\n } catch (err) {\n console.error(err);\n notify.error({\n title: 'Failed to send email, please try again.',\n });\n }\n setIsSending(false);\n }, [authService, challenge, email, verifyToken]);\n\n const onSignInWithPasswordClick = useCallback(() => {\n setAuthState('signInWithPassword');\n }, [setAuthState]);\n\n const onBackBottomClick = useCallback(() => {\n setAuthState('signIn');\n }, [setAuthState]);\n\n return (\n <>\n \n \n }}\n />\n {t['com.arms.auth.sign.sent.email.message.sent-tips.sign-in']()}\n \n\n
\n {resendCountDown <= 0 ? (\n <>\n \n \n {t['com.arms.auth.sign.auth.code.resend.hint']()}\n \n \n ) : (\n
\n
{t['com.arms.auth.sent']()}
\n \n
\n )}\n
\n\n
\n {t['com.arms.auth.sign.auth.code.message']()}\n  \n \n ),\n }}\n />\n
\n\n \n \n );\n};\n","import { notify, Wrapper } from '@affine/component';\nimport {\n AuthInput,\n BackButton,\n ModalHeader,\n} from '@affine/component/auth-components';\nimport { Button } from '@affine/component/ui/button';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { AuthService } from '@affine/core/modules/cloud';\nimport { useI18n } from '@affine/i18n';\nimport { useService } from '@toeverything/infra';\nimport type { FC } from 'react';\nimport { useCallback, useState } from 'react';\n\nimport type { AuthPanelProps } from './index';\nimport * as styles from './style.css';\nimport { useCaptcha } from './use-captcha';\n\nexport const SignInWithPassword: FC = ({\n setAuthState,\n setEmailType,\n email,\n onSignedIn,\n}) => {\n const t = useI18n();\n const authService = useService(AuthService);\n\n const [password, setPassword] = useState('');\n const [passwordError, setPasswordError] = useState(false);\n const [verifyToken, challenge] = useCaptcha();\n const [isLoading, setIsLoading] = useState(false);\n const [sendingEmail, setSendingEmail] = useState(false);\n\n const onSignIn = useAsyncCallback(async () => {\n if (isLoading) return;\n setIsLoading(true);\n\n try {\n await authService.signInPassword({\n email,\n password,\n });\n onSignedIn?.();\n } catch (err) {\n console.error(err);\n setPasswordError(true);\n } finally {\n setIsLoading(false);\n }\n }, [isLoading, authService, email, password, onSignedIn]);\n\n const sendMagicLink = useAsyncCallback(async () => {\n if (sendingEmail) return;\n setSendingEmail(true);\n try {\n if (verifyToken) {\n await authService.sendEmailMagicLink(email, verifyToken, challenge);\n setAuthState('afterSignInSendEmail');\n }\n } catch (err) {\n console.error(err);\n notify.error({\n title: 'Failed to send email, please try again.',\n });\n // TODO(@eyhn): handle error better\n }\n setSendingEmail(false);\n }, [sendingEmail, verifyToken, authService, email, challenge, setAuthState]);\n\n const sendChangePasswordEmail = useCallback(() => {\n setEmailType('changePassword');\n setAuthState('sendEmail');\n }, [setAuthState, setEmailType]);\n\n return (\n <>\n \n\n \n \n {\n setPassword(value);\n }, [])}\n error={passwordError}\n errorHint={t['com.arms.auth.password.error']()}\n onEnter={onSignIn}\n />\n \n \n {t['com.arms.auth.forget']()}\n \n \n
\n \n {t['com.arms.auth.sign.auth.code.send-email.sign-in']()}\n \n
\n \n {t['com.arms.auth.sign.in']()}\n \n \n {\n setAuthState('signIn');\n }, [setAuthState])}\n />\n \n );\n};\n","import { Tooltip } from '@affine/component/ui/tooltip';\nimport { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook';\nimport { SubscriptionPlan } from '@affine/graphql';\nimport { useI18n } from '@affine/i18n';\nimport { useLiveData, useServices } from '@toeverything/infra';\nimport { useSetAtom } from 'jotai';\nimport { useEffect } from 'react';\n\nimport { openSettingModalAtom } from '../../../atoms';\nimport {\n ServerConfigService,\n SubscriptionService,\n} from '../../../modules/cloud';\nimport * as styles from './style.css';\n\nexport const UserPlanButton = () => {\n const { serverConfigService, subscriptionService } = useServices({\n ServerConfigService,\n SubscriptionService,\n });\n\n const hasPayment = useLiveData(\n serverConfigService.serverConfig.features$.map(r => r?.payment)\n );\n const plan = useLiveData(\n subscriptionService.subscription.pro$.map(subscription =>\n subscription !== null ? subscription?.plan : null\n )\n );\n const isBeliever = useLiveData(subscriptionService.subscription.isBeliever$);\n const isLoading = plan === null;\n\n useEffect(() => {\n // revalidate subscription to get the latest status\n subscriptionService.subscription.revalidate();\n }, [subscriptionService]);\n\n const setSettingModalAtom = useSetAtom(openSettingModalAtom);\n const handleClick = useCatchEventCallback(() => {\n setSettingModalAtom({\n open: true,\n activeTab: 'plans',\n scrollAnchor: 'cloudPricingPlan',\n });\n }, [setSettingModalAtom]);\n\n const t = useI18n();\n\n if (!hasPayment) {\n // no payment feature\n return;\n }\n\n if (isLoading) {\n // loading, do nothing\n return;\n }\n\n const planLabel = isBeliever ? 'Believer' : plan ?? SubscriptionPlan.Free;\n\n return (\n \n \n {planLabel}\n \n \n );\n};\n","import { ConfirmModal } from '@affine/component';\nimport { WorkspacePropertiesAdapter } from '@affine/core/modules/properties';\nimport type { PageInfoCustomPropertyMeta } from '@affine/core/modules/properties/services/schema';\nimport { Trans, useI18n } from '@affine/i18n';\nimport { useService } from '@toeverything/infra';\nimport { useMemo } from 'react';\n\nimport { PagePropertiesMetaManager } from './page-properties-manager';\n\nexport const ConfirmDeletePropertyModal = ({\n onConfirm,\n onCancel,\n property,\n show,\n}: {\n property: PageInfoCustomPropertyMeta;\n show: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n}) => {\n const t = useI18n();\n const adapter = useService(WorkspacePropertiesAdapter);\n const count = useMemo(() => {\n const manager = new PagePropertiesMetaManager(adapter);\n return manager.getPropertyRelatedPages(property.id)?.size || 0;\n }, [adapter, property.id]);\n\n return (\n \n The {{ name: property.name } as any} property will be\n removed from count doc(s). This action cannot be undone.\n \n }\n confirmText={t['Confirm']()}\n onConfirm={onConfirm}\n cancelButtonOptions={{\n onClick: onCancel,\n }}\n confirmButtonOptions={{\n variant: 'error',\n }}\n />\n );\n};\n","import { PagePropertyType } from '@affine/core/modules/properties/services/schema';\nimport * as icons from '@blocksuite/icons/rc';\nimport type { SVGProps } from 'react';\n\ntype IconType = (props: SVGProps) => JSX.Element;\n\n// assume all exports in icons are icon Components\ntype LibIconComponentName = keyof typeof icons;\n\ntype fromLibIconName = T extends `${infer N}Icon`\n ? Uncapitalize\n : never;\n\nexport const iconNames = [\n 'ai',\n 'email',\n 'text',\n 'dateTime',\n 'keyboard',\n 'pen',\n 'account',\n 'embedWeb',\n 'layer',\n 'pin',\n 'appearance',\n 'eraser',\n 'layout',\n 'presentation',\n 'bookmark',\n 'exportToHtml',\n 'lightMode',\n 'progress',\n 'bulletedList',\n 'exportToMarkdown',\n 'link',\n 'publish',\n 'camera',\n 'exportToPdf',\n 'linkedEdgeless',\n 'quote',\n 'checkBoxCheckLinear',\n 'exportToPng',\n 'linkedPage',\n 'save',\n 'cloudWorkspace',\n 'exportToSvg',\n 'localData',\n 'shape',\n 'code',\n 'favorite',\n 'localWorkspace',\n 'style',\n 'codeBlock',\n 'file',\n 'lock',\n 'tag',\n 'collaboration',\n 'folder',\n 'multiSelect',\n 'tags',\n 'colorPicker',\n 'frame',\n 'new',\n 'today',\n 'contactWithUs',\n 'grid',\n 'now',\n 'upgrade',\n 'darkMode',\n 'grouping',\n 'number',\n 'userGuide',\n 'databaseKanbanView',\n 'image',\n 'numberedList',\n 'view',\n 'databaseListView',\n 'inbox',\n 'other',\n 'viewLayers',\n 'databaseTableView',\n 'info',\n 'page',\n 'attachment',\n 'delete',\n 'issue',\n 'paste',\n 'heartbreak',\n 'edgeless',\n 'journal',\n 'payment',\n] as const satisfies fromLibIconName[];\n\nexport type PagePropertyIcon = (typeof iconNames)[number];\n\nexport const getDefaultIconName = (\n type: PagePropertyType\n): PagePropertyIcon => {\n switch (type) {\n case 'text':\n return 'text';\n case 'tags':\n return 'tag';\n case 'date':\n return 'dateTime';\n case 'progress':\n return 'progress';\n case 'checkbox':\n return 'checkBoxCheckLinear';\n case 'number':\n return 'number';\n default:\n return 'text';\n }\n};\n\nexport const getSafeIconName = (\n iconName: string,\n type?: PagePropertyType\n): PagePropertyIcon => {\n return iconNames.includes(iconName as any)\n ? (iconName as PagePropertyIcon)\n : getDefaultIconName(type || PagePropertyType.Text);\n};\n\nconst nameToComponentName = (\n iconName: PagePropertyIcon\n): LibIconComponentName => {\n const capitalize = (s: string) => s.charAt(0).toUpperCase() + s.slice(1);\n return `${capitalize(iconName)}Icon` as LibIconComponentName;\n};\n\nexport const nameToIcon = (\n iconName: string,\n type?: PagePropertyType\n): IconType => {\n const Icon = icons[nameToComponentName(getSafeIconName(iconName, type))];\n if (!Icon) {\n throw new Error(`Icon ${iconName} not found`);\n }\n return Icon;\n};\n","import { createContext } from 'react';\n\nimport type { PagePropertiesManager } from './page-properties-manager';\n\n// @ts-expect-error this should always be set\nexport const managerContext = createContext();\n","import \"../core/src/components/affine/page-properties/tags-inline-editor.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/page-properties/tags-inline-editor.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA51V246bMBB9z1fMS6VNt44gt+462i+pVpVjD+AWbMs2CWnVf68wEJOQrJo+EOLx+MyZM+Nh8X3ziutlknwTzDOClfGnN29rfIffMwCuS20pHJh9IoRlmVRITMk4FroUaEnYn+9mf2aLHigN54R0pmQnClmJzW4G4U2EtMi91Iq2wHWl2p2jFL6gkCbJp3aZM0MhXZpmDLq8DRp8tyYGONrW0v5OkCPYKoAZJoRUOYWkdfWWKZdpW9Hub8k8PpHVYmOaL8BZyfsFPPdaWCZkQ4w2Bi1hihfakgJlXvg5fAaSzucjBgHg/rngNYdnSLemCef0AW1W6iOFQgqBakx//YEW67tanNNNE9P0+gLsGf+ZW10rQW5Vumh5nGsMUEnVJ0lhfVWiTaAVIue2ZZ5OwwapK2ZzqSiQaNprK9BSUFphSL/2pVQYDZlWnjj5CymkQ46tKWOVLE8UpCrQSr+LHTuyTJMMJTbMovIXKVA66u3/7P/to/0fCvfSJRWbsrUMT6daE6VPks4Y24TVXo9ZfL3N4kftvMxOhGvlUXkKzjCOZI/+iBjYsFLmikiPlaPAUXm0U2JXJblQJ9gbNz/7HHvWmyTZ3VHUY+OJQ66VYPZ0Q9SXkM6QLmnivQAw2slOU4sl8/KA13otB72i1BH69d/qZfXxIXmG2Kv1dWgAXlvXamC0HAC6GxCmQ+36ezzi2A3nTPPaoRiN54fub8RjnZyGcelPYQKOYtFwCu74phc4HS/nmcc3bVC9f+C8vzEg4i4Pu/28XCaXIg7rSZXulGPS5sNWjCfG8dLtZbxhfVWVTfiO/AWYK54pMgcAAA==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var inlineTagsContainer = '_59e4202';\nexport var searchInput = '_59e4205';\nexport var spacer = '_59e420b';\nexport var tagColorIcon = '_59e420d';\nexport var tagColorIconWrapper = '_59e420c';\nexport var tagEditIcon = '_59e420a';\nexport var tagSelectorItem = '_59e4209';\nexport var tagSelectorTagsScrollContainer = '_59e4208';\nexport var tagsEditorRoot = '_59e4201';\nexport var tagsEditorSelectedTags = '_59e4204';\nexport var tagsEditorTagsSelector = '_59e4206';\nexport var tagsEditorTagsSelectorHeader = '_59e4207';\nexport var tagsInlineEditor = '_59e4200';\nexport var tagsMenu = '_59e4203';","import type { MenuProps } from '@affine/component';\nimport { IconButton, Input, Menu, Scrollable } from '@affine/component';\nimport { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper';\nimport { WorkspaceLegacyProperties } from '@affine/core/modules/properties';\nimport type { Tag } from '@affine/core/modules/tag';\nimport { DeleteTagConfirmModal, TagService } from '@affine/core/modules/tag';\nimport { useI18n } from '@affine/i18n';\nimport { DeleteIcon, MoreHorizontalIcon, TagsIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport clsx from 'clsx';\nimport { clamp } from 'lodash-es';\nimport type { HTMLAttributes, PropsWithChildren } from 'react';\nimport { useCallback, useMemo, useReducer, useRef, useState } from 'react';\n\nimport { TagItem, TempTagItem } from '../../page-list';\nimport type { MenuItemOption } from './menu-items';\nimport { renderMenuItemOptions } from './menu-items';\nimport * as styles from './tags-inline-editor.css';\n\ninterface TagsEditorProps {\n pageId: string;\n readonly?: boolean;\n focusedIndex?: number;\n}\n\ninterface InlineTagsListProps\n extends Omit, 'onChange'>,\n Omit {\n onRemove?: () => void;\n}\n\nexport const InlineTagsList = ({\n pageId,\n readonly,\n children,\n focusedIndex,\n onRemove,\n}: PropsWithChildren) => {\n const tagList = useService(TagService).tagList;\n const tags = useLiveData(tagList.tags$);\n const tagIds = useLiveData(tagList.tagIdsByPageId$(pageId));\n\n return (\n
\n {tagIds.map((tagId, idx) => {\n const tag = tags.find(t => t.id === tagId);\n if (!tag) {\n return null;\n }\n const onRemoved = readonly\n ? undefined\n : () => {\n tag.untag(pageId);\n onRemove?.();\n };\n return (\n \n );\n })}\n {children}\n
\n );\n};\n\nexport const EditTagMenu = ({\n tagId,\n onTagDelete,\n children,\n}: PropsWithChildren<{\n tagId: string;\n onTagDelete: (tagIds: string[]) => void;\n}>) => {\n const t = useI18n();\n const legacyProperties = useService(WorkspaceLegacyProperties);\n const tagService = useService(TagService);\n const tagList = tagService.tagList;\n const tag = useLiveData(tagList.tagByTagId$(tagId));\n const tagColor = useLiveData(tag?.color$);\n const tagValue = useLiveData(tag?.value$);\n const navigate = useNavigateHelper();\n\n const menuProps = useMemo(() => {\n const options: MenuItemOption[] = [];\n const updateTagName = (name: string) => {\n if (name.trim() === '') {\n return;\n }\n tag?.rename(name);\n };\n options.push(\n {\n updateTagName(e.currentTarget.value);\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n updateTagName(e.currentTarget.value);\n }\n }}\n placeholder={t['Untitled']()}\n />\n );\n\n options.push('-');\n\n options.push({\n text: t['Delete'](),\n icon: ,\n type: 'danger',\n onClick() {\n onTagDelete([tag?.id || '']);\n },\n });\n\n options.push({\n text: t['com.arms.page-properties.tags.open-tags-page'](),\n icon: ,\n onClick() {\n navigate.jumpToTag(legacyProperties.workspaceId, tag?.id || '');\n },\n });\n\n options.push('-');\n\n options.push(\n tagService.tagColors.map(([name, color], i) => {\n return {\n text: name,\n icon: (\n
\n \n
\n ),\n checked: tagColor === color,\n onClick() {\n tag?.changeColor(color);\n },\n };\n })\n );\n const items = renderMenuItemOptions(options);\n\n return {\n contentOptions: {\n onClick(e) {\n e.stopPropagation();\n },\n },\n items,\n } satisfies Partial;\n }, [\n legacyProperties.workspaceId,\n navigate,\n onTagDelete,\n t,\n tag,\n tagColor,\n tagService.tagColors,\n tagValue,\n ]);\n\n return {children};\n};\n\ntype TagOption = Tag | { readonly create: true; readonly value: string };\nconst isCreateNewTag = (\n tagOption: TagOption\n): tagOption is { readonly create: true; readonly value: string } => {\n return 'create' in tagOption;\n};\n\nexport const TagsEditor = ({ pageId, readonly }: TagsEditorProps) => {\n const t = useI18n();\n const tagService = useService(TagService);\n const tagList = tagService.tagList;\n const tags = useLiveData(tagList.tags$);\n const tagIds = useLiveData(tagList.tagIdsByPageId$(pageId));\n const [inputValue, setInputValue] = useState('');\n const filteredTags = useLiveData(\n inputValue ? tagList.filterTagsByName$(inputValue) : tagList.tags$\n );\n const [open, setOpen] = useState(false);\n const [selectedTagIds, setSelectedTagIds] = useState([]);\n const inputRef = useRef(null);\n\n const exactMatch = filteredTags.find(tag => tag.value$.value === inputValue);\n const showCreateTag = !exactMatch && inputValue.trim();\n\n // tag option candidates to show in the tag dropdown\n const tagOptions: TagOption[] = useMemo(() => {\n if (showCreateTag) {\n return [{ create: true, value: inputValue } as const, ...filteredTags];\n } else {\n return filteredTags;\n }\n }, [filteredTags, inputValue, showCreateTag]);\n\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const [focusedInlineIndex, setFocusedInlineIndex] = useState(\n tagIds.length\n );\n\n // -1: no focus\n const safeFocusedIndex = clamp(focusedIndex, -1, tagOptions.length - 1);\n // inline tags focus index can go beyond the length of tagIds\n // using -1 and tagIds.length to make keyboard navigation easier\n const safeInlineFocusedIndex = clamp(focusedInlineIndex, -1, tagIds.length);\n\n const scrollContainerRef = useRef(null);\n\n const handleCloseModal = useCallback(\n (open: boolean) => {\n setOpen(open);\n setSelectedTagIds([]);\n },\n [setOpen]\n );\n\n const onTagDelete = useCallback(\n (tagIds: string[]) => {\n setOpen(true);\n setSelectedTagIds(tagIds);\n },\n [setOpen, setSelectedTagIds]\n );\n\n const onInputChange = useCallback(\n (e: React.ChangeEvent) => {\n setInputValue(e.target.value);\n },\n []\n );\n\n const onToggleTag = useCallback(\n (id: string) => {\n const tagEntity = tagList.tags$.value.find(o => o.id === id);\n if (!tagEntity) {\n return;\n }\n if (!tagIds.includes(id)) {\n tagEntity.tag(pageId);\n } else {\n tagEntity.untag(pageId);\n }\n },\n [pageId, tagIds, tagList.tags$.value]\n );\n\n const focusInput = useCallback(() => {\n inputRef.current?.focus();\n }, []);\n\n const [nextColor, rotateNextColor] = useReducer(\n color => {\n const idx = tagService.tagColors.findIndex(c => c[1] === color);\n return tagService.tagColors[(idx + 1) % tagService.tagColors.length][1];\n },\n tagService.tagColors[\n Math.floor(Math.random() * tagService.tagColors.length)\n ][1]\n );\n\n const onCreateTag = useCallback(\n (name: string) => {\n rotateNextColor();\n const newTag = tagList.createTag(name.trim(), nextColor);\n return newTag.id;\n },\n [nextColor, tagList]\n );\n\n const onSelectTagOption = useCallback(\n (tagOption: TagOption) => {\n const id = isCreateNewTag(tagOption)\n ? onCreateTag(tagOption.value)\n : tagOption.id;\n onToggleTag(id);\n setInputValue('');\n focusInput();\n setFocusedIndex(-1);\n setFocusedInlineIndex(tagIds.length + 1);\n },\n [onCreateTag, onToggleTag, focusInput, tagIds.length]\n );\n\n const onInputKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n if (safeFocusedIndex >= 0) {\n onSelectTagOption(tagOptions[safeFocusedIndex]);\n }\n } else if (e.key === 'Backspace' && inputValue === '' && tagIds.length) {\n const tagToRemove =\n safeInlineFocusedIndex < 0 || safeInlineFocusedIndex >= tagIds.length\n ? tagIds.length - 1\n : safeInlineFocusedIndex;\n tags.find(item => item.id === tagIds.at(tagToRemove))?.untag(pageId);\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const newFocusedIndex = clamp(\n safeFocusedIndex + (e.key === 'ArrowUp' ? -1 : 1),\n 0,\n tagOptions.length - 1\n );\n scrollContainerRef.current\n ?.querySelector(\n `.${styles.tagSelectorItem}:nth-child(${newFocusedIndex + 1})`\n )\n ?.scrollIntoView({ block: 'nearest' });\n setFocusedIndex(newFocusedIndex);\n // reset inline focus\n setFocusedInlineIndex(tagIds.length + 1);\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n const newItemToFocus =\n e.key === 'ArrowLeft'\n ? safeInlineFocusedIndex - 1\n : safeInlineFocusedIndex + 1;\n\n e.preventDefault();\n setFocusedInlineIndex(newItemToFocus);\n // reset tag list focus\n setFocusedIndex(-1);\n }\n },\n [\n inputValue,\n tagIds,\n safeFocusedIndex,\n onSelectTagOption,\n tagOptions,\n safeInlineFocusedIndex,\n tags,\n pageId,\n ]\n );\n\n return (\n
\n
\n \n \n \n
\n
\n
\n {t['com.arms.page-properties.tags.selector-header-title']()}\n
\n \n \n {tagOptions.map((tag, idx) => {\n const commonProps = {\n focused: safeFocusedIndex === idx,\n onClick: () => onSelectTagOption(tag),\n onMouseEnter: () => setFocusedIndex(idx),\n ['data-testid']: 'tag-selector-item',\n ['data-focused']: safeFocusedIndex === idx,\n className: styles.tagSelectorItem,\n };\n if (isCreateNewTag(tag)) {\n return (\n
\n {t['Create']()}{' '}\n \n
\n );\n } else {\n return (\n \n \n
\n \n \n \n \n \n
\n );\n }\n })}\n \n \n
\n
\n \n
\n );\n};\n\ninterface TagsInlineEditorProps extends TagsEditorProps {\n placeholder?: string;\n className?: string;\n}\n\n// this tags value renderer right now only renders the legacy tags for now\nexport const TagsInlineEditor = ({\n pageId,\n readonly,\n placeholder,\n className,\n}: TagsInlineEditorProps) => {\n const tagList = useService(TagService).tagList;\n const tagIds = useLiveData(tagList.tagIdsByPageId$(pageId));\n const empty = !tagIds || tagIds.length === 0;\n return (\n }\n >\n \n {empty ? placeholder : }\n \n \n );\n};\n","import { Checkbox, DatePicker, Menu } from '@affine/component';\nimport type {\n PageInfoCustomProperty,\n PageInfoCustomPropertyMeta,\n PagePropertyType,\n} from '@affine/core/modules/properties/services/schema';\nimport { i18nTime, useI18n } from '@affine/i18n';\nimport { DocService, useService } from '@toeverything/infra';\nimport { noop } from 'lodash-es';\nimport type { ChangeEventHandler } from 'react';\nimport { useCallback, useContext, useEffect, useRef, useState } from 'react';\n\nimport { managerContext } from './common';\nimport * as styles from './styles.css';\nimport { TagsInlineEditor } from './tags-inline-editor';\n\ninterface PropertyRowValueProps {\n property: PageInfoCustomProperty;\n meta: PageInfoCustomPropertyMeta;\n}\n\nexport const DateValue = ({ property }: PropertyRowValueProps) => {\n const displayValue = property.value\n ? i18nTime(property.value, { absolute: { accuracy: 'day' } })\n : undefined;\n const manager = useContext(managerContext);\n\n const handleClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n // show edit popup\n }, []);\n\n const handleChange = useCallback(\n (e: string) => {\n manager.updateCustomProperty(property.id, {\n value: e,\n });\n },\n [manager, property.id]\n );\n\n const t = useI18n();\n\n return (\n }>\n \n {displayValue ??\n t['com.arms.page-properties.property-value-placeholder']()}\n \n \n );\n};\n\nexport const CheckboxValue = ({ property }: PropertyRowValueProps) => {\n const manager = useContext(managerContext);\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n manager.updateCustomProperty(property.id, {\n value: !property.value,\n });\n },\n [manager, property.id, property.value]\n );\n return (\n \n \n \n );\n};\n\nexport const TextValue = ({ property }: PropertyRowValueProps) => {\n const manager = useContext(managerContext);\n const [value, setValue] = useState(property.value);\n const handleClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n const ref = useRef(null);\n const handleBlur = useCallback(\n (e: FocusEvent) => {\n manager.updateCustomProperty(property.id, {\n value: (e.currentTarget as HTMLTextAreaElement).value.trim(),\n });\n },\n [manager, property.id]\n );\n // use native blur event to get event after unmount\n // don't use useLayoutEffect here, cause the cleanup function will be called before unmount\n useEffect(() => {\n ref.current?.addEventListener('blur', handleBlur);\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ref.current?.removeEventListener('blur', handleBlur);\n };\n }, [handleBlur]);\n const handleOnChange: ChangeEventHandler = useCallback(\n e => {\n setValue(e.target.value);\n },\n []\n );\n const t = useI18n();\n useEffect(() => {\n setValue(property.value);\n }, [property.value]);\n\n return (\n
\n \n
\n {value}\n {value?.endsWith('\\n') || !value ?
: null}\n
\n
\n );\n};\n\nexport const NumberValue = ({ property }: PropertyRowValueProps) => {\n const manager = useContext(managerContext);\n const [value, setValue] = useState(property.value);\n const handleClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n const handleBlur = useCallback(\n (e: React.ChangeEvent) => {\n manager.updateCustomProperty(property.id, {\n value: e.target.value.trim(),\n });\n },\n [manager, property.id]\n );\n const handleOnChange: ChangeEventHandler = useCallback(\n e => {\n setValue(e.target.value);\n },\n []\n );\n const t = useI18n();\n useEffect(() => {\n setValue(property.value);\n }, [property.value]);\n return (\n \n );\n};\n\nexport const TagsValue = () => {\n const doc = useService(DocService).doc;\n\n const t = useI18n();\n\n return (\n \n );\n};\n\nexport const propertyValueRenderers: Record<\n PagePropertyType,\n typeof DateValue\n> = {\n date: DateValue,\n checkbox: CheckboxValue,\n text: TextValue,\n number: NumberValue,\n // TODO(@Peng): fix following\n tags: TagsValue,\n progress: TextValue,\n};\n","import type { MenuProps } from '@affine/component';\nimport {\n Button,\n IconButton,\n Menu,\n MenuIcon,\n MenuItem,\n Tooltip,\n} from '@affine/component';\nimport { useCurrentWorkspacePropertiesAdapter } from '@affine/core/hooks/use-affine-adapter';\nimport { track } from '@affine/core/mixpanel';\nimport { DocLinksService } from '@affine/core/modules/doc-link';\nimport type {\n PageInfoCustomProperty,\n PageInfoCustomPropertyMeta,\n PagePropertyType,\n} from '@affine/core/modules/properties/services/schema';\nimport { i18nTime, useI18n } from '@affine/i18n';\nimport { assertExists } from '@blocksuite/global/utils';\nimport {\n ArrowDownSmallIcon,\n DeleteIcon,\n InvisibleIcon,\n MoreHorizontalIcon,\n PlusIcon,\n TagsIcon,\n ToggleExpandIcon,\n ViewIcon,\n} from '@blocksuite/icons/rc';\nimport type { DragEndEvent, DraggableAttributes } from '@dnd-kit/core';\nimport {\n DndContext,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n restrictToParentElement,\n restrictToVerticalAxis,\n} from '@dnd-kit/modifiers';\nimport { SortableContext, useSortable } from '@dnd-kit/sortable';\nimport * as Collapsible from '@radix-ui/react-collapsible';\nimport {\n DocService,\n useLiveData,\n useServices,\n WorkspaceService,\n} from '@toeverything/infra';\nimport clsx from 'clsx';\nimport { use } from 'foxact/use';\nimport { useDebouncedValue } from 'foxact/use-debounced-value';\nimport { atom, useAtomValue, useSetAtom } from 'jotai';\nimport type React from 'react';\nimport type {\n CSSProperties,\n MouseEvent,\n MouseEventHandler,\n PropsWithChildren,\n} from 'react';\nimport {\n Suspense,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { AffinePageReference } from '../reference-link';\nimport { managerContext } from './common';\nimport { ConfirmDeletePropertyModal } from './confirm-delete-property-modal';\nimport type { PagePropertyIcon } from './icons-mapping';\nimport { getDefaultIconName, nameToIcon } from './icons-mapping';\nimport type { MenuItemOption } from './menu-items';\nimport {\n EditPropertyNameMenuItem,\n PropertyTypeMenuItem,\n renderMenuItemOptions,\n} from './menu-items';\nimport type { PagePropertiesMetaManager } from './page-properties-manager';\nimport {\n newPropertyTypes,\n PagePropertiesManager,\n} from './page-properties-manager';\nimport {\n propertyValueRenderers,\n TagsValue,\n} from './property-row-value-renderer';\nimport * as styles from './styles.css';\n\ntype PagePropertiesSettingsPopupProps = PropsWithChildren<{\n className?: string;\n style?: React.CSSProperties;\n}>;\n\nconst Divider = () =>
;\n\ntype PropertyVisibility = PageInfoCustomProperty['visibility'];\n\nconst editingPropertyAtom = atom(null);\n\nconst modifiers = [restrictToParentElement, restrictToVerticalAxis];\n\ninterface SortablePropertiesProps {\n children: (properties: PageInfoCustomProperty[]) => React.ReactNode;\n}\n\nexport const SortableProperties = ({ children }: SortablePropertiesProps) => {\n const manager = useContext(managerContext);\n const properties = useMemo(() => manager.sorter.getOrderedItems(), [manager]);\n const editingItem = useAtomValue(editingPropertyAtom);\n const draggable = !manager.readonly && !editingItem;\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 8,\n },\n })\n );\n // use localProperties since changes applied to upstream may be delayed\n // if we use that one, there will be weird behavior after reordering\n const [localProperties, setLocalProperties] = useState(properties);\n\n useEffect(() => {\n setLocalProperties(properties);\n }, [properties]);\n\n const onDragEnd = useCallback(\n (event: DragEndEvent) => {\n if (!draggable) {\n return;\n }\n const { active, over } = event;\n if (over) {\n manager.sorter.move(active.id, over.id);\n }\n setLocalProperties(manager.sorter.getOrderedItems());\n },\n [manager, draggable]\n );\n\n const filteredProperties = useMemo(\n () => localProperties.filter(p => manager.getCustomPropertyMeta(p.id)),\n [localProperties, manager]\n );\n\n return (\n \n \n {children(filteredProperties)}\n \n \n );\n};\n\ntype SyntheticListenerMap = ReturnType['listeners'];\n\nconst SortablePropertyRow = ({\n property,\n className,\n children,\n ...props\n}: {\n property: PageInfoCustomProperty;\n className?: string;\n children?:\n | React.ReactNode\n | ((props: {\n attributes: DraggableAttributes;\n listeners?: SyntheticListenerMap;\n }) => React.ReactNode);\n}) => {\n const manager = useContext(managerContext);\n const {\n setNodeRef,\n attributes,\n listeners,\n transform,\n transition,\n active,\n isDragging,\n isSorting,\n } = useSortable({\n id: property.id,\n });\n const style: CSSProperties = useMemo(\n () => ({\n transform: transform\n ? `translate3d(${transform.x}px, ${transform.y}px, 0)`\n : undefined,\n transition: isSorting ? transition : undefined,\n pointerEvents: manager.readonly ? 'none' : undefined,\n }),\n [isSorting, manager.readonly, transform, transition]\n );\n\n return (\n \n {typeof children === 'function'\n ? children({ attributes, listeners })\n : children}\n
\n );\n};\n\nconst visibilities: PropertyVisibility[] = ['visible', 'hide', 'hide-if-empty'];\nconst rotateVisibility = (\n visibility: PropertyVisibility\n): PropertyVisibility => {\n const index = visibilities.indexOf(visibility);\n return visibilities[(index + 1) % visibilities.length];\n};\n\nconst visibilityMenuText = (visibility: PropertyVisibility = 'visible') => {\n switch (visibility) {\n case 'hide':\n return 'com.arms.page-properties.property.hide-in-view';\n case 'hide-if-empty':\n return 'com.arms.page-properties.property.hide-in-view-when-empty';\n case 'visible':\n return 'com.arms.page-properties.property.show-in-view';\n default:\n throw new Error(`unknown visibility: ${visibility}`);\n }\n};\n\nconst visibilitySelectorText = (visibility: PropertyVisibility = 'visible') => {\n switch (visibility) {\n case 'hide':\n return 'com.arms.page-properties.property.always-hide';\n case 'hide-if-empty':\n return 'com.arms.page-properties.property.hide-when-empty';\n case 'visible':\n return 'com.arms.page-properties.property.always-show';\n default:\n throw new Error(`unknown visibility: ${visibility}`);\n }\n};\n\nconst VisibilityModeSelector = ({\n property,\n}: {\n property: PageInfoCustomProperty;\n}) => {\n const manager = useContext(managerContext);\n const t = useI18n();\n const meta = manager.getCustomPropertyMeta(property.id);\n const visibility = property.visibility || 'visible';\n\n const menuItems = useMemo(() => {\n const options: MenuItemOption[] = [];\n options.push(\n visibilities.map(v => {\n const text = visibilityMenuText(v);\n return {\n text: t[text](),\n selected: visibility === v,\n onClick: () => {\n manager.updateCustomProperty(property.id, {\n visibility: v,\n });\n },\n };\n })\n );\n return renderMenuItemOptions(options);\n }, [manager, property.id, t, visibility]);\n\n if (!meta) {\n return null;\n }\n\n const required = meta.required;\n\n return (\n \n \n {required ? (\n t['com.arms.page-properties.property.required']()\n ) : (\n <>\n {t[visibilitySelectorText(visibility)]()}\n \n \n )}\n \n \n );\n};\n\nexport const PagePropertiesSettingsPopup = ({\n children,\n}: PagePropertiesSettingsPopupProps) => {\n const manager = useContext(managerContext);\n const t = useI18n();\n\n const menuItems = useMemo(() => {\n const options: MenuItemOption[] = [];\n options.push(\n \n {t['com.arms.page-properties.settings.title']()}\n \n );\n options.push('-');\n options.push([\n \n {properties =>\n properties.map(property => {\n const meta = manager.getCustomPropertyMeta(property.id);\n assertExists(meta, 'meta should exist for property');\n const Icon = nameToIcon(meta.icon, meta.type);\n const name = meta.name;\n return (\n \n \n \n \n \n {name}\n \n \n \n );\n })\n }\n ,\n ]);\n return renderMenuItemOptions(options);\n }, [manager, t]);\n\n return (\n \n {children}\n \n );\n};\n\ntype PageBacklinksPopupProps = PropsWithChildren<{\n backlinks: { docId: string; blockId: string; title: string }[];\n}>;\n\nexport const PageBacklinksPopup = ({\n backlinks,\n children,\n}: PageBacklinksPopupProps) => {\n const manager = useContext(managerContext);\n\n return (\n \n {backlinks.map(link => (\n \n ))}\n \n }\n >\n {children}\n \n );\n};\n\ninterface PagePropertyRowNameProps {\n property: PageInfoCustomProperty;\n meta: PageInfoCustomPropertyMeta;\n editing: boolean;\n onFinishEditing: () => void;\n}\n\nexport const PagePropertyRowNameMenu = ({\n editing,\n meta,\n property,\n onFinishEditing,\n children,\n}: PropsWithChildren) => {\n const manager = useContext(managerContext);\n const [localPropertyMeta, setLocalPropertyMeta] = useState(() => ({\n ...meta,\n }));\n const [localProperty, setLocalProperty] = useState(() => ({ ...property }));\n const nextVisibility = rotateVisibility(localProperty.visibility);\n\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n\n useEffect(() => {\n setLocalPropertyMeta(meta);\n }, [meta]);\n\n useEffect(() => {\n setLocalProperty(property);\n }, [property]);\n\n const handleFinishEditing = useCallback(() => {\n onFinishEditing();\n manager.updateCustomPropertyMeta(meta.id, localPropertyMeta);\n manager.updateCustomProperty(property.id, localProperty);\n }, [\n localProperty,\n localPropertyMeta,\n manager,\n meta.id,\n onFinishEditing,\n property.id,\n ]);\n const t = useI18n();\n const handleNameBlur = useCallback(\n (v: string) => {\n manager.updateCustomPropertyMeta(meta.id, {\n name: v,\n });\n },\n [manager, meta.id]\n );\n const handleNameChange: (name: string) => void = useCallback(name => {\n setLocalPropertyMeta(prev => ({\n ...prev,\n name: name,\n }));\n }, []);\n const toggleHide = useCallback(\n (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n setLocalProperty(prev => ({\n ...prev,\n visibility: nextVisibility,\n }));\n },\n [nextVisibility]\n );\n const handleDelete = useCallback(() => {\n manager.removeCustomProperty(property.id);\n }, [manager, property.id]);\n\n const handleIconChange = useCallback(\n (icon: PagePropertyIcon) => {\n setLocalPropertyMeta(prev => ({\n ...prev,\n icon,\n }));\n manager.updateCustomPropertyMeta(meta.id, {\n icon: icon,\n });\n },\n [manager, meta.id]\n );\n\n const menuItems = useMemo(() => {\n const options: MenuItemOption[] = [];\n options.push(\n \n );\n options.push();\n if (!localPropertyMeta.required) {\n options.push('-');\n options.push({\n icon:\n nextVisibility === 'hide' || nextVisibility === 'hide-if-empty' ? (\n \n ) : (\n \n ),\n text: t[\n visibilityMenuText(rotateVisibility(localProperty.visibility))\n ](),\n onClick: toggleHide,\n });\n options.push({\n type: 'danger',\n icon: ,\n text: t['com.arms.page-properties.property.remove-property'](),\n onClick: () => setShowDeleteModal(true),\n });\n }\n return renderMenuItemOptions(options);\n }, [\n handleIconChange,\n handleNameBlur,\n handleNameChange,\n localProperty.visibility,\n localPropertyMeta,\n nextVisibility,\n t,\n toggleHide,\n ]);\n\n return (\n <>\n \n {children}\n \n {\n setShowDeleteModal(false);\n handleDelete();\n }}\n onCancel={() => setShowDeleteModal(false)}\n show={showDeleteModal}\n property={meta}\n />\n \n );\n};\n\ninterface PagePropertiesTableHeaderProps {\n className?: string;\n style?: React.CSSProperties;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\n// backlinks - #no Updated yyyy-mm-dd\n// ─────────────────────────────────────────────────\n// Page Info ...\nexport const PagePropertiesTableHeader = ({\n className,\n style,\n open,\n onOpenChange,\n}: PagePropertiesTableHeaderProps) => {\n const manager = useContext(managerContext);\n\n const t = useI18n();\n const { docLinksServices } = useServices({\n DocLinksServices: DocLinksService,\n });\n const docBacklinks = docLinksServices.backlinks;\n const backlinks = useLiveData(docBacklinks.backlinks$);\n\n const { docService, workspaceService } = useServices({\n DocService,\n WorkspaceService,\n });\n\n const { syncing, retrying, serverClock } = useLiveData(\n workspaceService.workspace.engine.doc.docState$(docService.doc.id)\n );\n\n const timestampElement = useMemo(() => {\n const localizedCreateTime = manager.createDate\n ? i18nTime(manager.createDate)\n : null;\n\n const createTimeElement = (\n
\n {t['Created']()} {localizedCreateTime}\n
\n );\n\n return serverClock ? (\n \n
\n {t['Updated']()} {i18nTime(serverClock)}\n
\n {manager.createDate && (\n
\n {t['Created']()} {i18nTime(manager.createDate)}\n
\n )}\n \n }\n >\n
\n {!syncing && !retrying ? (\n <>\n {t['Updated']()}{' '}\n {i18nTime(serverClock, {\n relative: {\n max: [1, 'day'],\n accuracy: 'minute',\n },\n absolute: {\n accuracy: 'day',\n },\n })}\n \n ) : (\n <>{t['com.arms.syncing']()}\n )}\n
\n
\n ) : manager.updatedDate ? (\n \n
\n {t['Updated']()} {i18nTime(manager.updatedDate)}\n
\n
\n ) : (\n createTimeElement\n );\n }, [\n manager.createDate,\n manager.updatedDate,\n retrying,\n serverClock,\n syncing,\n t,\n ]);\n\n const dTimestampElement = useDebouncedValue(timestampElement, 500);\n\n const handleCollapse = useCallback(() => {\n track.doc.inlineDocInfo.$.toggle();\n onOpenChange(!open);\n }, [onOpenChange, open]);\n\n const properties = manager.sorter.getOrderedItems();\n\n return (\n
\n {/* TODO(@Peng): add click handler to backlinks */}\n
\n {backlinks.length > 0 ? (\n \n
\n {t['com.arms.page-properties.backlinks']()} · {backlinks.length}\n
\n
\n ) : null}\n {dTimestampElement}\n
\n \n
\n
\n {t['com.arms.page-properties.page-info']()}\n
\n {properties.length === 0 || manager.readonly ? null : (\n \n \n \n \n \n )}\n \n \n \n \n \n
\n \n
\n \n );\n};\n\ninterface PagePropertyRowProps {\n property: PageInfoCustomProperty;\n style?: React.CSSProperties;\n rowNameClassName?: string;\n}\n\nexport const PagePropertyRow = ({\n property,\n rowNameClassName,\n}: PagePropertyRowProps) => {\n const manager = useContext(managerContext);\n const meta = manager.getCustomPropertyMeta(property.id);\n\n assertExists(meta, 'meta should exist for property');\n\n const Icon = nameToIcon(meta.icon, meta.type);\n const name = meta.name;\n const ValueRenderer = propertyValueRenderers[meta.type];\n const [editingMeta, setEditingMeta] = useState(false);\n const setEditingItem = useSetAtom(editingPropertyAtom);\n const handleEditMeta = useCallback(() => {\n if (!manager.readonly) {\n setEditingMeta(true);\n }\n setEditingItem(property.id);\n }, [manager.readonly, property.id, setEditingItem]);\n const handleFinishEditingMeta = useCallback(() => {\n setEditingMeta(false);\n setEditingItem(null);\n }, [setEditingItem]);\n return (\n \n {({ attributes, listeners }) => (\n <>\n \n \n
\n
\n \n
\n
{name}
\n
\n \n \n \n \n )}\n
\n );\n};\n\nexport const PageTagsRow = ({\n rowNameClassName,\n}: {\n rowNameClassName?: string;\n}) => {\n const t = useI18n();\n return (\n \n \n
\n
\n \n
\n
{t['Tags']()}
\n
\n \n \n \n );\n};\n\ninterface PagePropertiesTableBodyProps {\n className?: string;\n style?: React.CSSProperties;\n}\n\n// 🏷️ Tags (⋅ xxx) (⋅ yyy)\n// #️⃣ Number 123456\n// + Add a property\nexport const PagePropertiesTableBody = ({\n className,\n style,\n}: PagePropertiesTableBodyProps) => {\n const manager = useContext(managerContext);\n return (\n \n \n \n {properties =>\n properties.length ? (\n
\n {properties\n .filter(\n property =>\n manager.isPropertyRequired(property.id) ||\n (property.visibility !== 'hide' &&\n !(\n property.visibility === 'hide-if-empty' &&\n !property.value\n ))\n )\n .map(property => (\n \n ))}\n
\n ) : null\n }\n
\n {manager.readonly ? null : }\n \n \n );\n};\n\ninterface PagePropertiesCreatePropertyMenuItemsProps {\n onCreated?: (e: React.MouseEvent, id: string) => void;\n metaManager: PagePropertiesMetaManager;\n}\n\nconst findNextDefaultName = (name: string, allNames: string[]): string => {\n const nameExists = allNames.includes(name);\n if (nameExists) {\n const match = name.match(/(\\d+)$/);\n if (match) {\n const num = parseInt(match[1], 10);\n const nextName = name.replace(/(\\d+)$/, `${num + 1}`);\n return findNextDefaultName(nextName, allNames);\n } else {\n return findNextDefaultName(`${name} 2`, allNames);\n }\n } else {\n return name;\n }\n};\n\nexport const PagePropertiesCreatePropertyMenuItems = ({\n onCreated,\n metaManager,\n}: PagePropertiesCreatePropertyMenuItemsProps) => {\n const t = useI18n();\n const onAddProperty = useCallback(\n (\n e: React.MouseEvent,\n option: { type: PagePropertyType; name: string; icon: string }\n ) => {\n const schemaList = metaManager.getOrderedPropertiesSchema();\n const nameExists = schemaList.some(meta => meta.name === option.name);\n const allNames = schemaList.map(meta => meta.name);\n const name = nameExists\n ? findNextDefaultName(option.name, allNames)\n : option.name;\n const { id } = metaManager.addPropertyMeta({\n name,\n icon: option.icon,\n type: option.type,\n });\n onCreated?.(e, id);\n },\n [metaManager, onCreated]\n );\n\n return useMemo(() => {\n const options: MenuItemOption[] = [];\n options.push(\n
\n {t['com.arms.page-properties.create-property.menu.header']()}\n
\n );\n options.push('-');\n options.push(\n newPropertyTypes.map(type => {\n const iconName = getDefaultIconName(type);\n const Icon = nameToIcon(iconName, type);\n const name = t[`com.arms.page-properties.property.${type}`]();\n return {\n icon: ,\n text: name,\n onClick: (e: React.MouseEvent) => {\n onAddProperty(e, {\n icon: iconName,\n name: name,\n type: type,\n });\n },\n };\n })\n );\n return renderMenuItemOptions(options);\n }, [onAddProperty, t]);\n};\n\ninterface PagePropertiesAddPropertyMenuItemsProps {\n onCreateClicked: (e: React.MouseEvent) => void;\n}\n\nconst PagePropertiesAddPropertyMenuItems = ({\n onCreateClicked,\n}: PagePropertiesAddPropertyMenuItemsProps) => {\n const manager = useContext(managerContext);\n\n const t = useI18n();\n const metaList = manager.metaManager.getOrderedPropertiesSchema();\n const nonRequiredMetaList = metaList.filter(meta => !meta.required);\n const isChecked = useCallback(\n (m: string) => {\n return manager.hasCustomProperty(m);\n },\n [manager]\n );\n\n const onClickProperty = useCallback(\n (e: React.MouseEvent, id: string) => {\n e.stopPropagation();\n e.preventDefault();\n if (isChecked(id)) {\n manager.removeCustomProperty(id);\n } else {\n manager.addCustomProperty(id);\n }\n },\n [isChecked, manager]\n );\n\n const menuItems = useMemo(() => {\n const options: MenuItemOption[] = [];\n options.push(\n
\n {t['com.arms.page-properties.add-property.menu.header']()}\n
\n );\n\n if (nonRequiredMetaList.length > 0) {\n options.push('-');\n const nonRequiredMetaOptions: MenuItemOption = nonRequiredMetaList.map(\n meta => {\n const Icon = nameToIcon(meta.icon, meta.type);\n const name = meta.name;\n return {\n icon: ,\n text: name,\n selected: isChecked(meta.id),\n onClick: (e: React.MouseEvent) => onClickProperty(e, meta.id),\n };\n }\n );\n options.push(nonRequiredMetaOptions);\n }\n options.push('-');\n options.push({\n icon: ,\n text: t['com.arms.page-properties.add-property.menu.create'](),\n onClick: onCreateClicked,\n });\n\n return renderMenuItemOptions(options);\n }, [isChecked, nonRequiredMetaList, onClickProperty, onCreateClicked, t]);\n\n return menuItems;\n};\n\nexport const PagePropertiesAddProperty = () => {\n const t = useI18n();\n const [adding, setAdding] = useState(true);\n const manager = useContext(managerContext);\n const toggleAdding: MouseEventHandler = useCallback(e => {\n e.stopPropagation();\n e.preventDefault();\n setAdding(prev => !prev);\n }, []);\n\n const menuOptions = useMemo(() => {\n const handleCreated = (e: React.MouseEvent, id: string) => {\n toggleAdding(e);\n manager.addCustomProperty(id);\n };\n const items = adding ? (\n \n ) : (\n \n );\n\n return {\n contentOptions: {\n onClick(e) {\n e.stopPropagation();\n },\n },\n rootOptions: {\n onOpenChange: () => setAdding(true),\n },\n items,\n } satisfies Partial;\n }, [adding, manager, toggleAdding]);\n\n return (\n \n }\n className={styles.addPropertyButton}\n >\n {t['com.arms.page-properties.add-property']()}\n \n \n );\n};\n\nconst PagePropertiesTableInner = () => {\n const manager = useContext(managerContext);\n const [expanded, setExpanded] = useState(false);\n use(manager.workspace.docCollection.doc.whenSynced);\n return (\n
\n \n \n \n \n
\n );\n};\n\nexport const usePagePropertiesManager = (docId: string) => {\n // the workspace properties adapter adapter is reactive,\n // which means it's reference will change when any of the properties change\n // also it will trigger a re-render of the component\n const adapter = useCurrentWorkspacePropertiesAdapter();\n const manager = useMemo(() => {\n return new PagePropertiesManager(adapter, docId);\n }, [adapter, docId]);\n return manager;\n};\n\n// this is the main component that renders the page properties table at the top of the page below\n// the page title\nexport const PagePropertiesTable = ({ docId }: { docId: string }) => {\n const manager = usePagePropertiesManager(docId);\n\n // if the given page is not in the current workspace, then we don't render anything\n // eg. when it is in history modal\n\n if (!manager.page || manager.readonly) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n","import { useI18n } from '@affine/i18n';\nimport { useContext } from 'react';\n\nimport { AffinePageReference } from '../../reference-link';\nimport { managerContext } from '../common';\nimport * as styles from './back-links-row.css';\nexport const BackLinksRow = ({\n references,\n onClick,\n}: {\n references: { docId: string; title: string }[];\n onClick?: () => void;\n}) => {\n const manager = useContext(managerContext);\n const t = useI18n();\n return (\n
\n
\n {t['com.arms.page-properties.backlinks']()} · {references.length}\n
\n {references.map(link => (\n (\n
\n )}\n docCollection={manager.workspace.docCollection}\n />\n ))}\n
\n );\n};\n","import \"../core/src/components/affine/page-properties/info-modal/back-links-row.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/page-properties/info-modal/back-links-row.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xdnh2dmtoMCB7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1zbSk7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXRleHQtc2Vjb25kYXJ5LWNvbG9yKTsKICBwYWRkaW5nOiA2cHg7Cn0KLl8xdnh2dmtoMSB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIGNvbG9yOiB2YXIoLS1hZmZpbmUtdGV4dC1wcmltYXJ5LWNvbG9yKTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDJweDsKICBwYWRkaW5nOiA2cHg7Cn0KLl8xdnh2dmtoMTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWZmaW5lLWhvdmVyLWNvbG9yKTsKfQouXzF2eHZ2a2gxIHN2ZyB7CiAgY29sb3I6IHZhcigtLWFmZmluZS1pY29uLXNlY29uZGFyeSk7CiAgZm9udC1zaXplOiAxNnB4OwogIHRyYW5zZm9ybTogbm9uZTsKfQouXzF2eHZ2a2gxIHNwYW4gewogIGZvbnQtc2l6ZTogdmFyKC0tYWZmaW5lLWZvbnQtc20pOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICBib3JkZXItYm90dG9tOiBub25lOwp9\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var title = '_1vxvvkh0';\nexport var wrapper = '_1vxvvkh1';","import { Menu } from '@affine/component';\nimport { TagService } from '@affine/core/modules/tag';\nimport { useI18n } from '@affine/i18n';\nimport { TagsIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport clsx from 'clsx';\n\nimport { InlineTagsList, TagsEditor } from '../tags-inline-editor';\nimport * as styles from './tags-row.css';\n\nexport const TagsRow = ({\n docId,\n readonly,\n}: {\n docId: string;\n readonly: boolean;\n}) => {\n const t = useI18n();\n const tagList = useService(TagService).tagList;\n const tagIds = useLiveData(tagList.tagIdsByPageId$(docId));\n const empty = !tagIds || tagIds.length === 0;\n return (\n
\n
\n
\n \n
\n
{t['Tags']()}
\n
\n }\n >\n \n {empty ? (\n t['com.arms.page-properties.property-value-placeholder']()\n ) : (\n \n )}\n
\n \n
\n );\n};\n","import \"../core/src/components/affine/page-properties/info-modal/tags-row.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/page-properties/info-modal/tags-row.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA6VV23LcIAx9z1cweYqbktndXJohky/p9IEF2abFiAp5L+303ztgx+t0N2kmebIRB52jIxlfbWnpf9qF+H0mRI2BZXK/QInlXdw9nAlh0CMpsdF0IaWuaxdAOoNBJjAYrKZ9lWHWpej1XonaQzmnvWuCdAxdUsJAYKAc/t4ndvVeGgwMgQ9bf86uBiXLouQoX35K6wgMOwxKEG5foWl0VGKsIGprXWim9dZZbnOBi7yeeFeDA5mmIdwqscxg3ADVPi9bZy2EHGPYsTxsgPcuJpdK7tYxyBS1ASUCbknHh+e+PjNyiHfVS0YXpsloWSDVTPP1aa9eMGVuhLiPB1tn9f5f6UR+8/5GJdbEU59unvXh9m1pDfq+K+3oNDUuSMaoxGoxlDXG1siM3b8Md+8XXjCT+ojJjVjwmt0GcnSNZIEkaev6NHK/bQR8DrTgmpaVWK2Gg30Ckgk8GM4jFQqH6SnlaYnoXuvuIEWJZdyJhN5ZwaRDipog8KtDF8l185Eb7ClDcvBR1Wj6JDcuubWH4ir2nKt4UjrDtvmLKZi1Nj8awj5YeYq/AI9nfWT7UAYVvTbQorejlFOnZ5gTOb5azVpCF3n/eM7Uw/m3D2Ui0BaD3z/mXEOqsakSNhA4HVn5ZQA9tXtRrqTc1hqpU8Or1wwX8vrqNu4+C6O9GRficlSYp3MnI8YIJHUwLdI4eZX4JOSyqmZXZUnw8rmCqsRl+WdUp2/NSf393MBDzW+27y+nDoIksAYAAA==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var container = 'wr1lqd5';\nexport var icon = 'wr1lqd0';\nexport var rowCell = 'wr1lqd4';\nexport var rowName = 'wr1lqd2';\nexport var rowNameContainer = 'wr1lqd1';\nexport var rowValueCell = 'wr1lqd6';\nexport var tagsInlineEditor = 'wr1lqd8';\nexport var tagsMenu = 'wr1lqd7';\nexport var time = 'wr1lqd3';","import { i18nTime, useI18n } from '@affine/i18n';\nimport { DateTimeIcon, HistoryIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useService, WorkspaceService } from '@toeverything/infra';\nimport type { ConfigType } from 'dayjs';\nimport { useDebouncedValue } from 'foxact/use-debounced-value';\nimport { type ReactNode, useContext, useMemo } from 'react';\n\nimport { managerContext } from '../common';\nimport * as styles from './time-row.css';\n\nconst RowComponent = ({\n name,\n icon,\n time,\n}: {\n name: string;\n icon: ReactNode;\n time?: string | null;\n}) => {\n return (\n
\n
\n
{icon}
\n {name}\n
\n
{time ? time : 'unknown'}
\n
\n );\n};\n\nexport const TimeRow = ({ docId }: { docId: string }) => {\n const t = useI18n();\n const manager = useContext(managerContext);\n const workspaceService = useService(WorkspaceService);\n const { syncing, retrying, serverClock } = useLiveData(\n workspaceService.workspace.engine.doc.docState$(docId)\n );\n\n const timestampElement = useMemo(() => {\n const formatI18nTime = (time: ConfigType) =>\n i18nTime(time, {\n relative: {\n max: [1, 'day'],\n accuracy: 'minute',\n },\n absolute: {\n accuracy: 'day',\n },\n });\n const localizedCreateTime = manager.createDate\n ? formatI18nTime(manager.createDate)\n : null;\n\n return (\n <>\n }\n name={t['Created']()}\n time={\n manager.createDate\n ? formatI18nTime(manager.createDate)\n : localizedCreateTime\n }\n />\n {serverClock ? (\n }\n name={t[!syncing && !retrying ? 'Updated' : 'com.arms.syncing']()}\n time={!syncing && !retrying ? formatI18nTime(serverClock) : null}\n />\n ) : manager.updatedDate ? (\n }\n name={t['Updated']()}\n time={formatI18nTime(manager.updatedDate)}\n />\n ) : null}\n \n );\n }, [\n manager.createDate,\n manager.updatedDate,\n retrying,\n serverClock,\n syncing,\n t,\n ]);\n\n const dTimestampElement = useDebouncedValue(timestampElement, 500);\n\n return
{dTimestampElement}
;\n};\n","import \"../core/src/components/affine/page-properties/info-modal/time-row.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/page-properties/info-modal/time-row.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xcG5xcmQ1MCB7CiAgZm9udC1zaXplOiAxNnB4OwogIGNvbG9yOiB2YXIoLS1hZmZpbmUtaWNvbi1zZWNvbmRhcnkpOwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQouXzFwbnFyZDUxIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDZweDsKICBwYWRkaW5nOiA2cHg7CiAgd2lkdGg6IDE2MHB4Owp9Ci5fMXBucXJkNTIgewogIGZsZXgtZ3JvdzogMTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1zbSk7CiAgY29sb3I6IHZhcigtLWFmZmluZS10ZXh0LXNlY29uZGFyeS1jb2xvcik7Cn0KLl8xcG5xcmQ1MyB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHBhZGRpbmc6IDZweCA4cHg7CiAgZmxleC1ncm93OiAxOwogIGZvbnQtc2l6ZTogdmFyKC0tYWZmaW5lLWZvbnQtc20pOwp9Ci5fMXBucXJkNTQgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IHJvdzsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogNHB4Owp9Ci5fMXBucXJkNTUgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBtYXJnaW4tdG9wOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDRweDsKfQ==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var container = '_1pnqrd55';\nexport var icon = '_1pnqrd50';\nexport var rowCell = '_1pnqrd54';\nexport var rowName = '_1pnqrd52';\nexport var rowNameContainer = '_1pnqrd51';\nexport var time = '_1pnqrd53';","import {\n Divider,\n type InlineEditHandle,\n Modal,\n Scrollable,\n} from '@affine/component';\nimport { DocsSearchService } from '@affine/core/modules/docs-search';\nimport {\n LiveData,\n useLiveData,\n useServices,\n WorkspaceService,\n} from '@toeverything/infra';\nimport { Suspense, useCallback, useContext, useMemo, useRef } from 'react';\n\nimport { BlocksuiteHeaderTitle } from '../../../blocksuite/block-suite-header/title';\nimport { managerContext } from '../common';\nimport {\n PagePropertiesAddProperty,\n PagePropertyRow,\n SortableProperties,\n usePagePropertiesManager,\n} from '../table';\nimport { BackLinksRow } from './back-links-row';\nimport * as styles from './info-modal.css';\nimport { TagsRow } from './tags-row';\nimport { TimeRow } from './time-row';\n\nexport const InfoModal = ({\n open,\n onOpenChange,\n docId,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n docId: string;\n}) => {\n const { docsSearchService, workspaceService } = useServices({\n DocsSearchService,\n WorkspaceService,\n });\n const titleInputHandleRef = useRef(null);\n const manager = usePagePropertiesManager(docId);\n const handleClose = useCallback(() => {\n onOpenChange(false);\n }, [onOpenChange]);\n\n const references = useLiveData(\n useMemo(\n () => LiveData.from(docsSearchService.watchRefsFrom(docId), null),\n [docId, docsSearchService]\n )\n );\n\n if (!manager.page || manager.readonly) {\n return null;\n }\n\n return (\n \n \n \n
\n \n
\n \n \n \n \n \n \n \n
\n \n );\n};\n\nconst InfoTable = ({\n onClose,\n references,\n docId,\n readonly,\n}: {\n docId: string;\n onClose: () => void;\n readonly: boolean;\n references:\n | {\n docId: string;\n title: string;\n }[]\n | null;\n}) => {\n const manager = useContext(managerContext);\n\n return (\n
\n \n \n {references && references.length > 0 ? (\n <>\n \n \n \n ) : null}\n \n \n {properties =>\n properties.length ? (\n
\n {properties\n .filter(\n property =>\n manager.isPropertyRequired(property.id) ||\n (property.visibility !== 'hide' &&\n !(\n property.visibility === 'hide-if-empty' &&\n !property.value\n ))\n )\n .map(property => (\n \n ))}\n
\n ) : null\n }\n
\n {manager.readonly ? null : }\n
\n );\n};\n","import \"../core/src/components/affine/page-properties/info-modal/info-modal.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/page-properties/info-modal/info-modal.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xMWZxenlkMCB7CiAgbWF4LXdpZHRoOiA0ODBweDsKICBtaW4td2lkdGg6IDM2MHB4OwogIHBhZGRpbmc6IDIwcHggMDsKICBhbGlnbi1zZWxmOiBzdGFydDsKICBtYXJnaW4tdG9wOiAxMjBweDsKfQouXzExZnF6eWQxIHsKICBkaXNwbGF5OiBmbGV4OwogIHdpZHRoOiAxMDAlOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLl8xMWZxenlkMiB7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1oLTYpOwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KLl8xMWZxenlkMyB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogcm93OwogIGdhcDogNnB4OwogIHBhZGRpbmc6IDZweDsKICB3aWR0aDogMTYwcHg7Cn0KLl8xMWZxenlkNCB7CiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDIyMHB4KTsKICBwYWRkaW5nOiAwIDI0cHg7Cn0KLl8xMWZxenlkNSB7CiAgd2lkdGg6IDZweDsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTRweCk7Cn0KLl8xMWZxenlkNiB7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKfQ==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var container = '_11fqzyd0';\nexport var hiddenInput = '_11fqzyd6';\nexport var rowNameContainer = '_11fqzyd3';\nexport var scrollBar = '_11fqzyd5';\nexport var titleContainer = '_11fqzyd1';\nexport var titleStyle = '_11fqzyd2';\nexport var viewport = '_11fqzyd4';","import { Menu, Scrollable } from '@affine/component';\nimport { useI18n } from '@affine/i18n';\nimport { chunk } from 'lodash-es';\nimport { useEffect, useRef } from 'react';\n\nimport type { PagePropertyIcon } from './icons-mapping';\nimport { iconNames, nameToIcon } from './icons-mapping';\nimport * as styles from './icons-selector.css';\n\nconst iconsPerRow = 6;\n\nconst iconRows = chunk(iconNames, iconsPerRow);\n\nexport const IconsSelectorPanel = ({\n selected,\n onSelectedChange,\n}: {\n selected: PagePropertyIcon;\n onSelectedChange: (icon: PagePropertyIcon) => void;\n}) => {\n const ref = useRef(null);\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const iconButton = ref.current.querySelector(\n `[data-name=\"${selected}\"]`\n ) as HTMLDivElement;\n if (!iconButton) {\n return;\n }\n iconButton.scrollIntoView({ block: 'center' });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const t = useI18n();\n return (\n \n
\n {t['com.arms.page-properties.icons']()}\n
\n \n
\n {iconRows.map((iconRow, index) => {\n return (\n
\n {iconRow.map(iconName => {\n const Icon = nameToIcon(iconName);\n return (\n onSelectedChange(iconName)}\n key={iconName}\n className={styles.iconButton}\n data-name={iconName}\n data-active={selected === iconName}\n >\n \n
\n );\n })}\n
\n );\n })}\n \n \n
\n
\n );\n};\n\nexport const IconsSelectorButton = ({\n selected,\n onSelectedChange,\n}: {\n selected: PagePropertyIcon;\n onSelectedChange: (icon: PagePropertyIcon) => void;\n}) => {\n const Icon = nameToIcon(selected);\n return (\n \n }\n >\n
\n \n
\n \n );\n};\n","import \"../core/src/components/affine/page-properties/icons-selector.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/page-properties/icons-selector.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA62U0W6rMAyG73kKX24XqShrpyrV3uNIR9OUJQG8QRIloU037d2PCFAogrNd7Apimz/2Z+PNyzacQ3lSKXwmAAKdqdiFQl7JcEwgPolAK7lHrShwXTW1aj0FMxQyE47JV7IZVLY/U7H63JpZhYUi6GXtKHCpvLStmetKWwonZu8IYXmOShLkWpHouI+CWnni8EPOwjp7PcacJRalp7BP09ZmmBCoCgopPJpwLeMwKyNbLmMl37fGecwvhGvlpfJT1yTPLO0ufNVWSEssE9g4CrvOekbhSwrZoTuWfdrDmTfWtUyMxkHaW6YcdjxfGX8vrG6U6BhBusncbUW01CdpY13z6BnDGHhlPdX4K5hnhHGPJ/nkbSOfo96SiLFYM3tZknmIH/23gyXZ36+z+oW+9LgfslvcwznOqystqncK6ZgJha0J4HSF4jbrPtFxQEfGs/om8J3kWokppYVGT8H9vIcTt5fW40ordlGrZoGMBNIVyGubYCK3j3JxMHNta9q9VszLP3c7E27vfvyNVTH+vd9MVHCrO2GJn5fBL/bnukAOJsC2H5caFRl+4LTnFxUmKBpjpOXMyWPy9Q8duEt2dQUAAA==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var iconButton = '_1xwxhvn2';\nexport var iconSelectorButton = '_1xwxhvn3';\nexport var iconsContainer = '_1xwxhvn0';\nexport var iconsContainerScrollable = '_1xwxhvn4';\nexport var iconsContainerScroller = '_1xwxhvn5';\nexport var iconsRow = '_1xwxhvn1';\nexport var menuHeader = '_1xwxhvn6';","import type { MenuItemProps } from '@affine/component';\nimport {\n Input,\n MenuIcon,\n MenuItem,\n MenuSeparator,\n Scrollable,\n} from '@affine/component';\nimport type { PageInfoCustomPropertyMeta } from '@affine/core/modules/properties/services/schema';\nimport { useI18n } from '@affine/i18n';\nimport type { KeyboardEventHandler, MouseEventHandler } from 'react';\nimport { cloneElement, isValidElement, useCallback } from 'react';\n\nimport type { PagePropertyIcon } from './icons-mapping';\nimport {\n getDefaultIconName,\n getSafeIconName,\n nameToIcon,\n} from './icons-mapping';\nimport { IconsSelectorButton } from './icons-selector';\nimport * as styles from './styles.css';\nexport type MenuItemOption =\n | React.ReactElement\n | '-'\n | {\n text: string;\n onClick: MouseEventHandler;\n key?: string;\n icon?: React.ReactElement;\n selected?: boolean;\n checked?: boolean;\n type?: MenuItemProps['type'];\n }\n | MenuItemOption[];\n\nconst isElementOption = (e: MenuItemOption): e is React.ReactElement => {\n return isValidElement(e);\n};\n\nexport const renderMenuItemOptions = (options: MenuItemOption[]) => {\n return options.map((option, index) => {\n if (option === '-') {\n return ;\n } else if (isElementOption(option)) {\n return cloneElement(option, { key: index });\n } else if (Array.isArray(option)) {\n // this is an area that needs scrollbar\n return (\n \n \n {renderMenuItemOptions(option)}\n \n \n \n );\n } else {\n const { text, icon, onClick, type, key, checked, selected } = option;\n return (\n {icon} : null}\n onClick={onClick}\n >\n {text}\n \n );\n }\n });\n};\n\nexport const EditPropertyNameMenuItem = ({\n property,\n onNameBlur: onBlur,\n onNameChange,\n onIconChange,\n}: {\n onNameBlur: (e: string) => void;\n onNameChange: (e: string) => void;\n onIconChange: (icon: PagePropertyIcon) => void;\n property: PageInfoCustomPropertyMeta;\n}) => {\n const iconName = getSafeIconName(property.icon, property.type);\n const onKeyDown: KeyboardEventHandler = useCallback(\n e => {\n if (e.key !== 'Escape') {\n e.stopPropagation();\n }\n if (e.key === 'Enter') {\n e.preventDefault();\n onBlur(e.currentTarget.value);\n }\n },\n [onBlur]\n );\n const handleBlur = useCallback(\n (e: FocusEvent & { currentTarget: HTMLInputElement }) => {\n onBlur(e.currentTarget.value);\n },\n [onBlur]\n );\n\n const t = useI18n();\n return (\n
\n \n \n
\n );\n};\n\nexport const PropertyTypeMenuItem = ({\n property,\n}: {\n property: PageInfoCustomPropertyMeta;\n}) => {\n const Icon = nameToIcon(getDefaultIconName(property.type), property.type);\n const t = useI18n();\n return (\n
\n {t['com.arms.page-properties.create-property.menu.header']()}\n
\n \n {t[`com.arms.page-properties.property.${property.type}`]()}\n
\n
\n );\n};\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { WorkspacePropertiesAdapter } from '@affine/core/modules/properties';\nimport type {\n PageInfoCustomProperty,\n PageInfoCustomPropertyMeta,\n} from '@affine/core/modules/properties/services/schema';\nimport { PagePropertyType } from '@affine/core/modules/properties/services/schema';\nimport { createFractionalIndexingSortableHelper } from '@affine/core/utils';\nimport { DebugLogger } from '@affine/debug';\nimport { nanoid } from 'nanoid';\n\nimport { getDefaultIconName } from './icons-mapping';\n\nconst logger = new DebugLogger('PagePropertiesManager');\n\nfunction validatePropertyValue(type: PagePropertyType, value: any) {\n switch (type) {\n case PagePropertyType.Text:\n return typeof value === 'string';\n case PagePropertyType.Number:\n return typeof value === 'number' || !isNaN(+value);\n case PagePropertyType.Checkbox:\n return typeof value === 'boolean';\n case PagePropertyType.Date:\n return value.match(/^\\d{4}-\\d{2}-\\d{2}$/);\n case PagePropertyType.Tags:\n return Array.isArray(value) && value.every(v => typeof v === 'string');\n default:\n return false;\n }\n}\n\nexport const newPropertyTypes: PagePropertyType[] = [\n PagePropertyType.Text,\n PagePropertyType.Number,\n PagePropertyType.Checkbox,\n PagePropertyType.Date,\n // TODO(@Peng): add more\n];\n\nexport class PagePropertiesMetaManager {\n constructor(private readonly adapter: WorkspacePropertiesAdapter) {}\n\n get propertiesSchema() {\n return this.adapter.schema?.pageProperties ?? {};\n }\n\n get systemPropertiesSchema() {\n return this.adapter.schema?.pageProperties.system ?? {};\n }\n\n get customPropertiesSchema() {\n return this.adapter.schema?.pageProperties.custom ?? {};\n }\n\n getOrderedPropertiesSchema() {\n return Object.values(this.customPropertiesSchema).sort(\n (a, b) => a.order - b.order\n );\n }\n\n checkPropertyExists(id: string) {\n return !!this.customPropertiesSchema[id];\n }\n\n validatePropertyValue(id: string, value?: any) {\n if (!value) {\n // value is optional in all cases?\n return true;\n }\n const type = this.customPropertiesSchema[id]?.type;\n if (!type) {\n logger.warn(`property ${id} not found`);\n return false;\n }\n return validatePropertyValue(type, value);\n }\n\n addPropertyMeta(schema: {\n name: string;\n type: PagePropertyType;\n icon?: string;\n }) {\n const id = nanoid();\n const { type, icon } = schema;\n const newOrder =\n Math.max(\n 0,\n ...Object.values(this.customPropertiesSchema).map(p => p.order)\n ) + 1;\n const property = {\n ...schema,\n id,\n source: 'custom',\n type,\n order: newOrder,\n icon: icon ?? getDefaultIconName(type),\n } as const;\n this.customPropertiesSchema[id] = property;\n return property;\n }\n\n updatePropertyMeta(id: string, opt: Partial) {\n if (!this.checkPropertyExists(id)) {\n logger.warn(`property ${id} not found`);\n return;\n }\n Object.assign(this.customPropertiesSchema[id], opt);\n }\n\n isPropertyRequired(id: string) {\n return this.customPropertiesSchema[id]?.required;\n }\n\n removePropertyMeta(id: string) {\n // should warn if the property is in use\n delete this.customPropertiesSchema[id];\n }\n\n // returns page schema properties -> related page\n getPropertyStatistics() {\n const mapping = new Map>();\n for (const page of this.adapter.workspace.docCollection.docs.values()) {\n const properties = this.adapter.getPageProperties(page.id);\n if (properties) {\n for (const id of Object.keys(properties.custom)) {\n if (!mapping.has(id)) mapping.set(id, new Set());\n mapping.get(id)?.add(page.id);\n }\n }\n }\n return mapping;\n }\n\n getPropertyRelatedPages(id: string) {\n return this.getPropertyStatistics().get(id);\n }\n}\n\nexport class PagePropertiesManager {\n public readonly metaManager: PagePropertiesMetaManager;\n constructor(\n private readonly adapter: WorkspacePropertiesAdapter,\n public readonly pageId: string\n ) {\n this.metaManager = new PagePropertiesMetaManager(this.adapter);\n this.ensureRequiredProperties();\n }\n\n readonly sorter = createFractionalIndexingSortableHelper<\n PageInfoCustomProperty,\n string | number\n >(this);\n\n // prevent infinite loop\n private ensuring = false;\n ensureRequiredProperties() {\n this.adapter.ensurePageProperties(this.pageId);\n if (this.ensuring) return;\n this.ensuring = true;\n this.transact(() => {\n this.metaManager.getOrderedPropertiesSchema().forEach(property => {\n if (property.required && !this.hasCustomProperty(property.id)) {\n this.addCustomProperty(property.id);\n }\n });\n });\n this.ensuring = false;\n }\n\n getItems() {\n return Object.values(this.getCustomProperties());\n }\n\n getItemOrder(item: PageInfoCustomProperty): string {\n return item.order;\n }\n\n setItemOrder(item: PageInfoCustomProperty, order: string) {\n item.order = order;\n }\n\n getItemId(item: PageInfoCustomProperty) {\n return item.id;\n }\n\n get workspace() {\n return this.adapter.workspace;\n }\n\n get page() {\n return this.adapter.workspace.docCollection.getDoc(this.pageId);\n }\n\n get intrinsicMeta() {\n return this.page?.meta;\n }\n\n get updatedDate() {\n return this.intrinsicMeta?.updatedDate;\n }\n\n get createDate() {\n return this.intrinsicMeta?.createDate;\n }\n\n get properties() {\n return this.adapter.getPageProperties(this.pageId);\n }\n\n get readonly() {\n return !!this.page?.readonly;\n }\n\n /**\n * get custom properties (filter out properties that are not in schema)\n */\n getCustomProperties(): Record {\n return this.properties\n ? Object.fromEntries(\n Object.entries(this.properties.custom).filter(([id]) =>\n this.metaManager.checkPropertyExists(id)\n )\n )\n : {};\n }\n\n getCustomPropertyMeta(id: string): PageInfoCustomPropertyMeta | undefined {\n return this.metaManager.customPropertiesSchema[id];\n }\n\n getCustomProperty(id: string) {\n return this.properties?.custom[id];\n }\n\n addCustomProperty(id: string, value?: any) {\n this.ensureRequiredProperties();\n if (!this.metaManager.checkPropertyExists(id)) {\n logger.warn(`property ${id} not found`);\n return;\n }\n\n if (!this.metaManager.validatePropertyValue(id, value)) {\n logger.warn(`property ${id} value ${value} is invalid`);\n return;\n }\n\n const newOrder = this.sorter.getNewItemOrder();\n if (this.properties!.custom[id]) {\n logger.warn(`custom property ${id} already exists`);\n }\n\n this.properties!.custom[id] = {\n id,\n value,\n order: newOrder,\n visibility: 'visible',\n };\n }\n\n hasCustomProperty(id: string) {\n return !!this.properties?.custom[id];\n }\n\n removeCustomProperty(id: string) {\n this.ensureRequiredProperties();\n delete this.properties!.custom[id];\n }\n\n updateCustomProperty(id: string, opt: Partial) {\n this.ensureRequiredProperties();\n if (!this.properties?.custom[id]) {\n logger.warn(`custom property ${id} not found`);\n return;\n }\n if (\n opt.value !== undefined &&\n !this.metaManager.validatePropertyValue(id, opt.value)\n ) {\n logger.warn(`property ${id} value ${opt.value} is invalid`);\n return;\n }\n Object.assign(this.properties.custom[id], opt);\n }\n\n get updateCustomPropertyMeta() {\n return this.metaManager.updatePropertyMeta.bind(this.metaManager);\n }\n\n get isPropertyRequired() {\n return this.metaManager.isPropertyRequired.bind(this.metaManager);\n }\n\n transact = this.adapter.transact;\n}\n","import \"../core/src/components/affine/reference-link/styles.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/affine/reference-link/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LmZsMTl6MjAgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgZm9udC1zaXplOiAxLjFlbTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgycHgsIC0xcHgpOwp9Ci5mbDE5ejIxIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6IGluaGVyaXQ7CiAgd29yZC1icmVhazogYnJlYWstYWxsOwp9\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var pageReferenceIcon = 'fl19z20';\nexport var pageReferenceLink = 'fl19z21';","import { useDocMetaHelper } from '@affine/core/hooks/use-block-suite-page-meta';\nimport { useJournalHelper } from '@affine/core/hooks/use-journal';\nimport {\n PeekViewService,\n useInsidePeekView,\n} from '@affine/core/modules/peek-view';\nimport { WorkbenchLink } from '@affine/core/modules/workbench';\nimport { useI18n } from '@affine/i18n';\nimport {\n DeleteIcon,\n LinkedEdgelessIcon,\n LinkedPageIcon,\n TodayIcon,\n} from '@blocksuite/icons/rc';\nimport type { DocCollection } from '@blocksuite/store';\nimport {\n type DocMode,\n DocsService,\n LiveData,\n useLiveData,\n useService,\n} from '@toeverything/infra';\nimport { type PropsWithChildren, useCallback, useRef } from 'react';\n\nimport * as styles from './styles.css';\n\nexport interface PageReferenceRendererOptions {\n docMode: DocMode | null;\n pageId: string;\n docCollection: DocCollection;\n pageMetaHelper: ReturnType;\n journalHelper: ReturnType;\n t: ReturnType;\n}\n// use a function to be rendered in the lit renderer\nexport function pageReferenceRenderer({\n docMode,\n pageId,\n pageMetaHelper,\n journalHelper,\n t,\n}: PageReferenceRendererOptions) {\n const { isPageJournal, getLocalizedJournalDateString } = journalHelper;\n const referencedPage = pageMetaHelper.getDocMeta(pageId);\n let title =\n referencedPage?.title ?? t['com.arms.editor.reference-not-found']();\n\n let icon = !referencedPage ? (\n \n ) : docMode === 'page' || docMode === null ? (\n \n ) : (\n \n );\n\n const isJournal = isPageJournal(pageId);\n const localizedJournalDate = getLocalizedJournalDateString(pageId);\n if (isJournal && localizedJournalDate) {\n title = localizedJournalDate;\n icon = ;\n }\n\n return (\n <>\n {icon}\n \n {title ? title : t['Untitled']()}\n \n \n );\n}\n\nexport function AffinePageReference({\n pageId,\n docCollection,\n wrapper: Wrapper,\n}: {\n docCollection: DocCollection;\n pageId: string;\n wrapper?: React.ComponentType;\n}) {\n const pageMetaHelper = useDocMetaHelper(docCollection);\n const journalHelper = useJournalHelper(docCollection);\n const t = useI18n();\n\n const docsService = useService(DocsService);\n const mode$ = LiveData.from(docsService.list.observeMode(pageId), undefined);\n const docMode = useLiveData(mode$) ?? null;\n const el = pageReferenceRenderer({\n docMode,\n pageId,\n pageMetaHelper,\n journalHelper,\n docCollection,\n t,\n });\n\n const ref = useRef(null);\n\n const peekView = useService(PeekViewService).peekView;\n const isInPeekView = useInsidePeekView();\n\n const onClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.shiftKey && ref.current) {\n e.preventDefault();\n e.stopPropagation();\n peekView.open(ref.current).catch(console.error);\n }\n if (isInPeekView) {\n peekView.close();\n }\n return;\n },\n [isInPeekView, peekView]\n );\n\n return (\n \n {Wrapper ? {el} : el}\n \n );\n}\n","import type { ConfirmModalProps } from '@affine/component/ui/modal';\nimport { ConfirmModal } from '@affine/component/ui/modal';\nimport { useI18n } from '@affine/i18n';\nimport { useMemo } from 'react';\n\ntype SignOutConfirmModalI18NKeys =\n | 'title'\n | 'description'\n | 'cancel'\n | 'confirm';\n\nexport const SignOutModal = ({ ...props }: ConfirmModalProps) => {\n const { title, description, cancelText, confirmText } = props;\n const t = useI18n();\n\n const defaultTexts = useMemo(() => {\n const getDefaultText = (key: SignOutConfirmModalI18NKeys) => {\n return t[`com.arms.auth.sign-out.confirm-modal.${key}`]();\n };\n return {\n title: getDefaultText('title'),\n description: getDefaultText('description'),\n cancelText: getDefaultText('cancel'),\n children: getDefaultText('confirm'),\n };\n }, [t]);\n\n return (\n \n );\n};\n","import { atom } from 'jotai';\nimport { atomWithStorage } from 'jotai/utils';\n\nexport const APP_SIDEBAR_OPEN = 'app-sidebar-open';\nexport const isMobile = window.innerWidth < 768 && !environment.isDesktop;\n\nexport const appSidebarOpenAtom = atomWithStorage(APP_SIDEBAR_OPEN, !isMobile);\nexport const appSidebarFloatingAtom = atom(isMobile);\n\nexport const appSidebarResizingAtom = atom(false);\nexport const appSidebarWidthAtom = atomWithStorage(\n 'app-sidebar-width',\n 248 /* px */\n);\n","import \"../core/src/components/app-sidebar/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/app-sidebar/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA5VUS27bMBDd+xSDAAWSBQ3Jjo2CRoDeo+iCFkfyxBRJkGNbbuG7F6SkWKmaANmJn/eZeRwtu1e/qVcF/FkAeKU12UbsHbNrJXz33W5xWyyHOz+1YiUOKoq9CxrDC4cT/srIfkMEag4soVhufAfRGdJwVuFRCFXXZHHAicoZF57m1BRFbZxiss3LQyJ/GNhVdWyCO1ndQ+U/rPdjH6hV4TpXKDPRhTQfJKxXqTCAA/Z+x3VtsBPxEMgeJRQT9CqjNUVv1FXme+m+MtRYQYxtlFChZQxpu3Lm1FrRKD9SvxGt+z67SEzOSghoFNMZd3dzZVF8m5ob1zP17FZTwKrn6mUnYs9ZLF2TUEAB6sRuyrwZyh5il1D4DsptvzmTez1Fpjq11jJalhC9qlDskS+I9pN2iAvuj8RCeS8CNtmrDqqZON1MnJZQzpxWylSPqREgsuunLzUEILhLH8fzuzS2WZaDsmMezquK+ArLchMTcFjn15Byo1SUwDNajhKss7h7l2dNHeq0xc4PIIM1D5/hfaLjmOWz+yP++HW3Tiszf9vbfnqcRzuOzefz9FZV+b+qxuaPw5y+fwuyOqWzTro/WtSkwAeynAmX07/IJJmxQRMCkTVvd9D2I9BtcfsLIP2FEJ4EAAA=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var floatingMaxWidth = 768;\nexport var navBodyStyle = 'xjp5f25';\nexport var navHeaderButton = 'xjp5f21';\nexport var navHeaderNavigationButtons = 'xjp5f22';\nexport var navHeaderStyle = 'xjp5f24';\nexport var navStyle = 'xjp5f23';\nexport var navWrapperStyle = 'xjp5f20';\nexport var sidebarFloatMaskStyle = 'xjp5f26';","import { useAtomValue } from 'jotai';\n\nimport { navHeaderStyle } from '../index.css';\nimport { appSidebarOpenAtom } from '../index.jotai';\nimport { SidebarSwitch } from './sidebar-switch';\n\nexport const SidebarHeader = () => {\n const open = useAtomValue(appSidebarOpenAtom);\n\n return (\n
\n \n
\n );\n};\n\nexport * from './sidebar-switch';\n","import { IconButton } from '@affine/component';\nimport { useI18n } from '@affine/i18n';\nimport { PlusIcon } from '@blocksuite/icons/rc';\nimport clsx from 'clsx';\nimport type React from 'react';\nimport type { MouseEventHandler } from 'react';\n\nimport * as styles from './index.css';\n\ninterface AddPageButtonProps {\n onClick?: MouseEventHandler;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst sideBottom = { side: 'bottom' as const };\nexport function AddPageButton({\n onClick,\n className,\n style,\n}: AddPageButtonProps) {\n const t = useI18n();\n\n return (\n \n \n \n );\n}\n","import \"../core/src/components/app-sidebar/add-page-button/index.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/app-sidebar/add-page-button/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LmFnaWxidzAgewogIHdpZHRoOiAzMnB4OwogIGhlaWdodDogMzJweDsKICBib3JkZXItcmFkaXVzOiA4cHg7CiAgYm94LXNoYWRvdzogMHB4IDFweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hZmZpbmUtbGF5ZXItYm9yZGVyKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hZmZpbmUtYnV0dG9uLXNpZGVyYmFyUHJpbWFyeS1iYWNrZ3JvdW5kKTsKfQ==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var root = 'agilbw0';","import { Tooltip } from '@affine/component';\nimport { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook';\nimport { popupWindow } from '@affine/core/utils';\nimport { Unreachable } from '@affine/env/constant';\nimport { useI18n } from '@affine/i18n';\nimport { CloseIcon, NewIcon, ResetIcon } from '@blocksuite/icons/rc';\nimport clsx from 'clsx';\nimport { useCallback, useMemo } from 'react';\n\nimport * as styles from './index.css';\n\nexport interface AddPageButtonProps {\n onQuitAndInstall: () => void;\n onDownloadUpdate: () => void;\n onDismissChangelog: () => void;\n onOpenChangelog: () => void;\n changelogUnread: boolean;\n updateReady: boolean;\n updateAvailable: {\n version: string;\n allowAutoUpdate: boolean;\n } | null;\n autoDownload: boolean;\n downloadProgress: number | null;\n appQuitting: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\ninterface ButtonContentProps {\n updateReady: boolean;\n updateAvailable: {\n version: string;\n allowAutoUpdate: boolean;\n } | null;\n autoDownload: boolean;\n downloadProgress: number | null;\n appQuitting: boolean;\n changelogUnread: boolean;\n onDismissChangelog: () => void;\n}\n\nfunction DownloadUpdate({ updateAvailable }: ButtonContentProps) {\n const t = useI18n();\n return (\n
\n \n {t['com.arms.appUpdater.downloadUpdate']()}\n \n {updateAvailable?.version}\n
\n );\n}\n\nfunction UpdateReady({ updateAvailable, appQuitting }: ButtonContentProps) {\n const t = useI18n();\n return (\n
\n
\n \n {t['com.arms.appUpdater.updateAvailable']()}\n \n {updateAvailable?.version}\n
\n\n
\n \n \n {t[appQuitting ? 'Loading' : 'com.arms.appUpdater.installUpdate']()}\n \n
\n
\n );\n}\n\nfunction DownloadingUpdate({\n updateAvailable,\n downloadProgress,\n}: ButtonContentProps) {\n const t = useI18n();\n return (\n
\n
\n \n {t['com.arms.appUpdater.downloading']()}\n \n {updateAvailable?.version}\n
\n\n
\n \n
\n
\n );\n}\n\nfunction OpenDownloadPage({ updateAvailable }: ButtonContentProps) {\n const t = useI18n();\n return (\n <>\n
\n \n {t['com.arms.appUpdater.updateAvailable']()}\n \n {updateAvailable?.version}\n
\n\n
\n \n {t['com.arms.appUpdater.openDownloadPage']()}\n \n
\n \n );\n}\n\nfunction WhatsNew({ onDismissChangelog }: ButtonContentProps) {\n const t = useI18n();\n const onClickClose = useCatchEventCallback(() => {\n onDismissChangelog();\n }, [onDismissChangelog]);\n return (\n <>\n
\n \n \n {t['com.arms.appUpdater.whatsNew']()}\n \n
\n
\n \n
\n \n );\n}\n\nconst getButtonContentRenderer = (props: ButtonContentProps) => {\n if (props.updateReady) {\n return UpdateReady;\n } else if (props.updateAvailable?.allowAutoUpdate) {\n if (props.autoDownload && props.updateAvailable.allowAutoUpdate) {\n return DownloadingUpdate;\n } else {\n return DownloadUpdate;\n }\n } else if (props.updateAvailable && !props.updateAvailable?.allowAutoUpdate) {\n return OpenDownloadPage;\n } else if (props.changelogUnread) {\n return WhatsNew;\n }\n return null;\n};\n\nexport function AppUpdaterButton({\n updateReady,\n changelogUnread,\n onDismissChangelog,\n onDownloadUpdate,\n onQuitAndInstall,\n onOpenChangelog,\n updateAvailable,\n autoDownload,\n downloadProgress,\n appQuitting,\n className,\n style,\n}: AddPageButtonProps) {\n const handleClick = useCallback(() => {\n if (updateReady) {\n onQuitAndInstall();\n } else if (updateAvailable) {\n if (updateAvailable.allowAutoUpdate) {\n if (autoDownload) {\n // wait for download to finish\n } else {\n onDownloadUpdate();\n }\n } else {\n popupWindow(\n `https://github.com/toeverything/AFFiNE/releases/tag/v${updateAvailable.version}`\n );\n }\n } else if (changelogUnread) {\n onOpenChangelog();\n } else {\n throw new Unreachable();\n }\n }, [\n updateReady,\n updateAvailable,\n changelogUnread,\n onQuitAndInstall,\n autoDownload,\n onDownloadUpdate,\n onOpenChangelog,\n ]);\n\n const contentProps = useMemo(\n () => ({\n updateReady,\n updateAvailable,\n changelogUnread,\n autoDownload,\n downloadProgress,\n appQuitting,\n onDismissChangelog,\n }),\n [\n updateReady,\n updateAvailable,\n changelogUnread,\n autoDownload,\n downloadProgress,\n appQuitting,\n onDismissChangelog,\n ]\n );\n\n const ContentComponent = getButtonContentRenderer(contentProps);\n\n const wrapWithTooltip = (\n node: React.ReactElement,\n tooltip?: React.ReactElement | string\n ) => {\n if (!tooltip) {\n return node;\n }\n\n return (\n \n {node}\n \n );\n };\n\n const disabled = useMemo(() => {\n if (appQuitting) {\n return true;\n }\n\n if (updateAvailable?.allowAutoUpdate) {\n return !updateReady && autoDownload;\n }\n\n return false;\n }, [\n appQuitting,\n autoDownload,\n updateAvailable?.allowAutoUpdate,\n updateReady,\n ]);\n\n if (!updateAvailable && !changelogUnread) {\n return null;\n }\n\n return wrapWithTooltip(\n \n {ContentComponent ? : null}\n
\n \n ,\n updateAvailable?.version\n );\n}\n","import { ToggleCollapseIcon } from '@blocksuite/icons/rc';\nimport clsx from 'clsx';\nimport { type ForwardedRef, forwardRef, type PropsWithChildren } from 'react';\n\nimport * as styles from './index.css';\n\nexport type CategoryDividerProps = PropsWithChildren<\n {\n label: string;\n className?: string;\n collapsed?: boolean;\n setCollapsed?: (collapsed: boolean) => void;\n } & {\n [key: `data-${string}`]: unknown;\n }\n>;\n\nexport const CategoryDivider = forwardRef(\n (\n {\n label,\n children,\n className,\n collapsed,\n setCollapsed,\n ...otherProps\n }: CategoryDividerProps,\n ref: ForwardedRef\n ) => {\n const collapsible = collapsed !== undefined;\n\n return (\n setCollapsed?.(!collapsed)}\n data-collapsed={collapsed}\n data-collapsible={collapsible}\n {...otherProps}\n >\n
\n {label}\n {collapsible ? (\n \n ) : null}\n
\n
e.stopPropagation()}>\n {children}\n
\n \n );\n }\n);\n\nCategoryDivider.displayName = 'CategoryDivider';\n","import \"../core/src/components/app-sidebar/category-divider/index.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/app-sidebar/category-divider/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA5VS0W4TMRB8z1esKiHlHhw5oUjgE9/AM0IIbey9i8G1rfVekgP139H50rSBhtI3azQz3tmd1bf1yDSI1vBrAeB8yQFHA12gY7sA6DEbeJ/rO2W0XkYDul3cL1YPynVVdimKKv4nGdgjL5XCrvORVMWPpZkMduT7nRjY6Nnw4J3sDFgMdrnW+k0lDYVYFQpkxUBMkdrn5sLg+6i80F0xYCkK8QR/H4r4blQ2RaEoBkpGS2pLciCKEyOjcz72BvRDrG1iR6wYnR+KgdsJfRrvi0NBZVMImIvfBvp4IzzQzdea2w5cEhvIyc9D/JfU7NKeuBps0f7oOQ3RTcTJ6mJ/AUdi9YRUlZ/2xAHH5lXfmR2W5ZmtZ7C5MoQwxpKRKcrlJ6fRz8CmGpy7sb5gv5139EwuoaMoIRaPPNbD16YcThV5p/WEhYn6Z22mDqie06E28VppN/l1RRFkaV846G2No9SUc7ZXig180I769kpQb1O8DFpX2yW+O205oNDn5SwamwY4CQqdAG4eNV58iuZRD3q1Kf+oALlzVf+KwAbmqe9/Ax5vzT0DBAAA\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var actions = '_1yreut02 _1yreut00';\nexport var collapseIcon = '_1yreut04';\nexport var label = '_1yreut03';\nexport var root = '_1yreut01';","import { WorkbenchLink } from '@affine/core/modules/workbench';\nimport { ArrowDownSmallIcon } from '@blocksuite/icons/rc';\nimport clsx from 'clsx';\nimport React from 'react';\nimport type { To } from 'react-router-dom';\n\nimport * as styles from './index.css';\n\nexport interface MenuItemProps extends React.HTMLAttributes {\n icon?: React.ReactElement;\n active?: boolean;\n disabled?: boolean;\n // true, false, undefined. undefined means no collapse\n collapsed?: boolean;\n // if onCollapsedChange is given, but collapsed is undefined, then we will render the collapse button as disabled\n onCollapsedChange?: (collapsed: boolean) => void;\n postfix?: React.ReactElement;\n}\n\nexport interface MenuLinkItemProps extends MenuItemProps {\n to: To;\n linkComponent?: React.ComponentType<{ to: To; className?: string }>;\n}\n\nconst stopPropagation: React.MouseEventHandler = e => {\n e.stopPropagation();\n};\n\nexport const MenuItem = React.forwardRef(\n (\n {\n onClick,\n icon,\n active,\n children,\n disabled,\n collapsed,\n onCollapsedChange,\n postfix,\n ...props\n },\n ref\n ) => {\n const collapsible = onCollapsedChange !== undefined;\n return (\n \n {icon && (\n
\n {collapsible && (\n {\n e.stopPropagation();\n e.preventDefault(); // for links\n onCollapsedChange?.(!collapsed);\n }}\n data-testid=\"fav-collapsed-button\"\n className={styles.collapsedIconContainer}\n >\n \n
\n )}\n {React.cloneElement(icon, {\n className: clsx([styles.icon, icon.props.className]),\n })}\n \n )}\n\n
{children}
\n {postfix ? (\n
\n {postfix}\n
\n ) : null}\n \n );\n }\n);\nMenuItem.displayName = 'MenuItem';\n\nexport const MenuLinkItem = React.forwardRef(\n ({ to, linkComponent: LinkComponent = WorkbenchLink, ...props }, ref) => {\n return (\n \n {/* The element rendered by Link does not generate display box due to `display: contents` style */}\n {/* Thus ref is passed to MenuItem instead of Link */}\n \n \n );\n }\n);\nMenuLinkItem.displayName = 'MenuLinkItem';\n","import \"../core/src/components/app-sidebar/menu-item/index.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/app-sidebar/menu-item/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA6VV7W7bMAz8n6cQCgxIsCmw069Mxd5jwFAMjEXbXBXJk+g02bB3Hyzbie0ZbYf+syWKRx2Pp/X3dKuL8ud9In4vhMiccV4JsiV64ofFn8W6D0hjgKZQGTg1IYYsytzg8WEhBBgqrCTGfVAiQ8vom+Wd8xq99KCpDkrcVDGY8cgynlDCYM4PM8hCPJPmUok0ST40v3uyskQqSlbiOmkT1QG9DGgwYyWssxgz1T40qSpHfRkVaE22UCIR6aY9mjvLMtAvVOIAfikl5Hm8UFzfryIk+IKsZFedS69cICZnlfBogOmAY5JU6Q7oI1U7yJ4K72qrJxAxRMYLr8anv2lgkJA1eb9csa/x6vF9uTQF2BnUo2w9QxpzqM2Q/lHu2KaAmbMa/OkMInpmJR7QcuiZ/xc8c8ZAFWhnxrfp2iGb3l+Y7RZ92+K4+krKHEzAq0dFYTnH3CfRdmMVQTs5ZWCyZaMp8VFsq2O8D3uwIXd+r9pPA4xfl7LfHpe7SWbrbXU1KDhROfnA0uWSTxWKySANtZVMjm5iRFN6btyzEiVpjfY8OZcNNIaqQCGOS0mMMlSQYdORZw9V1LnBoxLpKP91zD8keihs2AVnao6z5CrIiE9KJG/reyf/CdKPOjDlp2ZScxUrkmj1GJUsMYEZgaZzoGDMCPNmaFwj/VLmrKw87cGfVpOZ30w5vx2KJL1rSen9pv8/u98rttdfOHOW0fILjti5UZRdx8RZjSJZb8KcNw7LHo3FZM4HuvaOgXEpPycai9VcilmnuPR/ff0mBdy+ywDvxm/M/7IclRUY/PD92Gw7w4+bpSf7FOU8hH3ZrrpEN1NLur+QPNs6gRBQkpWuHjft/v1N28bYy3D/BfMGMR/IBwAA\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var collapsedIcon = '_18dghq77';\nexport var collapsedIconContainer = '_18dghq75';\nexport var content = '_18dghq72';\nexport var icon = '_18dghq74';\nexport var iconsContainer = '_18dghq76';\nexport var linkItemRoot = '_18dghq70';\nexport var postfix = '_18dghq73';\nexport var root = '_18dghq71';\nexport var spacer = '_18dghq78';","import { assignInlineVars } from '@vanilla-extract/dynamic';\nimport { useTheme } from 'next-themes';\nimport React, { useEffect, useRef } from 'react';\n\nimport * as styles from './index.css';\n\nfunction useMouseOffset() {\n const [offset, setOffset] = React.useState<{ x: number; y: number }>();\n const [outside, setOutside] = React.useState(true);\n const ref = useRef(null);\n\n useEffect(() => {\n if (ref.current && ref.current.parentElement) {\n const el = ref.current.parentElement;\n\n // debounce?\n const onMouseMove = (e: MouseEvent) => {\n const bound = el.getBoundingClientRect();\n setOffset({ x: e.clientX - bound.x, y: e.clientY - bound.y });\n setOutside(false);\n };\n\n const onMouseLeave = () => {\n setOutside(true);\n };\n el.addEventListener('mousemove', onMouseMove);\n el.addEventListener('mouseleave', onMouseLeave);\n return () => {\n el.removeEventListener('mousemove', onMouseMove);\n el.removeEventListener('mouseleave', onMouseLeave);\n };\n }\n return;\n }, []);\n\n return [offset, outside, ref] as const;\n}\n\nexport function Spotlight() {\n const [offset, outside, ref] = useMouseOffset();\n const { theme } = useTheme();\n const isDark = theme === 'dark';\n const offsetVars = assignInlineVars({\n [styles.spotlightX]: (offset?.x ?? 0) + 'px',\n [styles.spotlightY]: (offset?.y ?? 0) + 'px',\n [styles.spotlightOpacity]: outside ? '0' : isDark ? '.1' : '0.07',\n });\n\n return
;\n}\n","import \"../core/src/components/app-sidebar/spolight/index.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/app-sidebar/spolight/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xOTI5cTJwNCB7CiAgLS1fMTkyOXEycDA6IDBweDsKICAtLV8xOTI5cTJwMTogMHB4OwogIC0tXzE5MjlxMnAyOiAwOwogIC0tXzE5MjlxMnAzOiA2NHB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQodmFyKC0tXzE5MjlxMnAzKSBjaXJjbGUgYXQgdmFyKC0tXzE5MjlxMnAwKSB2YXIoLS1fMTkyOXEycDEpLCB2YXIoLS1hZmZpbmUtdGV4dC1wcmltYXJ5LWNvbG9yKSwgdHJhbnNwYXJlbnQpOwogIGluc2V0OiAwcHg7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgd2lsbC1jaGFuZ2U6IGJhY2tncm91bmQsIG9wYWNpdHk7CiAgb3BhY2l0eTogdmFyKC0tXzE5MjlxMnAyKTsKICB6LWluZGV4OiAxOwogIHRyYW5zaXRpb246IGFsbCAwLjJzOwogIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7Cn0=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var spotlight = '_1929q2p4';\nexport var spotlightOpacity = 'var(--_1929q2p2)';\nexport var spotlightSize = 'var(--_1929q2p3)';\nexport var spotlightX = 'var(--_1929q2p0)';\nexport var spotlightY = 'var(--_1929q2p1)';","import { useI18n } from '@affine/i18n';\nimport { SearchIcon } from '@blocksuite/icons/rc';\nimport clsx from 'clsx';\nimport type { HTMLAttributes } from 'react';\n\nimport { Spotlight } from '../spolight';\nimport * as styles from './index.css';\n\ninterface QuickSearchInputProps extends HTMLAttributes {\n onClick?: () => void;\n}\n\n// Although it is called an input, it is actually a button.\nexport function QuickSearchInput({ onClick, ...props }: QuickSearchInputProps) {\n const t = useI18n();\n const isMac = environment.isBrowser && environment.isMacOs;\n\n return (\n \n \n {t['Quick search']()}\n
\n
\n {isMac ? ' ⌘ + K' : ' Ctrl + K'}\n
\n \n
\n );\n}\n","import \"../core/src/components/app-sidebar/quick-search-input/index.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/app-sidebar/quick-search-input/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xMmo4cTB2MCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYmFja2dyb3VuZDogdmFyKC0tYWZmaW5lLWJ1dHRvbi1zaWRlcmJhclByaW1hcnktYmFja2dyb3VuZCk7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBib3JkZXItcmFkaXVzOiA4cHg7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYWZmaW5lLWxheWVyLWJvcmRlcik7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1zbSk7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAzNnB4OwogIHVzZXItc2VsZWN0OiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsKICBwYWRkaW5nOiAwIDEycHg7CiAgbWFyZ2luOiAyMHB4IDA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLl8xMmo4cTB2MSB7CiAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgY29sb3I6IHZhcigtLWFmZmluZS1pY29uLXByaW1hcnkpOwogIGZvbnQtc2l6ZTogMjBweDsKfQouXzEyajhxMHYyIHsKICBmbGV4OiAxOwp9Ci5fMTJqOHEwdjMgewogIGNvbG9yOiB2YXIoLS1hZmZpbmUtdGV4dC10ZXJ0aWFyeSk7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1iYXNlKTsKfQ==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var icon = '_12j8q0v1';\nexport var root = '_12j8q0v0';\nexport var shortcutHint = '_12j8q0v3';\nexport var spacer = '_12j8q0v2';","import { useHasScrollTop } from '@affine/component';\nimport * as ScrollArea from '@radix-ui/react-scroll-area';\nimport clsx from 'clsx';\nimport { type PropsWithChildren } from 'react';\n\nimport * as styles from './index.css';\n\nexport function SidebarContainer({ children }: PropsWithChildren) {\n return
{children}
;\n}\n\nexport function SidebarScrollableContainer({ children }: PropsWithChildren) {\n const [setContainer, hasScrollTop] = useHasScrollTop();\n return (\n \n \n \n
{children}
\n \n \n \n \n
\n );\n}\n","import \"../core/src/components/app-sidebar/sidebar-containers/index.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/app-sidebar/sidebar-containers/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA5VT247bIBB9z1dMLa20kUpk56aKaPsjVR/GgG0aDAhwLq323yuD46A0XbUvNjMwZ87MnFkNw+Zn9aOEXwsAi5xL3VLY2gtUe3s5LAC49FbhlUKjRHSMf9Ioc6bAjBp6DdqcHdrD4n2xSnBVhCPEM2eUqtGRs+Sho1CVdsagUEEFOAQzesxJuBGUXCl0knOhM7x1ome8DNJoClh7o4YgxsBgLIVyPCnRBDrzdrLtMrMTk53M4FDf0IxFJsMVVhsPq7WPbJJrAq6RHVtnBs0pnNC9EoJNI7UgtUJ2JFW5zLl+4xiQdOin8kkw9q0IbhDF91jHDF5lYZt4NbMsy5cxc4+ulZrEGrcj8+z9V+DyFKN6vNwbnALnqdXKsCN8kr01LqAOGcT2acpZBKW9wJePNMClEyy1MAlhvGnR0hQ259nFPP+BMXjhiBdKsEBBGz3NeWAdwenxzXtnC+vEdWpEmtODAJeHJwXn4/iLMKqdz+tJE/YBg3grklgfR1tm7/cP6nVCYZAn8Q/S2pSRcm0cF4445HLwkxLuK/NkYfaU1qIxTsTUzOggdKBQFIeP92iXWpI2aTJiRxrjepqOCoN4Jbvy5TOM32XW9FtL/5Cx1DeBbifyo+v2LPnefwPhuKMojAQAAA==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var baseContainer = 'uu3z1j0';\nexport var scrollTopBorder = 'uu3z1j2';\nexport var scrollableContainer = 'uu3z1j4 uu3z1j0';\nexport var scrollableContainerRoot = 'uu3z1j1';\nexport var scrollableViewport = 'uu3z1j3';\nexport var scrollbar = 'uu3z1j5';\nexport var scrollbarThumb = 'uu3z1j6';","import { Skeleton } from '@affine/component';\nimport { ResizePanel } from '@affine/component/resize-panel';\nimport { useServiceOptional, WorkspaceService } from '@toeverything/infra';\nimport { useAtom, useAtomValue } from 'jotai';\nimport { debounce } from 'lodash-es';\nimport type { PropsWithChildren, ReactElement } from 'react';\nimport { useEffect } from 'react';\n\nimport { WorkspaceSelector } from '../workspace-selector';\nimport { fallbackHeaderStyle, fallbackStyle } from './fallback.css';\nimport {\n floatingMaxWidth,\n navBodyStyle,\n navHeaderStyle,\n navStyle,\n navWrapperStyle,\n sidebarFloatMaskStyle,\n} from './index.css';\nimport {\n APP_SIDEBAR_OPEN,\n appSidebarFloatingAtom,\n appSidebarOpenAtom,\n appSidebarResizingAtom,\n appSidebarWidthAtom,\n} from './index.jotai';\nimport { SidebarHeader } from './sidebar-header';\n\nexport type AppSidebarProps = PropsWithChildren<{\n clientBorder?: boolean;\n translucentUI?: boolean;\n}>;\n\nexport type History = {\n stack: string[];\n current: number;\n};\n\nconst MAX_WIDTH = 480;\nconst MIN_WIDTH = 248;\n\nexport function AppSidebar({\n children,\n clientBorder,\n}: AppSidebarProps): ReactElement {\n const [open, setOpen] = useAtom(appSidebarOpenAtom);\n const [width, setWidth] = useAtom(appSidebarWidthAtom);\n const [floating, setFloating] = useAtom(appSidebarFloatingAtom);\n const [resizing, setResizing] = useAtom(appSidebarResizingAtom);\n\n useEffect(() => {\n // do not float app sidebar on desktop\n if (environment.isDesktop) {\n return;\n }\n\n function onResize() {\n const isFloatingMaxWidth = window.matchMedia(\n `(max-width: ${floatingMaxWidth}px)`\n ).matches;\n const isOverflowWidth = window.matchMedia(\n `(max-width: ${width / 0.4}px)`\n ).matches;\n const isFloating = isFloatingMaxWidth || isOverflowWidth;\n if (\n open === undefined &&\n localStorage.getItem(APP_SIDEBAR_OPEN) === null\n ) {\n // give the initial value,\n // so that the sidebar can be closed on mobile by default\n setOpen(!isFloating);\n }\n setFloating(isFloating);\n }\n\n const dOnResize = debounce(onResize, 50);\n window.addEventListener('resize', dOnResize);\n return () => {\n window.removeEventListener('resize', dOnResize);\n };\n }, [open, setFloating, setOpen, width]);\n\n const hasRightBorder = !environment.isDesktop && !clientBorder;\n const isMacosDesktop = environment.isDesktop && environment.isMacOs;\n return (\n <>\n \n \n \n setOpen(false)}\n />\n \n );\n}\n\nexport const AppSidebarFallback = (): ReactElement | null => {\n const width = useAtomValue(appSidebarWidthAtom);\n\n const currentWorkspace = useServiceOptional(WorkspaceService);\n return (\n \n \n
\n );\n};\n\nexport * from './add-page-button';\nexport * from './app-download-button';\nexport * from './app-updater-button';\nexport * from './category-divider';\nexport * from './index.css';\nexport * from './menu-item';\nexport * from './quick-search-input';\nexport * from './sidebar-containers';\nexport * from './sidebar-header';\nexport { appSidebarFloatingAtom, appSidebarOpenAtom, appSidebarResizingAtom };\n","import \"../core/src/components/app-sidebar/fallback.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/app-sidebar/fallback.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xdmppaDB5MCB7CiAgbWFyZ2luOiA0cHggMTZweDsKICBoZWlnaHQ6IDEwMCU7Cn0KLl8xdmppaDB5MSB7CiAgd2lkdGg6IDEwMCU7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgZ2FwOiA4cHg7Cn0=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var fallbackHeaderStyle = '_1vjih0y1';\nexport var fallbackStyle = '_1vjih0y0';","import { IconButton } from '@affine/component';\nimport { useI18n } from '@affine/i18n';\nimport { SidebarIcon } from '@blocksuite/icons/rc';\nimport { useAtom } from 'jotai';\n\nimport { appSidebarOpenAtom } from '../index.jotai';\nimport * as styles from './sidebar-switch.css';\n\nexport const SidebarSwitch = ({\n show,\n className,\n}: {\n show: boolean;\n className?: string;\n}) => {\n const [open, setOpen] = useAtom(appSidebarOpenAtom);\n const t = useI18n();\n const tooltipContent = open\n ? t['com.arms.sidebarSwitch.collapse']()\n : t['com.arms.sidebarSwitch.expand']();\n\n return (\n \n setOpen(open => !open)}\n >\n \n \n \n );\n};\n","import \"../core/src/components/app-sidebar/sidebar-header/sidebar-switch.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/app-sidebar/sidebar-header/sidebar-switch.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LmxvMHdrazAgewogIGZsZXgtc2hyaW5rOiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdHJhbnNpdGlvbjogbWF4LXdpZHRoIDAuMnMgZWFzZS1pbi1vdXQsIG1hcmdpbiAwLjNzIGVhc2UtaW4tb3V0LCBvcGFjaXR5IDAuM3MgZWFzZTsKfQoubG8wd2trMFtkYXRhLXNob3c9dHJ1ZV0gewogIG9wYWNpdHk6IDE7CiAgbWF4LXdpZHRoOiA2MHB4Owp9Ci5sbzB3a2swW2RhdGEtc2hvdz1mYWxzZV0gewogIG9wYWNpdHk6IDA7CiAgbWF4LXdpZHRoOiAwOwp9\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var sidebarSwitchClip = 'lo0wkk0';","import type { BlockSpec } from '@blocksuite/block-std';\nimport { SpecProvider } from '@blocksuite/blocks';\nimport { AIChatBlockSpec, EdgelessAIChatBlockSpec } from '@blocksuite/presets';\n\nconst CustomSpecs: BlockSpec[] = [AIChatBlockSpec, EdgelessAIChatBlockSpec];\n\nfunction patchPreviewSpec(id: string, specs: BlockSpec[]) {\n const specProvider = SpecProvider.getInstance();\n specProvider.extendSpec(id, specs);\n}\n\n// Patch edgeless preview spec for blocksuite surface-ref and embed-synced-doc\npatchPreviewSpec('edgeless:preview', CustomSpecs);\n","import {\n type ElementOrFactory,\n Input,\n notify,\n toast,\n type ToastOptions,\n toReactNode,\n type useConfirmModal,\n} from '@affine/component';\nimport { track } from '@affine/core/mixpanel';\nimport { DocsSearchService } from '@affine/core/modules/docs-search';\nimport { resolveLinkToDoc } from '@affine/core/modules/navigation';\nimport type { PeekViewService } from '@affine/core/modules/peek-view';\nimport type { ActivePeekView } from '@affine/core/modules/peek-view/entities/peek-view';\nimport {\n CreationQuickSearchSession,\n DocsQuickSearchSession,\n type QuickSearchItem,\n QuickSearchService,\n RecentDocsQuickSearchSession,\n} from '@affine/core/modules/quicksearch';\nimport { DebugLogger } from '@affine/debug';\nimport type { BlockSpec, WidgetComponent } from '@blocksuite/block-std';\nimport {\n type AffineReference,\n AffineSlashMenuWidget,\n EdgelessRootBlockComponent,\n EmbedLinkedDocBlockComponent,\n type ParagraphBlockService,\n type RootService,\n} from '@blocksuite/blocks';\nimport { LinkIcon } from '@blocksuite/icons/rc';\nimport { AIChatBlockSchema } from '@blocksuite/presets';\nimport type { BlockSnapshot } from '@blocksuite/store';\nimport {\n type DocMode,\n type DocService,\n DocsService,\n type FrameworkProvider,\n} from '@toeverything/infra';\nimport { type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { literal } from 'lit/static-html.js';\nimport Multiselect from 'multiselect-react-dropdown'; // 241223 추가\n\nexport type ReferenceReactRenderer = (\n reference: AffineReference\n) => React.ReactElement;\n\nconst logger = new DebugLogger('affine::spec-patchers');\n\nfunction patchSpecService(\n spec: Spec,\n onMounted: (\n service: Spec extends BlockSpec\n ? BlockService\n : never\n ) => (() => void) | void,\n onWidgetConnected?: (component: WidgetComponent) => void\n) {\n const oldSetup = spec.setup;\n spec.setup = (slots, disposableGroup) => {\n oldSetup?.(slots, disposableGroup);\n disposableGroup.add(\n slots.mounted.on(({ service }) => {\n const disposable = onMounted(service as any);\n if (disposable) {\n disposableGroup.add(disposable);\n }\n })\n );\n\n onWidgetConnected &&\n disposableGroup.add(\n slots.widgetConnected.on(({ component }) => {\n onWidgetConnected(component);\n })\n );\n };\n return spec;\n}\n\n/**\n * Patch the block specs with custom renderers.\n */\nexport function patchReferenceRenderer(\n specs: BlockSpec[],\n reactToLit: (element: ElementOrFactory) => TemplateResult,\n reactRenderer: ReferenceReactRenderer\n) {\n const litRenderer = (reference: AffineReference) => {\n const node = reactRenderer(reference);\n return reactToLit(node);\n };\n\n return specs.map(spec => {\n if (\n ['affine:paragraph', 'affine:list', 'affine:database'].includes(\n spec.schema.model.flavour\n )\n ) {\n spec = patchSpecService(\n spec as BlockSpec,\n service => {\n service.referenceNodeConfig.setCustomContent(litRenderer);\n return () => {\n service.referenceNodeConfig.setCustomContent(null);\n };\n }\n );\n }\n\n return spec;\n });\n}\n\nexport function patchNotificationService(\n specs: BlockSpec[],\n { closeConfirmModal, openConfirmModal }: ReturnType\n) {\n const rootSpec = specs.find(\n spec => spec.schema.model.flavour === 'affine:page'\n ) as BlockSpec;\n\n if (!rootSpec) {\n return specs;\n }\n\n patchSpecService(rootSpec, service => {\n service.notificationService = {\n confirm: async ({ title, message, confirmText, cancelText, abort }) => {\n return new Promise(resolve => {\n openConfirmModal({\n title: toReactNode(title),\n description: toReactNode(message),\n confirmText,\n confirmButtonOptions: {\n variant: 'primary',\n },\n cancelText,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n },\n });\n abort?.addEventListener('abort', () => {\n resolve(false);\n closeConfirmModal();\n });\n });\n },\n prompt: async ({\n title,\n message,\n confirmText,\n placeholder,\n cancelText,\n autofill,\n abort,\n inputTitle, // 241223 추가\n versionSelect, // 241223 추가\n // productOptions, // 241223 추가\n // versionOptions, // 241223 추가\n }) => {\n return new Promise(resolve => {\n let value = autofill || '';\n const description = ( // 241223 수정\n
\n {message &&

{toReactNode(message)}

}\n {inputTitle && ✔ {toReactNode(inputTitle)}}\n (value = e)}\n ref={input => input?.select()}\n />\n {versionSelect &&
\n ✔ 요구사항을 생성할 대상 제품(서비스) + 버전을 선택하세요.\n
    \n
  • \n 제품(서비스)\n \n
  • \n
  • \n 버전\n \n
  • \n
\n
}\n
\n );\n\n openConfirmModal({\n title: toReactNode(title),\n description: description,\n confirmText: confirmText ?? 'Confirm',\n confirmButtonOptions: {\n variant: 'primary',\n },\n cancelText: cancelText ?? 'Cancel',\n onConfirm: () => {\n resolve(value);\n },\n onCancel: () => {\n resolve(null);\n },\n });\n abort?.addEventListener('abort', () => {\n resolve(null);\n closeConfirmModal();\n });\n });\n },\n toast: (message: string, options: ToastOptions) => {\n return toast(message, options);\n },\n notify: notification => {\n const accentToNotify = {\n error: notify.error,\n success: notify.success,\n warning: notify.warning,\n info: notify,\n };\n\n const fn = accentToNotify[notification.accent || 'info'];\n if (!fn) {\n throw new Error('Invalid notification accent');\n }\n\n const toastId = fn(\n {\n title: toReactNode(notification.title),\n message: toReactNode(notification.message),\n action: notification.action?.onClick\n ? {\n label: toReactNode(notification.action?.label),\n onClick: notification.action.onClick,\n }\n : undefined,\n onDismiss: notification.onClose,\n },\n {\n duration: notification.duration || 0,\n onDismiss: notification.onClose,\n onAutoClose: notification.onClose,\n }\n );\n\n notification.abort?.addEventListener('abort', () => {\n notify.dismiss(toastId);\n });\n },\n };\n });\n return specs;\n}\n\nexport function patchPeekViewService(\n specs: BlockSpec[],\n service: PeekViewService\n) {\n const rootSpec = specs.find(\n spec => spec.schema.model.flavour === 'affine:page'\n ) as BlockSpec;\n\n if (!rootSpec) {\n return specs;\n }\n\n patchSpecService(rootSpec, pageService => {\n pageService.peekViewService = {\n peek: (target: ActivePeekView['target'], template?: TemplateResult) => {\n logger.debug('center peek', target, template);\n return service.peekView.open(target, template);\n },\n };\n });\n\n return specs;\n}\n\nexport function patchDocModeService(\n specs: BlockSpec[],\n docService: DocService,\n docsService: DocsService\n) {\n const rootSpec = specs.find(\n spec => spec.schema.model.flavour === 'affine:page'\n ) as BlockSpec;\n\n if (!rootSpec) {\n return specs;\n }\n\n patchSpecService(rootSpec, pageService => {\n const DEFAULT_MODE = 'page';\n pageService.docModeService = {\n setMode: (mode: DocMode, id?: string) => {\n if (id) {\n docsService.list.setMode(id, mode);\n } else {\n docService.doc.setMode(mode);\n }\n },\n getMode: (id?: string) => {\n const mode = id\n ? docsService.list.getMode(id)\n : docService.doc.getMode();\n return mode || DEFAULT_MODE;\n },\n toggleMode: (id?: string) => {\n const mode = id\n ? docsService.list.toggleMode(id)\n : docService.doc.toggleMode();\n return mode || DEFAULT_MODE;\n },\n onModeChange: (handler: (mode: DocMode) => void, id?: string) => {\n // eslint-disable-next-line rxjs/finnish\n const mode$ = id\n ? docsService.list.observeMode(id)\n : docService.doc.observeMode();\n const sub = mode$.subscribe(m => handler(m || DEFAULT_MODE));\n return {\n dispose: sub.unsubscribe,\n };\n },\n };\n });\n\n return specs;\n}\n\nexport function patchQuickSearchService(\n specs: BlockSpec[],\n framework: FrameworkProvider\n) {\n const rootSpec = specs.find(\n spec => spec.schema.model.flavour === 'affine:page'\n ) as BlockSpec;\n\n if (!rootSpec) {\n return specs;\n }\n\n patchSpecService(\n rootSpec,\n pageService => {\n pageService.quickSearchService = {\n async searchDoc(options) {\n let searchResult:\n | { docId: string; isNewDoc?: boolean }\n | { userInput: string }\n | null = null;\n if (options.skipSelection) {\n const query = options.userInput;\n if (!query) {\n logger.error('No user input provided');\n } else {\n const resolvedDoc = resolveLinkToDoc(query);\n if (resolvedDoc) {\n searchResult = {\n docId: resolvedDoc.docId,\n };\n } else if (\n query.startsWith('http://') ||\n query.startsWith('https://')\n ) {\n searchResult = {\n userInput: query,\n };\n } else {\n const searchedDoc = (\n await framework.get(DocsSearchService).search(query)\n ).at(0);\n if (searchedDoc) {\n searchResult = {\n docId: searchedDoc.docId,\n };\n }\n }\n }\n } else {\n searchResult = await new Promise(resolve =>\n framework.get(QuickSearchService).quickSearch.show(\n [\n framework.get(RecentDocsQuickSearchSession),\n framework.get(DocsQuickSearchSession),\n framework.get(CreationQuickSearchSession),\n (query: string) => {\n if (\n (query.startsWith('http://') ||\n query.startsWith('https://')) &&\n resolveLinkToDoc(query) === null\n ) {\n return [\n {\n id: 'link',\n source: 'link',\n icon: LinkIcon,\n label: {\n key: 'com.arms.cmdk.affine.insert-link',\n },\n payload: { url: query },\n } as QuickSearchItem<'link', { url: string }>,\n ];\n }\n return [];\n },\n ],\n result => {\n if (result === null) {\n resolve(null);\n return;\n }\n if (\n result.source === 'docs' ||\n result.source === 'recent-doc'\n ) {\n resolve({\n docId: result.payload.docId,\n });\n } else if (result.source === 'link') {\n resolve({\n userInput: result.payload.url,\n });\n } else if (result.source === 'creation') {\n const docsService = framework.get(DocsService);\n const mode =\n result.id === 'creation:create-edgeless'\n ? 'edgeless'\n : 'page';\n const newDoc = docsService.createDoc({\n mode,\n title: result.payload.title,\n });\n resolve({\n docId: newDoc.id,\n isNewDoc: true,\n });\n }\n },\n {\n defaultQuery: options.userInput,\n label: {\n key: 'com.arms.cmdk.insert-links',\n },\n placeholder: {\n key: 'com.arms.cmdk.docs.placeholder',\n },\n }\n )\n );\n }\n\n return searchResult;\n },\n };\n },\n (component: WidgetComponent) => {\n if (component instanceof AffineSlashMenuWidget) {\n component.config.items.forEach(item => {\n if (\n 'action' in item &&\n (item.name === 'Linked Doc' || item.name === 'Link')\n ) {\n const oldAction = item.action;\n item.action = async ({ model, rootComponent }) => {\n const { host, service, std } = rootComponent;\n const { quickSearchService } = service;\n\n if (!quickSearchService)\n return oldAction({ model, rootComponent });\n\n const result = await quickSearchService.searchDoc({});\n if (result === null) return;\n\n if ('docId' in result) {\n const linkedDoc = std.collection.getDoc(result.docId);\n if (!linkedDoc) return;\n\n host.doc.addSiblingBlocks(model, [\n {\n flavour: 'affine:embed-linked-doc',\n pageId: linkedDoc.id,\n },\n ]);\n if (result.isNewDoc) {\n track.doc.editor.slashMenu.createDoc({ control: 'linkDoc' });\n track.doc.editor.slashMenu.linkDoc({ control: 'createDoc' });\n }\n track.doc.editor.slashMenu.linkDoc({ control: 'linkDoc' });\n } else if ('userInput' in result) {\n const embedOptions = service.getEmbedBlockOptions(\n result.userInput\n );\n if (!embedOptions) return;\n\n host.doc.addSiblingBlocks(model, [\n {\n flavour: embedOptions.flavour,\n url: result.userInput,\n },\n ]);\n }\n };\n }\n });\n }\n }\n );\n\n return specs;\n}\n\nexport function patchEdgelessClipboard(specs: BlockSpec[]) {\n const rootSpec = specs.find(\n spec => spec.schema.model.flavour === 'affine:page'\n ) as BlockSpec;\n\n if (!rootSpec) {\n return specs;\n }\n\n const oldSetup = rootSpec.setup;\n rootSpec.setup = (slots, disposableGroup) => {\n oldSetup?.(slots, disposableGroup);\n disposableGroup.add(\n slots.viewConnected.on(view => {\n const component = view.component;\n if (component instanceof EdgelessRootBlockComponent) {\n const AIChatBlockFlavour = AIChatBlockSchema.model.flavour;\n const createFunc = (blocks: BlockSnapshot[]) => {\n const blockIds = blocks.map(({ props }) => {\n const {\n xywh,\n scale,\n messages,\n sessionId,\n rootDocId,\n rootWorkspaceId,\n } = props;\n const blockId = component.service.addBlock(\n AIChatBlockFlavour,\n {\n xywh,\n scale,\n messages,\n sessionId,\n rootDocId,\n rootWorkspaceId,\n },\n component.surface.model.id\n );\n return blockId;\n });\n return blockIds;\n };\n component.clipboardController.registerBlock(\n AIChatBlockFlavour,\n createFunc\n );\n }\n })\n );\n };\n\n return specs;\n}\n\n@customElement('affine-linked-doc-ref-block')\n// @ts-expect-error ignore private warning for overriding _load\nexport class LinkedDocBlockComponent extends EmbedLinkedDocBlockComponent {\n override async _load() {\n this.isBannerEmpty = true;\n }\n}\n\nexport function patchForSharedPage(specs: BlockSpec[]) {\n return specs.map(spec => {\n const linkedDocNames = [\n 'affine:embed-linked-doc',\n 'affine:embed-synced-doc',\n ];\n\n if (linkedDocNames.includes(spec.schema.model.flavour)) {\n spec = {\n ...spec,\n view: {\n component: literal`affine-linked-doc-ref-block`,\n widgets: {},\n },\n };\n }\n return spec;\n });\n}\n","import \"../core/src/components/blocksuite/block-suite-editor/bi-directional-link-panel.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/blocksuite/block-suite-editor/bi-directional-link-panel.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA41U0Y7aMBB8z1fsS6VDqlHCAUXhKvVPKifehG2D7bMdElrx71Ucw5mQ6njMeL0zOzvx8meWmtPuvUjhbwLQkXCHHLI0/bJPAI68ZwE6cfPCGK8qkshQkFNmPFqMhaYmyRqsXA68dSoCDdWHCNVcCJJ1qJ1ra0kgC2VfYbVexNdCt6fvVUo6ZukPTu54vOAWF/vkkiyvNmTehgOOLNlW9/tHWwRZ3fBzDlWD/vxXax1VZ1Yq6VC6HEqUDs1wxBuqJSOHR/sBR4QrT1jw8ndtVCvFRGahjEDDStUo4+e5SkuXmxltUeNX3/hzqVbzElmBrkOUzyhe+8bevy6I2aTpxOssqGuGIa6aV+sR9NNMBnXYO6YNHbk538aNWDdxPjdhL7fGu/E7uGW4oNbmcIfmkOkerGpIfGLxxzLYnNLuQA59odfs7Yo3HruwmnMhyJpz8GlnAMrW2KFWK3pY0dabFf6/QjmnjtcwR1XffNV/KS2WSop70usMr3ODjWBEsJt7U6YtHhI6mz+AmuscQoD8CphPbg5SdYbrgfjHEGpOEg2cCDutjIMXTw9v32G7TnW/8JKW96/e7XXJIb2F9JJc/gFnHnxuHQUAAA==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var container = '_10rv8qb0';\nexport var divider = '_10rv8qb2';\nexport var dividerContainer = '_10rv8qb1';\nexport var link = '_10rv8qb8';\nexport var linksContainer = '_10rv8qb6';\nexport var linksTitles = '_10rv8qb7';\nexport var showButton = '_10rv8qb5';\nexport var title = '_10rv8qb4';\nexport var titleLine = '_10rv8qb3';","import { DocLinksService } from '@affine/core/modules/doc-link';\nimport {\n useLiveData,\n useServices,\n WorkspaceService,\n} from '@toeverything/infra';\nimport { useCallback, useState } from 'react';\n\nimport { AffinePageReference } from '../../affine/reference-link';\nimport * as styles from './bi-directional-link-panel.css';\n\nexport const BiDirectionalLinkPanel = () => {\n const [show, setShow] = useState(false);\n const { docLinksService, workspaceService } = useServices({\n DocLinksService,\n WorkspaceService,\n });\n\n const links = useLiveData(docLinksService.links.links$);\n const backlinks = useLiveData(docLinksService.backlinks.backlinks$);\n\n const handleClickShow = useCallback(() => {\n setShow(!show);\n }, [show]);\n\n return (\n
\n {!show && (\n
\n
\n
\n )}\n\n
\n
Bi-Directional Links
\n
\n {show ? 'Hide' : 'Show'}\n
\n
\n\n {show && (\n <>\n
\n
\n
\n
\n
\n Backlinks · {backlinks.length}\n
\n {backlinks.map(link => (\n
\n \n
\n ))}\n
\n
\n
\n Outgoing links · {links.length}\n
\n {links.map(link => (\n
\n \n
\n ))}\n
\n \n )}\n
\n );\n};\n","import { useJournalInfoHelper } from '@affine/core/hooks/use-journal';\nimport { useI18n } from '@affine/i18n';\nimport type { Doc } from '@blocksuite/store';\n\nimport * as styles from './styles.css';\n\nexport const BlocksuiteEditorJournalDocTitle = ({ page }: { page: Doc }) => {\n const { localizedJournalDate, isTodayJournal, journalDate } =\n useJournalInfoHelper(page.collection, page.id);\n const t = useI18n();\n\n // TODO(catsjuice): i18n\n const day = journalDate?.format('dddd') ?? null;\n\n return (\n \n {localizedJournalDate}\n {isTodayJournal ? (\n {t['com.arms.today']()}\n ) : (\n {day}\n )}\n \n );\n};\n","import \"../core/src/components/blocksuite/block-suite-editor/styles.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/blocksuite/block-suite-editor/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll82YXozbGcwIHsKICBkaXNwbGF5OiBibG9jazsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hZmZpbmUtYmFja2dyb3VuZC1wcmltYXJ5LWNvbG9yKTsKICBvdmVyZmxvdy14OiBjbGlwOwp9Ci5fNmF6M2xnMSB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHBhZGRpbmctYm90dG9tOiAxMDBweDsKfQouXzZhejNsZzIgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5fNmF6M2xnMjpoYXMoYWZmaW5lLWFpLXBhbmVsLXdpZGdldFtkYXRhLXN0YXRlPSdnZW5lcmF0aW5nJ10pIHsKICBwYWRkaW5nLWJvdHRvbTogOTgwcHg7Cn0KLl82YXozbGcyOmhhcyhhZmZpbmUtYWktcGFuZWwtd2lkZ2V0W2RhdGEtc3RhdGU9J2ZpbmlzaGVkJ10pIHsKICBwYWRkaW5nLWJvdHRvbTogOTgwcHg7Cn0KLl82YXozbGcyOmhhcyhhZmZpbmUtYWktcGFuZWwtd2lkZ2V0W2RhdGEtc3RhdGU9J2Vycm9yJ10pIHsKICBwYWRkaW5nLWJvdHRvbTogOTgwcHg7Cn0KLl82YXozbGczIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBtYXJnaW46IDAgYXV0bzsKICBwYWRkaW5nLXRvcDogNTBweDsKICBwYWRkaW5nLWJvdHRvbTogNTBweDsKICBjdXJzb3I6IHRleHQ7CiAgZmxleC1ncm93OiAxOwp9Ci5fNmF6M2xnNCB7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1oLTQpOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgcGFkZGluZzogMCA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIG1hcmdpbi1sZWZ0OiA0cHg7Cn0KLl82YXozbGc1IHsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXRleHQtc2Vjb25kYXJ5LWNvbG9yKTsKfQouXzZhejNsZzYgewogIGNvbG9yOiB2YXIoLS1hZmZpbmUtYnJhbmQtY29sb3IpOwp9Ci5fNmF6M2xnNyB7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBmb250LXNpemU6IDEuMWVtOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDJweCwgLTFweCk7Cn0=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var affineDocViewport = '_6az3lg1';\nexport var docContainer = '_6az3lg2';\nexport var docEditorGap = '_6az3lg3';\nexport var docEditorRoot = '_6az3lg0';\nexport var pageReferenceIcon = '_6az3lg7';\nexport var titleDayTag = '_6az3lg5 _6az3lg4';\nexport var titleTodayTag = '_6az3lg6 _6az3lg4';","import type { BlockSpec } from '@blocksuite/block-std';\nimport {\n AttachmentBlockService,\n AttachmentBlockSpec,\n} from '@blocksuite/blocks';\nimport bytes from 'bytes';\n\nclass CustomAttachmentBlockService extends AttachmentBlockService {\n override mounted(): void {\n // blocksuite default max file size is 10MB, we override it to 2GB\n // but the real place to limit blob size is CloudQuotaModal / LocalQuotaModal\n this.maxFileSize = bytes.parse('2GB');\n super.mounted();\n }\n}\n\nexport const CustomAttachmentBlockSpec: BlockSpec = {\n ...AttachmentBlockSpec,\n service: CustomAttachmentBlockService,\n};\n","import {\n //AICodeBlockSpec,\n AIImageBlockSpec,\n AIParagraphBlockSpec,\n} from '@affine/core/blocksuite/presets/ai';\nimport type { BlockSpec } from '@blocksuite/block-std';\nimport {\n BookmarkBlockSpec,\n DatabaseBlockSpec,\n DataViewBlockSpec,\n DividerBlockSpec,\n EmbedFigmaBlockSpec,\n EmbedGithubBlockSpec,\n EmbedHtmlBlockSpec,\n EmbedLinkedDocBlockSpec,\n EmbedLoomBlockSpec,\n EmbedSyncedDocBlockSpec,\n EmbedYoutubeBlockSpec,\n ListBlockSpec,\n NoteBlockSpec,\n} from '@blocksuite/blocks';\nimport { AIChatBlockSpec, EdgelessAIChatBlockSpec } from '@blocksuite/presets';\n\nimport { CustomAttachmentBlockSpec } from './custom/attachment-block';\n\nexport const CommonBlockSpecs: BlockSpec[] = [\n ListBlockSpec,\n NoteBlockSpec,\n DatabaseBlockSpec,\n DataViewBlockSpec,\n DividerBlockSpec,\n BookmarkBlockSpec,\n EmbedFigmaBlockSpec,\n EmbedGithubBlockSpec,\n EmbedYoutubeBlockSpec,\n EmbedLoomBlockSpec,\n EmbedHtmlBlockSpec,\n EmbedSyncedDocBlockSpec,\n EmbedLinkedDocBlockSpec,\n // special\n CustomAttachmentBlockSpec,\n //AICodeBlockSpec,\n AIImageBlockSpec,\n AIParagraphBlockSpec,\n AIChatBlockSpec,\n EdgelessAIChatBlockSpec,\n];\n","import { track } from '@affine/core/mixpanel';\nimport { WorkspacePropertiesAdapter } from '@affine/core/modules/properties';\nimport { I18n, i18nTime } from '@affine/i18n';\nimport type { EditorHost } from '@blocksuite/block-std';\nimport type { AffineInlineEditor } from '@blocksuite/blocks';\nimport { LinkedWidgetUtils } from '@blocksuite/blocks';\nimport {\n LinkedEdgelessIcon,\n LinkedPageIcon,\n TodayIcon,\n} from '@blocksuite/icons/lit';\nimport type { DocMeta } from '@blocksuite/store';\nimport {\n DocsService,\n type FrameworkProvider,\n WorkspaceService,\n} from '@toeverything/infra';\n\nexport function createLinkedWidgetConfig(framework: FrameworkProvider) {\n return {\n getMenus: (\n query: string,\n abort: () => void,\n editorHost: EditorHost,\n inlineEditor: AffineInlineEditor\n ) => {\n const currentWorkspace = framework.get(WorkspaceService).workspace;\n const rawMetas = currentWorkspace.docCollection.meta.docMetas;\n const adapter = framework.get(WorkspacePropertiesAdapter);\n const isJournal = (d: DocMeta) =>\n !!adapter.getJournalPageDateString(d.id);\n\n const docMetas = rawMetas\n .filter(meta => {\n if (isJournal(meta) && !meta.updatedDate) {\n return false;\n }\n return !meta.trash;\n })\n .map(meta => {\n if (isJournal(meta)) {\n const date = adapter.getJournalPageDateString(meta.id);\n if (date) {\n const title = i18nTime(date, { absolute: { accuracy: 'day' } });\n return { ...meta, title };\n }\n }\n if (!meta.title) {\n const title = I18n['Untitled']();\n return { ...meta, title };\n }\n return meta;\n })\n .filter(({ title }) => isFuzzyMatch(title, query));\n\n // TODO need i18n if BlockSuite supported\n const MAX_DOCS = 6;\n const docsService = framework.get(DocsService);\n const isEdgeless = (d: DocMeta) =>\n docsService.list.getMode(d.id) === 'edgeless';\n return Promise.resolve([\n {\n name: 'Link to Doc',\n items: docMetas.map(doc => ({\n key: doc.id,\n name: doc.title,\n icon: isJournal(doc)\n ? TodayIcon()\n : isEdgeless(doc)\n ? LinkedEdgelessIcon()\n : LinkedPageIcon(),\n action: () => {\n abort();\n LinkedWidgetUtils.insertLinkedNode({\n inlineEditor,\n docId: doc.id,\n });\n track.doc.editor.atMenu.linkDoc();\n },\n })),\n maxDisplay: MAX_DOCS,\n overflowText: `${docMetas.length - MAX_DOCS} more docs`,\n },\n LinkedWidgetUtils.createNewDocMenuGroup(\n query,\n abort,\n editorHost,\n inlineEditor\n ),\n ]);\n },\n };\n}\n\n/**\n * Checks if the name is a fuzzy match of the query.\n *\n * @example\n * ```ts\n * const name = 'John Smith';\n * const query = 'js';\n * const isMatch = isFuzzyMatch(name, query);\n * // isMatch: true\n * ```\n */\nfunction isFuzzyMatch(name: string, query: string) {\n const pureName = name\n .trim()\n .toLowerCase()\n .split('')\n .filter(char => char !== ' ')\n .join('');\n\n const regex = new RegExp(\n query\n .split('')\n .filter(char => char !== ' ')\n .map(item => `${escapeRegExp(item)}.*`)\n .join(''),\n 'i'\n );\n return regex.test(pureName);\n}\n\nfunction escapeRegExp(input: string) {\n // escape regex characters in the input string to prevent regex format errors\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","import {\n AIEdgelessRootBlockSpec,\n AIPageRootBlockSpec,\n} from '@affine/core/blocksuite/presets/ai';\nimport { mixpanel } from '@affine/core/mixpanel';\nimport type {\n EdgelessRootBlockSpecType,\n PageRootBlockSpecType,\n RootService,\n TelemetryEventMap,\n} from '@blocksuite/blocks';\nimport {\n AffineCanvasTextFonts,\n EdgelessRootService,\n PageRootService,\n} from '@blocksuite/blocks';\nimport { type FrameworkProvider } from '@toeverything/infra';\n\nimport { createLinkedWidgetConfig } from './linked-widget';\n\nfunction customLoadFonts(service: RootService): void {\n if (runtimeConfig.isSelfHosted) {\n const fonts = AffineCanvasTextFonts.map(font => ({\n ...font,\n // self-hosted fonts are served from /assets\n url: '/assets/' + new URL(font.url).pathname.split('/').pop(),\n }));\n service.fontLoader.load(fonts);\n } else {\n service.fontLoader.load(AffineCanvasTextFonts);\n }\n}\n\nfunction withAffineRootService(Service: typeof RootService) {\n return class extends Service {\n override loadFonts(): void {\n customLoadFonts(this);\n }\n\n override telemetryService = {\n track: (\n eventName: T,\n props: TelemetryEventMap[T]\n ) => {\n mixpanel.track(eventName as string, props as Record);\n },\n };\n };\n}\n\nexport function createPageRootBlockSpec(\n framework: FrameworkProvider\n): PageRootBlockSpecType {\n return {\n ...AIPageRootBlockSpec,\n service: withAffineRootService(PageRootService),\n config: {\n linkedWidget: createLinkedWidgetConfig(framework),\n },\n };\n}\n\nexport function createEdgelessRootBlockSpec(\n framework: FrameworkProvider\n): EdgelessRootBlockSpecType {\n return {\n ...AIEdgelessRootBlockSpec,\n service: withAffineRootService(EdgelessRootService),\n config: {\n linkedWidget: createLinkedWidgetConfig(framework),\n },\n };\n}\n","import {\n createReactComponentFromLit,\n useConfirmModal,\n useLitPortalFactory,\n} from '@affine/component';\nimport { useJournalInfoHelper } from '@affine/core/hooks/use-journal';\nimport { PeekViewService } from '@affine/core/modules/peek-view';\nimport { WorkbenchService } from '@affine/core/modules/workbench';\nimport type { DocMode } from '@blocksuite/blocks';\nimport {\n DocMetaTags,\n DocTitle,\n EdgelessEditor,\n PageEditor,\n} from '@blocksuite/presets';\nimport type { Doc } from '@blocksuite/store';\nimport {\n DocService,\n DocsService,\n useFramework,\n useLiveData,\n useService,\n} from '@toeverything/infra';\nimport React, {\n forwardRef,\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { PagePropertiesTable } from '../../affine/page-properties';\nimport { AffinePageReference } from '../../affine/reference-link';\nimport { BiDirectionalLinkPanel } from './bi-directional-link-panel';\nimport { BlocksuiteEditorJournalDocTitle } from './journal-doc-title';\nimport {\n patchDocModeService,\n patchEdgelessClipboard,\n patchForSharedPage,\n patchNotificationService,\n patchPeekViewService,\n patchQuickSearchService,\n patchReferenceRenderer,\n type ReferenceReactRenderer,\n} from './specs/custom/spec-patchers';\nimport { createEdgelessModeSpecs } from './specs/edgeless';\nimport { createPageModeSpecs } from './specs/page';\nimport * as styles from './styles.css';\n\nconst adapted = {\n DocEditor: createReactComponentFromLit({\n react: React,\n elementClass: PageEditor,\n }),\n DocTitle: createReactComponentFromLit({\n react: React,\n elementClass: DocTitle,\n }),\n PageMetaTags: createReactComponentFromLit({\n react: React,\n elementClass: DocMetaTags,\n }),\n EdgelessEditor: createReactComponentFromLit({\n react: React,\n elementClass: EdgelessEditor,\n }),\n};\n\ninterface BlocksuiteEditorProps {\n page: Doc;\n shared?: boolean;\n}\n\nconst usePatchSpecs = (page: Doc, shared: boolean, mode: DocMode) => {\n const [reactToLit, portals] = useLitPortalFactory();\n const peekViewService = useService(PeekViewService);\n const docService = useService(DocService);\n const docsService = useService(DocsService);\n const framework = useFramework();\n const referenceRenderer: ReferenceReactRenderer = useMemo(() => {\n return function customReference(reference) {\n const pageId = reference.delta.attributes?.reference?.pageId;\n if (!pageId) return ;\n return (\n \n );\n };\n }, [page.collection]);\n\n const specs = useMemo(() => {\n return mode === 'edgeless'\n ? createEdgelessModeSpecs(framework)\n : createPageModeSpecs(framework);\n }, [mode, framework]);\n\n const confirmModal = useConfirmModal();\n const patchedSpecs = useMemo(() => {\n let patched = patchReferenceRenderer(specs, reactToLit, referenceRenderer);\n patched = patchNotificationService(\n patchReferenceRenderer(patched, reactToLit, referenceRenderer),\n confirmModal\n );\n patched = patchPeekViewService(patched, peekViewService);\n patched = patchEdgelessClipboard(patched);\n if (!page.readonly) {\n patched = patchQuickSearchService(patched, framework);\n }\n if (shared) {\n patched = patchForSharedPage(patched);\n }\n patched = patchDocModeService(patched, docService, docsService);\n return patched;\n }, [\n confirmModal,\n docService,\n docsService,\n framework,\n page.readonly,\n peekViewService,\n reactToLit,\n referenceRenderer,\n shared,\n specs,\n ]);\n\n return [\n patchedSpecs,\n useMemo(\n () => (\n <>\n {portals.map(p => (\n {p.portal}\n ))}\n \n ),\n [portals]\n ),\n ] as const;\n};\n\nexport const BlocksuiteDocEditor = forwardRef<\n PageEditor,\n BlocksuiteEditorProps\n>(function BlocksuiteDocEditor({ page, shared }, ref) {\n const titleRef = useRef(null);\n const docRef = useRef(null);\n const [docPage, setDocPage] =\n useState();\n const { isJournal } = useJournalInfoHelper(page.collection, page.id);\n\n const workbench = useService(WorkbenchService).workbench;\n const activeView = useLiveData(workbench.activeView$);\n const hash = useLiveData(activeView.location$).hash;\n\n const onDocRef = useCallback(\n (el: PageEditor) => {\n docRef.current = el;\n if (ref) {\n if (typeof ref === 'function') {\n ref(el);\n } else {\n ref.current = el;\n }\n }\n },\n [ref]\n );\n\n useEffect(() => {\n // auto focus the title\n setTimeout(() => {\n const docPage = docRef.current?.querySelector('affine-page-root');\n if (docPage) {\n setDocPage(docPage);\n }\n if (titleRef.current && !hash) {\n const richText = titleRef.current.querySelector('rich-text');\n richText?.inlineEditor?.focusEnd();\n } else {\n docPage?.focusFirstParagraph();\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [specs, portals] = usePatchSpecs(page, !!shared, 'page');\n\n return (\n <>\n
\n {!isJournal ? (\n \n ) : (\n \n )}\n \n \n {docPage && !page.readonly ? (\n {\n docPage.std.spec.getService('affine:page').appendParagraph();\n }}\n >
\n ) : null}\n {!page.readonly ? : null}\n \n {portals}\n \n );\n});\nexport const BlocksuiteEdgelessEditor = forwardRef<\n EdgelessEditor,\n BlocksuiteEditorProps\n>(function BlocksuiteEdgelessEditor({ page, shared }, ref) {\n const [specs, portals] = usePatchSpecs(page, !!shared, 'edgeless');\n const editorRef = useRef(null);\n\n const onDocRef = useCallback(\n (el: EdgelessEditor) => {\n editorRef.current = el;\n if (ref) {\n if (typeof ref === 'function') {\n ref(el);\n } else {\n ref.current = el;\n }\n }\n },\n [ref]\n );\n\n useEffect(() => {\n if (editorRef.current) {\n editorRef.current.updateComplete\n .then(() => {\n // make sure editor can get keyboard events on showing up\n editorRef.current?.querySelector('affine-edgeless-root')?.click();\n })\n .catch(console.error);\n }\n }, []);\n\n return (\n <>\n \n {portals}\n \n );\n});\n","import type { BlockSpec } from '@blocksuite/block-std';\nimport {\n EdgelessNoteBlockSpec,\n EdgelessSurfaceBlockSpec,\n EdgelessSurfaceRefBlockSpec,\n EdgelessTextBlockSpec,\n FrameBlockSpec,\n} from '@blocksuite/blocks';\nimport type { FrameworkProvider } from '@toeverything/infra';\n\nimport { CommonBlockSpecs } from './common';\nimport { createEdgelessRootBlockSpec } from './custom/root-block';\n\nexport function createEdgelessModeSpecs(\n framework: FrameworkProvider\n): BlockSpec[] {\n return [\n ...CommonBlockSpecs,\n EdgelessSurfaceBlockSpec,\n EdgelessSurfaceRefBlockSpec,\n FrameBlockSpec,\n EdgelessTextBlockSpec,\n EdgelessNoteBlockSpec,\n // special\n createEdgelessRootBlockSpec(framework),\n ];\n}\n","import type { BlockSpec } from '@blocksuite/block-std';\nimport {\n PageSurfaceBlockSpec,\n PageSurfaceRefBlockSpec,\n} from '@blocksuite/blocks';\nimport { type FrameworkProvider } from '@toeverything/infra';\n\nimport { CommonBlockSpecs } from './common';\nimport { createPageRootBlockSpec } from './custom/root-block';\n\nexport function createPageModeSpecs(framework: FrameworkProvider): BlockSpec[] {\n return [\n ...CommonBlockSpecs,\n PageSurfaceBlockSpec,\n PageSurfaceRefBlockSpec,\n // special\n createPageRootBlockSpec(framework),\n ];\n}\n","import type { BlockComponent } from '@blocksuite/block-std';\nimport type {\n AffineEditorContainer,\n EdgelessEditor,\n PageEditor,\n} from '@blocksuite/presets';\nimport type { Doc } from '@blocksuite/store';\nimport { Slot } from '@blocksuite/store';\nimport { type DocMode } from '@toeverything/infra';\nimport clsx from 'clsx';\nimport type React from 'react';\nimport type { RefObject } from 'react';\nimport {\n forwardRef,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { BlocksuiteDocEditor, BlocksuiteEdgelessEditor } from './lit-adaper';\nimport * as styles from './styles.css';\n\n// copy forwardSlot from blocksuite, but it seems we need to dispose the pipe\n// after the component is unmounted right?\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction forwardSlot>>(\n from: T,\n to: Partial\n) {\n Object.entries(from).forEach(([key, slot]) => {\n const target = to[key];\n if (target) {\n slot.pipe(target);\n }\n });\n}\n\ninterface BlocksuiteEditorContainerProps {\n page: Doc;\n mode: DocMode;\n shared?: boolean;\n className?: string;\n style?: React.CSSProperties;\n defaultSelectedBlockId?: string;\n}\n\n// mimic the interface of the webcomponent and expose slots & host\ntype BlocksuiteEditorContainerRef = Pick<\n (typeof AffineEditorContainer)['prototype'],\n 'mode' | 'doc' | 'slots' | 'host'\n> &\n HTMLDivElement;\n\nfunction findBlockElementById(container: HTMLElement, blockId: string) {\n const element = container.querySelector(\n `[data-block-id=\"${blockId}\"]`\n ) as BlockComponent | null;\n return element;\n}\n\n// a workaround for returning the webcomponent for the given block id\n// by iterating over the children of the rendered dom tree\nconst useBlockElementById = (\n containerRef: RefObject,\n blockId: string | undefined,\n timeout = 1000\n) => {\n const [blockElement, setBlockElement] = useState(null);\n useEffect(() => {\n if (!blockId) {\n return;\n }\n let canceled = false;\n const start = Date.now();\n function run() {\n if (canceled || !containerRef.current || !blockId) {\n return;\n }\n const element = findBlockElementById(containerRef.current, blockId);\n if (element) {\n setBlockElement(element);\n } else if (Date.now() - start < timeout) {\n setTimeout(run, 100);\n }\n }\n run();\n return () => {\n canceled = true;\n };\n }, [blockId, containerRef, timeout]);\n return blockElement;\n};\n\nexport const BlocksuiteEditorContainer = forwardRef<\n AffineEditorContainer,\n BlocksuiteEditorContainerProps\n>(function AffineEditorContainer(\n { page, mode, className, style, defaultSelectedBlockId, shared },\n ref\n) {\n const scrolledRef = useRef(false);\n const hashChangedRef = useRef(false);\n const rootRef = useRef(null);\n const docRef = useRef(null);\n const edgelessRef = useRef(null);\n\n const slots: BlocksuiteEditorContainerRef['slots'] = useMemo(() => {\n return {\n docLinkClicked: new Slot(),\n editorModeSwitched: new Slot(),\n docUpdated: new Slot(),\n tagClicked: new Slot(),\n };\n }, []);\n\n // forward the slot to the webcomponent\n useLayoutEffect(() => {\n requestAnimationFrame(() => {\n const docPage = rootRef.current?.querySelector('affine-page-root');\n const edgelessPage = rootRef.current?.querySelector(\n 'affine-edgeless-root'\n );\n if (docPage) {\n forwardSlot(docPage.slots, slots);\n }\n\n if (edgelessPage) {\n forwardSlot(edgelessPage.slots, slots);\n }\n });\n }, [page, slots]);\n\n useLayoutEffect(() => {\n slots.docUpdated.emit({ newDocId: page.id });\n }, [page, slots.docUpdated]);\n\n useLayoutEffect(() => {\n slots.editorModeSwitched.emit(mode);\n }, [mode, slots.editorModeSwitched]);\n\n /**\n * mimic an AffineEditorContainer using proxy\n */\n const affineEditorContainerProxy = useMemo(() => {\n const api = {\n slots,\n get page() {\n return page;\n },\n get doc() {\n return page;\n },\n get host() {\n return mode === 'page'\n ? docRef.current?.host\n : edgelessRef.current?.host;\n },\n get model() {\n return page.root as any;\n },\n get updateComplete() {\n return mode === 'page'\n ? docRef.current?.updateComplete\n : edgelessRef.current?.updateComplete;\n },\n get mode() {\n return mode;\n },\n };\n\n const proxy = new Proxy(api, {\n has(_, prop) {\n return (\n Reflect.has(api, prop) ||\n (rootRef.current ? Reflect.has(rootRef.current, prop) : false)\n );\n },\n get(_, prop) {\n if (Reflect.has(api, prop)) {\n return api[prop as keyof typeof api];\n }\n if (rootRef.current && Reflect.has(rootRef.current, prop)) {\n const maybeFn = Reflect.get(rootRef.current, prop);\n if (typeof maybeFn === 'function') {\n return maybeFn.bind(rootRef.current);\n } else {\n return maybeFn;\n }\n }\n return undefined;\n },\n }) as unknown as AffineEditorContainer;\n\n return proxy;\n }, [mode, page, slots]);\n\n useEffect(() => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(affineEditorContainerProxy);\n } else {\n ref.current = affineEditorContainerProxy;\n }\n }\n }, [affineEditorContainerProxy, ref]);\n\n const blockElement = useBlockElementById(rootRef, defaultSelectedBlockId);\n\n useEffect(() => {\n let canceled = false;\n const handleScrollToBlock = (blockElement: BlockComponent) => {\n if (!mode || !blockElement) {\n return;\n }\n blockElement.scrollIntoView({\n behavior: 'instant',\n block: 'center',\n });\n const selectManager = affineEditorContainerProxy.host?.selection;\n if (!blockElement.path.length || !selectManager) {\n return;\n }\n const newSelection = selectManager.create('block', {\n blockId: blockElement.blockId,\n });\n selectManager.set([newSelection]);\n };\n affineEditorContainerProxy.updateComplete\n .then(() => {\n if (\n blockElement &&\n !scrolledRef.current &&\n !canceled &&\n !hashChangedRef.current\n ) {\n handleScrollToBlock(blockElement);\n scrolledRef.current = true;\n }\n })\n .catch(console.error);\n return () => {\n canceled = true;\n };\n }, [blockElement, affineEditorContainerProxy, mode]);\n\n return (\n \n {mode === 'page' ? (\n \n ) : (\n \n )}\n \n );\n});\n","import { EditorLoading } from '@affine/component/page-detail-skeleton';\nimport { assertExists } from '@blocksuite/global/utils';\nimport type { AffineEditorContainer } from '@blocksuite/presets';\nimport type { Doc } from '@blocksuite/store';\nimport { use } from 'foxact/use';\nimport type { CSSProperties, ReactElement } from 'react';\nimport {\n forwardRef,\n memo,\n Suspense,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\n\nimport { BlocksuiteEditorContainer } from './blocksuite-editor-container';\nimport { NoPageRootError } from './no-page-error';\n\nexport type ErrorBoundaryProps = {\n onReset?: () => void;\n};\n\nexport type EditorProps = {\n page: Doc;\n mode: 'page' | 'edgeless';\n shared?: boolean;\n defaultSelectedBlockId?: string;\n // on Editor instance instantiated\n onLoadEditor?: (editor: AffineEditorContainer) => () => void;\n style?: CSSProperties;\n className?: string;\n};\n\nfunction usePageRoot(page: Doc) {\n if (!page.ready) {\n page.load();\n }\n\n if (!page.root) {\n use(\n new Promise((resolve, reject) => {\n const disposable = page.slots.rootAdded.once(() => {\n resolve();\n });\n window.setTimeout(() => {\n disposable.dispose();\n reject(new NoPageRootError(page));\n }, 20 * 1000);\n })\n );\n }\n\n return page.root;\n}\n\nconst BlockSuiteEditorImpl = forwardRef(\n function BlockSuiteEditorImpl(\n {\n mode,\n page,\n className,\n defaultSelectedBlockId,\n onLoadEditor,\n shared,\n style,\n },\n ref\n ) {\n usePageRoot(page);\n assertExists(page, 'page should not be null');\n const editorDisposeRef = useRef<() => void>(() => {});\n const editorRef = useRef(null);\n\n const onRefChange = useCallback(\n (editor: AffineEditorContainer | null) => {\n editorRef.current = editor;\n if (ref) {\n if (typeof ref === 'function') {\n ref(editor);\n } else {\n ref.current = editor;\n }\n }\n if (editor && onLoadEditor) {\n editorDisposeRef.current = onLoadEditor(editor);\n }\n },\n [onLoadEditor, ref]\n );\n\n useEffect(() => {\n const disposable = page.slots.blockUpdated.once(() => {\n page.collection.setDocMeta(page.id, {\n updatedDate: Date.now(),\n });\n });\n return () => {\n disposable.dispose();\n };\n }, [page]);\n\n useEffect(() => {\n return () => {\n editorDisposeRef.current();\n };\n }, []);\n\n return (\n \n );\n }\n);\n\nexport const BlockSuiteEditor = memo(\n forwardRef(\n function BlockSuiteEditor(props, ref): ReactElement {\n return (\n }>\n \n \n );\n }\n )\n);\n\nBlockSuiteEditor.displayName = 'BlockSuiteEditor';\n","export enum AIOnboardingType {\n GENERAL = 'dismissAiOnboarding',\n EDGELESS = 'dismissAiOnboardingEdgeless',\n LOCAL = 'dismissAiOnboardingLocal',\n}\n","import { AIOnboardingType } from './type';\n\nfunction createStorageEvent(key: string, newValue: string) {\n const event = new StorageEvent('storage', {\n key,\n newValue,\n oldValue: localStorage.getItem(key),\n storageArea: localStorage,\n });\n window.dispatchEvent(event);\n}\n\nconst setItem = function (key: string, value: string) {\n const oldValue = localStorage.getItem(key);\n localStorage.setItem.call(localStorage, key, value);\n if (oldValue !== value) createStorageEvent(key, value);\n};\n\n/**\n * Show/Hide AI onboarding manually\n */\nexport const toggleGeneralAIOnboarding = (show = true) => {\n setItem(AIOnboardingType.GENERAL, show ? 'false' : 'true');\n};\n\n/**\n * Show/Hide local AI toast manually\n */\nexport const toggleLocalAIOnboarding = (show = true) => {\n setItem(AIOnboardingType.LOCAL, show ? 'false' : 'true');\n};\n\n/**\n * Show/Hide edgeless AI toast manually\n */\nexport const toggleEdgelessAIOnboarding = (show = true) => {\n setItem(AIOnboardingType.EDGELESS, show ? 'false' : 'true');\n};\n","import { showAILoginRequiredAtom } from '@affine/core/components/affine/auth/ai-login-required';\nimport {\n cleanupCopilotSessionMutation,\n createCopilotMessageMutation,\n createCopilotSessionMutation,\n fetcher as defaultFetcher,\n forkCopilotSessionMutation,\n getBaseUrl,\n getCopilotHistoriesQuery,\n getCopilotHistoryIdsQuery,\n getCopilotSessionsQuery,\n GraphQLError,\n type GraphQLQuery,\n type QueryOptions,\n type RequestOptions,\n UserFriendlyError,\n} from '@affine/graphql';\nimport {\n GeneralNetworkError,\n PaymentRequiredError,\n UnauthorizedError,\n} from '@blocksuite/blocks';\nimport { getCurrentStore } from '@toeverything/infra';\n\ntype OptionsField =\n RequestOptions['variables'] extends { options: infer U } ? U : never;\n\nfunction codeToError(error: UserFriendlyError) {\n switch (error.status) {\n case 401:\n return new UnauthorizedError();\n case 402:\n return new PaymentRequiredError();\n default:\n return new GeneralNetworkError(\n error.code\n ? `${error.code}: ${error.message}\\nIdentify: ${error.name}`\n : undefined\n );\n }\n}\n\nexport function resolveError(err: any) {\n const standardError =\n err instanceof GraphQLError\n ? new UserFriendlyError(err.extensions)\n : UserFriendlyError.fromAnyError(err);\n\n return codeToError(standardError);\n}\n\nexport function handleError(src: any) {\n const err = resolveError(src);\n if (err instanceof UnauthorizedError) {\n getCurrentStore().set(showAILoginRequiredAtom, true);\n }\n return err;\n}\n\nconst fetcher = async (\n options: QueryOptions\n) => {\n try {\n return await defaultFetcher(options);\n } catch (err) {\n throw handleError(err);\n }\n};\n\nexport class CopilotClient {\n readonly backendUrl = getBaseUrl();\n\n async createSession(\n options: OptionsField\n ) {\n const res = await fetcher({\n query: createCopilotSessionMutation,\n variables: {\n options,\n },\n });\n return res.createCopilotSession;\n }\n\n async forkSession(options: OptionsField) {\n const res = await fetcher({\n query: forkCopilotSessionMutation,\n variables: {\n options,\n },\n });\n return res.forkCopilotSession;\n }\n\n async createMessage(\n options: OptionsField\n ) {\n const res = await fetcher({\n query: createCopilotMessageMutation,\n variables: {\n options,\n },\n });\n return res.createCopilotMessage;\n }\n\n async getSessions(workspaceId: string) {\n const res = await fetcher({\n query: getCopilotSessionsQuery,\n variables: {\n workspaceId,\n },\n });\n return res.currentUser?.copilot;\n }\n\n async getHistories(\n workspaceId: string,\n docId?: string,\n options?: RequestOptions<\n typeof getCopilotHistoriesQuery\n >['variables']['options']\n ) {\n const res = await fetcher({\n query: getCopilotHistoriesQuery,\n variables: {\n workspaceId,\n docId,\n options,\n },\n });\n\n return res.currentUser?.copilot?.histories;\n }\n\n async getHistoryIds(\n workspaceId: string,\n docId?: string,\n options?: RequestOptions<\n typeof getCopilotHistoriesQuery\n >['variables']['options']\n ) {\n const res = await fetcher({\n query: getCopilotHistoryIdsQuery,\n variables: {\n workspaceId,\n docId,\n options,\n },\n });\n\n return res.currentUser?.copilot?.histories;\n }\n\n async cleanupSessions(input: {\n workspaceId: string;\n docId: string;\n sessionIds: string[];\n }) {\n const res = await fetcher({\n query: cleanupCopilotSessionMutation,\n variables: {\n input,\n },\n });\n return res.cleanupCopilotSession;\n }\n\n async chatText({\n sessionId,\n messageId,\n signal,\n }: {\n sessionId: string;\n messageId?: string;\n signal?: AbortSignal;\n }) {\n const url = new URL(`${this.backendUrl}/api/copilot/chat/${sessionId}`);\n if (messageId) {\n url.searchParams.set('messageId', messageId);\n }\n const response = await fetch(url.toString(), { signal });\n return response.text();\n }\n\n // Text or image to text\n chatTextStream(\n {\n sessionId,\n messageId,\n }: {\n sessionId: string;\n messageId?: string;\n },\n endpoint = 'stream'\n ) {\n const url = new URL(\n `${this.backendUrl}/api/copilot/chat/${sessionId}/${endpoint}`\n );\n if (messageId) url.searchParams.set('messageId', messageId);\n return new EventSource(url.toString());\n }\n\n // Text or image to images\n imagesStream(\n sessionId: string,\n messageId?: string,\n seed?: string,\n endpoint = 'images'\n ) {\n const url = new URL(\n `${this.backendUrl}/api/copilot/chat/${sessionId}/${endpoint}`\n );\n if (messageId) {\n url.searchParams.set('messageId', messageId);\n }\n if (seed) {\n url.searchParams.set('seed', seed);\n }\n return new EventSource(url);\n }\n}\n","import { handleError } from './copilot-client';\n\nexport function delay(ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport type AffineTextEvent = {\n type: 'attachment' | 'message';\n data: string;\n};\n\ntype AffineTextStream = AsyncIterable;\n\ntype toTextStreamOptions = {\n timeout?: number;\n signal?: AbortSignal;\n};\n\n// todo(@Peng): may need to extend the error type\nconst safeParseError = (data: string): { status: number } => {\n try {\n return JSON.parse(data);\n } catch {\n return {\n status: 500,\n };\n }\n};\n\nexport function toTextStream(\n eventSource: EventSource,\n { timeout, signal }: toTextStreamOptions = {}\n): AffineTextStream {\n return {\n [Symbol.asyncIterator]: async function* () {\n const messageQueue: AffineTextEvent[] = [];\n let resolveMessagePromise: () => void;\n let rejectMessagePromise: (err: Error) => void;\n\n function resetMessagePromise() {\n if (resolveMessagePromise) {\n resolveMessagePromise();\n }\n return new Promise((resolve, reject) => {\n resolveMessagePromise = resolve;\n rejectMessagePromise = reject;\n });\n }\n let messagePromise = resetMessagePromise();\n\n function messageListener(event: MessageEvent) {\n messageQueue.push({\n type: event.type as 'attachment' | 'message',\n data: event.data as string,\n });\n messagePromise = resetMessagePromise();\n }\n\n eventSource.addEventListener('message', messageListener);\n eventSource.addEventListener('attachment', messageListener);\n\n eventSource.addEventListener('error', event => {\n const errorMessage = (event as unknown as { data: string }).data;\n // if there is data in Error event, it means the server sent an error message\n // otherwise, the stream is finished successfully\n if (event.type === 'error' && errorMessage) {\n // try to parse the error message as a JSON object\n const error = safeParseError(errorMessage);\n rejectMessagePromise(handleError(error));\n } else {\n resolveMessagePromise();\n }\n eventSource.close();\n });\n\n try {\n while (\n eventSource.readyState !== EventSource.CLOSED &&\n !signal?.aborted\n ) {\n if (messageQueue.length === 0) {\n // Wait for the next message or timeout\n await (timeout\n ? Promise.race([\n messagePromise,\n delay(timeout).then(() => {\n if (!signal?.aborted) {\n throw new Error('Timeout');\n }\n }),\n ])\n : messagePromise);\n } else if (messageQueue.length > 0) {\n const top = messageQueue.shift();\n if (top) {\n yield top;\n }\n }\n }\n } finally {\n eventSource.close();\n }\n },\n };\n}\n","import { AIProvider } from '@affine/core/blocksuite/presets/ai';\nimport type { ForkChatSessionInput } from '@affine/graphql';\nimport { assertExists } from '@blocksuite/global/utils';\nimport { partition } from 'lodash-es';\n\nimport { CopilotClient } from './copilot-client';\nimport { delay, toTextStream } from './event-source';\nimport type { PromptKey } from './prompt';\n\nconst TIMEOUT = 50000;\n\nconst client = new CopilotClient();\n\nexport type TextToTextOptions = {\n docId: string;\n workspaceId: string;\n promptName?: PromptKey;\n sessionId?: string | Promise;\n content?: string;\n attachments?: (string | Blob | File)[];\n params?: Record;\n timeout?: number;\n stream?: boolean;\n signal?: AbortSignal;\n retry?: boolean;\n workflow?: boolean;\n isRootSession?: boolean;\n postfix?: (text: string) => string;\n};\n\nexport type ToImageOptions = TextToTextOptions & {\n seed?: string;\n};\n\nexport function createChatSession({\n workspaceId,\n docId,\n}: {\n workspaceId: string;\n docId: string;\n}) {\n return client.createSession({\n workspaceId,\n docId,\n promptName: 'chat:gpt4',\n });\n}\n\nexport function forkCopilotSession(forkChatSessionInput: ForkChatSessionInput) {\n return client.forkSession(forkChatSessionInput);\n}\n\nasync function resizeImage(blob: Blob | File): Promise {\n let src = '';\n try {\n src = URL.createObjectURL(blob);\n const img = new Image();\n img.src = src;\n await new Promise(resolve => {\n img.onload = resolve;\n });\n\n const canvas = document.createElement('canvas');\n // keep aspect ratio\n const scale = Math.min(1024 / img.width, 1024 / img.height);\n canvas.width = Math.floor(img.width * scale);\n canvas.height = Math.floor(img.height * scale);\n\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.imageSmoothingQuality = 'high';\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n return new Promise(resolve =>\n canvas.toBlob(blob => resolve(blob), 'image/jpeg', 0.8)\n );\n }\n } catch (e) {\n console.error(e);\n } finally {\n if (src) URL.revokeObjectURL(src);\n }\n return null;\n}\n\nasync function createSessionMessage({\n docId,\n workspaceId,\n promptName,\n content,\n sessionId: providedSessionId,\n attachments,\n params,\n retry = false,\n}: TextToTextOptions) {\n if (!promptName && !providedSessionId) {\n throw new Error('promptName or sessionId is required');\n }\n const hasAttachments = attachments && attachments.length > 0;\n const sessionId = await (providedSessionId ??\n client.createSession({\n workspaceId,\n docId,\n promptName: promptName as string,\n }));\n\n const options: Parameters[0] = {\n sessionId,\n content,\n params,\n };\n\n if (hasAttachments) {\n const [stringAttachments, blobs] = partition(\n attachments,\n attachment => typeof attachment === 'string'\n ) as [string[], (Blob | File)[]];\n options.attachments = stringAttachments;\n options.blobs = (\n await Promise.all(\n blobs.map(resizeImage).map(async blob => {\n const file = await blob;\n if (!file) return null;\n return new File([file], sessionId, {\n type: file.type,\n });\n })\n )\n ).filter(Boolean) as File[];\n }\n if (retry)\n return {\n sessionId,\n };\n\n const messageId = await client.createMessage(options);\n return {\n messageId,\n sessionId,\n };\n}\n\nexport function textToText({\n docId,\n workspaceId,\n promptName,\n content,\n attachments,\n params,\n sessionId,\n stream,\n signal,\n timeout = TIMEOUT,\n retry = false,\n workflow = false,\n isRootSession = false,\n postfix,\n}: TextToTextOptions) {\n let _sessionId: string;\n let _messageId: string | undefined;\n\n if (stream) {\n return {\n [Symbol.asyncIterator]: async function* () {\n if (retry) {\n const retrySessionId =\n (await sessionId) ?? AIProvider.LAST_ACTION_SESSIONID;\n assertExists(retrySessionId, 'retry sessionId is required');\n _sessionId = retrySessionId;\n _messageId = undefined;\n } else {\n const message = await createSessionMessage({\n docId,\n workspaceId,\n promptName,\n content,\n attachments,\n params,\n sessionId,\n retry,\n });\n _sessionId = message.sessionId;\n _messageId = message.messageId;\n }\n\n const eventSource = client.chatTextStream(\n {\n sessionId: _sessionId,\n messageId: _messageId,\n },\n workflow ? 'workflow' : undefined\n );\n AIProvider.LAST_ACTION_SESSIONID = _sessionId;\n if (isRootSession) {\n AIProvider.LAST_ROOT_SESSION_ID = _sessionId;\n }\n\n if (signal) {\n if (signal.aborted) {\n eventSource.close();\n return;\n }\n signal.onabort = () => {\n eventSource.close();\n };\n }\n if (postfix) {\n const messages: string[] = [];\n for await (const event of toTextStream(eventSource, {\n timeout,\n signal,\n })) {\n if (event.type === 'message') {\n messages.push(event.data);\n }\n }\n yield postfix(messages.join(''));\n } else {\n for await (const event of toTextStream(eventSource, {\n timeout,\n signal,\n })) {\n if (event.type === 'message') {\n yield event.data;\n }\n }\n }\n },\n };\n } else {\n return Promise.race([\n timeout\n ? delay(timeout).then(() => {\n throw new Error('Timeout');\n })\n : null,\n (async function () {\n if (retry) {\n const retrySessionId =\n (await sessionId) ?? AIProvider.LAST_ACTION_SESSIONID;\n assertExists(retrySessionId, 'retry sessionId is required');\n _sessionId = retrySessionId;\n _messageId = undefined;\n } else {\n const message = await createSessionMessage({\n docId,\n workspaceId,\n promptName,\n content,\n attachments,\n params,\n sessionId,\n });\n _sessionId = message.sessionId;\n _messageId = message.messageId;\n }\n\n AIProvider.LAST_ACTION_SESSIONID = _sessionId;\n if (isRootSession) {\n AIProvider.LAST_ROOT_SESSION_ID = _sessionId;\n }\n\n return client.chatText({\n sessionId: _sessionId,\n messageId: _messageId,\n });\n })(),\n ]);\n }\n}\n\nexport const listHistories = client.getHistories;\n\nexport const listHistoryIds = client.getHistoryIds;\n\n// Only one image is currently being processed\nexport function toImage({\n docId,\n workspaceId,\n promptName,\n content,\n attachments,\n params,\n seed,\n sessionId,\n signal,\n timeout = TIMEOUT,\n retry = false,\n workflow = false,\n}: ToImageOptions) {\n let _sessionId: string;\n let _messageId: string | undefined;\n return {\n [Symbol.asyncIterator]: async function* () {\n if (retry) {\n const retrySessionId =\n (await sessionId) ?? AIProvider.LAST_ACTION_SESSIONID;\n assertExists(retrySessionId, 'retry sessionId is required');\n _sessionId = retrySessionId;\n _messageId = undefined;\n } else {\n const { messageId, sessionId } = await createSessionMessage({\n docId,\n workspaceId,\n promptName,\n content,\n attachments,\n params,\n });\n _sessionId = sessionId;\n _messageId = messageId;\n }\n\n const eventSource = client.imagesStream(\n _sessionId,\n _messageId,\n seed,\n workflow ? 'workflow' : undefined\n );\n AIProvider.LAST_ACTION_SESSIONID = _sessionId;\n\n for await (const event of toTextStream(eventSource, {\n timeout,\n signal,\n })) {\n if (event.type === 'attachment') {\n yield event.data;\n }\n }\n },\n };\n}\n\nexport function cleanupSessions({\n workspaceId,\n docId,\n sessionIds,\n}: {\n workspaceId: string;\n docId: string;\n sessionIds: string[];\n}) {\n return client.cleanupSessions({ workspaceId, docId, sessionIds });\n}\n","import { AIProvider } from '@affine/core/blocksuite/presets/ai';\nimport { mixpanel, track } from '@affine/core/mixpanel';\nimport type { EditorHost } from '@blocksuite/block-std';\nimport type { BlockModel } from '@blocksuite/store';\nimport { lowerCase, omit } from 'lodash-es';\n\ntype ElementModel = BlockSuite.SurfaceElementModel;\n\ntype AIActionEventName =\n | 'AI action invoked'\n | 'AI action aborted'\n | 'AI result discarded'\n | 'AI result accepted';\n\ntype AIActionEventProperties = {\n page: 'doc' | 'edgeless';\n segment:\n | 'AI action panel'\n | 'right side bar'\n | 'inline chat panel'\n | 'AI result panel'\n | 'AI chat block';\n module:\n | 'exit confirmation'\n | 'AI action panel'\n | 'AI chat panel'\n | 'inline chat panel'\n | 'AI result panel'\n | 'AI chat block';\n control:\n | 'stop button'\n | 'format toolbar'\n | 'AI chat send button'\n | 'Block action bar'\n | 'paywall'\n | 'policy wall'\n | 'server error'\n | 'login required'\n | 'insert'\n | 'replace'\n | 'use as caption'\n | 'discard'\n | 'retry'\n | 'add note'\n | 'add page'\n | 'continue in chat';\n type:\n | 'doc' // synced doc\n | 'note' // note shape\n | 'text'\n | 'image'\n | 'draw object'\n | 'chatbox text'\n | 'other';\n category: string;\n other: Record;\n docId: string;\n workspaceId: string;\n};\n\ntype BlocksuiteActionEvent = Parameters<\n Parameters[0]\n>[0];\n\nconst trackAction = ({\n eventName,\n properties,\n}: {\n eventName: AIActionEventName;\n properties: AIActionEventProperties;\n}) => {\n mixpanel.track(eventName, properties);\n};\n\nconst inferPageMode = (host: EditorHost) => {\n return host.querySelector('affine-page-root') ? 'doc' : 'edgeless';\n};\n\nconst defaultActionOptions = [\n 'stream',\n 'input',\n 'content',\n 'stream',\n 'attachments',\n 'signal',\n 'docId',\n 'workspaceId',\n 'host',\n 'models',\n 'control',\n 'where',\n 'seed',\n];\n\nfunction isElementModel(\n model: BlockModel | ElementModel\n): model is ElementModel {\n return !isBlockModel(model);\n}\n\nfunction isBlockModel(model: BlockModel | ElementModel): model is BlockModel {\n return 'flavour' in model;\n}\n\nfunction inferObjectType(event: BlocksuiteActionEvent) {\n const models: (BlockModel | ElementModel)[] | undefined =\n event.options.models;\n if (!models) {\n if (event.action === 'chat') {\n return 'chatbox text';\n } else if (event.options.attachments?.length) {\n return 'image';\n } else {\n return 'text';\n }\n } else if (models.every(isElementModel)) {\n return 'draw object';\n } else if (models.every(isBlockModel)) {\n const flavour = models[0].flavour;\n if (flavour === 'affine:note') {\n return 'note';\n } else if (\n ['affine:paragraph', 'affine:list', 'affine:code'].includes(flavour)\n ) {\n return 'text';\n } else if (flavour === 'affine:image') {\n return 'image';\n }\n }\n return 'other';\n}\n\nfunction inferSegment(\n event: BlocksuiteActionEvent\n): AIActionEventProperties['segment'] {\n if (event.options.where === 'inline-chat-panel') {\n return 'inline chat panel';\n } else if (event.event.startsWith('result:')) {\n return 'AI result panel';\n } else if (event.options.where === 'chat-panel') {\n return 'right side bar';\n } else if (event.options.where === 'ai-chat-block') {\n return 'AI chat block';\n } else {\n return 'AI action panel';\n }\n}\n\nfunction inferModule(\n event: BlocksuiteActionEvent\n): AIActionEventProperties['module'] {\n if (event.options.where === 'chat-panel') {\n return 'AI chat panel';\n } else if (event.event === 'result:discard') {\n return 'exit confirmation';\n } else if (event.event.startsWith('result:')) {\n return 'AI result panel';\n } else if (event.options.where === 'inline-chat-panel') {\n return 'inline chat panel';\n } else if (event.options.where === 'ai-chat-block') {\n return 'AI chat block';\n } else {\n return 'AI action panel';\n }\n}\n\nfunction inferEventName(\n event: BlocksuiteActionEvent\n): AIActionEventName | null {\n if (['result:discard', 'result:retry'].includes(event.event)) {\n return 'AI result discarded';\n } else if (event.event.startsWith('result:')) {\n return 'AI result accepted';\n } else if (event.event.startsWith('aborted:')) {\n return 'AI action aborted';\n } else if (event.event === 'started') {\n return 'AI action invoked';\n }\n return null;\n}\n\nfunction inferControl(\n event: BlocksuiteActionEvent\n): AIActionEventProperties['control'] {\n if (event.event === 'aborted:stop') {\n return 'stop button';\n } else if (event.event === 'aborted:paywall') {\n return 'paywall';\n } else if (event.event === 'aborted:server-error') {\n return 'server error';\n } else if (event.event === 'aborted:login-required') {\n return 'login required';\n } else if (event.options.control === 'chat-send') {\n return 'AI chat send button';\n } else if (event.options.control === 'block-action-bar') {\n return 'Block action bar';\n } else if (event.event === 'result:add-note') {\n return 'add note';\n } else if (event.event === 'result:add-page') {\n return 'add page';\n } else if (event.event === 'result:continue-in-chat') {\n return 'continue in chat';\n } else if (event.event === 'result:insert') {\n return 'insert';\n } else if (event.event === 'result:replace') {\n return 'replace';\n } else if (event.event === 'result:use-as-caption') {\n return 'use as caption';\n } else if (event.event === 'result:discard') {\n return 'discard';\n } else if (event.event === 'result:retry') {\n return 'retry';\n } else {\n return 'format toolbar';\n }\n}\n\nconst toTrackedOptions = (\n event: BlocksuiteActionEvent\n): {\n eventName: AIActionEventName;\n properties: AIActionEventProperties;\n} | null => {\n const eventName = inferEventName(event);\n\n if (!eventName) return null;\n\n const pageMode = inferPageMode(event.options.host);\n const otherProperties = omit(event.options, defaultActionOptions);\n const type = inferObjectType(event);\n const segment = inferSegment(event);\n const module = inferModule(event);\n const control = inferControl(event);\n const category = lowerCase(event.action);\n\n return {\n eventName,\n properties: {\n page: pageMode,\n segment,\n category,\n module,\n control,\n type,\n other: otherProperties,\n docId: event.options.docId,\n workspaceId: event.options.workspaceId,\n },\n };\n};\n\nexport function setupTracker() {\n AIProvider.slots.requestUpgradePlan.on(() => {\n track.$.paywall.aiAction.viewPlans();\n });\n\n AIProvider.slots.requestLogin.on(() => {\n track.$.$.auth.signIn({\n control: 'aiAction',\n });\n });\n\n AIProvider.slots.actions.on(event => {\n const properties = toTrackedOptions(event);\n if (properties) {\n trackAction(properties);\n }\n });\n}\n","import { notify } from '@affine/component';\nimport { authAtom, openSettingModalAtom } from '@affine/core/atoms';\nimport { AIProvider } from '@affine/core/blocksuite/presets/ai';\nimport { toggleGeneralAIOnboarding } from '@affine/core/components/affine/ai-onboarding/apis';\nimport { track } from '@affine/core/mixpanel';\nimport {\n getBaseUrl,\n type getCopilotHistoriesQuery,\n type RequestOptions,\n} from '@affine/graphql';\nimport { Trans } from '@affine/i18n';\nimport { UnauthorizedError } from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport { getCurrentStore } from '@toeverything/infra';\nimport { z } from 'zod';\n\nimport type { PromptKey } from './prompt';\nimport {\n cleanupSessions,\n createChatSession,\n forkCopilotSession,\n listHistories,\n textToText,\n toImage,\n} from './request';\nimport { setupTracker } from './tracker';\n\nconst filterStyleToPromptName = new Map(\n Object.entries({\n 'Clay style': 'workflow:image-clay',\n 'Pixel style': 'workflow:image-pixel',\n 'Sketch style': 'workflow:image-sketch',\n 'Anime style': 'workflow:image-anime',\n })\n);\n\nconst processTypeToPromptName = new Map(\n Object.entries({\n Clearer: 'debug:action:fal-upscaler',\n 'Remove background': 'debug:action:fal-remove-bg',\n 'Convert to sticker': 'debug:action:fal-face-to-sticker',\n })\n);\n\nfunction setupAIProvider() {\n // a single workspace should have only a single chat session\n // user-id:workspace-id:doc-id -> chat session id\n const chatSessions = new Map>();\n\n async function getChatSessionId(workspaceId: string, docId: string) {\n const userId = (await AIProvider.userInfo)?.id;\n\n if (!userId) {\n throw new UnauthorizedError();\n }\n\n const storeKey = `${userId}:${workspaceId}:${docId}`;\n if (!chatSessions.has(storeKey)) {\n chatSessions.set(\n storeKey,\n createChatSession({\n workspaceId,\n docId,\n })\n );\n }\n try {\n const sessionId = await chatSessions.get(storeKey);\n assertExists(sessionId);\n return sessionId;\n } catch (err) {\n // do not cache the error\n chatSessions.delete(storeKey);\n throw err;\n }\n }\n\n //#region actions\n AIProvider.provide('chat', options => {\n const sessionId =\n options.sessionId ?? getChatSessionId(options.workspaceId, options.docId);\n return textToText({\n ...options,\n content: options.input,\n sessionId,\n });\n });\n\n AIProvider.provide('summary', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Summary',\n });\n });\n\n AIProvider.provide('translate', options => {\n return textToText({\n ...options,\n promptName: 'Translate to',\n content: options.input,\n params: {\n language: options.lang,\n },\n });\n });\n\n AIProvider.provide('changeTone', options => {\n return textToText({\n ...options,\n params: {\n tone: options.tone.toLowerCase(),\n },\n content: options.input,\n promptName: 'Change tone to',\n });\n });\n\n AIProvider.provide('improveWriting', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Improve writing for it',\n });\n });\n\n AIProvider.provide('improveGrammar', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Improve grammar for it',\n });\n });\n\n AIProvider.provide('fixSpelling', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Fix spelling for it',\n });\n });\n\n AIProvider.provide('createHeadings', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Create headings',\n });\n });\n\n AIProvider.provide('makeLonger', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Make it longer',\n });\n });\n\n AIProvider.provide('makeShorter', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Make it shorter',\n });\n });\n\n AIProvider.provide('checkCodeErrors', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Check code error',\n });\n });\n\n AIProvider.provide('explainCode', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Explain this code',\n });\n });\n\n AIProvider.provide('writeArticle', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Write an article about this',\n });\n });\n\n AIProvider.provide('writeTwitterPost', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Write a twitter about this',\n });\n });\n\n AIProvider.provide('writePoem', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Write a poem about this',\n });\n });\n\n AIProvider.provide('writeOutline', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Write outline',\n });\n });\n\n AIProvider.provide('writeBlogPost', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Write a blog post about this',\n });\n });\n\n AIProvider.provide('brainstorm', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Brainstorm ideas about this',\n });\n });\n\n AIProvider.provide('findActions', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Find action items from it',\n });\n });\n\n AIProvider.provide('brainstormMindmap', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'workflow:brainstorm',\n workflow: true,\n });\n });\n\n AIProvider.provide('expandMindmap', options => {\n assertExists(options.input, 'expandMindmap action requires input');\n return textToText({\n ...options,\n params: {\n mindmap: options.mindmap,\n node: options.input,\n },\n content: options.input,\n promptName: 'Expand mind map',\n });\n });\n\n AIProvider.provide('explain', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Explain this',\n });\n });\n\n AIProvider.provide('explainImage', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Explain this image',\n });\n });\n\n AIProvider.provide('makeItReal', options => {\n let promptName: PromptKey = 'Make it real';\n let content = options.content || '';\n\n // wireframes\n if (options.attachments?.length) {\n content = `Here are the latest wireframes. Could you make a new website based on these wireframes and notes and send back just the html file?\nHere are our design notes:\\n ${content}.`;\n } else {\n // notes\n promptName = 'Make it real with text';\n content = `Here are the latest notes: \\n ${content}.\nCould you make a new website based on these notes and send back just the html file?`;\n }\n\n return textToText({\n ...options,\n content,\n promptName,\n });\n });\n\n AIProvider.provide('createSlides', options => {\n const SlideSchema = z.object({\n page: z.number(),\n type: z.enum(['name', 'title', 'content']),\n content: z.string(),\n });\n type Slide = z.infer;\n const parseJson = (json: string) => {\n try {\n return SlideSchema.parse(JSON.parse(json));\n } catch {\n return null;\n }\n };\n // TODO(@darkskygit): move this to backend's workflow after workflow support custom code action\n const postfix = (text: string): string => {\n const slides = text\n .split('\\n')\n .map(parseJson)\n .filter((v): v is Slide => !!v);\n return slides\n .map(slide => {\n if (slide.type === 'name') {\n return `- ${slide.content}`;\n } else if (slide.type === 'title') {\n return ` - ${slide.content}`;\n } else if (slide.content.includes('\\n')) {\n return slide.content\n .split('\\n')\n .map(c => ` - ${c}`)\n .join('\\n');\n } else {\n return ` - ${slide.content}`;\n }\n })\n .join('\\n');\n };\n return textToText({\n ...options,\n content: options.input,\n promptName: 'workflow:presentation',\n workflow: true,\n postfix,\n });\n });\n\n AIProvider.provide('createImage', options => {\n // test to image\n let promptName: PromptKey = 'debug:action:dalle3';\n // image to image\n if (options.attachments?.length) {\n promptName = 'debug:action:fal-sd15';\n }\n return toImage({\n ...options,\n promptName,\n });\n });\n\n AIProvider.provide('filterImage', options => {\n // test to image\n const promptName = filterStyleToPromptName.get(options.style as string);\n return toImage({\n ...options,\n timeout: 120000,\n promptName: promptName as PromptKey,\n workflow: !!promptName?.startsWith('workflow:'),\n });\n });\n\n AIProvider.provide('processImage', options => {\n // test to image\n const promptName = processTypeToPromptName.get(\n options.type as string\n ) as PromptKey;\n return toImage({\n ...options,\n timeout: 120000,\n promptName,\n });\n });\n\n AIProvider.provide('generateCaption', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Generate a caption',\n });\n });\n\n AIProvider.provide('continueWriting', options => {\n return textToText({\n ...options,\n content: options.input,\n promptName: 'Continue writing',\n });\n });\n //#endregion\n\n AIProvider.provide('histories', {\n actions: async (\n workspaceId: string,\n docId?: string\n ): Promise => {\n // @ts-expect-error - 'action' is missing in server impl\n return (\n (await listHistories(workspaceId, docId, {\n action: true,\n })) ?? []\n );\n },\n chats: async (\n workspaceId: string,\n docId?: string,\n options?: RequestOptions<\n typeof getCopilotHistoriesQuery\n >['variables']['options']\n ): Promise => {\n // @ts-expect-error - 'action' is missing in server impl\n return (await listHistories(workspaceId, docId, options)) ?? [];\n },\n cleanup: async (\n workspaceId: string,\n docId: string,\n sessionIds: string[]\n ) => {\n await cleanupSessions({ workspaceId, docId, sessionIds });\n },\n ids: async (\n workspaceId: string,\n docId?: string,\n options?: RequestOptions<\n typeof getCopilotHistoriesQuery\n >['variables']['options']\n ): Promise => {\n // @ts-expect-error - 'role' is missing type in server impl\n return await listHistories(workspaceId, docId, options);\n },\n });\n\n AIProvider.provide('photoEngine', {\n async searchImages(options): Promise {\n const url = new URL(getBaseUrl() + '/api/copilot/unsplash/photos');\n url.searchParams.set('query', options.query);\n const result: {\n results: {\n urls: {\n regular: string;\n };\n }[];\n } = await fetch(url.toString()).then(res => res.json());\n return result.results.map(r => {\n const url = new URL(r.urls.regular);\n url.searchParams.set('fit', 'crop');\n url.searchParams.set('crop', 'edges');\n url.searchParams.set('dpr', (window.devicePixelRatio ?? 2).toString());\n url.searchParams.set('w', `${options.width}`);\n url.searchParams.set('h', `${options.height}`);\n return url.toString();\n });\n },\n });\n\n AIProvider.provide('onboarding', toggleGeneralAIOnboarding);\n\n AIProvider.provide('forkChat', options => {\n return forkCopilotSession(options);\n });\n\n AIProvider.slots.requestUpgradePlan.on(() => {\n getCurrentStore().set(openSettingModalAtom, {\n activeTab: 'billing',\n open: true,\n });\n track.$.paywall.aiAction.viewPlans();\n });\n\n AIProvider.slots.requestLogin.on(() => {\n getCurrentStore().set(authAtom, s => ({\n ...s,\n openModal: true,\n }));\n });\n\n AIProvider.slots.requestRunInEdgeless.on(() => {\n notify.warning({\n title: ,\n });\n });\n\n setupTracker();\n}\n\nsetupAIProvider();\n","import type { Doc } from '@blocksuite/store';\nimport type { Map as YMap } from 'yjs';\n\n/**\n * TODO(@eyhn): Define error to unexpected state together in the future.\n */\nexport class NoPageRootError extends Error {\n constructor(public page: Doc) {\n super('Page root not found when render editor!');\n\n // Log info to let sentry collect more message\n const hasExpectSpace = Array.from(page.rootDoc.spaces.values()).some(\n doc => page.spaceDoc.guid === doc.guid\n );\n const blocks = page.spaceDoc.getMap('blocks') as YMap>;\n const havePageBlock = Array.from(blocks.values()).some(\n block => block.get('sys:flavour') === 'affine:page'\n );\n console.info(\n 'NoPageRootError current data: %s',\n JSON.stringify({\n expectPageId: page.id,\n expectGuid: page.spaceDoc.guid,\n hasExpectSpace,\n blockSize: blocks.size,\n havePageBlock,\n })\n );\n }\n}\n","import type { InlineEditProps } from '@affine/component';\nimport { InlineEdit } from '@affine/component';\nimport {\n useBlockSuiteDocMeta,\n useDocMetaHelper,\n} from '@affine/core/hooks/use-block-suite-page-meta';\nimport type { DocCollection } from '@affine/core/shared';\nimport clsx from 'clsx';\nimport type { HTMLAttributes } from 'react';\nimport { useCallback } from 'react';\n\nimport * as styles from './style.css';\n\nexport interface BlockSuiteHeaderTitleProps {\n docCollection: DocCollection;\n pageId: string;\n /** if set, title cannot be edited */\n isPublic?: boolean;\n inputHandleRef?: InlineEditProps['handleRef'];\n className?: string;\n onEditSave?: () => void;\n}\n\nconst inputAttrs = {\n 'data-testid': 'title-content',\n} as HTMLAttributes;\nexport const BlocksuiteHeaderTitle = (props: BlockSuiteHeaderTitleProps) => {\n const { docCollection, pageId, isPublic, inputHandleRef, onEditSave } = props;\n const currentPage = docCollection.getDoc(pageId);\n const pageMeta = useBlockSuiteDocMeta(docCollection).find(\n meta => meta.id === currentPage?.id\n );\n const title = pageMeta?.title;\n const { setDocTitle } = useDocMetaHelper(docCollection);\n\n const onChange = useCallback(\n (v: string) => {\n onEditSave?.();\n setDocTitle(currentPage?.id || '', v);\n },\n [currentPage?.id, onEditSave, setDocTitle]\n );\n\n return (\n \n );\n};\n","import \"../core/src/components/blocksuite/block-suite-header/title/style.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/blocksuite/block-suite-header/title/style.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LnVqYzc5ZzAgewogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgY29sb3I6IHZhcigtLWFmZmluZS10ZXh0LXByaW1hcnktY29sb3IpOwp9Ci51amM3OWcwW2RhdGEtZWRpdGluZz0idHJ1ZSJdIHsKICAtd2Via2l0LWFwcC1yZWdpb246IG5vLWRyYWc7Cn0=\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var title = 'ujc79g0';","import { toast } from '@affine/component';\nimport { useDocCollectionHelper } from '@affine/core/hooks/use-block-suite-workspace-helper';\nimport { WorkbenchService } from '@affine/core/modules/workbench';\nimport { DocsService, initEmptyPage, useService } from '@toeverything/infra';\nimport { useCallback, useMemo } from 'react';\n\nimport type { DocCollection } from '../../../shared';\n\nexport const usePageHelper = (docCollection: DocCollection) => {\n const workbench = useService(WorkbenchService).workbench;\n const { createDoc } = useDocCollectionHelper(docCollection);\n const docRecordList = useService(DocsService).list;\n\n const isPreferredEdgeless = useCallback(\n (pageId: string) =>\n docRecordList.doc$(pageId).value?.mode$.value === 'edgeless',\n [docRecordList]\n );\n\n const createPageAndOpen = useCallback(\n (mode?: 'page' | 'edgeless', open?: boolean | 'new-tab') => {\n const page = createDoc();\n initEmptyPage(page);\n docRecordList.doc$(page.id).value?.setMode(mode || 'page');\n if (open !== false)\n workbench.openDoc(page.id, {\n at: open === 'new-tab' ? 'new-tab' : 'active',\n });\n return page;\n },\n [createDoc, docRecordList, workbench]\n );\n\n const createEdgelessAndOpen = useCallback(\n (open?: boolean | 'new-tab') => {\n return createPageAndOpen('edgeless', open);\n },\n [createPageAndOpen]\n );\n\n const importFileAndOpen = useMemo(\n () => async () => {\n const { showImportModal } = await import('@blocksuite/blocks');\n const { promise, resolve, reject } =\n Promise.withResolvers<\n Parameters<\n NonNullable[0]['onSuccess']>\n >[1]\n >();\n const onSuccess = (\n pageIds: string[],\n options: { isWorkspaceFile: boolean; importedCount: number }\n ) => {\n resolve(options);\n toast(\n `Successfully imported ${options.importedCount} Page${\n options.importedCount > 1 ? 's' : ''\n }.`\n );\n if (options.isWorkspaceFile) {\n workbench.openAll();\n return;\n }\n\n if (pageIds.length === 0) {\n return;\n }\n const pageId = pageIds[0];\n workbench.openDoc(pageId);\n };\n showImportModal({\n collection: docCollection,\n onSuccess,\n onFail: message => {\n reject(new Error(message));\n },\n });\n return await promise;\n },\n [docCollection, workbench]\n );\n\n return useMemo(() => {\n return {\n isPreferredEdgeless,\n createPage: (open?: boolean | 'new-tab') =>\n createPageAndOpen('page', open),\n createEdgeless: createEdgelessAndOpen,\n importFile: importFileAndOpen,\n };\n }, [\n isPreferredEdgeless,\n createEdgelessAndOpen,\n createPageAndOpen,\n importFileAndOpen,\n ]);\n};\n","import type { AffineEditorContainer } from '@blocksuite/presets';\nimport { OutlineViewer } from '@blocksuite/presets';\nimport { useCallback, useRef } from 'react';\n\nimport * as styles from './outline-viewer.css';\n\nexport const EditorOutlineViewer = ({\n editor,\n show,\n openOutlinePanel,\n}: {\n editor: AffineEditorContainer | null;\n show: boolean;\n openOutlinePanel: () => void;\n}) => {\n const outlineViewerRef = useRef(null);\n\n const onRefChange = useCallback((container: HTMLDivElement | null) => {\n if (container) {\n if (outlineViewerRef.current === null) {\n console.error('outline viewer should be initialized');\n return;\n }\n\n container.append(outlineViewerRef.current);\n }\n }, []);\n\n if (!editor || !show) return;\n\n if (!outlineViewerRef.current) {\n outlineViewerRef.current = new OutlineViewer();\n }\n if (outlineViewerRef.current.editor !== editor) {\n outlineViewerRef.current.editor = editor;\n }\n if (outlineViewerRef.current.toggleOutlinePanel !== openOutlinePanel) {\n outlineViewerRef.current.toggleOutlinePanel = openOutlinePanel;\n }\n\n return
;\n};\n","import \"../core/src/components/blocksuite/outline-viewer/outline-viewer.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/blocksuite/outline-viewer/outline-viewer.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll81Z2liMXowIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAyMDRweDsKICByaWdodDogMjJweDsKICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAyMDRweCAtIDc2cHgpOwogIGRpc3BsYXk6IGZsZXg7Cn0KQGNvbnRhaW5lciAod2lkdGggPD0gNjQwcHgpIHsKICAuXzVnaWIxejAgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var root = '_5gib1z0';","import \"../core/src/components/page-list/collections/collection-list-item.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/collections/collection-list-item.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA8VWbWvbMBD+nl8hCoUGquK8rlPY/scYYyjS2dYqS0aSm3Sj/31IshPZcZplK+xbfLmX5557fOeH7zMuqtkeMvRrghAXtpb0haBcwn4zQYhpqQ1Bz9TcYUzzXCjADvYO10ZU1Lzg4DD1riWIonQErZZ1CPUpsC2NUE8EZd6yE9yVBM2y7NY/UikKhYWDyhJknQHHSm93hiornNCKoC1lT4XRjeKxEsoe5vYe6Zoy4V7Ckw/Rz2ByqXcElYJzUAF6Y6zHziGnjXQRgJSYlVQVQLocm8nr5OHAAil9qsDFsPSAheB4aD/N8ZVTRzGTgj3RrYRPzjTwLaTsINVaKAemFzYLHh2Jy1UkcasNB4MN5aKxnrpoPplTj0sGMXvaw3n0OBdSAp/Gcn5klHsme/4VqKb9JzhWdI/bcS7WLahKqM42j7akvXlor9bdYA1I6sQzxGSmEApLyB1B+DFm65jo1KIbJ4UCgpRWIaqmnAtVtGGPsV7knhtaFAn3RxRkC7k2EKehlQPlCLq52fSw0a3VsnGhitM1QasIIQgz16Yi8aekDr7c4VV2GziJQFKlL/uttI+pvuNfZ1R9QYG1pAxKLXmiwxPFzGPNNvUBXvIeRAj36ftwkcUgn5TLw7SG9WZn8yVGoYqTGiHtEfbD6m8TjcFctDA7uY6BPr7Q6DMiuTDWYVYKyaOSe+qbrQdyDzGSjoaYiOFxELJInQjK0Oq6d72gdbcgkqzL8b1+Jsfpzs61ctiKnzAQX7CXeNHffavxaiEtFwZYVD3TsqnUCY5Y3VHjNn0mIr29rcOoZHd+NyCM1st6P+3qhOkhtCuFA2xrysLK2Blae3NjwWALEpjrNkkCfx1FN3JM3qTBVtODz65V2DrL3oCRAA3X9FgSpBS1FfZIjgWZJ/cxgfvhLNyzZ9sC04r3D/ebve3tHzL7D308XqfRy4ocJ0AwrdK2B1pPAH18P0Atf1cNJFH+4Bh2p7b3JZUAp/8X+Mj68BYvkVQqw/6SBrZXNfCjsU7kHkF7yUM5UPzCfNn7VYmrDIflux7/8H39DY+5qINlCwAA\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var actionsCellWrapper = '_1dim1xeb';\nexport var dateCell = '_1dim1xea';\nexport var dndCell = '_1dim1xe2';\nexport var dragPageItemOverlay = '_1dim1xe1';\nexport var iconCell = '_1dim1xe8';\nexport var operationsCell = '_1dim1xec';\nexport var root = '_1dim1xe0';\nexport var selectionCell = '_1dim1xe4';\nexport var tagsCell = '_1dim1xe9';\nexport var titleCell = '_1dim1xe5';\nexport var titleCellMain = '_1dim1xe6';\nexport var titleCellPreview = '_1dim1xe7';\nexport var titleIconsWrapper = '_1dim1xe3';","import { Checkbox, useDraggable } from '@affine/component';\nimport { WorkbenchLink } from '@affine/core/modules/workbench';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { stopPropagation } from '@affine/core/utils';\nimport { useI18n } from '@affine/i18n';\nimport type { ForwardedRef, PropsWithChildren } from 'react';\nimport { forwardRef, useCallback, useMemo } from 'react';\n\nimport { selectionStateAtom, useAtom } from '../scoped-atoms';\nimport type { CollectionListItemProps, PageListItemProps } from '../types';\nimport { ColWrapper } from '../utils';\nimport * as styles from './collection-list-item.css';\n\nconst ListTitleCell = ({\n title,\n preview,\n}: Pick) => {\n const t = useI18n();\n return (\n
\n \n {title || t['Untitled']()}\n
\n {preview ? (\n \n {preview}\n
\n ) : null}\n \n );\n};\n\nconst ListIconCell = ({ icon }: Pick) => {\n return (\n
\n {icon}\n
\n );\n};\n\nconst CollectionSelectionCell = ({\n selectable,\n onSelectedChange,\n selected,\n}: Pick<\n CollectionListItemProps,\n 'selectable' | 'onSelectedChange' | 'selected'\n>) => {\n const onSelectionChange = useCallback(\n (_event: React.ChangeEvent) => {\n return onSelectedChange?.();\n },\n [onSelectedChange]\n );\n if (!selectable) {\n return null;\n }\n return (\n
\n \n
\n );\n};\n\nconst CollectionListOperationsCell = ({\n operations,\n}: Pick) => {\n return operations ? (\n
\n {operations}\n
\n ) : null;\n};\n\nexport const CollectionListItem = (props: CollectionListItemProps) => {\n const collectionTitleElement = useMemo(() => {\n return (\n
\n
\n \n \n
\n \n
\n );\n }, [\n props.icon,\n props.onSelectedChange,\n props.selectable,\n props.selected,\n props.title,\n ]);\n\n const { dragRef, dragging, CustomDragPreview } = useDraggable(\n () => ({\n data: {\n entity: {\n type: 'collection',\n id: props.collectionId,\n },\n from: {\n at: 'all-collections:list',\n },\n },\n canDrag: props.draggable,\n }),\n [props.collectionId, props.draggable]\n );\n\n return (\n <>\n \n \n \n
\n \n \n
\n \n
\n
\n \n {props.operations ? (\n \n \n \n ) : null}\n \n \n {collectionTitleElement}\n \n \n );\n};\n\ntype collectionListWrapperProps = PropsWithChildren<\n Pick<\n CollectionListItemProps,\n 'to' | 'collectionId' | 'onClick' | 'draggable'\n > & {\n isDragging: boolean;\n }\n>;\n\nconst CollectionListItemWrapper = forwardRef(\n (\n {\n to,\n isDragging,\n collectionId,\n onClick,\n children,\n draggable,\n }: collectionListWrapperProps,\n ref: ForwardedRef\n ) => {\n const [selectionState, setSelectionActive] = useAtom(selectionStateAtom);\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n if (!selectionState.selectable) {\n return;\n }\n if (e.shiftKey) {\n stopPropagation(e);\n setSelectionActive(true);\n onClick?.();\n return;\n }\n if (selectionState.selectionActive) {\n return onClick?.();\n }\n },\n [\n onClick,\n selectionState.selectable,\n selectionState.selectionActive,\n setSelectionActive,\n ]\n );\n\n const commonProps = useMemo(\n () => ({\n 'data-testid': 'collection-list-item',\n 'data-collection-id': collectionId,\n 'data-draggable': draggable,\n className: styles.root,\n 'data-clickable': !!onClick || !!to,\n 'data-dragging': isDragging,\n onClick: handleClick,\n }),\n [collectionId, draggable, isDragging, onClick, to, handleClick]\n );\n\n if (to) {\n return (\n \n {children}\n \n );\n } else {\n return (\n
\n {children}\n
\n );\n }\n }\n);\n\nCollectionListItemWrapper.displayName = 'CollectionListItemWrapper';\n","import { Button } from '@affine/component';\nimport { useI18n } from '@affine/i18n';\nimport type { ReactElement } from 'react';\n\nimport * as styles from './collection-list-header.css';\n\nexport const CollectionListHeader = ({\n node,\n onCreate,\n}: {\n node: ReactElement | null;\n onCreate: () => void;\n}) => {\n const t = useI18n();\n\n return (\n <>\n
\n
\n {t['com.arms.collections.header']()}\n
\n \n {t['com.arms.collections.empty.new-collection-button']()}\n \n
\n {node}\n \n );\n};\n","import \"../core/src/components/page-list/collections/collection-list-header.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/collections/collection-list-header.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xOGdlYnZmMCB7CiAgaGVpZ2h0OiAxMDBweDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHBhZGRpbmc6IDQ4cHggMTZweCAyMHB4IDI0cHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hZmZpbmUtYmFja2dyb3VuZC1wcmltYXJ5LWNvbG9yKTsKfQouXzE4Z2VidmYxIHsKICBmb250LXNpemU6IHZhcigtLWFmZmluZS1mb250LWgtNSk7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXRleHQtc2Vjb25kYXJ5LWNvbG9yKTsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiA4cHg7CiAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KLl8xOGdlYnZmMiB7CiAgcGFkZGluZzogNnB4IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGJhY2tncm91bmQ6IHZhcigtLWFmZmluZS1iYWNrZ3JvdW5kLXByaW1hcnktY29sb3IpOwogIGZvbnQtc2l6ZTogdmFyKC0tYWZmaW5lLWZvbnQteHMpOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgaGVpZ2h0OiAyOHB4Owp9\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var collectionListHeader = '_18gebvf0';\nexport var collectionListHeaderTitle = '_18gebvf1';\nexport var newCollectionButton = '_18gebvf2';","import { toast } from '@affine/component';\nimport { CollectionService } from '@affine/core/modules/collection';\nimport { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties';\nimport { useI18n } from '@affine/i18n';\nimport { useLiveData, useService, WorkspaceService } from '@toeverything/infra';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { FavoriteTag } from '../components/favorite-tag';\nimport { collectionHeaderColsDef } from '../header-col-def';\nimport { CollectionListItemRenderer } from '../page-group';\nimport { ListTableHeader } from '../page-header';\nimport type { BaseSelectorDialogProps } from '../selector';\nimport { SelectorLayout } from '../selector/selector-layout';\nimport type { CollectionMeta, ListItem } from '../types';\nimport { VirtualizedList } from '../virtualized-list';\n\nconst FavoriteOperation = ({ collection }: { collection: ListItem }) => {\n const t = useI18n();\n const favAdapter = useService(CompatibleFavoriteItemsAdapter);\n const isFavorite = useLiveData(\n favAdapter.isFavorite$(collection.id, 'collection')\n );\n\n const onToggleFavoriteCollection = useCallback(() => {\n favAdapter.toggle(collection.id, 'collection');\n toast(\n isFavorite\n ? t['com.arms.toastMessage.removedFavorites']()\n : t['com.arms.toastMessage.addedFavorites']()\n );\n }, [collection.id, favAdapter, isFavorite, t]);\n\n return (\n \n );\n};\n\nexport const SelectCollection = ({\n init = [],\n onCancel,\n onConfirm,\n}: BaseSelectorDialogProps) => {\n const t = useI18n();\n const collectionService = useService(CollectionService);\n const workspace = useService(WorkspaceService).workspace;\n\n const collections = useLiveData(collectionService.collections$);\n const [selection, setSelection] = useState(init);\n const [keyword, setKeyword] = useState('');\n\n const collectionMetas = useMemo(() => {\n const collectionsList: CollectionMeta[] = collections\n .map(collection => {\n return {\n ...collection,\n title: collection.name,\n };\n })\n .filter(meta => {\n const reg = new RegExp(keyword, 'i');\n return reg.test(meta.title);\n });\n return collectionsList;\n }, [collections, keyword]);\n\n const collectionItemRenderer = useCallback((item: ListItem) => {\n return ;\n }, []);\n\n const collectionHeaderRenderer = useCallback(() => {\n return ;\n }, []);\n\n const collectionOperationRenderer = useCallback((item: ListItem) => {\n return ;\n }, []);\n\n return (\n setSelection([])}\n onCancel={() => onCancel?.()}\n onConfirm={() => onConfirm?.(selection)}\n >\n \n \n );\n};\n","import { useDeleteCollectionInfo } from '@affine/core/hooks/affine/use-delete-collection-info';\nimport type { Collection, DeleteCollectionInfo } from '@affine/env/filter';\nimport { Trans } from '@affine/i18n';\nimport { useService, WorkspaceService } from '@toeverything/infra';\nimport type { ReactElement } from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { CollectionService } from '../../../modules/collection';\nimport { ListFloatingToolbar } from '../components/list-floating-toolbar';\nimport { collectionHeaderColsDef } from '../header-col-def';\nimport { CollectionOperationCell } from '../operation-cell';\nimport { CollectionListItemRenderer } from '../page-group';\nimport { ListTableHeader } from '../page-header';\nimport type { CollectionMeta, ItemListHandle, ListItem } from '../types';\nimport { VirtualizedList } from '../virtualized-list';\nimport { CollectionListHeader } from './collection-list-header';\n\nconst useCollectionOperationsRenderer = ({\n info,\n service,\n}: {\n info: DeleteCollectionInfo;\n service: CollectionService;\n}) => {\n const collectionOperationsRenderer = useCallback(\n (collection: Collection) => {\n return (\n \n );\n },\n [info, service]\n );\n\n return collectionOperationsRenderer;\n};\n\nexport const VirtualizedCollectionList = ({\n collections,\n collectionMetas,\n setHideHeaderCreateNewCollection,\n node,\n handleCreateCollection,\n}: {\n collections: Collection[];\n collectionMetas: CollectionMeta[];\n node: ReactElement | null;\n handleCreateCollection: () => void;\n setHideHeaderCreateNewCollection: (hide: boolean) => void;\n}) => {\n const listRef = useRef(null);\n const [showFloatingToolbar, setShowFloatingToolbar] = useState(false);\n const [selectedCollectionIds, setSelectedCollectionIds] = useState(\n []\n );\n const collectionService = useService(CollectionService);\n const currentWorkspace = useService(WorkspaceService).workspace;\n const info = useDeleteCollectionInfo();\n\n const collectionOperations = useCollectionOperationsRenderer({\n info,\n service: collectionService,\n });\n\n const filteredSelectedCollectionIds = useMemo(() => {\n const ids = collections.map(collection => collection.id);\n return selectedCollectionIds.filter(id => ids.includes(id));\n }, [collections, selectedCollectionIds]);\n\n const hideFloatingToolbar = useCallback(() => {\n listRef.current?.toggleSelectable();\n }, []);\n\n const collectionOperationRenderer = useCallback(\n (item: ListItem) => {\n const collection = item as CollectionMeta;\n return collectionOperations(collection);\n },\n [collectionOperations]\n );\n\n const collectionHeaderRenderer = useCallback(() => {\n return ;\n }, []);\n\n const collectionItemRenderer = useCallback((item: ListItem) => {\n return ;\n }, []);\n\n const handleDelete = useCallback(() => {\n if (selectedCollectionIds.length === 0) {\n return;\n }\n collectionService.deleteCollection(info, ...selectedCollectionIds);\n hideFloatingToolbar();\n }, [collectionService, hideFloatingToolbar, info, selectedCollectionIds]);\n\n return (\n <>\n \n }\n selectedIds={filteredSelectedCollectionIds}\n onSelectedIdsChange={setSelectedCollectionIds}\n items={collectionMetas}\n itemRenderer={collectionItemRenderer}\n rowAsLink\n docCollection={currentWorkspace.docCollection}\n operationsRenderer={collectionOperationRenderer}\n headerRenderer={collectionHeaderRenderer}\n />\n \n
\n {{ count: selectedCollectionIds.length } as any}\n
\n selected\n
\n }\n onClose={hideFloatingToolbar}\n onDelete={handleDelete}\n />\n \n );\n};\n","import type { IconButtonProps } from '@affine/component';\nimport { IconButton } from '@affine/component';\nimport { useI18n } from '@affine/i18n';\nimport { FavoritedIcon, FavoriteIcon } from '@blocksuite/icons/rc';\nimport { cssVar } from '@toeverything/theme';\nimport Lottie from 'lottie-react';\nimport { forwardRef, useCallback, useState } from 'react';\n\nimport favoritedAnimation from './favorited-animation/data.json';\n\nexport const FavoriteTag = forwardRef<\n HTMLButtonElement,\n {\n active: boolean;\n } & Omit\n>(({ active, onClick, ...props }, ref) => {\n const [playAnimation, setPlayAnimation] = useState(false);\n const t = useI18n();\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n onClick?.(e);\n setPlayAnimation(!active);\n },\n [active, onClick]\n );\n return (\n \n {active ? (\n playAnimation ? (\n setPlayAnimation(false)}\n style={{ width: '20px', height: '20px' }}\n />\n ) : (\n \n )\n ) : (\n \n )}\n \n );\n});\nFavoriteTag.displayName = 'FavoriteTag';\n","import * as Popover from '@radix-ui/react-popover';\nimport * as Toolbar from '@radix-ui/react-toolbar';\nimport clsx from 'clsx';\nimport type {\n CSSProperties,\n HTMLAttributes,\n MouseEventHandler,\n PropsWithChildren,\n ReactNode,\n} from 'react';\n\nimport * as styles from './floating-toolbar.css';\n\ninterface FloatingToolbarProps {\n className?: string;\n style?: CSSProperties;\n open?: boolean;\n}\n\ninterface FloatingToolbarButtonProps extends HTMLAttributes {\n icon: ReactNode;\n onClick: MouseEventHandler;\n type?: 'danger' | 'default';\n label?: ReactNode;\n}\n\ninterface FloatingToolbarItemProps {}\n\nexport function FloatingToolbar({\n children,\n style,\n className,\n open,\n}: PropsWithChildren) {\n return (\n \n {/* Having Anchor here to let Popover to calculate the position of the place it is being used */}\n \n \n {/* always pop up on top for now */}\n \n \n {children}\n \n \n \n \n );\n}\n\n// freestyle item that allows user to do anything\nexport function FloatingToolbarItem({\n children,\n}: PropsWithChildren) {\n return
{children}
;\n}\n\n// a typical button that has icon and label\nexport function FloatingToolbarButton({\n icon,\n type,\n onClick,\n className,\n style,\n label,\n ...props\n}: FloatingToolbarButtonProps) {\n return (\n \n
{icon}
\n {label}\n \n );\n}\n\nexport function FloatingToolbarSeparator() {\n return ;\n}\n\nFloatingToolbar.Item = FloatingToolbarItem;\nFloatingToolbar.Separator = FloatingToolbarSeparator;\nFloatingToolbar.Button = FloatingToolbarButton;\n","import \"../core/src/components/page-list/components/floating-toolbar.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/components/floating-toolbar.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA51T24rbMBB9z1cMC4XkQUH2XqtS2N8opZRZa2wPa0uupNxa8u/FsrOOvXHZ9Mlo5uicM0fj51c65A5r8vAz2drwS0r4swCQn+IHwDaYcTgokF/iOTg0PreuVuAzrGgp15/vV125wkDflqls9qsWfFwAJPI9UzLDlIxoZM9xXDy/85jMeLyO+bK7/5nzuFj3ztJIp9k3FR4U5BXtWwhWXBjBgWqvICMTyLXlF+s0OeFQ88YrSGQT0Q1qzaZQcNedO5iCpNmDtxVr2KJbCoF5zoZEz5LZyrpVh98LX6K2OzVG1mQ2fScCC2zeRGo2Ysc6lApq3IvMmkAmtJ2+mnM4r75g9lo4uzF6IjI0ROO4Rnd4szbkdBtz2nFViaxEU5AaEj+9xQj/XWNA4QMG+npjGzI3PyIFGq4xsDVqWGC5Tj0QehJshN2EeaKssp70LFXyT6q7foaYTtKlWBIXZVCQnp5uLiXNWz5/tYH2/qoVivcVsCnJcZg+6snObTrZLAkPbWVQfYiqk4V8mmBUabfkOuTcYBFyYazHeG1q96z/EfKz3SLn7PnS98wj+BgzaD1dFXFuTRCef5OCtP9DL4lxZs2lufu5xtofcPsXgGUqkZsFAAA=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var button = '_1votq06 _1votq05';\nexport var buttonIcon = '_1votq08';\nexport var danger = '_1votq07';\nexport var item = '_1votq05';\nexport var popoverContent = '_1votq03';\nexport var root = '_1votq02';\nexport var separator = '_1votq04';","import {\n CloseIcon,\n DeleteIcon,\n DeletePermanentlyIcon,\n ResetIcon,\n} from '@blocksuite/icons/rc';\nimport type { ReactNode } from 'react';\n\nimport { FloatingToolbar } from './floating-toolbar';\nimport * as styles from './list-floating-toolbar.css';\n\nexport const ListFloatingToolbar = ({\n content,\n onClose,\n open,\n onDelete,\n onRestore,\n}: {\n open: boolean;\n content: ReactNode;\n onClose: () => void;\n onDelete?: () => void;\n onRestore?: () => void;\n}) => {\n return (\n \n {content}\n } />\n \n {!!onRestore && (\n }\n data-testid=\"list-toolbar-restore\"\n />\n )}\n {!!onDelete && (\n : }\n type=\"danger\"\n data-testid=\"list-toolbar-delete\"\n />\n )}\n \n );\n};\n","import \"../core/src/components/page-list/components/list-floating-toolbar.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/components/list-floating-toolbar.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xcWZhcGFtMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMjZweDsKICB3aWR0aDogMTAwJTsKICB6LWluZGV4OiAxOwp9\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var floatingToolbar = '_1qfapam0';","import \"../core/src/components/page-list/docs/page-list-item.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/docs/page-list-item.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA71W247bIBB9z1eglVbaSEvkXJsStf9RVVVFYGzTxWABTrKt9t8rg51gx0madtU3ezzMnDlzmPHk+3Sh+DTdJejXCCEubCnpK0GphMNmhBDTUhuCdtQ8YUzTVCjADg4Ol0YU1Lxi7zCuXXMQWe4IWi5Kf7QOgW1uhHohKKkte8FdTtA0SR7rVypFprBwUFiCrDPgWF7bnaHKCie0ImhL2UtmdKV4yISSycw+I11SJtyrf6uP6B2YVOo9QbngHJSHXhlbY+eQ0kq6AEBKzHKqMiBtjM3obTQ5skDyOpTnop+6x4J3PJYfx/jKqaOYScFe6FbCJ2cq+OZDtpBKLZQD0zk29R4tiYtlIHGrDQeDDeWisgStg/WsTR0qGYTgcQmXweNUSAl8HLLVHaO8JrLjX4Cqmi/esaAH3HRzvkoCqEKo1jYLtqi6ma+u1G1fDUjqxA5CMJMJhSWkjiDclNgS0YpFV04KBQQprfypknIuVNYcW4d8gXpuaJZF1J9QkC2k2kBohlYOlCPo4WHTwUa3VsvK+SxOlwQtAwSvy1SbgoRHSR18ecLL5NFzEoDEQl90S2leY3mHTxdEfUOApaQMci15JMMzwcxCzib0EV50DQKE5/g63GTRyyfm8titfr7pxXiRUajsLIcPe4I9Wf5toCGY8wZmK9ch0Kf7jD4jkgpjHWa5kDwouaO+6aond39G0sEjJmBY947MYyeCErS8765ntKxvSy/qYnisX4hxPrJTrRy24if0xOftOZ53R99yOJsPy4UBFlTPtKwKdYYjZHfUuE2XiUBvZ+owKtlTPRsQRqtFeRi3eXz3ENrnwgG2JWV+ZOwNLWtzZcFgCxKYaydJBH8VRDewS67SYIvx0WffKGyVJFdgRED9Mj2lBClFaYU9kWNBptF6jOB+uAj34ta2wLTi3b19tbaD/UNm/6GO9X0ava3IYQIE0youu6f1CNDH9wPU8HdXQyLl95Zhu2o7P1IRcPr/gJ///w0Mj9pSCyQWynl11y/l9q6aflTWibSG1Sx3jwEUv9Fy9n5ZwnTDfh6vhn+F334DRtyk13cLAAA=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var actionsCellWrapper = '_14nd1fvb';\nexport var dateCell = '_14nd1fva';\nexport var dndCell = '_14nd1fv2';\nexport var dragPageItemOverlay = '_14nd1fv1';\nexport var iconCell = '_14nd1fv8';\nexport var operationsCell = '_14nd1fvc';\nexport var root = '_14nd1fv0';\nexport var selectionCell = '_14nd1fv4';\nexport var tagsCell = '_14nd1fv9';\nexport var titleCell = '_14nd1fv5';\nexport var titleCellMain = '_14nd1fv6';\nexport var titleCellPreview = '_14nd1fv7';\nexport var titleIconsWrapper = '_14nd1fv3';","import { Checkbox, Tooltip, useDraggable } from '@affine/component';\nimport { TagService } from '@affine/core/modules/tag';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { stopPropagation } from '@affine/core/utils';\nimport { i18nTime } from '@affine/i18n';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport type { ForwardedRef, PropsWithChildren } from 'react';\nimport { forwardRef, useCallback, useEffect, useMemo } from 'react';\n\nimport { WorkbenchLink } from '../../../modules/workbench/view/workbench-link';\nimport {\n anchorIndexAtom,\n rangeIdsAtom,\n selectionStateAtom,\n useAtom,\n} from '../scoped-atoms';\nimport type { PageListItemProps } from '../types';\nimport { useAllDocDisplayProperties } from '../use-all-doc-display-properties';\nimport { ColWrapper } from '../utils';\nimport * as styles from './page-list-item.css';\nimport { PageTags } from './page-tags';\n\nconst ListTitleCell = ({\n title,\n preview,\n}: Pick) => {\n const [displayProperties] = useAllDocDisplayProperties();\n return (\n
\n \n {title}\n
\n {preview && displayProperties.displayProperties.bodyNotes ? (\n \n {preview}\n \n ) : null}\n \n );\n};\n\nconst ListIconCell = ({ icon }: Pick) => {\n return (\n
\n {icon}\n
\n );\n};\n\nconst PageSelectionCell = ({\n selectable,\n onSelectedChange,\n selected,\n}: Pick) => {\n const onSelectionChange = useCallback(\n (_event: React.ChangeEvent) => {\n return onSelectedChange?.();\n },\n [onSelectedChange]\n );\n if (!selectable) {\n return null;\n }\n return (\n
\n \n
\n );\n};\n\nexport const PageTagsCell = ({ pageId }: Pick) => {\n const tagList = useService(TagService).tagList;\n const tags = useLiveData(tagList.tagsByPageId$(pageId));\n\n return (\n
\n \n
\n );\n};\n\nconst PageCreateDateCell = ({\n createDate,\n}: Pick) => {\n return (\n \n \n {i18nTime(createDate, {\n relative: true,\n })}\n \n \n );\n};\n\nconst PageUpdatedDateCell = ({\n updatedDate,\n}: Pick) => {\n return (\n \n \n {updatedDate\n ? i18nTime(updatedDate, {\n relative: true,\n })\n : '-'}\n \n \n );\n};\n\nconst PageListOperationsCell = ({\n operations,\n}: Pick) => {\n return operations ? (\n
\n {operations}\n
\n ) : null;\n};\n\nexport const PageListItem = (props: PageListItemProps) => {\n const [displayProperties] = useAllDocDisplayProperties();\n const pageTitleElement = useMemo(() => {\n return (\n
\n
\n \n \n
\n \n
\n );\n }, [\n props.icon,\n props.onSelectedChange,\n props.preview,\n props.selectable,\n props.selected,\n props.title,\n ]);\n\n const { dragRef, CustomDragPreview, dragging } = useDraggable(\n () => ({\n canDrag: props.draggable,\n data: {\n entity: {\n type: 'doc',\n id: props.pageId,\n },\n from: {\n at: 'all-docs:list',\n },\n },\n }),\n [props.draggable, props.pageId]\n );\n\n return (\n <>\n \n \n \n
\n \n \n
\n \n
\n
\n \n
\n \n \n ) : null}\n \n );\n};\n","import { Button, FlexWrapper, Menu } from '@affine/component';\nimport type { Filter, PropertiesMeta } from '@affine/env/filter';\nimport { useI18n } from '@affine/i18n';\nimport { FilterIcon } from '@blocksuite/icons/rc';\n\nimport { CreateFilterMenu } from '../filter/vars';\nimport * as styles from './collection-list.css';\n\nexport const AllPageListOperationsMenu = ({\n propertiesMeta,\n filterList,\n onChangeFilterList,\n}: {\n propertiesMeta: PropertiesMeta;\n filterList: Filter[];\n onChangeFilterList: (filterList: Filter[]) => void;\n}) => {\n const t = useI18n();\n\n return (\n \n \n }\n >\n }\n data-testid=\"create-first-filter\"\n >\n {t['com.arms.filter']()}\n \n \n \n );\n};\n","import \"../core/src/components/page-list/view/collection-list.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/view/collection-list.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xdDZtemN6MCB7CiAgbWFyZ2luLWxlZnQ6IDEycHg7CiAgbWFyZ2luLXRvcDogMTBweDsKICBmb250LXNpemU6IHZhcigtLWFmZmluZS1mb250LXhzKTsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXRleHQtc2Vjb25kYXJ5LWNvbG9yKTsKfQouXzF0Nm16Y3oxIHsKICBtYXJnaW4tdG9wOiAycHg7CiAgbWFyZ2luLWJvdHRvbTogMnB4OwogIG1hcmdpbi1sZWZ0OiAxMnB4OwogIG1hcmdpbi1yaWdodDogOHB4OwogIGhlaWdodDogMXB4OwogIGJhY2tncm91bmQ6IHZhcigtLWFmZmluZS1ib3JkZXItY29sb3IpOwp9Ci5fMXQ2bXpjejMgewogIGJvcmRlci1yYWRpdXM6IDhweDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgbWFyZ2luLWxlZnQ6IDZweDsKICB3aWR0aDogMjRweDsKICBoZWlnaHQ6IDI0cHg7CiAgb3BhY2l0eTogMDsKfQouXzF0Nm16Y3ozOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hZmZpbmUtaG92ZXItY29sb3IpOwp9Ci5fMXQ2bXpjejI6aG92ZXIgLl8xdDZtemN6MyB7CiAgb3BhY2l0eTogMTsKfQouXzF0Nm16Y3o0IHsKICBwYWRkaW5nOiA2cHggOHB4Owp9Ci5fMXQ2bXpjejRbZGF0YS1pcy1oaWRkZW49InRydWUiXSB7CiAgZGlzcGxheTogbm9uZTsKfQ==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var filterMenuTrigger = '_1t6mzcz4';\nexport var menuDividerStyle = '_1t6mzcz1';\nexport var menuTitleStyle = '_1t6mzcz0';\nexport var viewMenu = '_1t6mzcz2';\nexport var viewOption = '_1t6mzcz3';","import { Button } from '@affine/component';\nimport type { Collection } from '@affine/env/filter';\nimport { useI18n } from '@affine/i18n';\nimport { SaveIcon } from '@blocksuite/icons/rc';\nimport { nanoid } from 'nanoid';\nimport { useCallback } from 'react';\n\nimport { createEmptyCollection } from '../use-collection-manager';\nimport * as styles from './save-as-collection-button.css';\nimport { useEditCollectionName } from './use-edit-collection';\n\ninterface SaveAsCollectionButtonProps {\n onConfirm: (collection: Collection) => void;\n}\n\nexport const SaveAsCollectionButton = ({\n onConfirm,\n}: SaveAsCollectionButtonProps) => {\n const t = useI18n();\n const { open, node } = useEditCollectionName({\n title: t['com.arms.editCollection.saveCollection'](),\n showTips: true,\n });\n const handleClick = useCallback(() => {\n open('')\n .then(name => {\n return onConfirm(createEmptyCollection(nanoid(), { name }));\n })\n .catch(err => {\n console.error(err);\n });\n }, [open, onConfirm]);\n return (\n <>\n }\n className={styles.button}\n >\n {t['com.arms.editCollection.saveCollection']()}\n \n {node}\n \n );\n};\n","import \"../core/src/components/page-list/view/save-as-collection-button.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/page-list/view/save-as-collection-button.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xMnl5OWJ6MCB7CiAgcGFkZGluZzogNnB4IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGJhY2tncm91bmQ6IHZhcigtLWFmZmluZS1iYWNrZ3JvdW5kLXByaW1hcnktY29sb3IpOwogIGZvbnQtc2l6ZTogdmFyKC0tYWZmaW5lLWZvbnQteHMpOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgaGVpZ2h0OiAyOHB4Owp9\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var button = '_12yy9bz0';","import type { Collection } from '@affine/env/filter';\nimport { useCallback, useState } from 'react';\n\nimport { CreateCollectionModal } from './create-collection';\nimport type { EditCollectionMode } from './edit-collection/edit-collection';\nimport { EditCollectionModal } from './edit-collection/edit-collection';\n\nexport const useEditCollection = () => {\n const [data, setData] = useState<{\n collection: Collection;\n mode?: 'page' | 'rule';\n onConfirm: (collection: Collection) => void;\n }>();\n const close = useCallback((open: boolean) => {\n if (!open) {\n setData(undefined);\n }\n }, []);\n\n return {\n node: (\n {})}\n />\n ),\n open: (\n collection: Collection,\n mode?: EditCollectionMode\n ): Promise =>\n new Promise(res => {\n setData({\n collection,\n mode,\n onConfirm: collection => {\n res(collection);\n },\n });\n }),\n };\n};\n\nexport const useEditCollectionName = ({\n title,\n showTips,\n}: {\n title: string;\n showTips?: boolean;\n}) => {\n const [data, setData] = useState<{\n name: string;\n onConfirm: (name: string) => void;\n }>();\n const close = useCallback((open: boolean) => {\n if (!open) {\n setData(undefined);\n }\n }, []);\n\n return {\n node: (\n {})}\n />\n ),\n open: (name: string): Promise =>\n new Promise(res => {\n setData({\n name,\n onConfirm: collection => {\n res(collection);\n },\n });\n }),\n };\n};\n","import { Scrollable } from '@affine/component';\nimport clsx from 'clsx';\nimport { selectAtom } from 'jotai/utils';\nimport type { HTMLAttributes, PropsWithChildren } from 'react';\nimport { forwardRef, useCallback, useMemo, useState } from 'react';\nimport { Virtuoso } from 'react-virtuoso';\n\nimport { ListInnerWrapper } from './list';\nimport * as styles from './list.css';\nimport { ItemGroupHeader } from './page-group';\nimport {\n groupCollapseStateAtom,\n groupsAtom,\n listPropsAtom,\n ListProvider,\n useAtomValue,\n} from './scoped-atoms';\nimport type {\n ItemGroupProps,\n ItemListHandle,\n ListItem,\n VirtualizedListProps,\n} from './types';\n\n// we have three item types for rendering rows in Virtuoso\ntype VirtuosoItemType =\n | 'sticky-header'\n | 'group-header'\n | 'item'\n | 'item-spacer';\n\ninterface BaseVirtuosoItem {\n type: VirtuosoItemType;\n}\n\ninterface VirtuosoItemStickyHeader extends BaseVirtuosoItem {\n type: 'sticky-header';\n data?: T;\n}\n\ninterface VirtuosoItemItem extends BaseVirtuosoItem {\n type: 'item';\n data: T;\n}\n\ninterface VirtuosoItemGroupHeader extends BaseVirtuosoItem {\n type: 'group-header';\n data: ItemGroupProps;\n}\n\ninterface VirtuosoPageItemSpacer extends BaseVirtuosoItem {\n type: 'item-spacer';\n data: {\n height: number;\n };\n}\n\ntype VirtuosoItem =\n | VirtuosoItemStickyHeader\n | VirtuosoItemItem\n | VirtuosoItemGroupHeader\n | VirtuosoPageItemSpacer;\n\n/**\n * Given a list of pages, render a list of pages\n * Similar to normal PageList, but uses react-virtuoso to render the list (virtual rendering)\n */\nexport const VirtualizedList = forwardRef<\n ItemListHandle,\n VirtualizedListProps\n>(function VirtualizedList(props, ref) {\n return (\n // push pageListProps to the atom so that downstream components can consume it\n // this makes sure pageListPropsAtom is always populated\n \n \n \n \n \n );\n});\n\nconst headingAtom = selectAtom(listPropsAtom, props => props?.heading);\n\nconst PageListHeading = () => {\n const heading = useAtomValue(headingAtom);\n return
{heading}
;\n};\n\nconst useVirtuosoItems = () => {\n const groups = useAtomValue(groupsAtom);\n const groupCollapsedState = useAtomValue(groupCollapseStateAtom);\n\n return useMemo(() => {\n const items: VirtuosoItem[] = [];\n\n // 1.\n // always put sticky header at the top\n // the visibility of sticky header is inside of PageListTableHeader\n items.push({\n type: 'sticky-header',\n });\n\n // 2.\n // iterate groups and add page items\n for (const group of groups) {\n // skip empty group header since it will cause issue in virtuoso (\"Zero-sized element\")\n if (group.label) {\n items.push({\n type: 'group-header',\n data: group as ItemGroupProps,\n });\n }\n // do not render items if the group is collapsed\n if (!groupCollapsedState[group.id]) {\n for (const item of group.items) {\n items.push({\n type: 'item',\n data: item as T,\n });\n // add a spacer between items (4px), unless it's the last item\n if (item !== group.items[group.items.length - 1]) {\n items.push({\n type: 'item-spacer',\n data: {\n height: 4,\n },\n });\n }\n }\n }\n\n // add a spacer between groups (16px)\n items.push({\n type: 'item-spacer',\n data: {\n height: 16,\n },\n });\n }\n return items;\n }, [groupCollapsedState, groups]);\n};\n\nconst Scroller = forwardRef<\n HTMLDivElement,\n PropsWithChildren>\n>(({ children, ...props }, ref) => {\n return (\n \n \n {children}\n \n \n \n );\n});\n\nScroller.displayName = 'Scroller';\n\nconst ListInner = ({\n atTopStateChange,\n atTopThreshold,\n ...props\n}: VirtualizedListProps) => {\n const virtuosoItems = useVirtuosoItems();\n const [atTop, setAtTop] = useState(false);\n const handleAtTopStateChange = useCallback(\n (atTop: boolean) => {\n setAtTop(atTop);\n atTopStateChange?.(atTop);\n },\n [atTopStateChange]\n );\n const components = useMemo(() => {\n return {\n Header: props.heading ? PageListHeading : undefined,\n Scroller: Scroller,\n };\n }, [props.heading]);\n const itemContentRenderer = useCallback(\n (_index: number, data: VirtuosoItem) => {\n switch (data.type) {\n case 'sticky-header':\n return props.headerRenderer?.(data.data);\n case 'group-header':\n return ;\n case 'item':\n return props.itemRenderer?.(data.data);\n case 'item-spacer':\n return
;\n }\n },\n [props]\n );\n return (\n >\n data-has-scroll-top={!atTop}\n atTopThreshold={atTopThreshold ?? 0}\n atTopStateChange={handleAtTopStateChange}\n components={components}\n data={virtuosoItems}\n data-testid=\"virtualized-page-list\"\n data-total-count={props.items.length} // for testing, since we do not know the total count in test\n topItemCount={1} // sticky header\n totalCount={virtuosoItems.length}\n itemContent={itemContentRenderer}\n className={clsx(props.className, styles.root)}\n // TODO(@Peng): set a reasonable overscan value to avoid blank space?\n // overscan={100}\n />\n );\n};\n","import \"../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/add-workspace/index.css.ts.vanilla.css!=!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/add-workspace/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xNnoxaTcyMCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICBwYWRkaW5nOiA4cHggMTRweDsKICBnYXA6IDE0cHg7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7CiAgZm9udC1zaXplOiAyNHB4OwogIGNvbG9yOiB2YXIoLS1hZmZpbmUtaWNvbi1zZWNvbmRhcnkpOwp9Ci5fMTZ6MWk3MjEgewogIGZvbnQtc2l6ZTogdmFyKC0tYWZmaW5lLWZvbnQtc20pOwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIGNvbG9yOiB2YXIoLS1hZmZpbmUtdGV4dC1zZWNvbmRhcnktY29sb3IpOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwp9\\\"}!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var ItemContainer = '_16z1i720';\nexport var ItemText = '_16z1i721';","import { MenuItem } from '@affine/component/ui/menu';\nimport { useI18n } from '@affine/i18n';\nimport { ImportIcon, PlusIcon } from '@blocksuite/icons/rc';\n\nimport * as styles from './index.css';\n\nexport const AddWorkspace = ({\n onAddWorkspace,\n onNewWorkspace,\n}: {\n onAddWorkspace?: () => void;\n onNewWorkspace?: () => void;\n}) => {\n const t = useI18n();\n\n return (\n
\n {environment.isDesktop ? (\n }\n onClick={onAddWorkspace}\n data-testid=\"add-workspace\"\n className={styles.ItemContainer}\n >\n
\n {t['com.arms.workspace.local.import']()}\n
\n \n ) : null}\n }\n onClick={onNewWorkspace}\n data-testid=\"new-workspace\"\n className={styles.ItemContainer}\n >\n
\n {runtimeConfig.allowLocalWorkspace\n ? t['com.arms.workspaceList.addWorkspace.create']()\n : t['com.arms.workspaceList.addWorkspace.create-cloud']()}\n
\n \n
\n );\n};\n","import { UserPlanButton } from '../../../../affine/auth/user-plan-button';\nimport * as styles from './index.css';\n\nexport const UserAccountItem = ({\n email,\n}: {\n email: string;\n onEventEnd?: () => void;\n}) => {\n return (\n
\n
\n
{email}
\n
\n \n
\n );\n};\n","import \"../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/user-account/index.css.ts.vanilla.css!=!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/user-account/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Lmx1d3ZlZDAgewogIGRpc3BsYXk6IGZsZXg7CiAgcGFkZGluZzogNHB4IDRweCA0cHggMTJweDsKICBnYXA6IDhweDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICB3aWR0aDogMTAwJTsKfQoubHV3dmVkMSB7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1zbSk7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMjJweDsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmx1d3ZlZDIgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDhweDsKICB3aWR0aDogMTAwJTsKICBvdmVyZmxvdzogaGlkZGVuOwp9\\\"}!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var leftContainer = 'luwved2';\nexport var userAccountContainer = 'luwved0';\nexport var userEmail = 'luwved1';","import \"../component/src/components/card/workspace-card/styles.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/card/workspace-card/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA51UXW+bMBR9z6+wKk1aHxxBuk6Jq/2Sqg83+AJ3M7Zlm0A29b9PNoRAadpp4gUd369zzrW3PTXucMjYnw1jHclQC5Zn2ZenDWNF67xxgllDOqCLkAUpSVeC7W3P8p3tI3g0TqLjDiS1XrBvF7TnvgZpOsFIewwsS19uexYcaG/BoQ4xVJK3Cs6ClQpT7s/WByrPvDA6oA7DAfcBXIoHRZXmFLDxghV4GW6Ap5w2No146kaBjBbsCMWvyplWS7bd+UTJXM4cKgh0wsTdqEj9BO4r51CWpJEH7AP3WBgtwcXhlHH3iepUVLylVoEVo1Cvm+0otqjNCV2SfJ66aJZCph7X3GcJATgUcdAfd8G1ePcyVPpA70XlowMt15Xz+QpkcfYoumD5uw7dsGBlnLdQID9i6BD1JMhSj91HnUujA/f0G9/oM+DN/RTTIVV1EOwxSyVUEnHEduOmNtDzy5IfsgG76bR11Cx9jpaUKgpck5QDnxR6PUClyHpKm9XVFJAnBQTTpnNgZ6wfEut/E3ZKekxJ84UGpVi2zR88Q/BpdedCTgKMZN9j0ICrSHOFZRiz/tvt65FV0fdVxudPhTYaP7lTq3dpdbMWao16XCRY0N2vB1gswgDyfHXNF1GD0ftsfp2+p94n8nQkReE8V9xYKBKU3Z59nZ/+FS4K5E+b179IQp3swwUAAA==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var actionButtons = 'ximr993';\nexport var card = 'ximr990';\nexport var settingButton = 'ximr995';\nexport var settingButtonWrapper = 'ximr994';\nexport var showOnCardHover = 'ximr996';\nexport var workspaceInfo = 'ximr991';\nexport var workspaceTitle = 'ximr992';","import { WorkspaceAvatar } from '@affine/component/workspace-avatar';\nimport { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant';\nimport { WorkspaceFlavour } from '@affine/env/workspace';\nimport { CollaborationIcon, SettingsIcon } from '@blocksuite/icons/rc';\nimport type { WorkspaceMetadata } from '@toeverything/infra';\nimport { type MouseEvent, useCallback } from 'react';\n\nimport { Button } from '../../../ui/button';\nimport { Skeleton } from '../../../ui/skeleton';\nimport * as styles from './styles.css';\n\nexport interface WorkspaceTypeProps {\n flavour: WorkspaceFlavour;\n isOwner: boolean;\n}\n\nexport interface WorkspaceCardProps {\n currentWorkspaceId?: string | null;\n meta: WorkspaceMetadata;\n onClick: (metadata: WorkspaceMetadata) => void;\n onSettingClick: (metadata: WorkspaceMetadata) => void;\n onEnableCloudClick?: (meta: WorkspaceMetadata) => void;\n isOwner?: boolean;\n openingId?: string | null;\n enableCloudText?: string;\n name?: string;\n}\n\nexport const WorkspaceCardSkeleton = () => {\n return (\n
\n
\n \n \n
\n
\n );\n};\n\nexport const WorkspaceCard = ({\n onClick,\n onSettingClick,\n onEnableCloudClick,\n openingId,\n currentWorkspaceId,\n meta,\n isOwner = true,\n enableCloudText = 'Enable Cloud',\n name,\n}: WorkspaceCardProps) => {\n const isLocal = meta.flavour === WorkspaceFlavour.LOCAL;\n const displayName = name ?? UNTITLED_WORKSPACE_NAME;\n\n const onEnableCloud = useCallback(\n (e: MouseEvent) => {\n e.stopPropagation();\n onEnableCloudClick?.(meta);\n },\n [meta, onEnableCloudClick]\n );\n return (\n {\n onClick(meta);\n }, [onClick, meta])}\n >\n \n
\n
{displayName}
\n\n
\n {isLocal ? (\n \n {enableCloudText}\n \n ) : null}\n {isOwner ? null : }\n {\n e.stopPropagation();\n onSettingClick(meta);\n }}\n >\n \n
\n
\n
\n \n );\n};\n","import type { WorkspaceMetadata } from '@toeverything/infra';\nimport { Suspense } from 'react';\n\nimport {\n WorkspaceCard,\n WorkspaceCardSkeleton,\n} from '../../components/card/workspace-card';\nimport { workspaceItemStyle } from './index.css';\n\nexport interface WorkspaceListProps {\n disabled?: boolean;\n currentWorkspaceId?: string | null;\n items: WorkspaceMetadata[];\n openingId?: string | null;\n onClick: (workspace: WorkspaceMetadata) => void;\n onSettingClick: (workspace: WorkspaceMetadata) => void;\n onEnableCloudClick?: (meta: WorkspaceMetadata) => void;\n useIsWorkspaceOwner: (\n workspaceMetadata: WorkspaceMetadata\n ) => boolean | undefined;\n useWorkspaceName: (\n workspaceMetadata: WorkspaceMetadata\n ) => string | undefined;\n}\n\ninterface SortableWorkspaceItemProps extends Omit {\n item: WorkspaceMetadata;\n}\n\nconst SortableWorkspaceItem = ({\n item,\n openingId,\n useIsWorkspaceOwner,\n useWorkspaceName,\n currentWorkspaceId,\n onClick,\n onSettingClick,\n onEnableCloudClick,\n}: SortableWorkspaceItemProps) => {\n const isOwner = useIsWorkspaceOwner?.(item);\n const name = useWorkspaceName?.(item);\n return (\n
\n \n
\n );\n};\n\nexport const WorkspaceList = (props: WorkspaceListProps) => {\n const workspaceList = props.items;\n\n return workspaceList.map(item => (\n } key={item.id}>\n \n \n ));\n};\n","import \"../component/src/components/workspace-list/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/workspace-list/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzIwcHgpIHsKICAuXzFyNGFudHEwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQ==\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var workspaceItemStyle = '_1r4antq0';","import \"../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/workspace-list/index.css.ts.vanilla.css!=!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/workspace-list/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Lm42MTVtNTAgewogIGRpc3BsYXk6IGZsZXg7CiAgd2lkdGg6IDEwMCU7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzAwcHgpOwp9Ci5uNjE1bTUxIHsKICBkaXNwbGF5OiBmbGV4OwogIHdpZHRoOiAxMDAlOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZ2FwOiAycHg7Cn0KLm42MTVtNTIgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDRweDsKICBwYWRkaW5nOiAwcHggMTJweDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc2l6ZTogdmFyKC0tYWZmaW5lLWZvbnQteHMpOwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGNvbG9yOiB2YXIoLS1hZmZpbmUtdGV4dC1zZWNvbmRhcnktY29sb3IpOwp9Ci5uNjE1bTUzIHsKICBjb2xvcjogdmFyKC0tYWZmaW5lLWljb24tc2Vjb25kYXJ5KTsKfQoubjYxNW01NCB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDhweCk7CiAgd2lkdGg6IDRweDsKfQ==\\\"}!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var scrollbar = 'n615m54';\nexport var workspaceListWrapper = 'n615m51';\nexport var workspaceListsWrapper = 'n615m50';\nexport var workspaceType = 'n615m52';\nexport var workspaceTypeIcon = 'n615m53';","import { ScrollableContainer } from '@affine/component';\nimport { Divider } from '@affine/component/ui/divider';\nimport { WorkspaceList } from '@affine/component/workspace-list';\nimport { useEnableCloud } from '@affine/core/hooks/affine/use-enable-cloud';\nimport {\n useWorkspaceInfo,\n useWorkspaceName,\n} from '@affine/core/hooks/use-workspace-info';\nimport { AuthService } from '@affine/core/modules/cloud';\nimport { WorkspaceFlavour } from '@affine/env/workspace';\nimport { useI18n } from '@affine/i18n';\nimport { CloudWorkspaceIcon, LocalWorkspaceIcon } from '@blocksuite/icons/rc';\nimport type { WorkspaceMetadata } from '@toeverything/infra';\nimport {\n GlobalContextService,\n useLiveData,\n useService,\n WorkspacesService,\n} from '@toeverything/infra';\nimport { useSetAtom } from 'jotai';\nimport { useCallback, useMemo } from 'react';\n\nimport {\n openCreateWorkspaceModalAtom,\n openSettingModalAtom,\n} from '../../../../../atoms';\nimport { WorkspaceSubPath } from '../../../../../shared';\nimport { useNavigateHelper } from '../.././../../../hooks/use-navigate-helper';\nimport * as styles from './index.css';\n\nfunction useIsWorkspaceOwner(meta: WorkspaceMetadata) {\n const info = useWorkspaceInfo(meta);\n\n return info?.isOwner;\n}\n\ninterface WorkspaceModalProps {\n disabled?: boolean;\n workspaces: WorkspaceMetadata[];\n currentWorkspaceId?: string | null;\n openingId?: string | null;\n onClickWorkspace: (workspaceMetadata: WorkspaceMetadata) => void;\n onClickWorkspaceSetting: (workspaceMetadata: WorkspaceMetadata) => void;\n onClickEnableCloud?: (meta: WorkspaceMetadata) => void;\n onNewWorkspace: () => void;\n onAddWorkspace: () => void;\n}\n\nconst CloudWorkSpaceList = ({\n disabled,\n workspaces,\n onClickWorkspace,\n onClickWorkspaceSetting,\n currentWorkspaceId,\n}: WorkspaceModalProps) => {\n const t = useI18n();\n if (workspaces.length === 0) {\n return null;\n }\n return (\n
\n
\n \n {t['com.arms.workspaceList.workspaceListType.cloud']()}\n
\n \n
\n );\n};\n\nconst LocalWorkspaces = ({\n disabled,\n workspaces,\n onClickWorkspace,\n onClickWorkspaceSetting,\n onClickEnableCloud,\n openingId,\n currentWorkspaceId,\n}: WorkspaceModalProps) => {\n const t = useI18n();\n if (workspaces.length === 0) {\n return null;\n }\n return (\n
\n
\n \n {t['com.arms.workspaceList.workspaceListType.local']()}\n
\n \n
\n );\n};\n\nexport const AFFiNEWorkspaceList = ({\n onEventEnd,\n}: {\n onEventEnd?: () => void;\n}) => {\n const workspacesService = useService(WorkspacesService);\n const workspaces = useLiveData(workspacesService.list.workspaces$);\n const currentWorkspaceId = useLiveData(\n useService(GlobalContextService).globalContext.workspaceId.$\n );\n\n const setOpenCreateWorkspaceModal = useSetAtom(openCreateWorkspaceModalAtom);\n const confirmEnableCloud = useEnableCloud();\n\n const { jumpToSubPath } = useNavigateHelper();\n\n const setOpenSettingModalAtom = useSetAtom(openSettingModalAtom);\n\n const session = useService(AuthService).session;\n const status = useLiveData(session.status$);\n\n const isAuthenticated = status === 'authenticated';\n\n const cloudWorkspaces = useMemo(\n () =>\n workspaces.filter(\n ({ flavour }) => flavour === WorkspaceFlavour.AFFINE_CLOUD\n ) as WorkspaceMetadata[],\n [workspaces]\n );\n\n const localWorkspaces = useMemo(\n () =>\n workspaces.filter(\n ({ flavour }) => flavour === WorkspaceFlavour.LOCAL\n ) as WorkspaceMetadata[],\n [workspaces]\n );\n\n const onClickWorkspaceSetting = useCallback(\n (workspaceMetadata: WorkspaceMetadata) => {\n setOpenSettingModalAtom({\n open: true,\n activeTab: 'workspace:preference',\n workspaceMetadata,\n });\n onEventEnd?.();\n },\n [onEventEnd, setOpenSettingModalAtom]\n );\n\n const onClickEnableCloud = useCallback(\n (meta: WorkspaceMetadata) => {\n const { workspace, dispose } = workspacesService.open({ metadata: meta });\n confirmEnableCloud(workspace, {\n onFinished: () => {\n dispose();\n },\n });\n },\n [confirmEnableCloud, workspacesService]\n );\n\n const onClickWorkspace = useCallback(\n (workspaceMetadata: WorkspaceMetadata) => {\n if (document.startViewTransition) {\n document.startViewTransition(() => {\n jumpToSubPath(workspaceMetadata.id, WorkspaceSubPath.ALL);\n onEventEnd?.();\n return new Promise(resolve =>\n setTimeout(resolve, 150)\n ); /* start transition after 150ms */\n });\n } else {\n jumpToSubPath(workspaceMetadata.id, WorkspaceSubPath.ALL);\n onEventEnd?.();\n }\n },\n [jumpToSubPath, onEventEnd]\n );\n\n const onNewWorkspace = useCallback(() => {\n setOpenCreateWorkspaceModal('new');\n onEventEnd?.();\n }, [onEventEnd, setOpenCreateWorkspaceModal]);\n\n const onAddWorkspace = useCallback(() => {\n setOpenCreateWorkspaceModal('add');\n onEventEnd?.();\n }, [onEventEnd, setOpenCreateWorkspaceModal]);\n\n return (\n \n {isAuthenticated ? (\n
\n \n {localWorkspaces.length > 0 && cloudWorkspaces.length > 0 ? (\n \n ) : null}\n
\n ) : null}\n \n \n );\n};\n","import { Loading } from '@affine/component';\nimport { Divider } from '@affine/component/ui/divider';\nimport { MenuItem } from '@affine/component/ui/menu';\nimport { track } from '@affine/core/mixpanel';\nimport { AuthService } from '@affine/core/modules/cloud';\nimport { useI18n } from '@affine/i18n';\nimport { Logo1Icon } from '@blocksuite/icons/rc';\nimport {\n useLiveData,\n useService,\n WorkspacesService,\n} from '@toeverything/infra';\nimport { useSetAtom } from 'jotai';\nimport { Suspense, useCallback } from 'react';\n\nimport { authAtom, openCreateWorkspaceModalAtom } from '../../../../atoms';\nimport { AddWorkspace } from './add-workspace';\nimport * as styles from './index.css';\nimport { UserAccountItem } from './user-account';\nimport { AFFiNEWorkspaceList } from './workspace-list';\n\nexport const SignInItem = () => {\n const setOpen = useSetAtom(authAtom);\n\n const t = useI18n();\n\n const onClickSignIn = useCallback(() => {\n track.$.navigationPanel.workspaceList.signIn();\n setOpen(state => ({\n ...state,\n openModal: true,\n }));\n }, [setOpen]);\n\n return (\n \n
\n
\n \n
\n\n
\n
\n {t['com.arms.workspace.cloud.auth']()}\n
\n
\n {t['com.arms.workspace.cloud.description']()}\n
\n
\n
\n \n );\n};\n\nconst UserWithWorkspaceListLoading = () => {\n return (\n
\n \n
\n );\n};\n\ninterface UserWithWorkspaceListProps {\n onEventEnd?: () => void;\n}\n\nconst UserWithWorkspaceListInner = ({\n onEventEnd,\n}: UserWithWorkspaceListProps) => {\n const session = useLiveData(useService(AuthService).session.session$);\n\n const isAuthenticated = session.status === 'authenticated';\n\n const setOpenCreateWorkspaceModal = useSetAtom(openCreateWorkspaceModalAtom);\n\n const setOpenSignIn = useSetAtom(authAtom);\n\n const openSignInModal = useCallback(() => {\n setOpenSignIn(state => ({\n ...state,\n openModal: true,\n }));\n }, [setOpenSignIn]);\n\n const onNewWorkspace = useCallback(() => {\n if (!isAuthenticated && !runtimeConfig.allowLocalWorkspace) {\n return openSignInModal();\n }\n track.$.navigationPanel.workspaceList.createWorkspace();\n setOpenCreateWorkspaceModal('new');\n onEventEnd?.();\n }, [\n isAuthenticated,\n onEventEnd,\n openSignInModal,\n setOpenCreateWorkspaceModal,\n ]);\n\n track.$.navigationPanel.workspaceList.createWorkspace();\n const onAddWorkspace = useCallback(() => {\n track.$.navigationPanel.workspaceList.createWorkspace({\n control: 'import',\n });\n setOpenCreateWorkspaceModal('add');\n onEventEnd?.();\n }, [onEventEnd, setOpenCreateWorkspaceModal]);\n\n const workspaceManager = useService(WorkspacesService);\n const workspaces = useLiveData(workspaceManager.list.workspaces$);\n\n return (\n
\n {isAuthenticated ? (\n \n ) : (\n \n )}\n \n \n {workspaces.length > 0 ? : null}\n \n
\n );\n};\n\nexport const UserWithWorkspaceList = (props: UserWithWorkspaceListProps) => {\n return (\n }>\n \n \n );\n};\n","import \"../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/index.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/pure/workspace-slider-bar/user-with-workspace-list/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61TTW/DIAy991f4Mmk9UCVZt1X011BwEm8UENAm3dT/PkH6uUVrJ+3AgWfz/OxnZr3EolsV8DkBUBScFjsOtcZ+OQHoSMWWQ1kUD+maYKbIo4xkDQdp9WZtlpP9ZDbQlHfRNMJxKCuXY0JTYxhFXAcOEk1En+C3TYhU75i0JqKJAxcLUfiYwivrFXrmhaJN4LBIXCcVVVZxKFothjpOKEWm4VC5HubDGWEqj7CQ7423G6M4bIV/ZEzUNRlkXUsRp8uxNgcqDqXrIVhN6volSWtYQGmNEn6XKaTV1vObaffO6ByqrYks0AdyqIqr4TyNW3TT2nl+d8F7JXrA19NT7Q6paSOHl6JImE5J7QGrDtbbLfpa245DS0qhSVjEPrJzALUmFyjkLUqTZ8EJiRyM7bxwF/qeb+vrw0998zF9xaBvzJ2s7+QOyynTf2/mJTfz65K/5pSj5PlhpN9+2g+b/7pJ+y/t8nuJIAQAAA==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var iconContainer = 'xce0wb2';\nexport var loadingWrapper = 'xce0wb7';\nexport var menuItem = 'xce0wb6';\nexport var signInTextContainer = 'xce0wb3';\nexport var signInTextPrimary = 'xce0wb4';\nexport var signInTextSecondary = 'xce0wb5';\nexport var signInWrapper = 'xce0wb1';\nexport var workspaceListWrapper = 'xce0wb0';","import { useLiveData, useService, WorkspaceService } from '@toeverything/infra';\nimport { useMemo } from 'react';\n\nexport function useDocEngineStatus() {\n const workspace = useService(WorkspaceService).workspace;\n\n const engineState = useLiveData(\n workspace.engine.docEngineState$.throttleTime(100)\n );\n const progress =\n (engineState.total - engineState.syncing) / engineState.total;\n\n return useMemo(\n () => ({\n ...engineState,\n progress,\n syncing: engineState.syncing > 0 || engineState.retrying,\n }),\n [engineState, progress]\n );\n}\n","import \"../core/src/components/pure/workspace-slider-bar/workspace-card/styles.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/pure/workspace-slider-bar/workspace-card/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA7VVYW/aMBD9zq+wkCaBhJFDCatc9YdMUzUZ55Jc69iW7QTo1P8+xQmUQGCatH5KfHd+vvd8d17+Sl7LR+s9I78nhJSARRk4SZndP00IydBbJQ6c5AqiQSgsNMUAledEgg7gWnMhLCeP3R4rsgx1wQkjm86yNS4DR53IsPacrDurqYNCDZxoo6E17DALJScJY9/aZSX2tDelrM9HGmUcJ41wM0pFnqMGGmAfqHVYCXegMWD+NPmYLE/MeGkacJGfrJ1vAazBY+pbId8KZ2qdXeDGXWOAyUCq9aqn04DLldlxUmKWgR5sWcUtV2q2X5qhAxnQaN7Sqyt9pXMM80G40LqCE9rnxlW8+1UiwI8Zm5982IGd4ghbpp7IeouSbuEdwc2W63SxXCULtkjmhPkhvZ+ZCIIKGbCB52lwNUxfyAWV8SRoK8ZQrIcYfnG1kVDhWrGSce2u9f0H8V5rHzBvi0EH0OG8UM8FMlZIDIf/K89D5w4HC89TbVwl1PQlatAfxwm7h5cL5W8DQgM6+PuA6+jMjQ7U4ztcVHVnr2K1qFjmvc6rXucYsDvNAdbaag+OelAgw2e7jl1a7MVPByiF1qOP3V1iAOqtkLHld07YQdrpeIvEydKndmP43KW69yNU2QjVdUd1bMJslZBvNGXzi4R9Uwyqux93x2OO6zFIlEZTD9LoTLjDEHjzNUrcu/Sbc/WU4tgg3HyVAt//XsL37vXsBerfpAr1RdTHH8Ok2oD6BgAA\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var container = '_1jh8pss0';\nexport var workspaceActiveStatus = '_1jh8pss6';\nexport var workspaceInfo = '_1jh8pss3';\nexport var workspaceInfoSlide = '_1jh8pss2';\nexport var workspaceInfoSlider = '_1jh8pss1';\nexport var workspaceInfoTooltip = '_1jh8pss7';\nexport var workspaceName = '_1jh8pss4';\nexport var workspaceStatus = '_1jh8pss5';","import { notify, Tooltip } from '@affine/component';\nimport { Loading } from '@affine/component/ui/loading';\nimport { WorkspaceAvatar } from '@affine/component/workspace-avatar';\nimport { openSettingModalAtom } from '@affine/core/atoms';\nimport { useDocEngineStatus } from '@affine/core/hooks/affine/use-doc-engine-status';\nimport { useWorkspaceInfo } from '@affine/core/hooks/use-workspace-info';\nimport { WorkspacePermissionService } from '@affine/core/modules/permissions';\nimport { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant';\nimport { WorkspaceFlavour } from '@affine/env/workspace';\nimport { useI18n } from '@affine/i18n';\nimport {\n CloudWorkspaceIcon,\n InformationFillDuotoneIcon,\n LocalWorkspaceIcon,\n NoNetworkIcon,\n UnsyncIcon,\n} from '@blocksuite/icons/rc';\nimport { useLiveData, useService, WorkspaceService } from '@toeverything/infra';\nimport { cssVar } from '@toeverything/theme';\nimport { useSetAtom } from 'jotai';\nimport { debounce } from 'lodash-es';\nimport type { HTMLAttributes } from 'react';\nimport { forwardRef, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useSystemOnline } from '../../../../hooks/use-system-online';\nimport * as styles from './styles.css';\n\n// FIXME:\n// 2. Refactor the code to improve readability\nconst CloudWorkspaceStatus = () => {\n return (\n <>\n \n Cloud\n \n );\n};\n\nconst SyncingWorkspaceStatus = ({ progress }: { progress?: number }) => {\n return (\n <>\n \n Syncing...\n \n );\n};\n\nconst UnSyncWorkspaceStatus = () => {\n return (\n <>\n \n Wait for upload\n \n );\n};\n\nconst LocalWorkspaceStatus = () => {\n return (\n <>\n {!environment.isDesktop ? (\n \n ) : (\n \n )}\n Local\n \n );\n};\n\nconst OfflineStatus = () => {\n return (\n <>\n \n Offline\n \n );\n};\n\nconst useSyncEngineSyncProgress = () => {\n const t = useI18n();\n const isOnline = useSystemOnline();\n const { syncing, progress, retrying, errorMessage } = useDocEngineStatus();\n const [isOverCapacity, setIsOverCapacity] = useState(false);\n\n const currentWorkspace = useService(WorkspaceService).workspace;\n const permissionService = useService(WorkspacePermissionService);\n const isOwner = useLiveData(permissionService.permission.isOwner$);\n useEffect(() => {\n // revalidate permission\n permissionService.permission.revalidate();\n }, [permissionService]);\n\n const setSettingModalAtom = useSetAtom(openSettingModalAtom);\n const jumpToPricePlan = useCallback(() => {\n setSettingModalAtom({\n open: true,\n activeTab: 'plans',\n scrollAnchor: 'cloudPricingPlan',\n });\n }, [setSettingModalAtom]);\n\n // debounce sync engine status\n useEffect(() => {\n const disposableOverCapacity =\n currentWorkspace.engine.blob.isStorageOverCapacity$.subscribe(\n debounce((isStorageOverCapacity: boolean) => {\n const isOver = isStorageOverCapacity;\n if (!isOver) {\n setIsOverCapacity(false);\n return;\n }\n setIsOverCapacity(true);\n if (isOwner) {\n notify.warning({\n title: t['com.arms.payment.storage-limit.title'](),\n message: t['com.arms.payment.storage-limit.description.owner'](),\n action: {\n label: t['com.arms.payment.storage-limit.view'](),\n onClick: jumpToPricePlan,\n },\n });\n } else {\n notify.warning({\n title: t['com.arms.payment.storage-limit.title'](),\n message: t['com.arms.payment.storage-limit.description.member'](),\n });\n }\n })\n );\n return () => {\n disposableOverCapacity?.unsubscribe();\n };\n }, [currentWorkspace, isOwner, jumpToPricePlan, t]);\n\n const content = useMemo(() => {\n // TODO(@eyhn): add i18n\n if (currentWorkspace.flavour === WorkspaceFlavour.LOCAL) {\n if (!environment.isDesktop) {\n return 'This is a local demo workspace.';\n }\n return 'Saved locally';\n }\n if (!isOnline) {\n return 'Disconnected, please check your network connection';\n }\n if (isOverCapacity) {\n return 'Sync failed due to insufficient cloud storage space.';\n }\n if (retrying && errorMessage) {\n return `${errorMessage}, reconnecting.`;\n }\n if (retrying) {\n return 'Sync disconnected due to unexpected issues, reconnecting.';\n }\n if (syncing) {\n return (\n `Syncing with AFFiNE Cloud` +\n (progress ? ` (${Math.floor(progress * 100)}%)` : '')\n );\n }\n\n return 'Synced with AFFiNE Cloud';\n }, [\n currentWorkspace.flavour,\n errorMessage,\n isOnline,\n isOverCapacity,\n progress,\n retrying,\n syncing,\n ]);\n\n const CloudWorkspaceSyncStatus = useCallback(() => {\n if (syncing) {\n return SyncingWorkspaceStatus({\n progress: progress ? Math.max(progress, 0.2) : undefined,\n });\n } else if (retrying) {\n return UnSyncWorkspaceStatus();\n } else {\n return CloudWorkspaceStatus();\n }\n }, [progress, retrying, syncing]);\n\n return {\n message: content,\n icon:\n currentWorkspace.flavour === WorkspaceFlavour.AFFINE_CLOUD ? (\n !isOnline ? (\n \n ) : (\n \n )\n ) : (\n \n ),\n active:\n currentWorkspace.flavour === WorkspaceFlavour.AFFINE_CLOUD &&\n ((syncing && progress !== undefined) || retrying) && // active if syncing or retrying\n !isOverCapacity, // not active if isOffline or OverCapacity\n };\n};\nconst usePauseAnimation = (timeToResume = 5000) => {\n const [paused, setPaused] = useState(false);\n\n const resume = useCallback(() => {\n setPaused(false);\n }, []);\n\n const pause = useCallback(() => {\n setPaused(true);\n if (timeToResume > 0) {\n setTimeout(resume, timeToResume);\n }\n }, [resume, timeToResume]);\n\n return { paused, pause };\n};\n\nconst WorkspaceInfo = ({ name }: { name: string }) => {\n const { message, active } = useSyncEngineSyncProgress();\n const currentWorkspace = useService(WorkspaceService).workspace;\n const isCloud = currentWorkspace.flavour === WorkspaceFlavour.AFFINE_CLOUD;\n const { progress } = useDocEngineStatus();\n const { paused, pause } = usePauseAnimation();\n\n // to make sure that animation will play first time\n const [delayActive, setDelayActive] = useState(false);\n useEffect(() => {\n if (paused) {\n return;\n }\n const delayOpen = 0;\n const delayClose = 200;\n let timer: ReturnType;\n if (active) {\n timer = setTimeout(() => {\n setDelayActive(active);\n }, delayOpen);\n } else {\n timer = setTimeout(() => {\n setDelayActive(active);\n pause();\n }, delayClose);\n }\n return () => clearTimeout(timer);\n }, [active, pause, paused]);\n\n return (\n
\n
\n
\n
\n {name}\n
\n
\n {isCloud ? : }\n
\n
\n\n {/* when syncing/offline/... */}\n
\n \n
\n \n
\n \n
\n
\n
\n );\n};\n\nexport const WorkspaceCard = forwardRef<\n HTMLDivElement,\n HTMLAttributes\n>(({ ...props }, ref) => {\n const currentWorkspace = useService(WorkspaceService).workspace;\n\n const information = useWorkspaceInfo(currentWorkspace.meta);\n\n const name = information?.name ?? UNTITLED_WORKSPACE_NAME;\n\n return (\n \n \n \n \n );\n});\n\nWorkspaceCard.displayName = 'WorkspaceCard';\n","import { Menu } from '@affine/component';\nimport { track } from '@affine/core/mixpanel';\nimport { useService, WorkspacesService } from '@toeverything/infra';\nimport { useAtom } from 'jotai';\nimport { useCallback, useEffect } from 'react';\n\nimport { openWorkspaceListModalAtom } from '../../atoms';\nimport { UserWithWorkspaceList } from '../pure/workspace-slider-bar/user-with-workspace-list';\nimport { WorkspaceCard } from '../pure/workspace-slider-bar/workspace-card';\n\nexport const WorkspaceSelector = () => {\n const [isUserWorkspaceListOpened, setOpenUserWorkspaceList] = useAtom(\n openWorkspaceListModalAtom\n );\n const closeUserWorkspaceList = useCallback(() => {\n setOpenUserWorkspaceList(false);\n }, [setOpenUserWorkspaceList]);\n const openUserWorkspaceList = useCallback(() => {\n track.$.navigationPanel.workspaceList.open();\n setOpenUserWorkspaceList(true);\n }, [setOpenUserWorkspaceList]);\n\n const workspaceManager = useService(WorkspacesService);\n\n // revalidate workspace list when open workspace list\n useEffect(() => {\n if (isUserWorkspaceListOpened) {\n workspaceManager.list.revalidate();\n }\n }, [workspaceManager, isUserWorkspaceListOpened]);\n\n return (\n }\n contentOptions={{\n // hide trigger\n sideOffset: -58,\n onInteractOutside: closeUserWorkspaceList,\n onEscapeKeyDown: closeUserWorkspaceList,\n style: {\n width: '300px',\n },\n }}\n >\n \n \n );\n};\n","import \"../core/src/components/workspace/index.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/components/workspace/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#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\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var appStyle = 'b8t49x0';\nexport var mainContainerStyle = 'b8t49x1';\nexport var toolStyle = 'b8t49x2';","import { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper';\nimport {\n DocsService,\n GlobalContextService,\n useLiveData,\n useService,\n} from '@toeverything/infra';\nimport { clsx } from 'clsx';\nimport { useAtomValue } from 'jotai';\nimport type { HTMLAttributes, PropsWithChildren, ReactElement } from 'react';\nimport { forwardRef } from 'react';\n\nimport { appSidebarOpenAtom } from '../app-sidebar';\nimport { appStyle, mainContainerStyle, toolStyle } from './index.css';\n\nexport type WorkspaceRootProps = PropsWithChildren<{\n resizing?: boolean;\n useNoisyBackground?: boolean;\n useBlurBackground?: boolean;\n}>;\n\nexport const AppContainer = ({\n resizing,\n useNoisyBackground,\n useBlurBackground,\n children,\n ...rest\n}: WorkspaceRootProps) => {\n const noisyBackground = useNoisyBackground && environment.isDesktop;\n const blurBackground = environment.isDesktop && useBlurBackground;\n return (\n \n {children}\n \n );\n};\n\nexport interface MainContainerProps extends HTMLAttributes {}\n\nexport const MainContainer = forwardRef<\n HTMLDivElement,\n PropsWithChildren\n>(function MainContainer({ className, children, ...props }, ref): ReactElement {\n const appSideBarOpen = useAtomValue(appSidebarOpenAtom);\n const { appSettings } = useAppSettingHelper();\n\n return (\n \n
{children}
\n \n );\n});\n\nMainContainer.displayName = 'MainContainer';\n\nexport const ToolContainer = (\n props: PropsWithChildren<{ className?: string }>\n): ReactElement => {\n const docId = useLiveData(\n useService(GlobalContextService).globalContext.docId.$\n );\n const docRecordList = useService(DocsService).list;\n const doc = useLiveData(docId ? docRecordList.doc$(docId) : undefined);\n const inTrash = useLiveData(doc?.meta$)?.trash;\n return (\n
\n {props.children}\n
\n );\n};\n","import React, { type DependencyList } from 'react';\n\nexport type AsyncErrorHandler = (error: Error) => void;\n\n/**\n * App should provide a global error handler for async callback in the root.\n */\nexport const AsyncCallbackContext = React.createContext(\n e => {\n console.error(e);\n }\n);\n\n/**\n * Translate async function to sync function and handle error automatically.\n * Only accept void function, return data here is meaningless.\n */\nexport function useAsyncCallback(\n callback: (...args: T) => Promise,\n deps: DependencyList\n): (...args: T) => void {\n const handleAsyncError = React.useContext(AsyncCallbackContext);\n return React.useCallback(\n (...args: any) => {\n callback(...args).catch(e => handleAsyncError(e));\n },\n [...deps] // eslint-disable-line react-hooks/exhaustive-deps\n );\n}\n","import type { AppSetting } from '@toeverything/infra';\nimport { appSettingAtom } from '@toeverything/infra';\nimport { useAtom } from 'jotai';\nimport { useCallback, useMemo } from 'react';\n\nexport function useAppSettingHelper() {\n const [appSettings, setAppSettings] = useAtom(appSettingAtom);\n\n const updateSettings = useCallback(\n (key: K, value: AppSetting[K]) => {\n setAppSettings(prevSettings => ({ ...prevSettings, [key]: value }));\n },\n [setAppSettings]\n );\n\n return useMemo(\n () => ({\n appSettings,\n updateSettings,\n }),\n [appSettings, updateSettings]\n );\n}\n","import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { useDocMetaHelper } from '@affine/core/hooks/use-block-suite-page-meta';\nimport { useDocCollectionHelper } from '@affine/core/hooks/use-block-suite-workspace-helper';\nimport { CollectionService } from '@affine/core/modules/collection';\nimport { DocsService, useService } from '@toeverything/infra';\nimport { useCallback } from 'react';\nimport { applyUpdate, encodeStateAsUpdate } from 'yjs';\n\nimport type { DocCollection } from '../../shared';\nimport { useNavigateHelper } from '../use-navigate-helper';\n\nexport function useBlockSuiteMetaHelper(docCollection: DocCollection) {\n const { setDocMeta, getDocMeta, setDocReadonly, setDocTitle } =\n useDocMetaHelper(docCollection);\n const { createDoc } = useDocCollectionHelper(docCollection);\n const { openPage } = useNavigateHelper();\n const collectionService = useService(CollectionService);\n const pageRecordList = useService(DocsService).list;\n\n // TODO-Doma\n // \"Remove\" may cause ambiguity here. Consider renaming as \"moveToTrash\".\n const removeToTrash = useCallback(\n (pageId: string) => {\n setDocMeta(pageId, {\n trash: true,\n trashDate: Date.now(),\n });\n setDocReadonly(pageId, true);\n collectionService.deletePagesFromCollections([pageId]);\n },\n [collectionService, setDocMeta, setDocReadonly]\n );\n\n const restoreFromTrash = useCallback(\n (pageId: string) => {\n setDocMeta(pageId, {\n trash: false,\n trashDate: undefined,\n });\n setDocReadonly(pageId, false);\n },\n [setDocMeta, setDocReadonly]\n );\n\n const permanentlyDeletePage = useCallback(\n (pageId: string) => {\n docCollection.removeDoc(pageId);\n },\n [docCollection]\n );\n\n /**\n * see {@link useBlockSuiteWorkspacePageIsPublic}\n */\n const publicPage = useCallback(\n (pageId: string) => {\n setDocMeta(pageId, {\n isPublic: true,\n });\n },\n [setDocMeta]\n );\n\n /**\n * see {@link useBlockSuiteWorkspacePageIsPublic}\n */\n const cancelPublicPage = useCallback(\n (pageId: string) => {\n setDocMeta(pageId, {\n isPublic: false,\n });\n },\n [setDocMeta]\n );\n\n const duplicate = useAsyncCallback(\n async (pageId: string, openPageAfterDuplication: boolean = true) => {\n const currentPageMode = pageRecordList.doc$(pageId).value?.mode$.value;\n const currentPageMeta = getDocMeta(pageId);\n const newPage = createDoc();\n const currentPage = docCollection.getDoc(pageId);\n\n newPage.load();\n if (!currentPageMeta || !currentPage) {\n return;\n }\n\n const update = encodeStateAsUpdate(currentPage.spaceDoc);\n applyUpdate(newPage.spaceDoc, update);\n\n setDocMeta(newPage.id, {\n tags: currentPageMeta.tags,\n });\n\n const lastDigitRegex = /\\((\\d+)\\)$/;\n const match = currentPageMeta.title.match(lastDigitRegex);\n const newNumber = match ? parseInt(match[1], 10) + 1 : 1;\n\n const newPageTitle =\n currentPageMeta.title.replace(lastDigitRegex, '') + `(${newNumber})`;\n\n pageRecordList.doc$(newPage.id).value?.setMode(currentPageMode || 'page');\n setDocTitle(newPage.id, newPageTitle);\n openPageAfterDuplication && openPage(docCollection.id, newPage.id);\n },\n [\n docCollection,\n createDoc,\n getDocMeta,\n openPage,\n pageRecordList,\n setDocMeta,\n setDocTitle,\n ]\n );\n\n return {\n publicPage,\n cancelPublicPage,\n\n removeToTrash,\n restoreFromTrash,\n permanentlyDeletePage,\n\n duplicate,\n };\n}\n","import { AuthService } from '@affine/core/modules/cloud';\nimport type { DeleteCollectionInfo } from '@affine/env/filter';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { useMemo } from 'react';\n\nexport const useDeleteCollectionInfo = () => {\n const authService = useService(AuthService);\n\n const user = useLiveData(authService.session.account$);\n\n return useMemo(\n () => (user ? { userName: user.label, userId: user.id } : null),\n [user]\n );\n};\n","import { notify, useConfirmModal } from '@affine/component';\nimport { authAtom } from '@affine/core/atoms';\nimport { AuthService } from '@affine/core/modules/cloud';\nimport { WorkspaceSubPath } from '@affine/core/shared';\nimport { useI18n } from '@affine/i18n';\nimport type { Workspace } from '@toeverything/infra';\nimport {\n useLiveData,\n useService,\n WorkspacesService,\n} from '@toeverything/infra';\nimport { useSetAtom } from 'jotai';\nimport { useCallback } from 'react';\n\nimport { useNavigateHelper } from '../use-navigate-helper';\n\ninterface ConfirmEnableCloudOptions {\n /**\n * Fired when the workspace is successfully enabled\n */\n onSuccess?: () => void;\n /**\n * Fired when workspace is successfully enabled or user cancels the operation\n */\n onFinished?: () => void;\n openPageId?: string;\n}\ntype ConfirmEnableArgs = [Workspace, ConfirmEnableCloudOptions | undefined];\n\nexport const useEnableCloud = () => {\n const t = useI18n();\n const authService = useService(AuthService);\n const account = useLiveData(authService.session.account$);\n const loginStatus = useLiveData(useService(AuthService).session.status$);\n const setAuthAtom = useSetAtom(authAtom);\n const { openConfirmModal, closeConfirmModal } = useConfirmModal();\n const workspacesService = useService(WorkspacesService);\n const { openPage } = useNavigateHelper();\n\n const enableCloud = useCallback(\n async (ws: Workspace | null, options?: ConfirmEnableCloudOptions) => {\n try {\n if (!ws) return;\n if (!account) return;\n const { id: newId } = await workspacesService.transformLocalToCloud(\n ws,\n account.id\n );\n openPage(newId, options?.openPageId || WorkspaceSubPath.ALL);\n options?.onSuccess?.();\n } catch (e) {\n console.error(e);\n notify.error({\n title: t['com.arms.workspace.enable-cloud.failed'](),\n });\n }\n },\n [account, openPage, t, workspacesService]\n );\n\n const openSignIn = useCallback(() => {\n setAuthAtom(prev => ({ ...prev, openModal: true }));\n }, [setAuthAtom]);\n\n const signInOrEnableCloud = useCallback(\n async (...args: ConfirmEnableArgs) => {\n // not logged in, open login modal\n if (loginStatus === 'unauthenticated') {\n openSignIn();\n }\n\n if (loginStatus === 'authenticated') {\n await enableCloud(...args);\n }\n },\n [enableCloud, loginStatus, openSignIn]\n );\n\n const confirmEnableCloud = useCallback(\n (ws: Workspace, options?: ConfirmEnableCloudOptions) => {\n const { onSuccess, onFinished } = options ?? {};\n\n const closeOnSuccess = () => {\n closeConfirmModal();\n onSuccess?.();\n };\n\n openConfirmModal(\n {\n title: t['Enable AFFiNE Cloud'](),\n description: t['Enable AFFiNE Cloud Description'](),\n cancelText: t['com.arms.enableAffineCloudModal.button.cancel'](),\n confirmText:\n loginStatus === 'authenticated'\n ? t['Enable']()\n : t['Sign in and Enable'](),\n confirmButtonOptions: {\n variant: 'primary',\n ['data-testid' as string]: 'confirm-enable-affine-cloud-button',\n },\n onConfirm: async () =>\n await signInOrEnableCloud(ws, {\n ...options,\n onSuccess: closeOnSuccess,\n }),\n onOpenChange: open => {\n if (!open) onFinished?.();\n },\n },\n {\n autoClose: false,\n }\n );\n },\n [closeConfirmModal, loginStatus, openConfirmModal, signInOrEnableCloud, t]\n );\n\n return confirmEnableCloud;\n};\n","import { atom } from 'jotai';\n\nexport type TrashModal = {\n open: boolean;\n pageIds: string[];\n pageTitles: string[];\n};\n\nexport const trashModalAtom = atom({\n open: false,\n pageIds: [],\n pageTitles: [],\n});\n","import { toast } from '@affine/component';\nimport { useI18n } from '@affine/i18n';\nimport type { DocCollection } from '@blocksuite/store';\nimport { useAtom } from 'jotai';\nimport { useCallback } from 'react';\n\nimport { trashModalAtom } from '../../atoms/trash-modal';\nimport { useBlockSuiteMetaHelper } from './use-block-suite-meta-helper';\n\nexport function useTrashModalHelper(docCollection: DocCollection) {\n const t = useI18n();\n const [trashModal, setTrashModal] = useAtom(trashModalAtom);\n const { pageIds } = trashModal;\n const { removeToTrash } = useBlockSuiteMetaHelper(docCollection);\n\n const handleOnConfirm = useCallback(() => {\n pageIds.forEach(pageId => {\n removeToTrash(pageId);\n });\n toast(t['com.arms.toastMessage.movedTrash']());\n setTrashModal({ ...trashModal, open: false });\n }, [pageIds, removeToTrash, setTrashModal, t, trashModal]);\n\n return {\n trashModal,\n setTrashModal,\n handleOnConfirm,\n };\n}\n","import { useService } from '@toeverything/infra';\nimport { useDebouncedState } from 'foxact/use-debounced-state';\nimport { useEffect } from 'react';\n\nimport { WorkspacePropertiesAdapter } from '../modules/properties';\n\nfunction getProxy(obj: T) {\n return new Proxy(obj, {});\n}\n\nconst useReactiveAdapter = (adapter: WorkspacePropertiesAdapter) => {\n // hack: delay proxy creation to avoid unnecessary re-render + render in another component issue\n const [proxy, setProxy] = useDebouncedState(adapter, 0);\n useEffect(() => {\n // TODO(@Peng): track which properties are used and then filter by property path change\n // using Y.YEvent.path\n function observe() {\n setProxy(getProxy(adapter));\n }\n const disposables: (() => void)[] = [];\n disposables.push(\n adapter.workspace.docCollection.meta.docMetaUpdated.on(observe).dispose\n );\n adapter.properties.observeDeep(observe);\n disposables.push(() => adapter.properties.unobserveDeep(observe));\n return () => {\n for (const dispose of disposables) {\n dispose();\n }\n };\n }, [adapter, setProxy]);\n\n return proxy;\n};\n\nexport function useCurrentWorkspacePropertiesAdapter() {\n const adapter = useService(WorkspacePropertiesAdapter);\n return useReactiveAdapter(adapter);\n}\n","import type { UpdateMeta } from '@affine/electron-api';\nimport { apis, events } from '@affine/electron-api';\nimport { isBrowser } from '@affine/env/constant';\nimport { appSettingAtom } from '@toeverything/infra';\nimport { atom, useAtom, useAtomValue } from 'jotai';\nimport { atomWithObservable, atomWithStorage } from 'jotai/utils';\nimport { useCallback, useState } from 'react';\nimport { Observable } from 'rxjs';\n\nimport { track } from '../mixpanel';\nimport { popupWindow } from '../utils';\nimport { useAsyncCallback } from './affine-async-hooks';\n\nfunction rpcToObservable<\n T,\n H extends () => Promise,\n E extends (callback: (t: T) => void) => () => void,\n>(\n initialValue: T | null,\n {\n event,\n handler,\n onSubscribe,\n }: {\n event?: E;\n handler?: H;\n onSubscribe?: () => void;\n }\n): Observable {\n return new Observable(subscriber => {\n subscriber.next(initialValue);\n onSubscribe?.();\n if (!isBrowser || !environment.isDesktop || !event) {\n subscriber.complete();\n return;\n }\n handler?.()\n .then(t => {\n subscriber.next(t);\n })\n .catch(err => {\n subscriber.error(err);\n });\n return event(t => {\n subscriber.next(t);\n });\n });\n}\n\n// download complete, ready to install\nexport const updateReadyAtom = atomWithObservable(() => {\n return rpcToObservable(null as UpdateMeta | null, {\n event: events?.updater.onUpdateReady,\n });\n});\n\n// update available, but not downloaded yet\nexport const updateAvailableAtom = atomWithObservable(() => {\n return rpcToObservable(null as UpdateMeta | null, {\n event: events?.updater.onUpdateAvailable,\n });\n});\n\n// downloading new update\nexport const downloadProgressAtom = atomWithObservable(() => {\n return rpcToObservable(null as number | null, {\n event: events?.updater.onDownloadProgress,\n });\n});\n\nexport const changelogCheckedAtom = atomWithStorage>(\n 'affine:client-changelog-checked',\n {}\n);\n\nexport const checkingForUpdatesAtom = atom(false);\n\nexport const currentVersionAtom = atom(async () => {\n if (!isBrowser) {\n return null;\n }\n const currentVersion = await apis?.updater.currentVersion();\n return currentVersion;\n});\n\nconst currentChangelogUnreadAtom = atom(\n async get => {\n if (!isBrowser) {\n return false;\n }\n const mapping = get(changelogCheckedAtom);\n const currentVersion = await get(currentVersionAtom);\n if (currentVersion) {\n return !mapping[currentVersion];\n }\n return false;\n },\n async (get, set, v: boolean) => {\n const currentVersion = await get(currentVersionAtom);\n if (currentVersion) {\n set(changelogCheckedAtom, mapping => {\n return {\n ...mapping,\n [currentVersion]: v,\n };\n });\n }\n }\n);\n\nexport const useAppUpdater = () => {\n const [appQuitting, setAppQuitting] = useState(false);\n const updateReady = useAtomValue(updateReadyAtom);\n const [setting, setSetting] = useAtom(appSettingAtom);\n const downloadProgress = useAtomValue(downloadProgressAtom);\n const [changelogUnread, setChangelogUnread] = useAtom(\n currentChangelogUnreadAtom\n );\n\n const [checkingForUpdates, setCheckingForUpdates] = useAtom(\n checkingForUpdatesAtom\n );\n\n const quitAndInstall = useCallback(() => {\n track.$.navigationPanel.bottomButtons.quitAndInstall();\n if (updateReady) {\n setAppQuitting(true);\n apis?.updater.quitAndInstall().catch(err => {\n // TODO(@Peng): add error toast here\n console.error(err);\n });\n }\n }, [updateReady]);\n\n const checkForUpdates = useCallback(async () => {\n track.$.settingsPanel.about.checkUpdates();\n if (checkingForUpdates) {\n return;\n }\n setCheckingForUpdates(true);\n try {\n const updateInfo = await apis?.updater.checkForUpdates();\n return updateInfo?.version ?? false;\n } catch (err) {\n console.error('Error checking for updates:', err);\n return null;\n } finally {\n setCheckingForUpdates(false);\n }\n }, [checkingForUpdates, setCheckingForUpdates]);\n\n const downloadUpdate = useCallback(() => {\n track.$.settingsPanel.about.downloadUpdate();\n apis?.updater.downloadUpdate().catch(err => {\n console.error('Error downloading update:', err);\n });\n }, []);\n\n const toggleAutoDownload = useCallback(\n (enable: boolean) => {\n track.$.settingsPanel.about.changeAppSetting({\n key: 'autoDownload',\n value: enable,\n });\n setSetting({\n autoDownloadUpdate: enable,\n });\n },\n [setSetting]\n );\n\n const toggleAutoCheck = useCallback(\n (enable: boolean) => {\n track.$.settingsPanel.about.changeAppSetting({\n key: 'autoCheckUpdates',\n value: enable,\n });\n setSetting({\n autoCheckUpdate: enable,\n });\n },\n [setSetting]\n );\n\n const openChangelog = useAsyncCallback(async () => {\n track.$.navigationPanel.bottomButtons.openChangelog();\n popupWindow(runtimeConfig.changelogUrl);\n await setChangelogUnread(true);\n }, [setChangelogUnread]);\n\n const dismissChangelog = useAsyncCallback(async () => {\n track.$.navigationPanel.bottomButtons.dismissChangelog();\n await setChangelogUnread(true);\n }, [setChangelogUnread]);\n\n return {\n quitAndInstall,\n checkForUpdates,\n downloadUpdate,\n toggleAutoDownload,\n toggleAutoCheck,\n appQuitting,\n checkingForUpdates,\n autoCheck: setting.autoCheckUpdate,\n autoDownload: setting.autoDownloadUpdate,\n changelogUnread,\n openChangelog,\n dismissChangelog,\n updateReady,\n updateAvailable: useAtomValue(updateAvailableAtom),\n downloadProgress,\n currentVersion: useAtomValue(currentVersionAtom),\n };\n};\n","import type { DocCollection, DocMeta } from '@blocksuite/store';\nimport type { Atom } from 'jotai';\nimport { atom, useAtomValue } from 'jotai';\n\nconst weakMap = new WeakMap>();\n\n// this hook is extracted from './use-block-suite-page-meta.ts' to avoid circular dependency\nexport function useAllBlockSuiteDocMeta(\n docCollection: DocCollection\n): DocMeta[] {\n if (!weakMap.has(docCollection)) {\n const baseAtom = atom([...docCollection.meta.docMetas]);\n weakMap.set(docCollection, baseAtom);\n baseAtom.onMount = set => {\n set([...docCollection.meta.docMetas]);\n const dispose = docCollection.meta.docMetaUpdated.on(() => {\n set([...docCollection.meta.docMetas]);\n });\n return () => {\n dispose.dispose();\n };\n };\n }\n return useAtomValue(weakMap.get(docCollection) as Atom);\n}\n","import type { RootBlockModel } from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport type { DocCollection, DocMeta } from '@blocksuite/store';\nimport { useMemo } from 'react';\n\nimport { useAllBlockSuiteDocMeta } from './use-all-block-suite-page-meta';\nimport { useJournalHelper } from './use-journal';\n\n/**\n * Get pageMetas excluding journal pages without updatedDate\n * If you want to get all pageMetas, use `useAllBlockSuitePageMeta` instead\n * @returns\n */\nexport function useBlockSuiteDocMeta(docCollection: DocCollection) {\n const pageMetas = useAllBlockSuiteDocMeta(docCollection);\n const { isPageJournal } = useJournalHelper(docCollection);\n return useMemo(\n () =>\n pageMetas.filter(\n pageMeta => !isPageJournal(pageMeta.id) || !!pageMeta.updatedDate\n ),\n [isPageJournal, pageMetas]\n );\n}\n\nexport function useDocMetaHelper(docCollection: DocCollection) {\n return useMemo(\n () => ({\n setDocTitle: (docId: string, newTitle: string) => {\n const page = docCollection.getDoc(docId);\n assertExists(page);\n const pageBlock = page\n .getBlockByFlavour('affine:page')\n .at(0) as RootBlockModel;\n assertExists(pageBlock);\n page.transact(() => {\n pageBlock.title.delete(0, pageBlock.title.length);\n pageBlock.title.insert(newTitle, 0);\n });\n docCollection.meta.setDocMeta(docId, { title: newTitle });\n },\n setDocReadonly: (docId: string, readonly: boolean) => {\n const page = docCollection.getDoc(docId);\n assertExists(page);\n page.awarenessStore.setReadonly(page.blockCollection, readonly);\n },\n setDocMeta: (docId: string, docMeta: Partial) => {\n docCollection.meta.setDocMeta(docId, docMeta);\n },\n getDocMeta: (docId: string) => {\n return docCollection.meta.getDocMeta(docId);\n },\n }),\n [docCollection]\n );\n}\n","import type { Doc, DocCollection } from '@blocksuite/store';\nimport { useMemo } from 'react';\n\nexport function useDocCollectionHelper(docCollection: DocCollection) {\n return useMemo(\n () => ({\n createDoc: (pageId?: string): Doc => {\n return docCollection.createDoc({ id: pageId });\n },\n }),\n [docCollection]\n );\n}\n","import { type DependencyList, type SyntheticEvent } from 'react';\n\nimport { useAsyncCallback } from './affine-async-hooks';\n\nexport const useCatchEventCallback = <\n E extends SyntheticEvent,\n Args extends any[],\n>(\n cb: (e: E, ...args: Args) => void | Promise,\n deps: DependencyList\n) => {\n return useAsyncCallback(\n async (e: E, ...args: Args) => {\n e.stopPropagation();\n await cb(e, ...args);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps\n );\n};\n","import { i18nTime } from '@affine/i18n';\nimport { initEmptyPage, useService } from '@toeverything/infra';\nimport dayjs from 'dayjs';\nimport { useCallback, useMemo } from 'react';\n\nimport { WorkbenchService } from '../modules/workbench';\nimport type { DocCollection } from '../shared';\nimport { useCurrentWorkspacePropertiesAdapter } from './use-affine-adapter';\nimport { useDocCollectionHelper } from './use-block-suite-workspace-helper';\n\ntype MaybeDate = Date | string | number;\nexport const JOURNAL_DATE_FORMAT = 'YYYY-MM-DD';\n\nfunction isJournalString(j?: string | false) {\n return j ? !!j?.match(/^\\d{4}-\\d{2}-\\d{2}$/) : false;\n}\n\nfunction toDayjs(j?: string | false) {\n if (!j || !isJournalString(j)) return null;\n const day = dayjs(j);\n if (!day.isValid()) return null;\n return day;\n}\n\nexport const useJournalHelper = (docCollection: DocCollection) => {\n const bsWorkspaceHelper = useDocCollectionHelper(docCollection);\n const adapter = useCurrentWorkspacePropertiesAdapter();\n\n /**\n * @internal\n */\n const _createJournal = useCallback(\n (maybeDate: MaybeDate) => {\n const day = dayjs(maybeDate);\n const title = day.format(JOURNAL_DATE_FORMAT);\n const page = bsWorkspaceHelper.createDoc();\n // set created date to match the journal date\n page.collection.setDocMeta(page.id, {\n createDate: dayjs()\n .set('year', day.year())\n .set('month', day.month())\n .set('date', day.date())\n .toDate()\n .getTime(),\n });\n initEmptyPage(page, title);\n adapter.setJournalPageDateString(page.id, title);\n return page;\n },\n [adapter, bsWorkspaceHelper]\n );\n\n const isPageJournal = useCallback(\n (pageId: string) => {\n return !!adapter.getJournalPageDateString(pageId);\n },\n [adapter]\n );\n\n /**\n * query all journals by date\n */\n const getJournalsByDate = useCallback(\n (maybeDate: MaybeDate) => {\n const day = dayjs(maybeDate);\n return Array.from(docCollection.docs.values()).filter(page => {\n const pageId = page.id;\n if (!isPageJournal(pageId)) return false;\n if (page.meta?.trash) return false;\n const journalDate = adapter.getJournalPageDateString(page.id);\n if (!journalDate) return false;\n return day.isSame(journalDate, 'day');\n });\n },\n [adapter, isPageJournal, docCollection.docs]\n );\n\n /**\n * get journal by date, create one if not exist\n */\n const getJournalByDate = useCallback(\n (maybeDate: MaybeDate) => {\n const pages = getJournalsByDate(maybeDate);\n if (pages.length) return pages[0].getDoc();\n return _createJournal(maybeDate);\n },\n [_createJournal, getJournalsByDate]\n );\n\n const isPageTodayJournal = useCallback(\n (pageId: string) => {\n const date = dayjs().format(JOURNAL_DATE_FORMAT);\n const d = adapter.getJournalPageDateString(pageId);\n return isPageJournal(pageId) && d === date;\n },\n [adapter, isPageJournal]\n );\n\n const getJournalDateString = useCallback(\n (pageId: string) => {\n return adapter.getJournalPageDateString(pageId);\n },\n [adapter]\n );\n\n const getLocalizedJournalDateString = useCallback(\n (pageId: string) => {\n const journalDateString = getJournalDateString(pageId);\n if (!journalDateString) return null;\n return i18nTime(journalDateString, { absolute: { accuracy: 'day' } });\n },\n [getJournalDateString]\n );\n\n const appendContentToToday = useCallback(\n async (content: string) => {\n if (!content) return;\n const page = getJournalByDate(dayjs().format(JOURNAL_DATE_FORMAT));\n if (!page) return;\n const blockId = page.addBlock(\n 'affine:paragraph',\n { text: new page.Text(content) },\n page.getBlockByFlavour('affine:note')[0].id\n );\n return { page, blockId };\n },\n [getJournalByDate]\n );\n\n return useMemo(\n () => ({\n getJournalsByDate,\n getJournalByDate,\n getJournalDateString,\n getLocalizedJournalDateString,\n isPageJournal,\n isPageTodayJournal,\n appendContentToToday,\n }),\n [\n getJournalsByDate,\n getJournalByDate,\n getJournalDateString,\n getLocalizedJournalDateString,\n isPageJournal,\n isPageTodayJournal,\n appendContentToToday,\n ]\n );\n};\n\n// split useJournalRouteHelper since it requires a context, which may not work in lit\nexport const useJournalRouteHelper = (docCollection: DocCollection) => {\n const { getJournalByDate } = useJournalHelper(docCollection);\n const workbench = useService(WorkbenchService).workbench;\n /**\n * open journal by date, create one if not exist\n */\n const openJournal = useCallback(\n (maybeDate: MaybeDate, newTab?: boolean) => {\n const page = getJournalByDate(maybeDate);\n workbench.openDoc(page.id, {\n at: newTab ? 'new-tab' : 'active',\n });\n return page.id;\n },\n [getJournalByDate, workbench]\n );\n\n /**\n * open today's journal\n */\n const openToday = useCallback(\n (newTab?: boolean) => {\n const date = dayjs().format(JOURNAL_DATE_FORMAT);\n return openJournal(date, newTab);\n },\n [openJournal]\n );\n\n return useMemo(\n () => ({\n openJournal,\n openToday,\n }),\n [openJournal, openToday]\n );\n};\n\nexport const useJournalInfoHelper = (\n docCollection: DocCollection,\n pageId?: string | null\n) => {\n const {\n isPageJournal,\n getJournalDateString,\n getLocalizedJournalDateString,\n isPageTodayJournal,\n } = useJournalHelper(docCollection);\n\n return useMemo(\n () => ({\n isJournal: pageId ? isPageJournal(pageId) : false,\n journalDate: pageId ? toDayjs(getJournalDateString(pageId)) : null,\n localizedJournalDate: pageId\n ? getLocalizedJournalDateString(pageId)\n : null,\n isTodayJournal: pageId ? isPageTodayJournal(pageId) : false,\n }),\n [\n getJournalDateString,\n getLocalizedJournalDateString,\n isPageJournal,\n isPageTodayJournal,\n pageId,\n ]\n );\n};\n","import type {\n GraphQLQuery,\n MutationOptions,\n QueryResponse,\n QueryVariables,\n RecursiveMaybeFields,\n} from '@affine/graphql';\nimport { fetcher } from '@affine/graphql';\nimport type { GraphQLError } from 'graphql';\nimport { useMemo } from 'react';\nimport type { Key } from 'swr';\nimport { useSWRConfig } from 'swr';\nimport type {\n SWRMutationConfiguration,\n SWRMutationResponse,\n} from 'swr/mutation';\nimport useSWRMutation from 'swr/mutation';\n\n/**\n * A useSWRMutation wrapper for sending graphql mutations\n *\n * @example\n *\n * ```ts\n * import { someMutation } from '@affine/graphql'\n *\n * const { trigger } = useMutation({\n * mutation: someMutation,\n * })\n *\n * trigger({ name: 'John Doe' })\n */\nexport function useMutation(\n options: Omit, 'variables'>,\n config?: Omit<\n SWRMutationConfiguration<\n QueryResponse,\n GraphQLError,\n K,\n QueryVariables\n >,\n 'fetcher'\n >\n): SWRMutationResponse<\n QueryResponse,\n GraphQLError,\n K,\n QueryVariables\n>;\nexport function useMutation(\n options: Omit, 'variables'>,\n config?: any\n) {\n return useSWRMutation(\n () => ['cloud', options.mutation.id],\n (_: unknown[], { arg }: { arg: any }) =>\n fetcher({ ...options, query: options.mutation, variables: arg }),\n config\n );\n}\n\n// use this to revalidate all queries that match the filter\nexport const useMutateQueryResource = () => {\n const { mutate } = useSWRConfig();\n const revalidateResource = useMemo(\n () =>\n (\n query: Q,\n varsFilter: (\n vars: RecursiveMaybeFields>\n ) => boolean = _vars => true\n ) => {\n return mutate(key => {\n const res =\n Array.isArray(key) &&\n key[0] === 'cloud' &&\n key[1] === query.id &&\n varsFilter(key[2]);\n if (res) {\n console.debug('revalidate resource', key);\n }\n return res;\n });\n },\n [mutate]\n );\n\n return revalidateResource;\n};\n","import type { WorkspaceSubPath } from '@affine/core/shared';\nimport { useCallback, useContext, useMemo } from 'react';\nimport type { NavigateOptions, To } from 'react-router-dom';\n\nimport { NavigateContext, router } from '../router';\n\nexport enum RouteLogic {\n REPLACE = 'replace',\n PUSH = 'push',\n}\n\nfunction defaultNavigate(to: To, option?: { replace?: boolean }) {\n setTimeout(() => {\n router?.navigate(to, option).catch(err => {\n console.error('Failed to navigate', err);\n });\n }, 100);\n}\n\n// TODO(@eyhn): add a name -> path helper in the results\n/**\n * @deprecated use `WorkbenchService` instead\n */\nexport function useNavigateHelper() {\n const navigate = useContext(NavigateContext) ?? defaultNavigate;\n\n const jumpToPage = useCallback(\n (\n workspaceId: string,\n pageId: string,\n logic: RouteLogic = RouteLogic.PUSH\n ) => {\n return navigate(`/workspace/${workspaceId}/${pageId}`, {\n replace: logic === RouteLogic.REPLACE,\n });\n },\n [navigate]\n );\n const jumpToPageBlock = useCallback(\n (\n workspaceId: string,\n pageId: string,\n blockId: string,\n logic: RouteLogic = RouteLogic.PUSH\n ) => {\n return navigate(`/workspace/${workspaceId}/${pageId}#${blockId}`, {\n replace: logic === RouteLogic.REPLACE,\n });\n },\n [navigate]\n );\n const jumpToCollections = useCallback(\n (workspaceId: string, logic: RouteLogic = RouteLogic.PUSH) => {\n return navigate(`/workspace/${workspaceId}/collection`, {\n replace: logic === RouteLogic.REPLACE,\n });\n },\n [navigate]\n );\n const jumpToTags = useCallback(\n (workspaceId: string, logic: RouteLogic = RouteLogic.PUSH) => {\n return navigate(`/workspace/${workspaceId}/tag`, {\n replace: logic === RouteLogic.REPLACE,\n });\n },\n [navigate]\n );\n const jumpToTag = useCallback(\n (\n workspaceId: string,\n tagId: string,\n logic: RouteLogic = RouteLogic.PUSH\n ) => {\n return navigate(`/workspace/${workspaceId}/tag/${tagId}`, {\n replace: logic === RouteLogic.REPLACE,\n });\n },\n [navigate]\n );\n const jumpToCollection = useCallback(\n (\n workspaceId: string,\n collectionId: string,\n logic: RouteLogic = RouteLogic.PUSH\n ) => {\n return navigate(`/workspace/${workspaceId}/collection/${collectionId}`, {\n replace: logic === RouteLogic.REPLACE,\n });\n },\n [navigate]\n );\n const jumpToSubPath = useCallback(\n (\n workspaceId: string,\n subPath: WorkspaceSubPath,\n logic: RouteLogic = RouteLogic.PUSH\n ) => {\n return navigate(`/workspace/${workspaceId}/${subPath}`, {\n replace: logic === RouteLogic.REPLACE,\n });\n },\n [navigate]\n );\n\n const openPage = useCallback(\n (workspaceId: string, pageId: string) => {\n return jumpToPage(workspaceId, pageId);\n },\n [jumpToPage]\n );\n\n const jumpToIndex = useCallback(\n (logic: RouteLogic = RouteLogic.PUSH, opt?: { search?: string }) => {\n return navigate(\n { pathname: '/', search: opt?.search },\n {\n replace: logic === RouteLogic.REPLACE,\n }\n );\n },\n [navigate]\n );\n\n const jumpTo404 = useCallback(\n (logic: RouteLogic = RouteLogic.PUSH) => {\n return navigate('/404', {\n replace: logic === RouteLogic.REPLACE,\n });\n },\n [navigate]\n );\n const jumpToExpired = useCallback(\n (logic: RouteLogic = RouteLogic.PUSH) => {\n return navigate('/expired', {\n replace: logic === RouteLogic.REPLACE,\n });\n },\n [navigate]\n );\n const jumpToSignIn = useCallback(\n (\n redirectUri?: string,\n logic: RouteLogic = RouteLogic.PUSH,\n otherOptions?: Omit,\n params?: Record\n ) => {\n const searchParams = new URLSearchParams();\n\n if (redirectUri) {\n searchParams.set('redirect_uri', encodeURIComponent(redirectUri));\n }\n\n if (params) {\n for (const key in params) searchParams.set(key, params[key]);\n }\n\n return navigate(\n '/signIn' +\n (searchParams.toString() ? '?' + searchParams.toString() : ''),\n {\n replace: logic === RouteLogic.REPLACE,\n ...otherOptions,\n }\n );\n },\n [navigate]\n );\n\n const openInApp = useCallback(\n (schema: string, path: string) => {\n const encodedUrl = encodeURIComponent(`${schema}://${path}`);\n return navigate(`/open-app/url?schema=${schema}&url=${encodedUrl}`);\n },\n [navigate]\n );\n\n return useMemo(\n () => ({\n jumpToPage,\n jumpToPageBlock,\n jumpToSubPath,\n jumpToIndex,\n jumpTo404,\n openPage,\n jumpToExpired,\n jumpToSignIn,\n jumpToCollection,\n jumpToCollections,\n jumpToTags,\n jumpToTag,\n openInApp,\n }),\n [\n jumpToPage,\n jumpToPageBlock,\n jumpToSubPath,\n jumpToIndex,\n jumpTo404,\n openPage,\n jumpToExpired,\n jumpToSignIn,\n jumpToCollection,\n jumpToCollections,\n jumpToTags,\n jumpToTag,\n openInApp,\n ]\n );\n}\n","import { useCallback, useSyncExternalStore } from 'react';\n\nconst getOnLineStatus = () =>\n typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean'\n ? navigator.onLine\n : true;\n\nexport function useSystemOnline(): boolean {\n return useSyncExternalStore(\n useCallback(onStoreChange => {\n window.addEventListener('online', onStoreChange);\n window.addEventListener('offline', onStoreChange);\n return () => {\n window.removeEventListener('online', onStoreChange);\n window.removeEventListener('offline', onStoreChange);\n };\n }, []),\n useCallback(() => getOnLineStatus(), []),\n useCallback(() => true, [])\n );\n}\n","import type { WorkspaceMetadata } from '@toeverything/infra';\nimport {\n useLiveData,\n useService,\n WorkspacesService,\n} from '@toeverything/infra';\nimport { useEffect } from 'react';\n\nexport function useWorkspaceInfo(meta: WorkspaceMetadata) {\n const workspacesService = useService(WorkspacesService);\n\n const profile = workspacesService.getProfile(meta);\n\n useEffect(() => {\n profile.revalidate();\n }, [meta, profile]);\n\n return useLiveData(profile.profile$);\n}\n\nexport function useWorkspaceName(meta: WorkspaceMetadata) {\n const information = useWorkspaceInfo(meta);\n\n return information?.name;\n}\n","import { DebugLogger } from '@affine/debug';\n\nimport type { CallableEventsChain, EventsUnion } from './types';\n\nconst logger = new DebugLogger('mixpanel');\n\ninterface TrackFn {\n (event: string, props: Record): void;\n}\n\nconst levels = ['page', 'segment', 'module', 'event'] as const;\nexport function makeTracker(trackFn: TrackFn): CallableEventsChain {\n function makeTrackerInner(level: number, info: Record) {\n const proxy = new Proxy({} as Record, {\n get(target, prop) {\n if (\n typeof prop !== 'string' ||\n prop === '$$typeof' /* webpack hot-reload reads this prop */\n ) {\n return undefined;\n }\n\n if (levels[level] === 'event') {\n return (arg: string | Record) => {\n trackFn(prop, {\n ...info,\n ...(typeof arg === 'string' ? { arg } : arg),\n });\n };\n } else {\n let levelProxy = target[prop];\n if (levelProxy) {\n return levelProxy;\n }\n\n levelProxy = makeTrackerInner(\n level + 1,\n prop === '$' ? { ...info } : { ...info, [levels[level]]: prop }\n );\n target[prop] = levelProxy;\n return levelProxy;\n }\n },\n });\n\n return proxy;\n }\n\n return makeTrackerInner(0, {}) as CallableEventsChain;\n}\n\n/**\n * listen on clicking on all subtree elements and auto track events if defined\n *\n * @example\n *\n * ```html\n * \n * data-event-args-foo='bar'\n * />\n * ```\n */\nexport function enableAutoTrack(root: HTMLElement, trackFn: TrackFn) {\n const listener = (e: Event) => {\n const el = e.target as HTMLElement | null;\n if (!el) {\n return;\n }\n const dataset = el.dataset;\n\n if (dataset['eventProps']) {\n const args: Record = {};\n if (dataset['eventArg'] !== undefined) {\n args['arg'] = dataset['event-arg'];\n } else {\n for (const argName of Object.keys(dataset)) {\n if (argName.startsWith('eventArgs')) {\n args[argName.slice(9).toLowerCase()] = dataset[argName];\n }\n }\n }\n\n const props = dataset['eventProps']\n .split('.')\n .map(name => (name === '$' ? undefined : name));\n if (props.length !== levels.length) {\n logger.error('Invalid event props on element', el);\n return;\n }\n\n const event = props[3];\n\n if (!event) {\n logger.error('Invalid event props on element', el);\n return;\n }\n\n trackFn(event, {\n page: props[0] as any,\n segment: props[1],\n module: props[2],\n ...args,\n });\n }\n };\n\n root.addEventListener('click', listener, {});\n return () => {\n root.removeEventListener('click', listener);\n };\n}\n\ndeclare module 'react' {\n // we have to declare `T` but it's actually not used\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface HTMLAttributes {\n 'data-event-props'?: EventsUnion;\n 'data-event-arg'?: string;\n 'data-event-args-control'?: string;\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-imports\nimport { DebugLogger } from '@affine/debug';\nimport type { OverridedMixpanel } from 'mixpanel-browser';\nimport mixpanelBrowser from 'mixpanel-browser';\n\nconst logger = new DebugLogger('mixpanel');\n\ntype Middleware = (\n name: string,\n properties?: Record\n) => Record;\n\nfunction createMixpanel() {\n let mixpanel;\n if (process.env.MIXPANEL_TOKEN) {\n mixpanelBrowser.init(process.env.MIXPANEL_TOKEN || '', {\n track_pageview: true,\n persistence: 'localStorage',\n api_host: 'https://telemetry.affine.run',\n ignore_dnt: true,\n });\n mixpanel = mixpanelBrowser;\n } else {\n mixpanel = new Proxy(\n function () {} as unknown as OverridedMixpanel,\n createProxyHandler()\n );\n }\n\n const middlewares = new Set();\n\n const wrapped = {\n init() {\n mixpanel.register({\n appVersion: runtimeConfig.appVersion,\n environment: runtimeConfig.appBuildType,\n editorVersion: runtimeConfig.editorVersion,\n isSelfHosted: Boolean(runtimeConfig.isSelfHosted),\n isDesktop: environment.isDesktop,\n });\n },\n reset() {\n mixpanel.reset();\n this.init();\n },\n track(event_name: string, properties?: Record) {\n const middlewareProperties = Array.from(middlewares).reduce(\n (acc, middleware) => {\n return middleware(event_name, acc);\n },\n properties as Record\n );\n logger.debug('track', event_name, middlewareProperties);\n\n mixpanel.track(event_name as string, middlewareProperties);\n },\n middleware(cb: Middleware): () => void {\n middlewares.add(cb);\n return () => {\n middlewares.delete(cb);\n };\n },\n opt_out_tracking() {\n mixpanel.opt_out_tracking();\n },\n opt_in_tracking() {\n mixpanel.opt_in_tracking();\n },\n has_opted_in_tracking() {\n mixpanel.has_opted_in_tracking();\n },\n has_opted_out_tracking() {\n mixpanel.has_opted_out_tracking();\n },\n identify(unique_id?: string) {\n mixpanel.identify(unique_id);\n },\n get people() {\n return mixpanel.people;\n },\n track_pageview(properties?: { location?: string }) {\n logger.debug('track_pageview', properties);\n mixpanel.track_pageview(properties);\n },\n };\n\n return wrapped;\n}\n\nexport const mixpanel = createMixpanel();\nmixpanel.init();\n\nfunction createProxyHandler() {\n const handler = {\n get: () => {\n return new Proxy(\n function () {} as unknown as OverridedMixpanel,\n createProxyHandler()\n );\n },\n apply: () => {},\n } as ProxyHandler;\n return handler;\n}\n","import { enableAutoTrack, makeTracker } from './auto';\nimport { mixpanel } from './mixpanel';\n\nexport const track = makeTracker((event, props) => {\n mixpanel.track(event, props);\n});\n\nexport { enableAutoTrack, mixpanel };\n","import {\n backoffRetry,\n effect,\n Entity,\n fromPromise,\n LiveData,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { EMPTY, exhaustMap, mergeMap } from 'rxjs';\n\nimport { validateAndReduceImage } from '../../../utils/reduce-image';\nimport type { AccountProfile, AuthStore } from '../stores/auth';\n\nexport interface AuthSessionInfo {\n account: AuthAccountInfo;\n}\n\nexport interface AuthAccountInfo {\n id: string;\n label: string;\n email?: string;\n info?: AccountProfile | null;\n avatar?: string | null;\n}\n\nexport interface AuthSessionUnauthenticated {\n status: 'unauthenticated';\n}\n\nexport interface AuthSessionAuthenticated {\n status: 'authenticated';\n session: AuthSessionInfo;\n}\n\nexport class AuthSession extends Entity {\n id = 'affine-cloud' as const;\n\n session$: LiveData =\n LiveData.from(this.store.watchCachedAuthSession(), null).map(session =>\n session\n ? {\n status: 'authenticated',\n session: session as AuthSessionInfo,\n }\n : {\n status: 'unauthenticated',\n }\n );\n\n status$ = this.session$.map(session => session.status);\n\n account$ = this.session$.map(session =>\n session.status === 'authenticated' ? session.session.account : null\n );\n\n waitForAuthenticated = (signal?: AbortSignal) =>\n this.session$.waitFor(\n session => session.status === 'authenticated',\n signal\n ) as Promise;\n\n isRevalidating$ = new LiveData(false);\n\n constructor(private readonly store: AuthStore) {\n super();\n }\n\n revalidate = effect(\n exhaustMap(() =>\n fromPromise(this.getSession()).pipe(\n backoffRetry({\n count: Infinity,\n }),\n mergeMap(sessionInfo => {\n this.store.setCachedAuthSession(sessionInfo);\n return EMPTY;\n }),\n onStart(() => {\n this.isRevalidating$.next(true);\n }),\n onComplete(() => {\n this.isRevalidating$.next(false);\n })\n )\n )\n );\n\n private async getSession(): Promise {\n const session = await this.store.fetchSession();\n\n if (session?.user) {\n const account = {\n id: session.user.id,\n email: session.user.email,\n label: session.user.name,\n avatar: session.user.avatarUrl,\n info: session.user,\n };\n const result = {\n account,\n };\n return result;\n } else {\n return null;\n }\n }\n\n async waitForRevalidation(signal?: AbortSignal) {\n this.revalidate();\n await this.isRevalidating$.waitFor(\n isRevalidating => !isRevalidating,\n signal\n );\n }\n\n async removeAvatar() {\n await this.store.removeAvatar();\n await this.waitForRevalidation();\n }\n\n async uploadAvatar(file: File) {\n const reducedFile = await validateAndReduceImage(file);\n await this.store.uploadAvatar(reducedFile);\n await this.waitForRevalidation();\n }\n\n async updateLabel(label: string) {\n await this.store.updateLabel(label);\n console.log('updateLabel');\n await this.waitForRevalidation();\n }\n\n override dispose(): void {\n this.revalidate.unsubscribe();\n }\n}\n","import { FeatureType } from '@affine/graphql';\nimport {\n backoffRetry,\n catchErrorInto,\n effect,\n Entity,\n exhaustMapSwitchUntilChanged,\n fromPromise,\n LiveData,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { EMPTY, map, mergeMap } from 'rxjs';\n\nimport { isBackendError, isNetworkError } from '../error';\nimport type { AuthService } from '../services/auth';\nimport type { UserFeatureStore } from '../stores/user-feature';\n\nexport class UserFeature extends Entity {\n // undefined means no user, null means loading\n features$ = new LiveData(null);\n isEarlyAccess$ = this.features$.map(features =>\n features === null\n ? null\n : features?.some(f => f === FeatureType.EarlyAccess)\n );\n\n isRevalidating$ = new LiveData(false);\n error$ = new LiveData(null);\n\n constructor(\n private readonly authService: AuthService,\n private readonly store: UserFeatureStore\n ) {\n super();\n }\n\n revalidate = effect(\n map(() => ({\n accountId: this.authService.session.account$.value?.id,\n })),\n exhaustMapSwitchUntilChanged(\n (a, b) => a.accountId === b.accountId,\n ({ accountId }) => {\n return fromPromise(async signal => {\n if (!accountId) {\n return; // no feature if no user\n }\n\n const { userId, features } = await this.store.getUserFeatures(signal);\n if (userId !== accountId) {\n // The user has changed, ignore the result\n this.authService.session.revalidate();\n await this.authService.session.waitForRevalidation();\n return;\n }\n return {\n userId: userId,\n features: features,\n };\n }).pipe(\n backoffRetry({\n when: isNetworkError,\n count: Infinity,\n }),\n backoffRetry({\n when: isBackendError,\n }),\n mergeMap(data => {\n if (data) {\n this.features$.next(data.features);\n } else {\n this.features$.next(null);\n }\n return EMPTY;\n }),\n catchErrorInto(this.error$),\n onStart(() => this.isRevalidating$.next(true)),\n onComplete(() => this.isRevalidating$.next(false))\n );\n },\n () => {\n // Reset the state when the user is changed\n this.reset();\n }\n )\n );\n\n reset() {\n this.features$.next(null);\n this.error$.next(null);\n this.isRevalidating$.next(false);\n }\n}\n","import type { QuotaQuery } from '@affine/graphql';\nimport {\n backoffRetry,\n catchErrorInto,\n effect,\n Entity,\n exhaustMapSwitchUntilChanged,\n fromPromise,\n LiveData,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { cssVar } from '@toeverything/theme';\nimport bytes from 'bytes';\nimport { EMPTY, map, mergeMap } from 'rxjs';\n\nimport { isBackendError, isNetworkError } from '../error';\nimport type { AuthService } from '../services/auth';\nimport type { UserQuotaStore } from '../stores/user-quota';\n\nexport class UserQuota extends Entity {\n quota$ = new LiveData['quota']>(null);\n /** Used storage in bytes */\n used$ = new LiveData(null);\n /** Formatted used storage */\n usedFormatted$ = this.used$.map(used =>\n used !== null ? bytes.format(used) : null\n );\n /** Maximum storage limit in bytes */\n max$ = this.quota$.map(quota => (quota ? quota.storageQuota : null));\n /** Maximum storage limit formatted */\n maxFormatted$ = this.max$.map(max => (max ? bytes.format(max) : null));\n\n /** Percentage of storage used */\n percent$ = LiveData.computed(get => {\n const max = get(this.max$);\n const used = get(this.used$);\n if (max === null || used === null) {\n return null;\n }\n return Math.min(\n 100,\n Math.max(0.5, Number(((used / max) * 100).toFixed(4)))\n );\n });\n\n color$ = this.percent$.map(percent =>\n percent !== null\n ? percent > 80\n ? cssVar('errorColor')\n : cssVar('processingColor')\n : null\n );\n\n isRevalidating$ = new LiveData(false);\n error$ = new LiveData(null);\n\n constructor(\n private readonly authService: AuthService,\n private readonly store: UserQuotaStore\n ) {\n super();\n }\n\n revalidate = effect(\n map(() => ({\n accountId: this.authService.session.account$.value?.id,\n })),\n exhaustMapSwitchUntilChanged(\n (a, b) => a.accountId === b.accountId,\n ({ accountId }) =>\n fromPromise(async signal => {\n if (!accountId) {\n return; // no quota if no user\n }\n const { quota, used } = await this.store.fetchUserQuota(signal);\n\n return { quota, used };\n }).pipe(\n backoffRetry({\n when: isNetworkError,\n count: Infinity,\n }),\n backoffRetry({\n when: isBackendError,\n }),\n mergeMap(data => {\n if (data) {\n const { quota, used } = data;\n this.quota$.next(quota);\n this.used$.next(used);\n } else {\n this.quota$.next(null);\n this.used$.next(null);\n }\n return EMPTY;\n }),\n catchErrorInto(this.error$),\n onStart(() => this.isRevalidating$.next(true)),\n onComplete(() => this.isRevalidating$.next(false))\n ),\n () => {\n // Reset the state when the user is changed\n this.reset();\n }\n )\n );\n\n reset() {\n this.quota$.next(null);\n this.used$.next(null);\n this.error$.next(null);\n this.isRevalidating$.next(false);\n }\n\n override dispose(): void {\n this.revalidate.unsubscribe();\n }\n}\n","export class NetworkError extends Error {\n constructor(public readonly originError: Error) {\n super(`Network error: ${originError.message}`);\n this.stack = originError.stack;\n }\n}\n\nexport function isNetworkError(error: Error): error is NetworkError {\n return error instanceof NetworkError;\n}\n\nexport class BackendError extends Error {\n constructor(public readonly originError: Error) {\n super(`Server error: ${originError.message}`);\n this.stack = originError.stack;\n }\n}\n\nexport function isBackendError(error: Error): error is BackendError {\n return error instanceof BackendError;\n}\n","import { ApplicationStarted, OnEvent, Service } from '@toeverything/infra';\n\nimport { ServerConfig } from '../entities/server-config';\n\n@OnEvent(ApplicationStarted, e => e.onApplicationStart)\nexport class ServerConfigService extends Service {\n serverConfig = this.framework.createEntity(ServerConfig);\n\n private onApplicationStart() {\n this.serverConfig.revalidate();\n }\n}\n","import { type CreateCheckoutSessionInput } from '@affine/graphql';\nimport { OnEvent, Service } from '@toeverything/infra';\n\nimport { Subscription } from '../entities/subscription';\nimport { SubscriptionPrices } from '../entities/subscription-prices';\nimport type { SubscriptionStore } from '../stores/subscription';\nimport { AccountChanged } from './auth';\n\n@OnEvent(AccountChanged, e => e.onAccountChanged)\nexport class SubscriptionService extends Service {\n subscription = this.framework.createEntity(Subscription);\n prices = this.framework.createEntity(SubscriptionPrices);\n\n constructor(private readonly store: SubscriptionStore) {\n super();\n }\n\n async createCheckoutSession(input: CreateCheckoutSessionInput) {\n return await this.store.createCheckoutSession(input);\n }\n\n private onAccountChanged() {\n this.subscription.revalidate();\n }\n}\n","import { OnEvent, Service } from '@toeverything/infra';\n\nimport { UserCopilotQuota } from '../entities/user-copilot-quota';\nimport { AccountChanged } from './auth';\n\n@OnEvent(AccountChanged, e => e.onAccountChanged)\nexport class UserCopilotQuotaService extends Service {\n copilotQuota = this.framework.createEntity(UserCopilotQuota);\n\n private onAccountChanged() {\n this.copilotQuota.revalidate();\n }\n}\n","import { OnEvent, Service } from '@toeverything/infra';\nimport type { Socket } from 'socket.io-client';\nimport { Manager } from 'socket.io-client';\n\nimport { getAffineCloudBaseUrl } from '../services/fetch';\nimport { AccountChanged } from './auth';\n\n@OnEvent(AccountChanged, e => e.reconnect)\nexport class WebSocketService extends Service {\n ioManager: Manager = new Manager(`${getAffineCloudBaseUrl()}/`, {\n autoConnect: false,\n transports: ['websocket'],\n secure: location.protocol === 'https:',\n });\n sockets: Set = new Set();\n\n constructor() {\n super();\n }\n\n newSocket(): Socket {\n const socket = this.ioManager.socket('/');\n this.sockets.add(socket);\n\n return socket;\n }\n\n reconnect(): void {\n for (const socket of this.sockets) {\n socket.disconnect();\n }\n\n for (const socket of this.sockets) {\n socket.connect();\n }\n }\n}\n","import {\n gqlFetcherFactory,\n type GraphQLQuery,\n type QueryOptions,\n type QueryResponse,\n UserFriendlyError,\n} from '@affine/graphql';\nimport { fromPromise, Service } from '@toeverything/infra';\nimport type { Observable } from 'rxjs';\n\nimport { BackendError } from '../error';\nimport { AuthService } from './auth';\nimport type { FetchService } from './fetch';\n\nexport class GraphQLService extends Service {\n constructor(private readonly fetcher: FetchService) {\n super();\n }\n\n private readonly rawGql = gqlFetcherFactory('/graphql', this.fetcher.fetch);\n\n rxGql = (\n options: QueryOptions\n ): Observable> => {\n return fromPromise(signal => {\n return this.gql({\n ...options,\n context: {\n signal,\n ...options.context,\n },\n } as any);\n });\n };\n\n gql = async (\n options: QueryOptions\n ): Promise> => {\n try {\n return await this.rawGql(options);\n } catch (err) {\n const standardError = UserFriendlyError.fromAnyError(err);\n\n if (standardError.status === 403) {\n this.framework.get(AuthService).session.revalidate();\n }\n\n throw new BackendError(standardError);\n }\n };\n}\n","import type {\n OauthProvidersQuery,\n ServerConfigQuery,\n ServerFeature,\n} from '@affine/graphql';\nimport {\n backoffRetry,\n effect,\n Entity,\n fromPromise,\n LiveData,\n} from '@toeverything/infra';\nimport { EMPTY, exhaustMap, mergeMap } from 'rxjs';\n\nimport type { ServerConfigStore } from '../stores/server-config';\n\ntype LowercaseServerFeature = Lowercase;\ntype ServerFeatureRecord = {\n [key in LowercaseServerFeature]: boolean;\n};\n\nexport type ServerConfigType = ServerConfigQuery['serverConfig'] &\n OauthProvidersQuery['serverConfig'];\n\nexport class ServerConfig extends Entity {\n readonly config$ = new LiveData(null);\n\n readonly features$ = this.config$.map(config => {\n return config\n ? Array.from(new Set(config.features)).reduce((acc, cur) => {\n acc[cur.toLowerCase() as LowercaseServerFeature] = true;\n return acc;\n }, {} as ServerFeatureRecord)\n : null;\n });\n\n readonly credentialsRequirement$ = this.config$.map(config => {\n return config ? config.credentialsRequirement : null;\n });\n\n constructor(private readonly store: ServerConfigStore) {\n super();\n }\n\n revalidate = effect(\n exhaustMap(() => {\n return fromPromise(signal =>\n this.store.fetchServerConfig(signal)\n ).pipe(\n backoffRetry({\n count: Infinity,\n }),\n mergeMap(config => {\n this.config$.next(config);\n return EMPTY;\n })\n );\n })\n );\n\n revalidateIfNeeded = () => {\n if (!this.config$.value) {\n this.revalidate();\n }\n };\n\n override dispose(): void {\n this.revalidate.unsubscribe();\n }\n}\n","import { type SubscriptionQuery, SubscriptionRecurring } from '@affine/graphql';\nimport { SubscriptionPlan } from '@affine/graphql';\nimport {\n backoffRetry,\n catchErrorInto,\n effect,\n Entity,\n exhaustMapSwitchUntilChanged,\n fromPromise,\n LiveData,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { EMPTY, map, mergeMap } from 'rxjs';\n\nimport { isBackendError, isNetworkError } from '../error';\nimport type { AuthService } from '../services/auth';\nimport type { ServerConfigService } from '../services/server-config';\nimport type { SubscriptionStore } from '../stores/subscription';\n\nexport type SubscriptionType = NonNullable<\n SubscriptionQuery['currentUser']\n>['subscriptions'][number];\n\nexport class Subscription extends Entity {\n // undefined means no user, null means loading\n subscription$ = new LiveData(null);\n isRevalidating$ = new LiveData(false);\n error$ = new LiveData(null);\n\n pro$ = this.subscription$.map(subscriptions =>\n subscriptions\n ? subscriptions.find(sub => sub.plan === SubscriptionPlan.Pro)\n : null\n );\n ai$ = this.subscription$.map(subscriptions =>\n subscriptions\n ? subscriptions.find(sub => sub.plan === SubscriptionPlan.AI)\n : null\n );\n isBeliever$ = this.pro$.map(\n sub => sub?.recurring === SubscriptionRecurring.Lifetime\n );\n\n constructor(\n private readonly authService: AuthService,\n private readonly serverConfigService: ServerConfigService,\n private readonly store: SubscriptionStore\n ) {\n super();\n }\n\n async resumeSubscription(idempotencyKey: string, plan?: SubscriptionPlan) {\n await this.store.mutateResumeSubscription(idempotencyKey, plan);\n await this.waitForRevalidation();\n }\n\n async cancelSubscription(idempotencyKey: string, plan?: SubscriptionPlan) {\n await this.store.mutateCancelSubscription(idempotencyKey, plan);\n await this.waitForRevalidation();\n }\n\n async setSubscriptionRecurring(\n idempotencyKey: string,\n recurring: SubscriptionRecurring,\n plan?: SubscriptionPlan\n ) {\n await this.store.setSubscriptionRecurring(idempotencyKey, recurring, plan);\n await this.waitForRevalidation();\n }\n\n async waitForRevalidation(signal?: AbortSignal) {\n this.revalidate();\n await this.isRevalidating$.waitFor(\n isRevalidating => !isRevalidating,\n signal\n );\n }\n\n revalidate = effect(\n map(() => ({\n accountId: this.authService.session.account$.value?.id,\n })),\n exhaustMapSwitchUntilChanged(\n (a, b) => a.accountId === b.accountId,\n ({ accountId }) => {\n return fromPromise(async signal => {\n if (!accountId) {\n return undefined; // no subscription if no user\n }\n\n const serverConfig =\n await this.serverConfigService.serverConfig.features$.waitForNonNull(\n signal\n );\n\n if (!serverConfig.payment) {\n // No payment feature, no subscription\n return {\n userId: accountId,\n subscriptions: [],\n };\n }\n const { userId, subscriptions } =\n await this.store.fetchSubscriptions(signal);\n if (userId !== accountId) {\n // The user has changed, ignore the result\n this.authService.session.revalidate();\n await this.authService.session.waitForRevalidation();\n return null;\n }\n return {\n userId: userId,\n subscriptions: subscriptions,\n };\n }).pipe(\n backoffRetry({\n when: isNetworkError,\n count: Infinity,\n }),\n backoffRetry({\n when: isBackendError,\n }),\n mergeMap(data => {\n if (data) {\n this.store.setCachedSubscriptions(\n data.userId,\n data.subscriptions\n );\n this.subscription$.next(data.subscriptions);\n } else {\n this.subscription$.next(undefined);\n }\n return EMPTY;\n }),\n catchErrorInto(this.error$),\n onStart(() => this.isRevalidating$.next(true)),\n onComplete(() => this.isRevalidating$.next(false))\n );\n },\n ({ accountId }) => {\n this.reset();\n if (!accountId) {\n this.subscription$.next(null);\n } else {\n this.subscription$.next(this.store.getCachedSubscriptions(accountId));\n }\n }\n )\n );\n\n reset() {\n this.subscription$.next(null);\n this.isRevalidating$.next(false);\n this.error$.next(null);\n }\n\n override dispose(): void {\n this.revalidate.unsubscribe();\n }\n}\n","import type { PricesQuery } from '@affine/graphql';\nimport {\n backoffRetry,\n catchErrorInto,\n effect,\n Entity,\n fromPromise,\n LiveData,\n mapInto,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { exhaustMap } from 'rxjs';\n\nimport { isBackendError, isNetworkError } from '../error';\nimport type { ServerConfigService } from '../services/server-config';\nimport type { SubscriptionStore } from '../stores/subscription';\n\nexport class SubscriptionPrices extends Entity {\n prices$ = new LiveData(null);\n isRevalidating$ = new LiveData(false);\n error$ = new LiveData(null);\n\n proPrice$ = this.prices$.map(prices =>\n prices ? prices.find(price => price.plan === 'Pro') : null\n );\n aiPrice$ = this.prices$.map(prices =>\n prices ? prices.find(price => price.plan === 'AI') : null\n );\n\n readableLifetimePrice$ = this.proPrice$.map(price =>\n price?.lifetimeAmount\n ? `$${(price.lifetimeAmount / 100).toFixed(2).replace(/\\.0+$/, '')}`\n : ''\n );\n\n constructor(\n private readonly serverConfigService: ServerConfigService,\n private readonly store: SubscriptionStore\n ) {\n super();\n }\n\n revalidate = effect(\n exhaustMap(() => {\n return fromPromise(async signal => {\n // ensure server config is loaded\n this.serverConfigService.serverConfig.revalidateIfNeeded();\n\n const serverConfig =\n await this.serverConfigService.serverConfig.features$.waitForNonNull(\n signal\n );\n\n if (!serverConfig.payment) {\n // No payment feature, no subscription\n return [];\n }\n return this.store.fetchSubscriptionPrices(signal);\n }).pipe(\n backoffRetry({\n when: isNetworkError,\n count: Infinity,\n }),\n backoffRetry({\n when: isBackendError,\n }),\n mapInto(this.prices$),\n catchErrorInto(this.error$),\n onStart(() => this.isRevalidating$.next(true)),\n onComplete(() => this.isRevalidating$.next(false))\n );\n })\n );\n}\n","import {\n backoffRetry,\n catchErrorInto,\n effect,\n Entity,\n exhaustMapSwitchUntilChanged,\n fromPromise,\n LiveData,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { EMPTY, map, mergeMap } from 'rxjs';\n\nimport { isBackendError, isNetworkError } from '../error';\nimport type { AuthService } from '../services/auth';\nimport type { ServerConfigService } from '../services/server-config';\nimport type { UserCopilotQuotaStore } from '../stores/user-copilot-quota';\n\nexport class UserCopilotQuota extends Entity {\n copilotActionLimit$ = new LiveData(null);\n copilotActionUsed$ = new LiveData(null);\n\n isRevalidating$ = new LiveData(false);\n error$ = new LiveData(null);\n\n constructor(\n private readonly authService: AuthService,\n private readonly store: UserCopilotQuotaStore,\n private readonly serverConfigService: ServerConfigService\n ) {\n super();\n }\n\n revalidate = effect(\n map(() => ({\n accountId: this.authService.session.account$.value?.id,\n })),\n exhaustMapSwitchUntilChanged(\n (a, b) => a.accountId === b.accountId,\n ({ accountId }) =>\n fromPromise(async signal => {\n if (!accountId) {\n return; // no quota if no user\n }\n\n const serverConfig =\n await this.serverConfigService.serverConfig.features$.waitForNonNull(\n signal\n );\n\n let aiQuota = null;\n\n if (serverConfig.copilot) {\n aiQuota = await this.store.fetchUserCopilotQuota(signal);\n }\n\n return aiQuota;\n }).pipe(\n backoffRetry({\n when: isNetworkError,\n count: Infinity,\n }),\n backoffRetry({\n when: isBackendError,\n }),\n mergeMap(data => {\n if (data) {\n const { limit, used } = data;\n this.copilotActionUsed$.next(used);\n this.copilotActionLimit$.next(\n limit === null ? 'unlimited' : limit\n ); // fix me: unlimited status\n } else {\n this.copilotActionUsed$.next(null);\n this.copilotActionLimit$.next(null);\n }\n return EMPTY;\n }),\n catchErrorInto(this.error$),\n onStart(() => this.isRevalidating$.next(true)),\n onComplete(() => this.isRevalidating$.next(false))\n ),\n () => {\n // Reset the state when the user is changed\n this.reset();\n }\n )\n );\n\n reset() {\n this.copilotActionUsed$.next(null);\n this.copilotActionLimit$.next(null);\n this.error$.next(null);\n this.isRevalidating$.next(false);\n }\n\n override dispose(): void {\n this.revalidate.unsubscribe();\n }\n}\n","import {\n getUserQuery,\n removeAvatarMutation,\n updateUserProfileMutation,\n uploadAvatarMutation,\n} from '@affine/graphql';\nimport type { GlobalStateService } from '@toeverything/infra';\nimport { Store } from '@toeverything/infra';\n\nimport type { AuthSessionInfo } from '../entities/session';\nimport type { FetchService } from '../services/fetch';\nimport type { GraphQLService } from '../services/graphql';\n\nexport interface AccountProfile {\n id: string;\n email: string;\n name: string;\n hasPassword: boolean;\n avatarUrl: string | null;\n emailVerified: string | null;\n}\n\nexport class AuthStore extends Store {\n constructor(\n private readonly fetchService: FetchService,\n private readonly gqlService: GraphQLService,\n private readonly globalStateService: GlobalStateService\n ) {\n super();\n }\n\n watchCachedAuthSession() {\n return this.globalStateService.globalState.watch(\n 'affine-cloud-auth'\n );\n }\n\n setCachedAuthSession(session: AuthSessionInfo | null) {\n this.globalStateService.globalState.set('affine-cloud-auth', session);\n }\n\n async fetchSession() {\n const url = `/api/auth/session`;\n const options: RequestInit = {\n headers: {\n 'Content-Type': 'application/json',\n },\n };\n\n const res = await this.fetchService.fetch(url, options);\n const data = (await res.json()) as {\n user?: AccountProfile | null;\n };\n if (!res.ok)\n throw new Error('Get session fetch error: ' + JSON.stringify(data));\n return data; // Return null if data empty\n }\n\n async uploadAvatar(file: File) {\n await this.gqlService.gql({\n query: uploadAvatarMutation,\n variables: {\n avatar: file,\n },\n });\n }\n\n async removeAvatar() {\n await this.gqlService.gql({\n query: removeAvatarMutation,\n });\n }\n\n async updateLabel(label: string) {\n await this.gqlService.gql({\n query: updateUserProfileMutation,\n variables: {\n input: {\n name: label,\n },\n },\n });\n }\n\n async checkUserByEmail(email: string) {\n const data = await this.gqlService.gql({\n query: getUserQuery,\n variables: {\n email,\n },\n });\n return {\n isExist: !!data.user,\n hasPassword: !!data.user?.hasPassword,\n };\n }\n}\n","import {\n oauthProvidersQuery,\n serverConfigQuery,\n ServerFeature,\n} from '@affine/graphql';\nimport { Store } from '@toeverything/infra';\n\nimport type { ServerConfigType } from '../entities/server-config';\nimport type { GraphQLService } from '../services/graphql';\n\nexport class ServerConfigStore extends Store {\n constructor(private readonly gqlService: GraphQLService) {\n super();\n }\n\n async fetchServerConfig(\n abortSignal?: AbortSignal\n ): Promise {\n const serverConfigData = await this.gqlService.gql({\n query: serverConfigQuery,\n context: {\n signal: abortSignal,\n },\n });\n if (serverConfigData.serverConfig.features.includes(ServerFeature.OAuth)) {\n const oauthProvidersData = await this.gqlService.gql({\n query: oauthProvidersQuery,\n context: {\n signal: abortSignal,\n },\n });\n return {\n ...serverConfigData.serverConfig,\n ...oauthProvidersData.serverConfig,\n };\n }\n return { ...serverConfigData.serverConfig, oauthProviders: [] };\n }\n}\n","import type {\n CreateCheckoutSessionInput,\n SubscriptionRecurring,\n} from '@affine/graphql';\nimport {\n cancelSubscriptionMutation,\n createCheckoutSessionMutation,\n pricesQuery,\n resumeSubscriptionMutation,\n SubscriptionPlan,\n subscriptionQuery,\n updateSubscriptionMutation,\n} from '@affine/graphql';\nimport type { GlobalCacheService } from '@toeverything/infra';\nimport { Store } from '@toeverything/infra';\n\nimport type { SubscriptionType } from '../entities/subscription';\nimport { getAffineCloudBaseUrl } from '../services/fetch';\nimport type { GraphQLService } from '../services/graphql';\n\nconst SUBSCRIPTION_CACHE_KEY = 'subscription:';\n\nconst getDefaultSubscriptionSuccessCallbackLink = (\n plan: SubscriptionPlan | null\n) => {\n const path =\n plan === SubscriptionPlan.AI ? '/ai-upgrade-success' : '/upgrade-success';\n const urlString = getAffineCloudBaseUrl() + path;\n const url = new URL(urlString);\n if (environment.isDesktop) {\n url.searchParams.set('schema', window.appInfo.schema);\n }\n return url.toString();\n};\n\nexport class SubscriptionStore extends Store {\n constructor(\n private readonly gqlService: GraphQLService,\n private readonly globalCacheService: GlobalCacheService\n ) {\n super();\n }\n\n async fetchSubscriptions(abortSignal?: AbortSignal) {\n const data = await this.gqlService.gql({\n query: subscriptionQuery,\n context: {\n signal: abortSignal,\n },\n });\n\n if (!data.currentUser) {\n throw new Error('No logged in');\n }\n\n return {\n userId: data.currentUser?.id,\n subscriptions: data.currentUser?.subscriptions,\n };\n }\n\n async mutateResumeSubscription(\n idempotencyKey: string,\n plan?: SubscriptionPlan,\n abortSignal?: AbortSignal\n ) {\n const data = await this.gqlService.gql({\n query: resumeSubscriptionMutation,\n variables: {\n idempotencyKey,\n plan,\n },\n context: {\n signal: abortSignal,\n },\n });\n return data.resumeSubscription;\n }\n\n async mutateCancelSubscription(\n idempotencyKey: string,\n plan?: SubscriptionPlan,\n abortSignal?: AbortSignal\n ) {\n const data = await this.gqlService.gql({\n query: cancelSubscriptionMutation,\n variables: {\n idempotencyKey,\n plan,\n },\n context: {\n signal: abortSignal,\n },\n });\n return data.cancelSubscription;\n }\n\n getCachedSubscriptions(userId: string) {\n return this.globalCacheService.globalCache.get(\n SUBSCRIPTION_CACHE_KEY + userId\n );\n }\n\n setCachedSubscriptions(userId: string, subscriptions: SubscriptionType[]) {\n return this.globalCacheService.globalCache.set(\n SUBSCRIPTION_CACHE_KEY + userId,\n subscriptions\n );\n }\n\n setSubscriptionRecurring(\n idempotencyKey: string,\n recurring: SubscriptionRecurring,\n plan?: SubscriptionPlan\n ) {\n return this.gqlService.gql({\n query: updateSubscriptionMutation,\n variables: {\n idempotencyKey,\n plan,\n recurring,\n },\n });\n }\n\n async createCheckoutSession(input: CreateCheckoutSessionInput) {\n const data = await this.gqlService.gql({\n query: createCheckoutSessionMutation,\n variables: {\n input: {\n ...input,\n successCallbackLink:\n input.successCallbackLink ||\n getDefaultSubscriptionSuccessCallbackLink(input.plan),\n },\n },\n });\n return data.createCheckoutSession;\n }\n\n async fetchSubscriptionPrices(abortSignal?: AbortSignal) {\n const data = await this.gqlService.gql({\n query: pricesQuery,\n context: {\n signal: abortSignal,\n },\n });\n\n return data.prices;\n }\n}\n","import { copilotQuotaQuery } from '@affine/graphql';\nimport { Store } from '@toeverything/infra';\n\nimport type { GraphQLService } from '../services/graphql';\n\nexport class UserCopilotQuotaStore extends Store {\n constructor(private readonly graphqlService: GraphQLService) {\n super();\n }\n\n async fetchUserCopilotQuota(abortSignal?: AbortSignal) {\n const data = await this.graphqlService.gql({\n query: copilotQuotaQuery,\n context: {\n signal: abortSignal,\n },\n });\n\n if (!data.currentUser) {\n throw new Error('No logged in');\n }\n\n return data.currentUser.copilot.quota;\n }\n}\n","import { getUserFeaturesQuery } from '@affine/graphql';\nimport { Store } from '@toeverything/infra';\n\nimport type { GraphQLService } from '../services/graphql';\n\nexport class UserFeatureStore extends Store {\n constructor(private readonly gqlService: GraphQLService) {\n super();\n }\n\n async getUserFeatures(signal: AbortSignal) {\n const data = await this.gqlService.gql({\n query: getUserFeaturesQuery,\n context: {\n signal,\n },\n });\n return {\n userId: data.currentUser?.id,\n features: data.currentUser?.features,\n };\n }\n}\n","import { quotaQuery } from '@affine/graphql';\nimport { Store } from '@toeverything/infra';\n\nimport type { GraphQLService } from '../services/graphql';\n\nexport class UserQuotaStore extends Store {\n constructor(private readonly graphqlService: GraphQLService) {\n super();\n }\n\n async fetchUserQuota(abortSignal?: AbortSignal) {\n const data = await this.graphqlService.gql({\n query: quotaQuery,\n context: {\n signal: abortSignal,\n },\n });\n\n if (!data.currentUser) {\n throw new Error('No logged in');\n }\n\n return {\n userId: data.currentUser.id,\n quota: data.currentUser.quota,\n used: data.collectAllBlobSizes.size,\n };\n }\n}\n","export type { AuthAccountInfo } from './entities/session';\nexport {\n BackendError,\n isBackendError,\n isNetworkError,\n NetworkError,\n} from './error';\nexport { AccountChanged, AuthService } from './services/auth';\nexport { FetchService } from './services/fetch';\nexport { GraphQLService } from './services/graphql';\nexport { ServerConfigService } from './services/server-config';\nexport { SubscriptionService } from './services/subscription';\nexport { UserCopilotQuotaService } from './services/user-copilot-quota';\nexport { UserFeatureService } from './services/user-feature';\nexport { UserQuotaService } from './services/user-quota';\nexport { WebSocketService } from './services/websocket';\n\nimport {\n type Framework,\n GlobalCacheService,\n GlobalStateService,\n} from '@toeverything/infra';\n\nimport { ServerConfig } from './entities/server-config';\nimport { AuthSession } from './entities/session';\nimport { Subscription } from './entities/subscription';\nimport { SubscriptionPrices } from './entities/subscription-prices';\nimport { UserCopilotQuota } from './entities/user-copilot-quota';\nimport { UserFeature } from './entities/user-feature';\nimport { UserQuota } from './entities/user-quota';\nimport { AuthService } from './services/auth';\nimport { FetchService } from './services/fetch';\nimport { GraphQLService } from './services/graphql';\nimport { ServerConfigService } from './services/server-config';\nimport { SubscriptionService } from './services/subscription';\nimport { UserCopilotQuotaService } from './services/user-copilot-quota';\nimport { UserFeatureService } from './services/user-feature';\nimport { UserQuotaService } from './services/user-quota';\nimport { WebSocketService } from './services/websocket';\nimport { AuthStore } from './stores/auth';\nimport { ServerConfigStore } from './stores/server-config';\nimport { SubscriptionStore } from './stores/subscription';\nimport { UserCopilotQuotaStore } from './stores/user-copilot-quota';\nimport { UserFeatureStore } from './stores/user-feature';\nimport { UserQuotaStore } from './stores/user-quota';\n\nexport function configureCloudModule(framework: Framework) {\n framework\n .service(FetchService)\n .service(GraphQLService, [FetchService])\n .service(WebSocketService)\n .service(ServerConfigService)\n .entity(ServerConfig, [ServerConfigStore])\n .store(ServerConfigStore, [GraphQLService])\n .service(AuthService, [FetchService, AuthStore])\n .store(AuthStore, [FetchService, GraphQLService, GlobalStateService])\n .entity(AuthSession, [AuthStore])\n .service(SubscriptionService, [SubscriptionStore])\n .store(SubscriptionStore, [GraphQLService, GlobalCacheService])\n .entity(Subscription, [AuthService, ServerConfigService, SubscriptionStore])\n .entity(SubscriptionPrices, [ServerConfigService, SubscriptionStore])\n .service(UserQuotaService)\n .store(UserQuotaStore, [GraphQLService])\n .entity(UserQuota, [AuthService, UserQuotaStore])\n .service(UserCopilotQuotaService)\n .store(UserCopilotQuotaStore, [GraphQLService])\n .entity(UserCopilotQuota, [\n AuthService,\n UserCopilotQuotaStore,\n ServerConfigService,\n ])\n .service(UserFeatureService)\n .entity(UserFeature, [AuthService, UserFeatureStore])\n .store(UserFeatureStore, [GraphQLService]);\n}\n","import { AIProvider } from '@affine/core/blocksuite/presets/ai';\nimport { apis } from '@affine/electron-api';\nimport type { OAuthProviderType } from '@affine/graphql';\nimport {\n ApplicationFocused,\n ApplicationStarted,\n createEvent,\n OnEvent,\n Service,\n} from '@toeverything/infra';\nimport { distinctUntilChanged, map, skip } from 'rxjs';\n\nimport { type AuthAccountInfo, AuthSession } from '../entities/session';\nimport type { AuthStore } from '../stores/auth';\nimport type { FetchService } from './fetch';\n\n// Emit when account changed\nexport const AccountChanged = createEvent(\n 'AccountChanged'\n);\n\nexport const AccountLoggedIn = createEvent('AccountLoggedIn');\n\nexport const AccountLoggedOut =\n createEvent('AccountLoggedOut');\n\nfunction toAIUserInfo(account: AuthAccountInfo | null) {\n if (!account) return null;\n return {\n avatarUrl: account.avatar ?? '',\n email: account.email ?? '',\n id: account.id,\n name: account.label,\n };\n}\n\n@OnEvent(ApplicationStarted, e => e.onApplicationStart)\n@OnEvent(ApplicationFocused, e => e.onApplicationFocused)\nexport class AuthService extends Service {\n session = this.framework.createEntity(AuthSession);\n\n constructor(\n private readonly fetchService: FetchService,\n private readonly store: AuthStore\n ) {\n super();\n\n AIProvider.provide('userInfo', () => {\n return toAIUserInfo(this.session.account$.value);\n });\n\n this.session.account$\n .pipe(\n map(a => ({\n id: a?.id,\n account: a,\n })),\n distinctUntilChanged((a, b) => a.id === b.id), // only emit when the value changes\n skip(1) // skip the initial value\n )\n .subscribe(({ account }) => {\n if (account === null) {\n this.eventBus.emit(AccountLoggedOut, account);\n } else {\n this.eventBus.emit(AccountLoggedIn, account);\n }\n this.eventBus.emit(AccountChanged, account);\n AIProvider.slots.userInfo.emit(toAIUserInfo(account));\n });\n }\n\n private onApplicationStart() {\n this.session.revalidate();\n }\n\n private onApplicationFocused() {\n this.session.revalidate();\n }\n\n async sendEmailMagicLink(\n email: string,\n verifyToken: string,\n challenge?: string,\n redirectUri?: string | null\n ) {\n const searchParams = new URLSearchParams();\n if (challenge) {\n searchParams.set('challenge', challenge);\n }\n searchParams.set('token', verifyToken);\n const redirect = environment.isDesktop\n ? this.buildRedirectUri('/open-app/signin-redirect')\n : (redirectUri ?? location.href);\n searchParams.set('redirect_uri', redirect.toString());\n\n const res = await this.fetchService.fetch(\n '/api/auth/sign-in?' + searchParams.toString(),\n {\n method: 'POST',\n body: JSON.stringify({ email }),\n headers: {\n 'content-type': 'application/json',\n },\n }\n );\n if (!res?.ok) {\n throw new Error('Failed to send email');\n }\n }\n\n async signInOauth(provider: OAuthProviderType, redirectUri?: string | null) {\n if (environment.isDesktop) {\n await apis?.ui.openExternal(\n `${\n runtimeConfig.serverUrlPrefix\n }/desktop-signin?provider=${provider}&redirect_uri=${this.buildRedirectUri(\n '/open-app/signin-redirect'\n )}`\n );\n } else {\n location.href = `${\n runtimeConfig.serverUrlPrefix\n }/oauth/login?provider=${provider}&redirect_uri=${encodeURIComponent(\n redirectUri ?? location.pathname\n )}`;\n }\n\n return;\n }\n\n async signInPassword(credential: { email: string; password: string }) {\n const searchParams = new URLSearchParams();\n const redirectUri = new URL(location.href);\n if (environment.isDesktop) {\n redirectUri.pathname = this.buildRedirectUri('/open-app/signin-redirect');\n }\n searchParams.set('redirect_uri', redirectUri.toString());\n\n const res = await this.fetchService.fetch(\n '/api/auth/sign-in?' + searchParams.toString(),\n {\n method: 'POST',\n body: JSON.stringify(credential),\n headers: {\n 'content-type': 'application/json',\n },\n }\n );\n if (!res.ok) {\n throw new Error('Failed to sign in');\n }\n this.session.revalidate();\n }\n\n async signOut() {\n await this.fetchService.fetch('/api/auth/sign-out');\n this.store.setCachedAuthSession(null);\n this.session.revalidate();\n }\n\n private buildRedirectUri(callbackUrl: string) {\n const params: string[][] = [];\n if (environment.isDesktop && window.appInfo.schema) {\n params.push(['schema', window.appInfo.schema]);\n }\n const query =\n params.length > 0\n ? '?' +\n params.map(([k, v]) => `${k}=${encodeURIComponent(v)}`).join('&')\n : '';\n return callbackUrl + query;\n }\n\n checkUserByEmail(email: string) {\n return this.store.checkUserByEmail(email);\n }\n}\n","import { DebugLogger } from '@affine/debug';\nimport { UserFriendlyError } from '@affine/graphql';\nimport { fromPromise, Service } from '@toeverything/infra';\n\nimport { BackendError, NetworkError } from '../error';\n\nexport function getAffineCloudBaseUrl(): string {\n if (environment.isDesktop) {\n return runtimeConfig.serverUrlPrefix;\n }\n const { protocol, hostname, port } = window.location;\n return `${protocol}//${hostname}${port ? `:${port}` : ''}`;\n}\n\nconst logger = new DebugLogger('affine:fetch');\n\nexport type FetchInit = RequestInit & { timeout?: number };\n\nexport class FetchService extends Service {\n rxFetch = (\n input: string,\n init?: RequestInit & {\n // https://github.com/microsoft/TypeScript/issues/54472\n priority?: 'auto' | 'low' | 'high';\n } & {\n traceEvent?: string;\n }\n ) => {\n return fromPromise(signal => {\n return this.fetch(input, { signal, ...init });\n });\n };\n\n /**\n * fetch with custom custom timeout and error handling.\n */\n fetch = async (input: string, init?: FetchInit): Promise => {\n logger.debug('fetch', input);\n const externalSignal = init?.signal;\n if (externalSignal?.aborted) {\n throw externalSignal.reason;\n }\n const abortController = new AbortController();\n externalSignal?.addEventListener('abort', reason => {\n abortController.abort(reason);\n });\n\n const timeout = init?.timeout ?? 15000;\n const timeoutId = setTimeout(() => {\n abortController.abort('timeout');\n }, timeout);\n\n const res = await fetch(new URL(input, getAffineCloudBaseUrl()), {\n ...init,\n signal: abortController.signal,\n }).catch(err => {\n logger.debug('network error', err);\n throw new NetworkError(err);\n });\n clearTimeout(timeoutId);\n if (res.status === 504) {\n const error = new Error('Gateway Timeout');\n logger.debug('network error', error);\n throw new NetworkError(error);\n }\n if (!res.ok) {\n logger.warn(\n 'backend error',\n new Error(`${res.status} ${res.statusText}`)\n );\n let reason: string | any = '';\n if (res.headers.get('Content-Type')?.includes('application/json')) {\n try {\n reason = await res.json();\n } catch (err) {\n // ignore\n }\n }\n throw new BackendError(UserFriendlyError.fromAnyError(reason));\n }\n return res;\n };\n}\n","import { OnEvent, Service } from '@toeverything/infra';\n\nimport { UserFeature } from '../entities/user-feature';\nimport { AccountChanged } from './auth';\n\n@OnEvent(AccountChanged, e => e.onAccountChanged)\nexport class UserFeatureService extends Service {\n userFeature = this.framework.createEntity(UserFeature);\n\n private onAccountChanged() {\n this.userFeature.revalidate();\n }\n}\n","import type { QuotaQuery } from '@affine/graphql';\nimport { createEvent, OnEvent, Service } from '@toeverything/infra';\n\nimport { UserQuota } from '../entities/user-quota';\nimport { AccountChanged } from './auth';\n\ntype UserQuotaInfo = NonNullable['quota'];\n\nexport const UserQuotaChanged = createEvent('UserQuotaChanged');\n\n@OnEvent(AccountChanged, e => e.onAccountChanged)\nexport class UserQuotaService extends Service {\n constructor() {\n super();\n\n this.quota.quota$.distinctUntilChanged().subscribe(q => {\n this.eventBus.emit(UserQuotaChanged, q);\n });\n }\n\n quota = this.framework.createEntity(UserQuota);\n\n private onAccountChanged() {\n this.quota.revalidate();\n }\n}\n","import type {\n Collection,\n DeleteCollectionInfo,\n DeletedCollection,\n} from '@affine/env/filter';\nimport type { WorkspaceService } from '@toeverything/infra';\nimport { LiveData, Service } from '@toeverything/infra';\nimport { Observable } from 'rxjs';\nimport { Array as YArray } from 'yjs';\n\nconst SETTING_KEY = 'setting';\n\nconst COLLECTIONS_KEY = 'collections';\nconst COLLECTIONS_TRASH_KEY = 'collections_trash';\n\nexport class CollectionService extends Service {\n constructor(private readonly workspaceService: WorkspaceService) {\n super();\n }\n\n private get doc() {\n return this.workspaceService.workspace.docCollection.doc;\n }\n\n private get setting() {\n return this.workspaceService.workspace.docCollection.doc.getMap(\n SETTING_KEY\n );\n }\n\n private get collectionsYArray(): YArray | undefined {\n return this.setting.get(COLLECTIONS_KEY) as YArray;\n }\n\n private get collectionsTrashYArray(): YArray | undefined {\n return this.setting.get(COLLECTIONS_TRASH_KEY) as YArray;\n }\n\n readonly collections$ = LiveData.from(\n new Observable(subscriber => {\n subscriber.next(this.collectionsYArray?.toArray() ?? []);\n const fn = () => {\n subscriber.next(this.collectionsYArray?.toArray() ?? []);\n };\n this.setting.observeDeep(fn);\n return () => {\n this.setting.unobserveDeep(fn);\n };\n }),\n []\n );\n\n collection$(id: string) {\n return this.collections$.map(collections => {\n return collections.find(v => v.id === id);\n });\n }\n\n readonly collectionsTrash$ = LiveData.from(\n new Observable(subscriber => {\n subscriber.next(this.collectionsTrashYArray?.toArray() ?? []);\n const fn = () => {\n subscriber.next(this.collectionsTrashYArray?.toArray() ?? []);\n };\n this.setting.observeDeep(fn);\n return () => {\n this.setting.unobserveDeep(fn);\n };\n }),\n []\n );\n\n addCollection(...collections: Collection[]) {\n if (!this.setting.has(COLLECTIONS_KEY)) {\n this.setting.set(COLLECTIONS_KEY, new YArray());\n }\n this.doc.transact(() => {\n this.collectionsYArray?.insert(0, collections);\n });\n }\n\n updateCollection(id: string, updater: (value: Collection) => Collection) {\n if (this.collectionsYArray) {\n updateFirstOfYArray(\n this.collectionsYArray,\n v => v.id === id,\n v => {\n return updater(v);\n }\n );\n }\n }\n\n addPageToCollection(collectionId: string, pageId: string) {\n this.updateCollection(collectionId, old => {\n return {\n ...old,\n allowList: [pageId, ...(old.allowList ?? [])],\n };\n });\n }\n\n deletePageFromCollection(collectionId: string, pageId: string) {\n this.updateCollection(collectionId, old => {\n return {\n ...old,\n allowList: old.allowList?.filter(id => id !== pageId),\n };\n });\n }\n\n deleteCollection(info: DeleteCollectionInfo, ...ids: string[]) {\n const collectionsYArray = this.collectionsYArray;\n if (!collectionsYArray) {\n return;\n }\n const set = new Set(ids);\n this.workspaceService.workspace.docCollection.doc.transact(() => {\n const indexList: number[] = [];\n const list: Collection[] = [];\n collectionsYArray.forEach((collection, i) => {\n if (set.has(collection.id)) {\n set.delete(collection.id);\n indexList.unshift(i);\n list.push(JSON.parse(JSON.stringify(collection)));\n }\n });\n indexList.forEach(i => {\n collectionsYArray.delete(i);\n });\n if (!this.collectionsTrashYArray) {\n this.setting.set(COLLECTIONS_TRASH_KEY, new YArray());\n }\n const collectionsTrashYArray = this.collectionsTrashYArray;\n if (!collectionsTrashYArray) {\n return;\n }\n collectionsTrashYArray.insert(\n 0,\n list.map(collection => ({\n userId: info?.userId,\n userName: info ? info.userName : 'Local User',\n collection,\n }))\n );\n if (collectionsTrashYArray.length > 10) {\n collectionsTrashYArray.delete(10, collectionsTrashYArray.length - 10);\n }\n });\n }\n\n private deletePagesFromCollection(\n collection: Collection,\n idSet: Set\n ) {\n const newAllowList = collection.allowList.filter(id => !idSet.has(id));\n if (newAllowList.length !== collection.allowList.length) {\n this.updateCollection(collection.id, old => {\n return {\n ...old,\n allowList: newAllowList,\n };\n });\n }\n }\n\n deletePagesFromCollections(ids: string[]) {\n const idSet = new Set(ids);\n this.doc.transact(() => {\n this.collections$.value.forEach(collection => {\n this.deletePagesFromCollection(collection, idSet);\n });\n });\n }\n}\n\nconst updateFirstOfYArray = (\n array: YArray,\n p: (value: T) => boolean,\n update: (value: T) => T\n) => {\n array.doc?.transact(() => {\n for (let i = 0; i < array.length; i++) {\n const ele = array.get(i);\n if (p(ele)) {\n array.delete(i);\n array.insert(i, [update(ele)]);\n return;\n }\n }\n });\n};\n","export { CollectionService } from './services/collection';\n\nimport {\n type Framework,\n WorkspaceScope,\n WorkspaceService,\n} from '@toeverything/infra';\n\nimport { CollectionService } from './services/collection';\n\nexport function configureCollectionModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(CollectionService, [WorkspaceService]);\n}\n","import type { DocService } from '@toeverything/infra';\nimport { Entity, LiveData } from '@toeverything/infra';\n\nimport type { DocsSearchService } from '../../docs-search';\n\ninterface Backlink {\n docId: string;\n blockId: string;\n title: string;\n}\n\nexport class DocBacklinks extends Entity {\n constructor(\n private readonly docsSearchService: DocsSearchService,\n private readonly docService: DocService\n ) {\n super();\n }\n\n backlinks$ = LiveData.from(\n this.docsSearchService.watchRefsTo(this.docService.doc.id),\n []\n );\n}\n","import type { DocService } from '@toeverything/infra';\nimport { Entity, LiveData } from '@toeverything/infra';\n\nimport type { DocsSearchService } from '../../docs-search';\n\ninterface Link {\n docId: string;\n title: string;\n}\n\nexport class DocLinks extends Entity {\n constructor(\n private readonly docsSearchService: DocsSearchService,\n private readonly docService: DocService\n ) {\n super();\n }\n\n links$ = LiveData.from(\n this.docsSearchService.watchRefsFrom(this.docService.doc.id),\n []\n );\n}\n","import { Service } from '@toeverything/infra';\n\nimport { DocBacklinks } from '../entities/doc-backlinks';\nimport { DocLinks } from '../entities/doc-links';\n\nexport class DocLinksService extends Service {\n backlinks = this.framework.createEntity(DocBacklinks);\n links = this.framework.createEntity(DocLinks);\n}\n","import {\n DocScope,\n DocService,\n type Framework,\n WorkspaceScope,\n} from '@toeverything/infra';\n\nimport { DocsSearchService } from '../docs-search';\nimport { DocBacklinks } from './entities/doc-backlinks';\nimport { DocLinks } from './entities/doc-links';\nimport { DocLinksService } from './services/doc-links';\n\nexport { DocLinksService } from './services/doc-links';\n\nexport function configureDocLinksModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .scope(DocScope)\n .service(DocLinksService)\n .entity(DocBacklinks, [DocsSearchService, DocService])\n .entity(DocLinks, [DocsSearchService, DocService]);\n}\n","import {\n fromPromise,\n OnEvent,\n Service,\n WorkspaceEngineBeforeStart,\n} from '@toeverything/infra';\nimport { type Observable, switchMap } from 'rxjs';\n\nimport { DocsIndexer } from '../entities/docs-indexer';\n\n@OnEvent(WorkspaceEngineBeforeStart, s => s.handleWorkspaceEngineBeforeStart)\nexport class DocsSearchService extends Service {\n readonly indexer = this.framework.createEntity(DocsIndexer);\n\n handleWorkspaceEngineBeforeStart() {\n this.indexer.setupListener();\n this.indexer.startCrawling();\n }\n\n async search(query: string): Promise<\n {\n docId: string;\n title: string;\n score: number;\n blockId?: string;\n blockContent?: string;\n }[]\n > {\n const { buckets } = await this.indexer.blockIndex.aggregate(\n {\n type: 'boolean',\n occur: 'must',\n queries: [\n {\n type: 'match',\n field: 'content',\n match: query,\n },\n {\n type: 'boolean',\n occur: 'should',\n queries: [\n {\n type: 'all',\n },\n {\n type: 'boost',\n boost: 1.5,\n query: {\n type: 'match',\n field: 'flavour',\n match: 'affine:page',\n },\n },\n ],\n },\n ],\n },\n 'docId',\n {\n pagination: {\n limit: 50,\n skip: 0,\n },\n hits: {\n pagination: {\n limit: 2,\n skip: 0,\n },\n fields: ['blockId', 'flavour'],\n highlights: [\n {\n field: 'content',\n before: '',\n end: '',\n },\n ],\n },\n }\n );\n\n const docData = await this.indexer.docIndex.getAll(\n buckets.map(bucket => bucket.key)\n );\n\n const result = [];\n\n for (const bucket of buckets) {\n const firstMatchFlavour = bucket.hits.nodes[0]?.fields.flavour;\n if (firstMatchFlavour === 'affine:page') {\n // is title match\n const blockContent = bucket.hits.nodes[1]?.highlights.content[0]; // try to get block content\n result.push({\n docId: bucket.key,\n title: bucket.hits.nodes[0].highlights.content[0],\n score: bucket.score,\n blockContent,\n });\n } else {\n const title =\n docData.find(doc => doc.id === bucket.key)?.get('title') ?? '';\n const matchedBlockId = bucket.hits.nodes[0]?.fields.blockId;\n // is block match\n result.push({\n docId: bucket.key,\n title: typeof title === 'string' ? title : title[0],\n blockId:\n typeof matchedBlockId === 'string'\n ? matchedBlockId\n : matchedBlockId[0],\n score: bucket.score,\n blockContent: bucket.hits.nodes[0]?.highlights.content[0],\n });\n }\n }\n\n return result;\n }\n\n search$(query: string): Observable<\n {\n docId: string;\n title: string;\n score: number;\n blockId?: string;\n blockContent?: string;\n }[]\n > {\n return this.indexer.blockIndex\n .aggregate$(\n {\n type: 'boolean',\n occur: 'must',\n queries: [\n {\n type: 'match',\n field: 'content',\n match: query,\n },\n {\n type: 'boolean',\n occur: 'should',\n queries: [\n {\n type: 'all',\n },\n {\n type: 'boost',\n boost: 1.5,\n query: {\n type: 'match',\n field: 'flavour',\n match: 'affine:page',\n },\n },\n ],\n },\n ],\n },\n 'docId',\n {\n pagination: {\n limit: 50,\n skip: 0,\n },\n hits: {\n pagination: {\n limit: 2,\n skip: 0,\n },\n fields: ['blockId', 'flavour'],\n highlights: [\n {\n field: 'content',\n before: '',\n end: '',\n },\n ],\n },\n }\n )\n .pipe(\n switchMap(({ buckets }) => {\n return fromPromise(async () => {\n const docData = await this.indexer.docIndex.getAll(\n buckets.map(bucket => bucket.key)\n );\n\n const result = [];\n\n for (const bucket of buckets) {\n const firstMatchFlavour = bucket.hits.nodes[0]?.fields.flavour;\n if (firstMatchFlavour === 'affine:page') {\n // is title match\n const blockContent =\n bucket.hits.nodes[1]?.highlights.content[0]; // try to get block content\n result.push({\n docId: bucket.key,\n title: bucket.hits.nodes[0].highlights.content[0],\n score: bucket.score,\n blockContent,\n });\n } else {\n const title =\n docData.find(doc => doc.id === bucket.key)?.get('title') ??\n '';\n const matchedBlockId = bucket.hits.nodes[0]?.fields.blockId;\n // is block match\n result.push({\n docId: bucket.key,\n title: typeof title === 'string' ? title : title[0],\n blockId:\n typeof matchedBlockId === 'string'\n ? matchedBlockId\n : matchedBlockId[0],\n score: bucket.score,\n blockContent: bucket.hits.nodes[0]?.highlights.content[0],\n });\n }\n }\n\n return result;\n });\n })\n );\n }\n\n async searchRefsFrom(docId: string): Promise<\n {\n docId: string;\n title: string;\n }[]\n > {\n const { nodes } = await this.indexer.blockIndex.search(\n {\n type: 'boolean',\n occur: 'must',\n queries: [\n {\n type: 'match',\n field: 'docId',\n match: docId,\n },\n {\n type: 'exists',\n field: 'ref',\n },\n ],\n },\n {\n fields: ['ref'],\n pagination: {\n limit: 100,\n },\n }\n );\n\n const docIds = new Set(\n nodes.flatMap(node => {\n const refs = node.fields.ref;\n return typeof refs === 'string' ? [refs] : refs;\n })\n );\n\n const docData = await this.indexer.docIndex.getAll(Array.from(docIds));\n\n return docData.map(doc => {\n const title = doc.get('title');\n return {\n docId: doc.id,\n title: title ? (typeof title === 'string' ? title : title[0]) : '',\n };\n });\n }\n\n watchRefsFrom(docId: string) {\n return this.indexer.blockIndex\n .search$(\n {\n type: 'boolean',\n occur: 'must',\n queries: [\n {\n type: 'match',\n field: 'docId',\n match: docId,\n },\n {\n type: 'exists',\n field: 'ref',\n },\n ],\n },\n {\n fields: ['ref'],\n pagination: {\n limit: 100,\n },\n }\n )\n .pipe(\n switchMap(({ nodes }) => {\n return fromPromise(async () => {\n const docIds = new Set(\n nodes.flatMap(node => {\n const refs = node.fields.ref;\n return typeof refs === 'string' ? [refs] : refs;\n })\n );\n\n const docData = await this.indexer.docIndex.getAll(\n Array.from(docIds)\n );\n\n return docData.map(doc => {\n const title = doc.get('title');\n return {\n docId: doc.id,\n title: title\n ? typeof title === 'string'\n ? title\n : title[0]\n : '',\n };\n });\n });\n })\n );\n }\n\n async searchRefsTo(docId: string): Promise<\n {\n docId: string;\n blockId: string;\n title: string;\n }[]\n > {\n const { buckets } = await this.indexer.blockIndex.aggregate(\n {\n type: 'match',\n field: 'ref',\n match: docId,\n },\n 'docId',\n {\n hits: {\n fields: ['docId', 'blockId'],\n pagination: {\n limit: 1,\n },\n },\n pagination: {\n limit: 100,\n },\n }\n );\n\n const docData = await this.indexer.docIndex.getAll(\n buckets.map(bucket => bucket.key)\n );\n\n return buckets.map(bucket => {\n const title =\n docData.find(doc => doc.id === bucket.key)?.get('title') ?? '';\n const blockId = bucket.hits.nodes[0]?.fields.blockId ?? '';\n return {\n docId: bucket.key,\n blockId: typeof blockId === 'string' ? blockId : blockId[0],\n title: typeof title === 'string' ? title : title[0],\n };\n });\n }\n\n watchRefsTo(docId: string) {\n return this.indexer.blockIndex\n .aggregate$(\n {\n type: 'match',\n field: 'ref',\n match: docId,\n },\n 'docId',\n {\n hits: {\n fields: ['docId', 'blockId'],\n pagination: {\n limit: 1,\n },\n },\n pagination: {\n limit: 100,\n },\n }\n )\n .pipe(\n switchMap(({ buckets }) => {\n return fromPromise(async () => {\n const docData = await this.indexer.docIndex.getAll(\n buckets.map(bucket => bucket.key)\n );\n\n return buckets.map(bucket => {\n const title =\n docData.find(doc => doc.id === bucket.key)?.get('title') ?? '';\n const blockId = bucket.hits.nodes[0]?.fields.blockId ?? '';\n return {\n docId: bucket.key,\n blockId: typeof blockId === 'string' ? blockId : blockId[0],\n title: typeof title === 'string' ? title : title[0],\n };\n });\n });\n })\n );\n }\n\n async getDocTitle(docId: string) {\n const doc = await this.indexer.docIndex.get(docId);\n const title = doc?.get('title');\n return typeof title === 'string' ? title : title?.[0];\n }\n\n override dispose(): void {\n this.indexer.dispose();\n }\n}\n","import {\n asyncScheduler,\n defer,\n exhaustMap,\n finalize,\n type Observable,\n type ObservableInput,\n type OperatorFunction,\n scheduled,\n Subject,\n throttle,\n} from 'rxjs';\n\n/**\n * Like exhaustMap, but also includes the trailing value emitted from the source observable while waiting for the preceding inner observable to complete\n *\n * Original code adapted from https://github.com/ReactiveX/rxjs/issues/5004\n * @param {function(value: T, ?index: number): ObservableInput} project - A function that, when applied to an item emitted by the\n * source Observable, returns a projected Observable.\n */\nexport function exhaustMapWithTrailing(\n project: (value: T, index: number) => ObservableInput\n): OperatorFunction {\n return (source$): Observable =>\n defer(() => {\n const release$ = new Subject();\n return source$.pipe(\n throttle(() => release$, {\n leading: true,\n trailing: true,\n }),\n exhaustMap((value, index) =>\n scheduled(project(value, index), asyncScheduler).pipe(\n finalize(() => {\n release$.next();\n })\n )\n )\n );\n });\n}\n","import type { DBSchema, IDBPDatabase } from 'idb';\nimport { openDB } from 'idb';\nimport { merge, Observable, of, throttleTime } from 'rxjs';\n\nimport { fromPromise } from '../../../../livedata';\nimport { throwIfAborted } from '../../../../utils';\nimport { exhaustMapWithTrailing } from '../../../../utils/';\nimport type { Job, JobParams, JobQueue } from '../../';\n\ninterface IndexDB extends DBSchema {\n jobs: {\n key: number;\n value: JobRecord;\n indexes: {\n batchKey: string;\n };\n };\n}\n\ninterface JobRecord {\n batchKey: string;\n startTime: number | null;\n payload: any;\n}\n\nexport class IndexedDBJobQueue implements JobQueue {\n database: IDBPDatabase = null as any;\n broadcast = new BroadcastChannel('idb-job-queue:' + this.databaseName);\n\n constructor(private readonly databaseName: string = 'jobs') {}\n\n async enqueue(jobs: JobParams[]): Promise {\n await this.ensureInitialized();\n const trx = this.database.transaction(['jobs'], 'readwrite');\n\n for (const job of jobs) {\n await trx.objectStore('jobs').add({\n batchKey: job.batchKey,\n payload: job.payload,\n startTime: null,\n });\n }\n\n trx.commit();\n\n // send broadcast to notify new jobs\n this.broadcast.postMessage('new-jobs');\n }\n\n async accept(): Promise {\n await this.ensureInitialized();\n const jobs = [];\n const trx = this.database.transaction(['jobs'], 'readwrite');\n\n // if no priority jobs\n\n if (jobs.length === 0) {\n const batchKeys = trx.objectStore('jobs').index('batchKey').iterate();\n\n let currentBatchKey: string = null as any;\n let currentBatchJobs = [];\n let skipCurrentBatch = false;\n\n for await (const item of batchKeys) {\n if (item.value.batchKey !== currentBatchKey) {\n if (!skipCurrentBatch && currentBatchJobs.length > 0) {\n break;\n }\n\n currentBatchKey = item.value.batchKey;\n currentBatchJobs = [];\n skipCurrentBatch = false;\n }\n if (skipCurrentBatch) {\n continue;\n }\n if (this.isAcceptable(item.value)) {\n currentBatchJobs.push({\n id: item.primaryKey,\n job: item.value,\n });\n } else {\n skipCurrentBatch = true;\n }\n }\n\n if (skipCurrentBatch === false && currentBatchJobs.length > 0) {\n jobs.push(...currentBatchJobs);\n }\n }\n\n for (const { id, job } of jobs) {\n const startTime = Date.now();\n await trx.objectStore('jobs').put({ ...job, startTime }, id);\n }\n\n if (jobs.length === 0) {\n return null;\n }\n\n return jobs.map(({ id, job }) => ({\n id: id.toString(),\n batchKey: job.batchKey,\n payload: job.payload,\n }));\n }\n\n async waitForAccept(signal: AbortSignal): Promise[]> {\n const broadcast = new BroadcastChannel(\n 'idb-job-queue:' + this.databaseName\n );\n\n try {\n let deferred = Promise.withResolvers();\n\n broadcast.onmessage = () => {\n deferred.resolve();\n };\n\n while (throwIfAborted(signal)) {\n const jobs = await this.accept();\n if (jobs !== null) {\n return jobs;\n }\n\n await Promise.race([\n deferred.promise,\n new Promise(resolve => {\n setTimeout(resolve, 5000);\n }),\n new Promise((_, reject) => {\n // exit if manually stopped\n if (signal?.aborted) {\n reject(signal.reason);\n }\n signal?.addEventListener('abort', () => {\n reject(signal.reason);\n });\n }),\n ]);\n deferred = Promise.withResolvers();\n }\n return [];\n } finally {\n broadcast.close();\n }\n }\n\n async complete(jobs: Job[]): Promise {\n await this.ensureInitialized();\n const trx = this.database.transaction(['jobs'], 'readwrite');\n\n for (const { id } of jobs) {\n await trx\n .objectStore('jobs')\n .delete(typeof id === 'string' ? parseInt(id) : id);\n }\n\n trx.commit();\n this.broadcast.postMessage('job-completed');\n }\n\n async return(jobs: Job[], retry: boolean = false): Promise {\n await this.ensureInitialized();\n const trx = this.database.transaction(['jobs'], 'readwrite');\n\n for (const { id } of jobs) {\n if (retry) {\n const nid = typeof id === 'string' ? parseInt(id) : id;\n const job = await trx.objectStore('jobs').get(nid);\n if (job) {\n await trx.objectStore('jobs').put({ ...job, startTime: null }, nid);\n }\n } else {\n await trx\n .objectStore('jobs')\n .delete(typeof id === 'string' ? parseInt(id) : id);\n }\n }\n\n trx.commit();\n\n this.broadcast.postMessage('job-completed');\n }\n\n async clear(): Promise {\n await this.ensureInitialized();\n const trx = this.database.transaction(['jobs'], 'readwrite');\n await trx.objectStore('jobs').clear();\n }\n\n private async ensureInitialized(): Promise {\n if (!this.database) {\n await this.initialize();\n }\n }\n\n private async initialize(): Promise {\n if (this.database) {\n return;\n }\n this.database = await openDB(this.databaseName, 1, {\n upgrade(database) {\n const jobs = database.createObjectStore('jobs', {\n autoIncrement: true,\n });\n jobs.createIndex('batchKey', 'batchKey');\n },\n });\n }\n\n TIMEOUT = 1000 * 30 /* 30 seconds */;\n\n private isTimeout(job: JobRecord) {\n return job.startTime !== null && job.startTime + this.TIMEOUT < Date.now();\n }\n\n private isAcceptable(job: JobRecord) {\n return job.startTime === null || this.isTimeout(job);\n }\n\n get status$() {\n return merge(\n of(1),\n new Observable(subscriber => {\n const broadcast = new BroadcastChannel(\n 'idb-job-queue:' + this.databaseName\n );\n\n broadcast.onmessage = () => {\n subscriber.next(1);\n };\n return () => {\n broadcast.close();\n };\n })\n ).pipe(\n throttleTime(300, undefined, { leading: true, trailing: true }),\n exhaustMapWithTrailing(() =>\n fromPromise(async () => {\n await this.ensureInitialized();\n const trx = this.database.transaction(['jobs'], 'readonly');\n const remaining = await trx.objectStore('jobs').count();\n return { remaining };\n })\n )\n );\n }\n}\n","import { DebugLogger } from '@affine/debug';\n\nimport { MANUALLY_STOP, throwIfAborted } from '../../utils';\nimport type { Job, JobQueue } from './queue';\n\nconst logger = new DebugLogger('job-runner');\n\nexport class JobRunner {\n abort: AbortController | null = null;\n\n constructor(\n private readonly queue: JobQueue,\n private readonly worker: (\n jobs: Job[],\n signal: AbortSignal\n ) => Promise,\n private readonly interval: () => Promise = async () => {}\n ) {}\n\n start() {\n this.stop();\n this.abort = new AbortController();\n this.loop(this.abort.signal).catch(err => {\n if (err === MANUALLY_STOP) {\n return;\n }\n logger.error(err);\n });\n }\n\n stop() {\n this.abort?.abort(MANUALLY_STOP);\n this.abort = null;\n }\n\n async loop(signal: AbortSignal) {\n while (throwIfAborted(signal)) {\n const jobs = await this.queue.waitForAccept(signal);\n\n if (jobs !== null) {\n try {\n await this.worker(jobs, signal);\n await this.queue.return(jobs);\n } catch (err) {\n if (err === MANUALLY_STOP) {\n await this.queue.return(jobs, true);\n } else {\n // TODO: retry logic\n await this.queue.return(jobs);\n }\n logger.error('Error processing jobs', err);\n }\n } else {\n await new Promise(resolve => setTimeout(resolve, 1000));\n }\n\n await this.interval();\n }\n }\n}\n","/**\n * Parameters of the BM25+ scoring algorithm. Customizing these is almost never\n * necessary, and finetuning them requires an understanding of the BM25 scoring\n * model.\n *\n * Some information about BM25 (and BM25+) can be found at these links:\n *\n * - https://en.wikipedia.org/wiki/Okapi_BM25\n * - https://opensourceconnections.com/blog/2015/10/16/bm25-the-next-generation-of-lucene-relevation/\n */\nexport type BM25Params = {\n /** Term frequency saturation point.\n *\n * Recommended values are between `1.2` and `2`. Higher values increase the\n * difference in score between documents with higher and lower term\n * frequencies. Setting this to `0` or a negative value is invalid. Defaults\n * to `1.2`\n */\n k: number;\n\n /**\n * Length normalization impact.\n *\n * Recommended values are around `0.75`. Higher values increase the weight\n * that field length has on scoring. Setting this to `0` (not recommended)\n * means that the field length has no effect on scoring. Negative values are\n * invalid. Defaults to `0.7`.\n */\n b: number;\n\n /**\n * BM25+ frequency normalization lower bound (usually called δ).\n *\n * Recommended values are between `0.5` and `1`. Increasing this parameter\n * increases the minimum relevance of one occurrence of a search term\n * regardless of its (possibly very long) field length. Negative values are\n * invalid. Defaults to `0.5`.\n */\n d: number;\n};\n\nconst defaultBM25params: BM25Params = { k: 1.2, b: 0.7, d: 0.5 };\n\nexport const bm25 = (\n termFreq: number,\n matchingCount: number,\n totalCount: number,\n fieldLength: number,\n avgFieldLength: number,\n bm25params: BM25Params = defaultBM25params\n): number => {\n const { k, b, d } = bm25params;\n const invDocFreq = Math.log(\n 1 + (totalCount - matchingCount + 0.5) / (matchingCount + 0.5)\n );\n return (\n invDocFreq *\n (d +\n (termFreq * (k + 1)) /\n (termFreq + k * (1 - b + b * (fieldLength / avgFieldLength))))\n );\n};\n","export class Match {\n scores = new Map();\n /**\n * nid -> field -> index(multi value field) -> [start, end][]\n */\n highlighters = new Map<\n number,\n Map>\n >();\n\n constructor() {}\n\n size() {\n return this.scores.size;\n }\n\n getScore(id: number) {\n return this.scores.get(id) ?? 0;\n }\n\n addScore(id: number, score: number) {\n const currentScore = this.scores.get(id) || 0;\n this.scores.set(id, currentScore + score);\n }\n\n getHighlighters(id: number, field: string) {\n return this.highlighters.get(id)?.get(field);\n }\n\n addHighlighter(\n id: number,\n field: string,\n index: number,\n newRanges: [number, number][]\n ) {\n const fields =\n this.highlighters.get(id) ||\n new Map>();\n const values = fields.get(field) || new Map();\n const ranges = values.get(index) || [];\n ranges.push(...newRanges);\n values.set(index, ranges);\n fields.set(field, values);\n this.highlighters.set(id, fields);\n }\n\n and(other: Match) {\n const newWeight = new Match();\n for (const [id, score] of this.scores) {\n if (other.scores.has(id)) {\n newWeight.addScore(id, score + (other.scores.get(id) ?? 0));\n newWeight.copyExtData(this, id);\n newWeight.copyExtData(other, id);\n }\n }\n return newWeight;\n }\n\n or(other: Match) {\n const newWeight = new Match();\n for (const [id, score] of this.scores) {\n newWeight.addScore(id, score);\n newWeight.copyExtData(this, id);\n }\n for (const [id, score] of other.scores) {\n newWeight.addScore(id, score);\n newWeight.copyExtData(other, id);\n }\n return newWeight;\n }\n\n exclude(other: Match) {\n const newWeight = new Match();\n for (const [id, score] of this.scores) {\n if (!other.scores.has(id)) {\n newWeight.addScore(id, score);\n newWeight.copyExtData(this, id);\n }\n }\n return newWeight;\n }\n\n boost(boost: number) {\n const newWeight = new Match();\n for (const [id, score] of this.scores) {\n newWeight.addScore(id, score * boost);\n newWeight.copyExtData(this, id);\n }\n return newWeight;\n }\n\n toArray() {\n return Array.from(this.scores.entries())\n .sort((a, b) => b[1] - a[1])\n .map(e => e[0]);\n }\n\n filter(predicate: (id: number) => boolean) {\n const newWeight = new Match();\n for (const [id, score] of this.scores) {\n if (predicate(id)) {\n newWeight.addScore(id, score);\n newWeight.copyExtData(this, id);\n }\n }\n return newWeight;\n }\n\n async asyncFilter(predicate: (id: number) => Promise) {\n const newWeight = new Match();\n for (const [id, score] of this.scores) {\n if (await predicate(id)) {\n newWeight.addScore(id, score);\n newWeight.copyExtData(this, id);\n }\n }\n return newWeight;\n }\n\n private copyExtData(from: Match, id: number) {\n for (const [field, values] of from.highlighters.get(id) ?? []) {\n for (const [index, ranges] of values) {\n this.addHighlighter(id, field, index, ranges);\n }\n }\n }\n}\n","import Graphemer from 'graphemer';\n\nexport interface Tokenizer {\n tokenize(text: string): Token[];\n}\n\nexport interface Token {\n term: string;\n start: number;\n end: number;\n}\n\nexport class SimpleTokenizer implements Tokenizer {\n tokenize(text: string): Token[] {\n const tokens: Token[] = [];\n let start = 0;\n let end = 0;\n let inWord = false;\n for (let i = 0; i < text.length; i++) {\n const c = text[i];\n if (c.match(/[\\n\\r\\p{Z}\\p{P}]/u)) {\n if (inWord) {\n end = i;\n tokens.push({\n term: text.substring(start, end).toLowerCase(),\n start,\n end,\n });\n inWord = false;\n }\n } else {\n if (!inWord) {\n start = i;\n end = i;\n inWord = true;\n }\n }\n }\n if (inWord) {\n tokens.push({\n term: text.substring(start).toLowerCase(),\n start,\n end: text.length,\n });\n }\n return tokens;\n }\n}\n\nexport class NGramTokenizer implements Tokenizer {\n constructor(private readonly n: number) {}\n\n tokenize(text: string): Token[] {\n const splitted: Token[] = [];\n for (let i = 0; i < text.length; ) {\n const nextBreak = Graphemer.nextBreak(text, i);\n const c = text.substring(i, nextBreak);\n\n splitted.push({\n term: c,\n start: i,\n end: nextBreak,\n });\n\n i = nextBreak;\n }\n const tokens: Token[] = [];\n for (let i = 0; i < splitted.length - this.n + 1; i++) {\n tokens.push(\n splitted.slice(i, i + this.n).reduce(\n (acc, t) => ({\n term: acc.term + t.term,\n start: Math.min(acc.start, t.start),\n end: Math.max(acc.end, t.end),\n }),\n { term: '', start: Infinity, end: -Infinity }\n )\n );\n }\n return tokens;\n }\n}\n\nexport class GeneralTokenizer implements Tokenizer {\n constructor() {}\n\n tokenizeWord(word: string, lang: string): Token[] {\n if (lang === 'en') {\n return [{ term: word.toLowerCase(), start: 0, end: word.length }];\n } else if (lang === 'cjk') {\n if (word.length < 3) {\n return [{ term: word, start: 0, end: word.length }];\n }\n return new NGramTokenizer(2).tokenize(word);\n } else if (lang === 'emoji') {\n return new NGramTokenizer(1).tokenize(word);\n } else if (lang === '-') {\n return [];\n }\n\n throw new Error('Not implemented');\n }\n\n testLang(c: string): string {\n if (c.match(/[\\p{Emoji}]/u)) {\n return 'emoji';\n } else if (c.match(/[\\p{sc=Han}\\p{scx=Hira}\\p{scx=Kana}\\p{sc=Hang}]/u)) {\n return 'cjk';\n } else if (c.match(/[\\n\\r\\p{Z}\\p{P}]/u)) {\n return '-';\n } else {\n return 'en';\n }\n }\n\n tokenize(text: string): Token[] {\n const tokens: Token[] = [];\n let start = 0;\n let end = 0;\n let lang: string | null = null;\n\n for (let i = 0; i < text.length; ) {\n const nextBreak = Graphemer.nextBreak(text, i);\n const c = text.substring(i, nextBreak);\n\n const l = this.testLang(c);\n if (lang !== l) {\n if (lang !== null) {\n end = i;\n tokens.push(\n ...this.tokenizeWord(text.substring(start, end), lang).map(\n token => ({\n ...token,\n start: token.start + start,\n end: token.end + start,\n })\n )\n );\n }\n\n start = i;\n end = i;\n lang = l;\n }\n\n i = nextBreak;\n }\n if (lang !== null) {\n tokens.push(\n ...this.tokenizeWord(text.substring(start, text.length), lang).map(\n token => ({\n ...token,\n start: token.start + start,\n end: token.end + start,\n })\n )\n );\n }\n\n return tokens;\n }\n}\n","import { bm25 } from './bm25';\nimport type {\n DataStructROTransaction,\n DataStructRWTransaction,\n} from './data-struct';\nimport { Match } from './match';\nimport { GeneralTokenizer, type Token } from './tokenizer';\n\nexport interface InvertedIndex {\n fieldKey: string;\n\n match(trx: DataStructROTransaction, term: string): Promise;\n\n all(trx: DataStructROTransaction): Promise;\n\n insert(\n trx: DataStructRWTransaction,\n id: number,\n terms: string[]\n ): Promise;\n}\n\nexport class StringInvertedIndex implements InvertedIndex {\n constructor(readonly fieldKey: string) {}\n\n async match(trx: DataStructROTransaction, term: string): Promise {\n const objs = await trx\n .objectStore('invertedIndex')\n .index('key')\n .getAll(InvertedIndexKey.forString(this.fieldKey, term).buffer());\n const match = new Match();\n for (const obj of objs) {\n match.addScore(obj.nid, 1);\n }\n return match;\n }\n\n async all(trx: DataStructROTransaction): Promise {\n const objs = await trx\n .objectStore('invertedIndex')\n .index('key')\n .getAll(\n IDBKeyRange.bound(\n InvertedIndexKey.forPrefix(this.fieldKey).buffer(),\n InvertedIndexKey.forPrefix(this.fieldKey).add1().buffer()\n )\n );\n\n const set = new Set();\n for (const obj of objs) {\n set.add(obj.nid);\n }\n\n const match = new Match();\n for (const nid of set) {\n match.addScore(nid, 1);\n }\n return match;\n }\n\n async insert(trx: DataStructRWTransaction, id: number, terms: string[]) {\n for (const term of terms) {\n await trx.objectStore('invertedIndex').add({\n key: InvertedIndexKey.forString(this.fieldKey, term).buffer(),\n nid: id,\n });\n }\n }\n}\n\nexport class IntegerInvertedIndex implements InvertedIndex {\n constructor(readonly fieldKey: string) {}\n\n async match(trx: DataStructROTransaction, term: string): Promise {\n const objs = await trx\n .objectStore('invertedIndex')\n .index('key')\n .getAll(InvertedIndexKey.forInt64(this.fieldKey, BigInt(term)).buffer());\n const match = new Match();\n for (const obj of objs) {\n match.addScore(obj.nid, 1);\n }\n return match;\n }\n\n // eslint-disable-next-line sonarjs/no-identical-functions\n async all(trx: DataStructROTransaction): Promise {\n const objs = await trx\n .objectStore('invertedIndex')\n .index('key')\n .getAll(\n IDBKeyRange.bound(\n InvertedIndexKey.forPrefix(this.fieldKey).buffer(),\n InvertedIndexKey.forPrefix(this.fieldKey).add1().buffer()\n )\n );\n\n const set = new Set();\n for (const obj of objs) {\n set.add(obj.nid);\n }\n\n const match = new Match();\n for (const nid of set) {\n match.addScore(nid, 1);\n }\n return match;\n }\n\n async insert(trx: DataStructRWTransaction, id: number, terms: string[]) {\n for (const term of terms) {\n await trx.objectStore('invertedIndex').add({\n key: InvertedIndexKey.forInt64(this.fieldKey, BigInt(term)).buffer(),\n nid: id,\n });\n }\n }\n}\n\nexport class BooleanInvertedIndex implements InvertedIndex {\n constructor(readonly fieldKey: string) {}\n\n // eslint-disable-next-line sonarjs/no-identical-functions\n async all(trx: DataStructROTransaction): Promise {\n const objs = await trx\n .objectStore('invertedIndex')\n .index('key')\n .getAll(\n IDBKeyRange.bound(\n InvertedIndexKey.forPrefix(this.fieldKey).buffer(),\n InvertedIndexKey.forPrefix(this.fieldKey).add1().buffer()\n )\n );\n\n const set = new Set();\n for (const obj of objs) {\n set.add(obj.nid);\n }\n\n const match = new Match();\n for (const nid of set) {\n match.addScore(nid, 1);\n }\n return match;\n }\n\n async match(trx: DataStructROTransaction, term: string): Promise {\n const objs = await trx\n .objectStore('invertedIndex')\n .index('key')\n .getAll(\n InvertedIndexKey.forBoolean(this.fieldKey, term === 'true').buffer()\n );\n const match = new Match();\n for (const obj of objs) {\n match.addScore(obj.nid, 1);\n }\n return match;\n }\n\n async insert(trx: DataStructRWTransaction, id: number, terms: string[]) {\n for (const term of terms) {\n await trx.objectStore('invertedIndex').add({\n key: InvertedIndexKey.forBoolean(\n this.fieldKey,\n term === 'true'\n ).buffer(),\n nid: id,\n });\n }\n }\n}\n\nexport class FullTextInvertedIndex implements InvertedIndex {\n constructor(readonly fieldKey: string) {}\n\n async match(trx: DataStructROTransaction, term: string): Promise {\n const queryTokens = new GeneralTokenizer().tokenize(term);\n const matched = new Map<\n number,\n Map<\n number, // index\n {\n score: number;\n ranges: [number, number][];\n }\n >\n >();\n for (const token of queryTokens) {\n const key = InvertedIndexKey.forString(this.fieldKey, token.term);\n const objs = await trx\n .objectStore('invertedIndex')\n .index('key')\n .getAll(\n IDBKeyRange.bound(key.buffer(), key.add1().buffer(), false, true)\n );\n const submatched: {\n nid: number;\n score: number;\n position: {\n index: number;\n ranges: [number, number][];\n };\n }[] = [];\n for (const obj of objs) {\n const key = InvertedIndexKey.fromBuffer(obj.key);\n const originTokenTerm = key.asString();\n const matchLength = token.term.length;\n const position = obj.pos ?? {\n i: 0,\n l: 0,\n rs: [],\n };\n const termFreq = position.rs.length;\n const totalCount = objs.length;\n const avgFieldLength =\n (\n await trx\n .objectStore('kvMetadata')\n .get(`full-text:avg-field-length:${this.fieldKey}`)\n )?.value ?? 0;\n const fieldLength = position.l;\n const score =\n bm25(termFreq, 1, totalCount, fieldLength, avgFieldLength) *\n (matchLength / originTokenTerm.length);\n const match = {\n score,\n positions: new Map(),\n };\n const ranges = match.positions.get(position.i) || [];\n ranges.push(\n ...position.rs.map(([start, _end]) => [start, start + matchLength])\n );\n match.positions.set(position.i, ranges);\n submatched.push({\n nid: obj.nid,\n score,\n position: {\n index: position.i,\n ranges: position.rs.map(([start, _end]) => [\n start,\n start + matchLength,\n ]),\n },\n });\n }\n\n // normalize score\n const maxScore = submatched.reduce((acc, s) => Math.max(acc, s.score), 0);\n const minScore = submatched.reduce((acc, s) => Math.min(acc, s.score), 0);\n for (const { nid, score, position } of submatched) {\n const normalizedScore =\n maxScore === minScore\n ? score\n : (score - minScore) / (maxScore - minScore);\n const match =\n matched.get(nid) ??\n new Map<\n number, // index\n {\n score: number;\n ranges: [number, number][];\n }\n >();\n const item = match.get(position.index) || {\n score: 0,\n ranges: [],\n };\n item.score += normalizedScore;\n item.ranges.push(...position.ranges);\n match.set(position.index, item);\n matched.set(nid, match);\n }\n }\n const match = new Match();\n for (const [nid, items] of matched) {\n if (items.size === 0) {\n break;\n }\n let highestScore = -1;\n let highestIndex = -1;\n let highestRanges: [number, number][] = [];\n for (const [index, { score, ranges }] of items) {\n if (score > highestScore) {\n highestScore = score;\n highestIndex = index;\n highestRanges = ranges;\n }\n }\n match.addScore(nid, highestScore);\n match.addHighlighter(nid, this.fieldKey, highestIndex, highestRanges);\n }\n return match;\n }\n\n // eslint-disable-next-line sonarjs/no-identical-functions\n async all(trx: DataStructROTransaction): Promise {\n const objs = await trx\n .objectStore('invertedIndex')\n .index('key')\n .getAll(\n IDBKeyRange.bound(\n InvertedIndexKey.forPrefix(this.fieldKey).buffer(),\n InvertedIndexKey.forPrefix(this.fieldKey).add1().buffer()\n )\n );\n\n const set = new Set();\n for (const obj of objs) {\n set.add(obj.nid);\n }\n\n const match = new Match();\n for (const nid of set) {\n match.addScore(nid, 1);\n }\n return match;\n }\n\n async insert(trx: DataStructRWTransaction, id: number, terms: string[]) {\n for (let i = 0; i < terms.length; i++) {\n const tokenMap = new Map();\n const originString = terms[i];\n\n const tokens = new GeneralTokenizer().tokenize(originString);\n\n for (const token of tokens) {\n const tokens = tokenMap.get(token.term) || [];\n tokens.push(token);\n tokenMap.set(token.term, tokens);\n }\n\n for (const [term, tokens] of tokenMap) {\n await trx.objectStore('invertedIndex').add({\n key: InvertedIndexKey.forString(this.fieldKey, term).buffer(),\n nid: id,\n pos: {\n l: originString.length,\n i: i,\n rs: tokens.map(token => [token.start, token.end]),\n },\n });\n }\n\n const kvMetadataStore = trx.objectStore('kvMetadata');\n // update avg-field-length\n const totalCount =\n (await kvMetadataStore.get(`full-text:field-count:${this.fieldKey}`))\n ?.value ?? 0;\n const avgFieldLength =\n (\n await kvMetadataStore.get(\n `full-text:avg-field-length:${this.fieldKey}`\n )\n )?.value ?? 0;\n await kvMetadataStore.put({\n key: `full-text:field-count:${this.fieldKey}`,\n value: totalCount + 1,\n });\n await kvMetadataStore.put({\n key: `full-text:avg-field-length:${this.fieldKey}`,\n value:\n avgFieldLength +\n (terms.reduce((acc, term) => acc + term.length, 0) - avgFieldLength) /\n (totalCount + 1),\n });\n }\n }\n}\n\nexport class InvertedIndexKey {\n constructor(\n readonly field: ArrayBuffer,\n readonly value: ArrayBuffer,\n readonly gap: ArrayBuffer = new Uint8Array([58])\n ) {}\n\n asString() {\n return new TextDecoder().decode(this.value);\n }\n\n asInt64() {\n return new DataView(this.value).getBigInt64(0, false); /* big-endian */\n }\n\n add1() {\n if (this.value.byteLength > 0) {\n const bytes = new Uint8Array(this.value.slice(0));\n let carry = 1;\n for (let i = bytes.length - 1; i >= 0 && carry > 0; i--) {\n const sum = bytes[i] + carry;\n bytes[i] = sum % 256;\n carry = sum >> 8;\n }\n return new InvertedIndexKey(this.field, bytes);\n } else {\n return new InvertedIndexKey(\n this.field,\n new ArrayBuffer(0),\n new Uint8Array([59])\n );\n }\n }\n\n static forPrefix(field: string) {\n return new InvertedIndexKey(\n new TextEncoder().encode(field),\n new ArrayBuffer(0)\n );\n }\n\n static forString(field: string, value: string) {\n return new InvertedIndexKey(\n new TextEncoder().encode(field),\n new TextEncoder().encode(value)\n );\n }\n\n static forBoolean(field: string, value: boolean) {\n const bytes = new Uint8Array(1);\n bytes.set([value ? 1 : 0]);\n return new InvertedIndexKey(new TextEncoder().encode(field), bytes);\n }\n\n static forInt64(field: string, value: bigint) {\n const bytes = new ArrayBuffer(8);\n new DataView(bytes).setBigInt64(0, value, false); /* big-endian */\n return new InvertedIndexKey(new TextEncoder().encode(field), bytes);\n }\n\n buffer() {\n const tmp = new Uint8Array(\n this.field.byteLength + (this.value?.byteLength ?? 0) + 1\n );\n tmp.set(new Uint8Array(this.field), 0);\n tmp.set(new Uint8Array(this.gap), this.field.byteLength);\n if (this.value.byteLength > 0) {\n tmp.set(new Uint8Array(this.value), this.field.byteLength + 1);\n }\n return tmp.buffer;\n }\n\n static fromBuffer(buffer: ArrayBuffer) {\n const array = new Uint8Array(buffer);\n const fieldLength = array.indexOf(58);\n const field = array.slice(0, fieldLength);\n const value = array.slice(fieldLength + 1);\n return new InvertedIndexKey(field, value);\n }\n}\n","import {\n type DBSchema,\n type IDBPDatabase,\n type IDBPTransaction,\n openDB,\n type StoreNames,\n} from 'idb';\n\nimport {\n type AggregateOptions,\n type AggregateResult,\n Document,\n type Query,\n type Schema,\n type SearchOptions,\n type SearchResult,\n} from '../../';\nimport { highlighter } from './highlighter';\nimport {\n BooleanInvertedIndex,\n FullTextInvertedIndex,\n IntegerInvertedIndex,\n type InvertedIndex,\n StringInvertedIndex,\n} from './inverted-index';\nimport { Match } from './match';\n\nexport interface IndexDB extends DBSchema {\n kvMetadata: {\n key: string;\n value: {\n key: string;\n value: any;\n };\n };\n records: {\n key: number;\n value: {\n id: string;\n data: Map;\n };\n indexes: { id: string };\n };\n invertedIndex: {\n key: number;\n value: {\n nid: number;\n pos?: {\n i: number /* index */;\n l: number /* length */;\n rs: [number, number][] /* ranges: [start, end] */;\n };\n key: ArrayBuffer;\n };\n indexes: { key: ArrayBuffer; nid: number };\n };\n}\n\nexport type DataStructRWTransaction = IDBPTransaction<\n IndexDB,\n ArrayLike>,\n 'readwrite'\n>;\n\nexport type DataStructROTransaction = IDBPTransaction<\n IndexDB,\n ArrayLike>,\n 'readonly' | 'readwrite'\n>;\n\nexport class DataStruct {\n private initializePromise: Promise | null = null;\n database: IDBPDatabase = null as any;\n invertedIndex = new Map();\n\n constructor(\n readonly databaseName: string,\n schema: Schema\n ) {\n for (const [key, type] of Object.entries(schema)) {\n if (type === 'String') {\n this.invertedIndex.set(key, new StringInvertedIndex(key));\n } else if (type === 'Integer') {\n this.invertedIndex.set(key, new IntegerInvertedIndex(key));\n } else if (type === 'FullText') {\n this.invertedIndex.set(key, new FullTextInvertedIndex(key));\n } else if (type === 'Boolean') {\n this.invertedIndex.set(key, new BooleanInvertedIndex(key));\n } else {\n throw new Error(`Field type '${type}' not supported`);\n }\n }\n }\n\n async insert(trx: DataStructRWTransaction, document: Document) {\n const exists = await trx\n .objectStore('records')\n .index('id')\n .get(document.id);\n\n if (exists) {\n throw new Error('Document already exists');\n }\n\n const nid = await trx.objectStore('records').add({\n id: document.id,\n data: new Map(document.fields as Map),\n });\n\n for (const [key, values] of document.fields) {\n const iidx = this.invertedIndex.get(key as string);\n if (!iidx) {\n throw new Error(\n `Inverted index '${key.toString()}' not found, document not match schema`\n );\n }\n await iidx.insert(trx, nid, values);\n }\n }\n\n async delete(trx: DataStructRWTransaction, id: string) {\n const nid = await trx.objectStore('records').index('id').getKey(id);\n\n if (nid) {\n await trx.objectStore('records').delete(nid);\n }\n\n const indexIds = await trx\n .objectStore('invertedIndex')\n .index('nid')\n .getAllKeys(nid);\n for (const indexId of indexIds) {\n await trx.objectStore('invertedIndex').delete(indexId);\n }\n }\n\n async batchWrite(\n trx: DataStructRWTransaction,\n deletes: string[],\n inserts: Document[]\n ) {\n for (const del of deletes) {\n await this.delete(trx, del);\n }\n for (const inst of inserts) {\n await this.insert(trx, inst);\n }\n }\n\n async matchAll(trx: DataStructROTransaction): Promise {\n const allNids = await trx.objectStore('records').getAllKeys();\n const match = new Match();\n\n for (const nid of allNids) {\n match.addScore(nid, 1);\n }\n return match;\n }\n\n private async queryRaw(\n trx: DataStructROTransaction,\n query: Query\n ): Promise {\n if (query.type === 'match') {\n const iidx = this.invertedIndex.get(query.field as string);\n if (!iidx) {\n throw new Error(`Field '${query.field as string}' not found`);\n }\n return await iidx.match(trx, query.match);\n } else if (query.type === 'boolean') {\n const weights = [];\n for (const q of query.queries) {\n weights.push(await this.queryRaw(trx, q));\n }\n if (query.occur === 'must') {\n return weights.reduce((acc, w) => acc.and(w));\n } else if (query.occur === 'must_not') {\n const total = weights.reduce((acc, w) => acc.and(w));\n return (await this.matchAll(trx)).exclude(total);\n } else if (query.occur === 'should') {\n return weights.reduce((acc, w) => acc.or(w));\n }\n } else if (query.type === 'all') {\n return await this.matchAll(trx);\n } else if (query.type === 'boost') {\n return (await this.queryRaw(trx, query.query)).boost(query.boost);\n } else if (query.type === 'exists') {\n const iidx = this.invertedIndex.get(query.field as string);\n if (!iidx) {\n throw new Error(`Field '${query.field as string}' not found`);\n }\n return await iidx.all(trx);\n }\n throw new Error(`Query type '${query.type}' not supported`);\n }\n\n private async query(\n trx: DataStructROTransaction,\n query: Query\n ): Promise {\n const match = await this.queryRaw(trx, query);\n const filteredMatch = match.asyncFilter(async nid => {\n const record = await trx.objectStore('records').getKey(nid);\n return record !== undefined;\n });\n return filteredMatch;\n }\n\n async clear(trx: DataStructRWTransaction) {\n await trx.objectStore('records').clear();\n await trx.objectStore('invertedIndex').clear();\n await trx.objectStore('kvMetadata').clear();\n }\n\n async search(\n trx: DataStructROTransaction,\n query: Query,\n options: SearchOptions\n ): Promise> {\n const pagination = {\n skip: options.pagination?.skip ?? 0,\n limit: options.pagination?.limit ?? 100,\n };\n\n const match = await this.query(trx, query);\n\n const nids = match\n .toArray()\n .slice(pagination.skip, pagination.skip + pagination.limit);\n\n const nodes = [];\n for (const nid of nids) {\n nodes.push(await this.resultNode(trx, match, nid, options));\n }\n\n return {\n pagination: {\n count: match.size(),\n hasMore: match.size() > pagination.limit + pagination.skip,\n limit: pagination.limit,\n skip: pagination.skip,\n },\n nodes: nodes,\n };\n }\n\n async aggregate(\n trx: DataStructROTransaction,\n query: Query,\n field: string,\n options: AggregateOptions\n ): Promise> {\n const pagination = {\n skip: options.pagination?.skip ?? 0,\n limit: options.pagination?.limit ?? 100,\n };\n\n const hitPagination = options.hits\n ? {\n skip: options.hits.pagination?.skip ?? 0,\n limit: options.hits.pagination?.limit ?? 3,\n }\n : {\n skip: 0,\n limit: 0,\n };\n\n const match = await this.query(trx, query);\n\n const nids = match.toArray();\n\n const buckets: {\n key: string;\n nids: number[];\n hits: SearchResult['nodes'];\n }[] = [];\n\n for (const nid of nids) {\n const values = (await trx.objectStore('records').get(nid))?.data.get(\n field\n );\n for (const value of values ?? []) {\n let bucket;\n let bucketIndex = buckets.findIndex(b => b.key === value);\n if (bucketIndex === -1) {\n bucket = { key: value, nids: [], hits: [] };\n buckets.push(bucket);\n bucketIndex = buckets.length - 1;\n } else {\n bucket = buckets[bucketIndex];\n }\n\n if (\n bucketIndex >= pagination.skip &&\n bucketIndex < pagination.skip + pagination.limit\n ) {\n bucket.nids.push(nid);\n if (\n bucket.nids.length - 1 >= hitPagination.skip &&\n bucket.nids.length - 1 < hitPagination.skip + hitPagination.limit\n ) {\n bucket.hits.push(\n await this.resultNode(trx, match, nid, options.hits ?? {})\n );\n }\n }\n }\n }\n\n return {\n buckets: buckets\n .slice(pagination.skip, pagination.skip + pagination.limit)\n .map(bucket => {\n const result = {\n key: bucket.key,\n score: match.getScore(bucket.nids[0]),\n count: bucket.nids.length,\n } as AggregateResult['buckets'][number];\n\n if (options.hits) {\n (result as any).hits = {\n pagination: {\n count: bucket.nids.length,\n hasMore:\n bucket.nids.length > hitPagination.limit + hitPagination.skip,\n limit: hitPagination.limit,\n skip: hitPagination.skip,\n },\n nodes: bucket.hits,\n } as SearchResult;\n }\n\n return result;\n }),\n pagination: {\n count: buckets.length,\n hasMore: buckets.length > pagination.limit + pagination.skip,\n limit: pagination.limit,\n skip: pagination.skip,\n },\n };\n }\n\n async getAll(\n trx: DataStructROTransaction,\n ids: string[]\n ): Promise {\n const docs = [];\n for (const id of ids) {\n const record = await trx.objectStore('records').index('id').get(id);\n if (record) {\n docs.push(Document.from(record.id, record.data));\n }\n }\n\n return docs;\n }\n\n async has(trx: DataStructROTransaction, id: string): Promise {\n const nid = await trx.objectStore('records').index('id').getKey(id);\n return nid !== undefined;\n }\n\n async readonly() {\n await this.ensureInitialized();\n return this.database.transaction(\n ['records', 'invertedIndex', 'kvMetadata'],\n 'readonly'\n );\n }\n\n async readwrite() {\n await this.ensureInitialized();\n return this.database.transaction(\n ['records', 'invertedIndex', 'kvMetadata'],\n 'readwrite'\n );\n }\n\n private async ensureInitialized() {\n if (this.database) {\n return;\n }\n this.initializePromise ??= this.initialize();\n await this.initializePromise;\n }\n\n private async initialize() {\n this.database = await openDB(this.databaseName, 1, {\n upgrade(database) {\n database.createObjectStore('kvMetadata', {\n keyPath: 'key',\n });\n const recordsStore = database.createObjectStore('records', {\n autoIncrement: true,\n });\n recordsStore.createIndex('id', 'id', {\n unique: true,\n });\n const invertedIndexStore = database.createObjectStore('invertedIndex', {\n autoIncrement: true,\n });\n invertedIndexStore.createIndex('key', 'key', { unique: false });\n invertedIndexStore.createIndex('nid', 'nid', { unique: false });\n },\n });\n }\n\n private async resultNode(\n trx: DataStructROTransaction,\n match: Match,\n nid: number,\n options: SearchOptions\n ): Promise['nodes'][number]> {\n const record = await trx.objectStore('records').get(nid);\n if (!record) {\n throw new Error(`Record not found for nid ${nid}`);\n }\n\n const node = {\n id: record.id,\n score: match.getScore(nid),\n } as any;\n\n if (options.fields) {\n const fields = {} as Record;\n for (const field of options.fields as string[]) {\n fields[field] = record.data.get(field) ?? [''];\n if (fields[field].length === 1) {\n fields[field] = fields[field][0];\n }\n }\n node.fields = fields;\n }\n\n if (options.highlights) {\n const highlights = {} as Record;\n for (const { field, before, end } of options.highlights) {\n const highlightValues = match.getHighlighters(nid, field);\n if (highlightValues) {\n const rawValues = record.data.get(field) ?? [];\n highlights[field] = Array.from(highlightValues)\n .map(([index, ranges]) => {\n const raw = rawValues[index];\n\n if (raw) {\n return (\n highlighter(raw, before, end, ranges, {\n maxPrefix: 20,\n maxLength: 50,\n }) ?? ''\n );\n }\n\n return '';\n })\n .filter(Boolean);\n }\n }\n node.highlights = highlights;\n }\n\n return node;\n }\n}\n","export function highlighter(\n originText: string,\n before: string,\n after: string,\n matches: [number, number][],\n {\n maxLength = 50,\n maxPrefix = 20,\n }: { maxLength?: number; maxPrefix?: number } = {}\n) {\n const merged = mergeRanges(matches);\n\n if (merged.length === 0) {\n return null;\n }\n\n const firstMatch = merged[0][0];\n const start = Math.max(\n 0,\n Math.min(firstMatch - maxPrefix, originText.length - maxLength)\n );\n const end = Math.min(start + maxLength, originText.length);\n const text = originText.substring(start, end);\n\n let result = '';\n\n let pointer = 0;\n for (const match of merged) {\n const matchStart = match[0] - start;\n const matchEnd = match[1] - start;\n if (matchStart >= text.length) {\n break;\n }\n result += text.substring(pointer, matchStart);\n pointer = matchStart;\n const highlighted = text.substring(matchStart, matchEnd);\n\n if (highlighted.length === 0) {\n continue;\n }\n\n result += `${before}${highlighted}${after}`;\n pointer = matchEnd;\n }\n result += text.substring(pointer);\n\n if (start > 0) {\n result = `...${result}`;\n }\n\n if (end < originText.length) {\n result = `${result}...`;\n }\n\n return result;\n}\n\nfunction mergeRanges(intervals: [number, number][]) {\n if (intervals.length === 0) return [];\n\n intervals.sort((a, b) => a[0] - b[0]);\n\n const merged = [intervals[0]];\n\n for (let i = 1; i < intervals.length; i++) {\n const last = merged[merged.length - 1];\n const current = intervals[i];\n\n if (current[0] <= last[1]) {\n last[1] = Math.max(last[1], current[1]);\n } else {\n merged.push(current);\n }\n }\n\n return merged;\n}\n","import type { Observable } from 'rxjs';\nimport { from, merge, of, Subject, throttleTime } from 'rxjs';\n\nimport { exhaustMapWithTrailing } from '../../../../utils/';\nimport {\n type AggregateOptions,\n type AggregateResult,\n type Document,\n type Index,\n type IndexStorage,\n type IndexWriter,\n type Query,\n type Schema,\n type SearchOptions,\n type SearchResult,\n} from '../../';\nimport { DataStruct, type DataStructRWTransaction } from './data-struct';\n\nexport class IndexedDBIndex implements Index {\n data: DataStruct = new DataStruct(this.databaseName, this.schema);\n broadcast$ = new Subject();\n\n constructor(\n private readonly schema: S,\n private readonly databaseName: string = 'indexer'\n ) {\n const channel = new BroadcastChannel(this.databaseName + ':indexer');\n channel.onmessage = () => {\n this.broadcast$.next(1);\n };\n }\n\n async get(id: string): Promise | null> {\n return (await this.getAll([id]))[0] ?? null;\n }\n\n async getAll(ids: string[]): Promise[]> {\n const trx = await this.data.readonly();\n return this.data.getAll(trx, ids);\n }\n\n async write(): Promise> {\n return new IndexedDBIndexWriter(this.data, await this.data.readwrite());\n }\n\n async has(id: string): Promise {\n const trx = await this.data.readonly();\n return this.data.has(trx, id);\n }\n\n async search(\n query: Query,\n options: SearchOptions = {}\n ): Promise>> {\n const trx = await this.data.readonly();\n return this.data.search(trx, query, options);\n }\n\n search$(\n query: Query,\n options: SearchOptions = {}\n ): Observable>> {\n return merge(of(1), this.broadcast$).pipe(\n throttleTime(500, undefined, { leading: true, trailing: true }),\n exhaustMapWithTrailing(() => {\n return from(\n (async () => {\n const trx = await this.data.readonly();\n return this.data.search(trx, query, options);\n })()\n );\n })\n );\n }\n\n async aggregate(\n query: Query,\n field: string,\n options: AggregateOptions = {}\n ): Promise>> {\n const trx = await this.data.readonly();\n return this.data.aggregate(trx, query, field, options);\n }\n\n aggregate$(\n query: Query,\n field: string,\n options: AggregateOptions = {}\n ): Observable>> {\n return merge(of(1), this.broadcast$).pipe(\n throttleTime(500, undefined, { leading: true, trailing: true }),\n exhaustMapWithTrailing(() => {\n return from(\n (async () => {\n const trx = await this.data.readonly();\n return this.data.aggregate(trx, query, field, options);\n })()\n );\n })\n );\n }\n\n async clear(): Promise {\n const trx = await this.data.readwrite();\n return this.data.clear(trx);\n }\n}\n\nexport class IndexedDBIndexWriter implements IndexWriter {\n inserts: Document[] = [];\n deletes: string[] = [];\n channel = new BroadcastChannel(this.data.databaseName + ':indexer');\n\n constructor(\n private readonly data: DataStruct,\n private readonly trx: DataStructRWTransaction\n ) {}\n\n async get(id: string): Promise | null> {\n return (await this.getAll([id]))[0] ?? null;\n }\n\n async getAll(ids: string[]): Promise[]> {\n const trx = await this.data.readonly();\n return this.data.getAll(trx, ids);\n }\n\n insert(document: Document): void {\n this.inserts.push(document);\n }\n delete(id: string): void {\n this.deletes.push(id);\n }\n put(document: Document): void {\n this.delete(document.id);\n this.insert(document);\n }\n\n async commit(): Promise {\n await this.data.batchWrite(this.trx, this.deletes, this.inserts);\n this.channel.postMessage(1);\n }\n\n rollback(): void {}\n\n has(id: string): Promise {\n return this.data.has(this.trx, id);\n }\n\n async search(\n query: Query,\n options: SearchOptions = {}\n ): Promise>> {\n return this.data.search(this.trx, query, options);\n }\n\n async aggregate(\n query: Query,\n field: string,\n options: AggregateOptions = {}\n ): Promise>> {\n return this.data.aggregate(this.trx, query, field, options);\n }\n}\n\nexport class IndexedDBIndexStorage implements IndexStorage {\n constructor(private readonly databaseName: string) {}\n getIndex(name: string, s: S): Index {\n return new IndexedDBIndex(s, this.databaseName + ':' + name);\n }\n}\n","import { defineSchema } from '@toeverything/infra';\n\nexport const docIndexSchema = defineSchema({\n title: 'FullText',\n});\n\nexport type DocIndexSchema = typeof docIndexSchema;\n\nexport const blockIndexSchema = defineSchema({\n docId: 'String',\n blockId: 'String',\n content: 'FullText',\n flavour: 'String',\n ref: 'String',\n blob: 'String',\n});\n\nexport type BlockIndexSchema = typeof blockIndexSchema;\n","import { DebugLogger } from '@affine/debug';\nimport { MANUALLY_STOP, throwIfAborted } from '@toeverything/infra';\n\nimport type {\n WorkerIngoingMessage,\n WorkerInput,\n WorkerOutgoingMessage,\n WorkerOutput,\n} from './types';\n\nconst logger = new DebugLogger('affine:indexer-worker');\n\nexport async function createWorker(abort: AbortSignal) {\n let worker: Worker | null = null;\n while (throwIfAborted(abort)) {\n try {\n worker = await new Promise((resolve, reject) => {\n // @TODO(@forehalo): need to make a general worker\n const worker = new Worker(\n /* webpackChunkName: \"worker\" */ new URL(\n './in-worker.ts',\n import.meta.url\n )\n );\n worker.addEventListener('error', reject);\n worker.addEventListener('message', event => {\n if (event.data.type === 'init') {\n resolve(worker);\n }\n });\n worker.postMessage({ type: 'init', msgId: 0 } as WorkerIngoingMessage);\n setTimeout(() => {\n reject('timeout');\n }, 1000 * 30 /* 30 sec */);\n });\n } catch (err) {\n logger.debug(\n `Indexer worker init failed, ${err}, will retry in 5 seconds.`\n );\n await new Promise(resolve => setTimeout(resolve, 5000));\n }\n if (worker) {\n break;\n }\n }\n\n if (!worker) {\n // never reach here\n throw new Error('Worker is not created');\n }\n\n const terminateAbort = new AbortController();\n\n let msgId = 1;\n\n return {\n run: async (input: WorkerInput) => {\n const dispose: (() => void)[] = [];\n return new Promise((resolve, reject) => {\n const currentMsgId = msgId++;\n const msgHandler = (event: MessageEvent) => {\n if (event.data.msgId === currentMsgId) {\n if (event.data.type === 'done') {\n resolve(event.data.output);\n } else if (event.data.type === 'failed') {\n reject(new Error(event.data.error));\n } else {\n reject(new Error('Unknown message type'));\n }\n }\n };\n const abortHandler = (reason: any) => {\n reject(reason);\n };\n\n worker.addEventListener('message', msgHandler);\n dispose.push(() => {\n worker?.removeEventListener('message', msgHandler);\n });\n\n terminateAbort.signal.addEventListener('abort', abortHandler);\n dispose.push(() => {\n terminateAbort.signal.removeEventListener('abort', abortHandler);\n });\n\n worker.postMessage({\n type: 'run',\n msgId: currentMsgId,\n input,\n } as WorkerIngoingMessage);\n }).finally(() => {\n for (const d of dispose) {\n d();\n }\n });\n },\n dispose: () => {\n worker.terminate();\n terminateAbort.abort(MANUALLY_STOP);\n },\n };\n}\n\nexport type IndexerWorker = Awaited>;\n","import { DebugLogger } from '@affine/debug';\nimport type { Job, JobQueue, WorkspaceService } from '@toeverything/infra';\nimport {\n Entity,\n IndexedDBIndexStorage,\n IndexedDBJobQueue,\n JobRunner,\n LiveData,\n WorkspaceDBService,\n} from '@toeverything/infra';\nimport { map } from 'rxjs';\n\nimport { blockIndexSchema, docIndexSchema } from '../schema';\nimport { createWorker, type IndexerWorker } from '../worker/out-worker';\n\nexport function isEmptyUpdate(binary: Uint8Array) {\n return (\n binary.byteLength === 0 ||\n (binary.byteLength === 2 && binary[0] === 0 && binary[1] === 0)\n );\n}\n\nconst logger = new DebugLogger('crawler');\n\ninterface IndexerJobPayload {\n storageDocId: string;\n}\n\nexport class DocsIndexer extends Entity {\n private readonly jobQueue: JobQueue =\n new IndexedDBJobQueue(\n 'jq:' + this.workspaceService.workspace.id\n );\n\n private readonly runner = new JobRunner(\n this.jobQueue,\n (jobs, signal) => this.execJob(jobs, signal),\n () =>\n new Promise(resolve =>\n requestIdleCallback(() => resolve(), {\n timeout: 200,\n })\n )\n );\n\n private readonly indexStorage = new IndexedDBIndexStorage(\n 'idx:' + this.workspaceService.workspace.id\n );\n\n readonly docIndex = this.indexStorage.getIndex('doc', docIndexSchema);\n\n readonly blockIndex = this.indexStorage.getIndex('block', blockIndexSchema);\n\n private readonly workspaceEngine = this.workspaceService.workspace.engine;\n\n private readonly workspaceId = this.workspaceService.workspace.id;\n\n private worker: IndexerWorker | null = null;\n\n readonly status$ = LiveData.from<{ remaining?: number }>(\n this.jobQueue.status$.pipe(\n map(status => ({\n remaining: status.remaining,\n }))\n ),\n {}\n );\n\n constructor(private readonly workspaceService: WorkspaceService) {\n super();\n }\n\n setupListener() {\n this.workspaceEngine.doc.storage.eventBus.on(event => {\n if (WorkspaceDBService.isDBDocId(event.docId)) {\n // skip db doc\n return;\n }\n if (event.clientId === this.workspaceEngine.doc.clientId) {\n this.jobQueue\n .enqueue([\n {\n batchKey: event.docId,\n payload: { storageDocId: event.docId },\n },\n ])\n .catch(err => {\n console.error('Error enqueueing job', err);\n });\n }\n });\n }\n\n async execJob(jobs: Job[], signal: AbortSignal) {\n if (jobs.length === 0) {\n return;\n }\n\n // jobs should have the same storage docId, so we just pick the first one\n const storageDocId = jobs[0].payload.storageDocId;\n\n const worker = await this.ensureWorker(signal);\n\n const startTime = performance.now();\n logger.debug('Start crawling job for storageDocId:', storageDocId);\n\n let workerOutput;\n\n if (storageDocId === this.workspaceId) {\n const rootDocBuffer =\n await this.workspaceEngine.doc.storage.loadDocFromLocal(\n this.workspaceId\n );\n\n if (!rootDocBuffer) {\n return;\n }\n\n const allIndexedDocs = (\n await this.docIndex.search(\n {\n type: 'all',\n },\n {\n pagination: {\n limit: Number.MAX_SAFE_INTEGER,\n skip: 0,\n },\n }\n )\n ).nodes.map(n => n.id);\n\n workerOutput = await worker.run({\n type: 'rootDoc',\n allIndexedDocs,\n rootDocBuffer,\n });\n } else {\n const rootDocBuffer =\n await this.workspaceEngine.doc.storage.loadDocFromLocal(\n this.workspaceId\n );\n\n const docBuffer =\n (await this.workspaceEngine.doc.storage.loadDocFromLocal(\n storageDocId\n )) ?? new Uint8Array(0);\n\n if (!rootDocBuffer) {\n return;\n }\n\n workerOutput = await worker.run({\n type: 'doc',\n docBuffer,\n storageDocId,\n rootDocBuffer,\n });\n }\n\n if (workerOutput.deletedDoc || workerOutput.addedDoc) {\n if (workerOutput.deletedDoc) {\n const docIndexWriter = await this.docIndex.write();\n for (const docId of workerOutput.deletedDoc) {\n docIndexWriter.delete(docId);\n }\n await docIndexWriter.commit();\n const blockIndexWriter = await this.blockIndex.write();\n for (const docId of workerOutput.deletedDoc) {\n const oldBlocks = await blockIndexWriter.search(\n {\n type: 'match',\n field: 'docId',\n match: docId,\n },\n {\n pagination: {\n limit: Number.MAX_SAFE_INTEGER,\n },\n }\n );\n for (const block of oldBlocks.nodes) {\n blockIndexWriter.delete(block.id);\n }\n }\n await blockIndexWriter.commit();\n }\n if (workerOutput.addedDoc) {\n const docIndexWriter = await this.docIndex.write();\n for (const { doc } of workerOutput.addedDoc) {\n docIndexWriter.put(doc);\n }\n await docIndexWriter.commit();\n const blockIndexWriter = await this.blockIndex.write();\n for (const { id, blocks } of workerOutput.addedDoc) {\n // delete old blocks\n const oldBlocks = await blockIndexWriter.search(\n {\n type: 'match',\n field: 'docId',\n match: id,\n },\n {\n pagination: {\n limit: Number.MAX_SAFE_INTEGER,\n },\n }\n );\n for (const block of oldBlocks.nodes) {\n blockIndexWriter.delete(block.id);\n }\n for (const block of blocks) {\n blockIndexWriter.insert(block);\n }\n }\n await blockIndexWriter.commit();\n }\n }\n\n if (workerOutput.reindexDoc) {\n await this.jobQueue.enqueue(\n workerOutput.reindexDoc.map(({ storageDocId }) => ({\n batchKey: storageDocId,\n payload: { storageDocId },\n }))\n );\n }\n\n const duration = performance.now() - startTime;\n logger.debug(\n 'Finish crawling job for storageDocId:' +\n storageDocId +\n ' in ' +\n duration +\n 'ms '\n );\n }\n\n startCrawling() {\n this.runner.start();\n this.jobQueue\n .enqueue([\n {\n batchKey: this.workspaceId,\n payload: { storageDocId: this.workspaceId },\n },\n ])\n .catch(err => {\n console.error('Error enqueueing job', err);\n });\n }\n\n async ensureWorker(signal: AbortSignal): Promise {\n if (!this.worker) {\n this.worker = await createWorker(signal);\n }\n return this.worker;\n }\n\n override dispose(): void {\n this.runner.stop();\n }\n}\n","export { DocsSearchService } from './services/docs-search';\n\nimport {\n type Framework,\n WorkspaceScope,\n WorkspaceService,\n} from '@toeverything/infra';\n\nimport { DocsIndexer } from './entities/docs-indexer';\nimport { DocsSearchService } from './services/docs-search';\n\nexport function configureDocsSearchModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(DocsSearchService)\n .entity(DocsIndexer, [WorkspaceService]);\n}\n","import type { GlobalCache } from '@toeverything/infra';\nimport { Entity, LiveData } from '@toeverything/infra';\nimport { map } from 'rxjs';\n\nimport type { CollapsibleSectionName } from '../types';\n\nconst DEFAULT_COLLAPSABLE_STATE: Record = {\n favorites: false,\n organize: false,\n collections: true,\n tags: true,\n favoritesOld: true,\n migrationFavorites: true,\n};\n\nexport class ExplorerSection extends Entity<{ name: CollapsibleSectionName }> {\n name: CollapsibleSectionName = this.props.name;\n key = `explorer.section.${this.name}`;\n defaultValue = DEFAULT_COLLAPSABLE_STATE[this.name];\n\n constructor(private readonly globalCache: GlobalCache) {\n super();\n }\n\n collapsed$ = LiveData.from(\n this.globalCache\n .watch(this.key)\n .pipe(map(v => v ?? this.defaultValue)),\n this.defaultValue\n );\n\n setCollapsed(collapsed: boolean) {\n this.globalCache.set(this.key, collapsed);\n }\n}\n","import { type DropTargetDropEvent, useDropTarget } from '@affine/component';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\n\nimport { EmptyNodeChildren } from '../../layouts/empty-node-children';\n\nexport const Empty = ({\n onDrop,\n}: {\n onDrop: (data: DropTargetDropEvent) => void;\n}) => {\n const { dropTargetRef } = useDropTarget(\n () => ({\n onDrop,\n }),\n [onDrop]\n );\n const t = useI18n();\n return (\n \n {t['com.arms.collection.emptyCollection']()}\n \n );\n};\n","import {\n IconButton,\n MenuIcon,\n MenuItem,\n MenuSeparator,\n useConfirmModal,\n} from '@affine/component';\nimport { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper';\nimport { useDeleteCollectionInfo } from '@affine/core/hooks/affine/use-delete-collection-info';\nimport { track } from '@affine/core/mixpanel';\nimport { CollectionService } from '@affine/core/modules/collection';\nimport { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties';\nimport { WorkbenchService } from '@affine/core/modules/workbench';\nimport { useI18n } from '@affine/i18n';\nimport {\n DeleteIcon,\n FavoritedIcon,\n FavoriteIcon,\n FilterIcon,\n OpenInNewIcon,\n PlusIcon,\n SplitViewIcon,\n} from '@blocksuite/icons/rc';\nimport { DocsService, useLiveData, useServices } from '@toeverything/infra';\nimport { useCallback, useMemo } from 'react';\n\nimport type { NodeOperation } from '../../tree/types';\n\nexport const useExplorerCollectionNodeOperations = (\n collectionId: string,\n onOpenCollapsed: () => void,\n onOpenEdit: () => void\n): NodeOperation[] => {\n const t = useI18n();\n const { appSettings } = useAppSettingHelper();\n const {\n workbenchService,\n docsService,\n collectionService,\n compatibleFavoriteItemsAdapter,\n } = useServices({\n DocsService,\n WorkbenchService,\n CollectionService,\n CompatibleFavoriteItemsAdapter,\n });\n const deleteInfo = useDeleteCollectionInfo();\n\n const favorite = useLiveData(\n useMemo(\n () =>\n compatibleFavoriteItemsAdapter.isFavorite$(collectionId, 'collection'),\n [collectionId, compatibleFavoriteItemsAdapter]\n )\n );\n const { openConfirmModal } = useConfirmModal();\n\n const createAndAddDocument = useCallback(() => {\n const newDoc = docsService.createDoc();\n collectionService.addPageToCollection(collectionId, newDoc.id);\n track.$.navigationPanel.collections.createDoc();\n track.$.navigationPanel.collections.addDocToCollection({\n control: 'button',\n });\n workbenchService.workbench.openDoc(newDoc.id);\n onOpenCollapsed();\n }, [\n collectionId,\n collectionService,\n docsService,\n onOpenCollapsed,\n workbenchService.workbench,\n ]);\n\n const handleToggleFavoriteCollection = useCallback(() => {\n compatibleFavoriteItemsAdapter.toggle(collectionId, 'collection');\n track.$.navigationPanel.organize.toggleFavorite({\n type: 'collection',\n });\n }, [compatibleFavoriteItemsAdapter, collectionId]);\n\n const handleAddDocToCollection = useCallback(() => {\n openConfirmModal({\n title: t['com.arms.collection.add-doc.confirm.title'](),\n description: t['com.arms.collection.add-doc.confirm.description'](),\n cancelText: t['Cancel'](),\n confirmText: t['Confirm'](),\n confirmButtonOptions: {\n variant: 'primary',\n },\n onConfirm: createAndAddDocument,\n });\n }, [createAndAddDocument, openConfirmModal, t]);\n\n const handleOpenInSplitView = useCallback(() => {\n workbenchService.workbench.openCollection(collectionId, { at: 'beside' });\n track.$.navigationPanel.organize.openInSplitView({\n type: 'collection',\n });\n }, [collectionId, workbenchService.workbench]);\n\n const handleOpenInNewTab = useCallback(() => {\n workbenchService.workbench.openCollection(collectionId, { at: 'new-tab' });\n track.$.navigationPanel.organize.openInNewTab({ type: 'collection' });\n }, [collectionId, workbenchService.workbench]);\n\n const handleDeleteCollection = useCallback(() => {\n collectionService.deleteCollection(deleteInfo, collectionId);\n track.$.navigationPanel.organize.deleteOrganizeItem({\n type: 'collection',\n });\n }, [collectionId, collectionService, deleteInfo]);\n\n const handleShowEdit = useCallback(() => {\n onOpenEdit();\n }, [onOpenEdit]);\n\n return useMemo(\n () => [\n {\n index: 0,\n inline: true,\n view: (\n \n \n \n ),\n },\n {\n index: 99,\n view: (\n \n \n \n }\n onClick={handleShowEdit}\n >\n {t['com.arms.collection.menu.edit']()}\n \n ),\n },\n {\n index: 99,\n view: (\n \n \n \n }\n onClick={handleAddDocToCollection}\n >\n {t['New Page']()}\n \n ),\n },\n {\n index: 99,\n view: (\n \n {favorite ? (\n \n ) : (\n \n )}\n \n }\n onClick={handleToggleFavoriteCollection}\n >\n {favorite\n ? t['com.arms.favoritePageOperation.remove']()\n : t['com.arms.favoritePageOperation.add']()}\n \n ),\n },\n {\n index: 99,\n view: (\n \n \n \n }\n onClick={handleOpenInNewTab}\n >\n {t['com.arms.workbench.tab.page-menu-open']()}\n \n ),\n },\n ...(appSettings.enableMultiView\n ? [\n {\n index: 99,\n view: (\n \n \n \n }\n onClick={handleOpenInSplitView}\n >\n {t['com.arms.workbench.split-view.page-menu-open']()}\n \n ),\n },\n ]\n : []),\n {\n index: 9999,\n view: ,\n },\n {\n index: 10000,\n view: (\n \n \n \n }\n onClick={handleDeleteCollection}\n >\n {t['Delete']()}\n \n ),\n },\n ],\n [\n appSettings.enableMultiView,\n favorite,\n handleAddDocToCollection,\n handleDeleteCollection,\n handleOpenInNewTab,\n handleOpenInSplitView,\n handleShowEdit,\n handleToggleFavoriteCollection,\n t,\n ]\n );\n};\n","import {\n AnimatedCollectionsIcon,\n type DropTargetDropEvent,\n type DropTargetOptions,\n MenuIcon,\n MenuItem,\n toast,\n} from '@affine/component';\nimport {\n filterPage,\n useEditCollection,\n} from '@affine/core/components/page-list';\nimport { track } from '@affine/core/mixpanel';\nimport { CollectionService } from '@affine/core/modules/collection';\nimport { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties';\nimport { ShareDocsService } from '@affine/core/modules/share-doc';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport type { Collection } from '@affine/env/filter';\nimport { PublicPageMode } from '@affine/graphql';\nimport { useI18n } from '@affine/i18n';\nimport { FilterMinusIcon } from '@blocksuite/icons/rc';\nimport type { DocMeta } from '@blocksuite/store';\nimport {\n DocsService,\n GlobalContextService,\n LiveData,\n useLiveData,\n useService,\n useServices,\n} from '@toeverything/infra';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ExplorerTreeNode, type ExplorerTreeNodeDropEffect } from '../../tree';\nimport type { ExplorerTreeNodeIcon } from '../../tree/node';\nimport { ExplorerDocNode } from '../doc';\nimport type { GenericExplorerNode } from '../types';\nimport { Empty } from './empty';\nimport { useExplorerCollectionNodeOperations } from './operations';\n\nconst CollectionIcon: ExplorerTreeNodeIcon = ({\n className,\n draggedOver,\n treeInstruction,\n}) => (\n \n);\n\nexport const ExplorerCollectionNode = ({\n collectionId,\n onDrop,\n location,\n reorderable,\n operations: additionalOperations,\n canDrop,\n dropEffect,\n}: {\n collectionId: string;\n} & GenericExplorerNode) => {\n const t = useI18n();\n const { globalContextService } = useServices({\n GlobalContextService,\n });\n const { open: openEditCollectionModal, node: editModal } =\n useEditCollection();\n const active =\n useLiveData(globalContextService.globalContext.collectionId.$) ===\n collectionId;\n const [collapsed, setCollapsed] = useState(true);\n\n const collectionService = useService(CollectionService);\n const collection = useLiveData(collectionService.collection$(collectionId));\n\n const dndData = useMemo(() => {\n return {\n draggable: {\n entity: {\n type: 'collection',\n id: collectionId,\n },\n from: location,\n },\n dropTarget: {\n at: 'explorer:doc',\n },\n } satisfies AffineDNDData;\n }, [collectionId, location]);\n\n const handleRename = useCallback(\n (name: string) => {\n if (collection && collection.name !== name) {\n collectionService.updateCollection(collectionId, () => ({\n ...collection,\n name,\n }));\n\n track.$.navigationPanel.organize.renameOrganizeItem({\n type: 'collection',\n });\n toast(t['com.arms.toastMessage.rename']());\n }\n },\n [collection, collectionId, collectionService, t]\n );\n\n const handleAddDocToCollection = useCallback(\n (docId: string) => {\n if (!collection) {\n return;\n }\n if (collection.allowList.includes(docId)) {\n toast(t['com.arms.collection.addPage.alreadyExists']());\n } else {\n collectionService.addPageToCollection(collection.id, docId);\n }\n },\n [collection, collectionService, t]\n );\n\n const handleDropOnCollection = useCallback(\n (data: DropTargetDropEvent) => {\n if (collection && data.treeInstruction?.type === 'make-child') {\n if (data.source.data.entity?.type === 'doc') {\n handleAddDocToCollection(data.source.data.entity.id);\n track.$.navigationPanel.organize.createOrganizeItem({\n type: 'link',\n target: 'doc',\n control: 'drag',\n });\n }\n } else {\n onDrop?.(data);\n }\n },\n [collection, onDrop, handleAddDocToCollection]\n );\n\n const handleDropEffectOnCollection = useCallback(\n data => {\n if (collection && data.treeInstruction?.type === 'make-child') {\n if (data.source.data.entity?.type === 'doc') {\n return 'link';\n }\n } else {\n return dropEffect?.(data);\n }\n return;\n },\n [collection, dropEffect]\n );\n\n const handleDropOnPlaceholder = useCallback(\n (data: DropTargetDropEvent) => {\n if (collection && data.source.data.entity?.type === 'doc') {\n handleAddDocToCollection(data.source.data.entity.id);\n track.$.navigationPanel.organize.createOrganizeItem({\n type: 'collection',\n control: 'drag',\n });\n }\n },\n [collection, handleAddDocToCollection]\n );\n\n const handleOpenCollapsed = useCallback(() => {\n setCollapsed(false);\n }, []);\n\n const handleEditCollection = useCallback(() => {\n if (!collection) {\n return;\n }\n openEditCollectionModal(collection)\n .then(collection => {\n return collectionService.updateCollection(\n collection.id,\n () => collection\n );\n })\n .catch(err => {\n console.error(err);\n });\n }, [collection, collectionService, openEditCollectionModal]);\n\n const collectionOperations = useExplorerCollectionNodeOperations(\n collectionId,\n handleOpenCollapsed,\n handleEditCollection\n );\n\n const finalOperations = useMemo(() => {\n if (additionalOperations) {\n return [...additionalOperations, ...collectionOperations];\n }\n return collectionOperations;\n }, [collectionOperations, additionalOperations]);\n\n const handleCanDrop = useMemo['canDrop']>(\n () => args => {\n const entityType = args.source.data.entity?.type;\n return args.treeInstruction?.type !== 'make-child'\n ? (typeof canDrop === 'function' ? canDrop(args) : canDrop) ?? true\n : entityType === 'doc';\n },\n [canDrop]\n );\n\n if (!collection) {\n return null;\n }\n\n return (\n <>\n }\n operations={finalOperations}\n dropEffect={handleDropEffectOnCollection}\n data-testid={`explorer-collection-${collectionId}`}\n >\n \n \n {editModal}\n \n );\n};\n\nconst ExplorerCollectionNodeChildren = ({\n collection,\n}: {\n collection: Collection;\n}) => {\n const t = useI18n();\n const {\n docsService,\n compatibleFavoriteItemsAdapter,\n shareDocsService,\n collectionService,\n } = useServices({\n DocsService,\n CompatibleFavoriteItemsAdapter,\n ShareDocsService,\n CollectionService,\n });\n\n useEffect(() => {\n // TODO(@eyhn): loading & error UI\n shareDocsService.shareDocs?.revalidate();\n }, [shareDocsService]);\n\n const docMetas = useLiveData(\n useMemo(\n () =>\n LiveData.computed(get => {\n return get(docsService.list.docs$).map(\n doc => get(doc.meta$) as DocMeta\n );\n }),\n [docsService]\n )\n );\n const favourites = useLiveData(compatibleFavoriteItemsAdapter.favorites$);\n const allowList = useMemo(\n () => new Set(collection.allowList),\n [collection.allowList]\n );\n const shareDocs = useLiveData(shareDocsService.shareDocs?.list$);\n\n const handleRemoveFromAllowList = useCallback(\n (id: string) => {\n track.$.navigationPanel.collections.removeOrganizeItem({ type: 'doc' });\n collectionService.deletePageFromCollection(collection.id, id);\n toast(t['com.arms.collection.removePage.success']());\n },\n [collection.id, collectionService, t]\n );\n\n const filtered = docMetas.filter(meta => {\n if (meta.trash) return false;\n const publicMode = shareDocs?.find(d => d.id === meta.id)?.mode;\n const pageData = {\n meta: meta as DocMeta,\n publicMode:\n publicMode === PublicPageMode.Edgeless\n ? ('edgeless' as const)\n : publicMode === PublicPageMode.Page\n ? ('page' as const)\n : undefined,\n favorite: favourites.some(fav => fav.id === meta.id),\n };\n return filterPage(collection, pageData);\n });\n\n return filtered.map(doc => (\n \n \n \n }\n onClick={() => handleRemoveFromAllowList(doc.id)}\n >\n {t['Remove special filter']()}\n \n ),\n },\n ]\n : []\n }\n />\n ));\n};\n","import { useI18n } from '@affine/i18n';\nimport { ViewLayersIcon } from '@blocksuite/icons/rc';\n\nimport { ExplorerEmptySection } from '../../layouts/empty-section';\n\nexport const RootEmpty = ({\n onClickCreate,\n}: {\n onClickCreate?: () => void;\n}) => {\n const t = useI18n();\n\n return (\n \n );\n};\n","import { IconButton } from '@affine/component';\nimport { useEditCollectionName } from '@affine/core/components/page-list';\nimport { createEmptyCollection } from '@affine/core/components/page-list/use-collection-manager';\nimport { track } from '@affine/core/mixpanel';\nimport { CollectionService } from '@affine/core/modules/collection';\nimport { ExplorerTreeRoot } from '@affine/core/modules/explorer/views/tree';\nimport { WorkbenchService } from '@affine/core/modules/workbench';\nimport { useI18n } from '@affine/i18n';\nimport { PlusIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useServices } from '@toeverything/infra';\nimport { nanoid } from 'nanoid';\nimport { useCallback } from 'react';\n\nimport { ExplorerService } from '../../../services/explorer';\nimport { CollapsibleSection } from '../../layouts/collapsible-section';\nimport { ExplorerCollectionNode } from '../../nodes/collection';\nimport { RootEmpty } from './empty';\n\nexport const ExplorerCollections = () => {\n const t = useI18n();\n const { collectionService, workbenchService, explorerService } = useServices({\n CollectionService,\n WorkbenchService,\n ExplorerService,\n });\n const explorerSection = explorerService.sections.collections;\n const collections = useLiveData(collectionService.collections$);\n const { node, open: openCreateCollectionModel } = useEditCollectionName({\n title: t['com.arms.editCollection.createCollection'](),\n showTips: true,\n });\n\n const handleCreateCollection = useCallback(() => {\n openCreateCollectionModel('')\n .then(name => {\n const id = nanoid();\n collectionService.addCollection(createEmptyCollection(id, { name }));\n track.$.navigationPanel.organize.createOrganizeItem({\n type: 'collection',\n });\n workbenchService.workbench.openCollection(id);\n explorerSection.setCollapsed(false);\n })\n .catch(err => {\n console.error(err);\n });\n }, [\n collectionService,\n explorerSection,\n openCreateCollectionModel,\n workbenchService.workbench,\n ]);\n\n return (\n <>\n \n \n \n }\n >\n }\n >\n {collections.map(collection => (\n \n ))}\n \n \n {node}\n \n );\n};\n","import { Modal } from '@affine/component';\nimport { useMount } from '@toeverything/infra';\nimport { cssVar } from '@toeverything/theme';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport type { BaseSelectorDialogProps } from '.';\n\nexport const useSelectDialog = function useSelectDialog(\n Component: React.FC>,\n debugKey?: string\n) {\n // to control whether the dialog is open, it's not equal to !!value\n // when closing the dialog, show will be `false` first, then after the animation, value turns to `undefined`\n const [show, setShow] = useState(false);\n const [value, setValue] = useState<{\n init?: T;\n onConfirm: (v: T) => void;\n }>();\n\n const onOpenChanged = useCallback((open: boolean) => {\n if (!open) setValue(undefined);\n setShow(open);\n }, []);\n\n const close = useCallback(() => setShow(false), []);\n\n /**\n * Open a dialog to select items\n */\n const open = useCallback(\n (ids?: T) => {\n return new Promise(resolve => {\n setShow(true);\n setValue({\n init: ids,\n onConfirm: list => {\n close();\n resolve(list);\n },\n });\n });\n },\n [close]\n );\n\n const { mount } = useMount(debugKey);\n\n useEffect(() => {\n return mount(\n \n {value ? (\n \n ) : null}\n \n );\n }, [Component, close, mount, onOpenChanged, show, value]);\n\n return open;\n};\n","import { SelectCollection } from '../collections';\nimport { SelectTag } from '../tags';\nimport { SelectPage } from '../view/edit-collection/select-page';\nimport { useSelectDialog } from './use-select-dialog';\n\nexport interface BaseSelectorDialogProps {\n init?: T;\n onConfirm?: (data: T) => void;\n onCancel?: () => void;\n}\n\n/**\n * Return a `open` function to open the select collection dialog.\n */\nexport const useSelectCollection = () => {\n return useSelectDialog(SelectCollection, 'select-collection');\n};\n\n/**\n * Return a `open` function to open the select page dialog.\n */\nexport const useSelectDoc = () => {\n return useSelectDialog(SelectPage, 'select-doc-dialog');\n};\n\n/**\n * Return a `open` function to open the select tag dialog.\n */\nexport const useSelectTag = () => {\n return useSelectDialog(SelectTag, 'select-tag-dialog');\n};\n","import {\n type DropTargetDropEvent,\n type DropTargetOptions,\n useDropTarget,\n} from '@affine/component';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\n\nimport { EmptyNodeChildren } from '../../layouts/empty-node-children';\nimport { draggedOverHighlight } from './empty.css';\n\nexport const FolderEmpty = ({\n canDrop,\n onDrop,\n}: {\n onDrop?: (data: DropTargetDropEvent) => void;\n canDrop?: DropTargetOptions['canDrop'];\n}) => {\n const { dropTargetRef } = useDropTarget(\n () => ({\n onDrop,\n canDrop,\n }),\n [onDrop, canDrop]\n );\n\n const t = useI18n();\n return (\n \n {t['com.arms.rootAppSidebar.organize.empty-folder']()}\n \n );\n};\n","import \"../core/src/modules/explorer/views/nodes/folder/empty.css.ts.vanilla.css!=!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/nodes/folder/empty.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll80eXFqa3gwW2RhdGEtZHJhZ2dlZC1vdmVyPSJ0cnVlIl0gewogIGJhY2tncm91bmQ6IHZhcigtLWFmZmluZS1ob3Zlci1jb2xvcik7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9\\\"}!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var draggedOverHighlight = '_4yqjkx0';","import { MenuIcon, MenuItem } from '@affine/component';\nimport { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties';\nimport { useI18n } from '@affine/i18n';\nimport { FavoritedIcon, FavoriteIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { cssVar } from '@toeverything/theme';\nimport { useMemo } from 'react';\n\nexport const FavoriteFolderOperation = ({ id }: { id: string }) => {\n const t = useI18n();\n const compatibleFavoriteItemsAdapter = useService(\n CompatibleFavoriteItemsAdapter\n );\n\n const favorite = useLiveData(\n useMemo(() => {\n return compatibleFavoriteItemsAdapter.isFavorite$(id, 'folder');\n }, [compatibleFavoriteItemsAdapter, id])\n );\n\n return (\n \n {favorite ? (\n \n ) : (\n \n )}\n \n }\n onClick={() => compatibleFavoriteItemsAdapter.toggle(id, 'folder')}\n >\n {favorite\n ? t['com.arms.rootAppSidebar.organize.folder-rm-favorite']()\n : t['com.arms.rootAppSidebar.organize.folder-add-favorite']()}\n \n );\n};\n","import {\n AnimatedCollectionsIcon,\n AnimatedFolderIcon,\n type DropTargetDropEvent,\n type DropTargetOptions,\n IconButton,\n MenuIcon,\n MenuItem,\n MenuSeparator,\n MenuSub,\n notify,\n} from '@affine/component';\nimport {\n useSelectCollection,\n useSelectDoc,\n useSelectTag,\n} from '@affine/core/components/page-list/selector';\nimport { track } from '@affine/core/mixpanel';\nimport {\n type FolderNode,\n OrganizeService,\n} from '@affine/core/modules/organize';\nimport { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties';\nimport { WorkbenchService } from '@affine/core/modules/workbench';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { Unreachable } from '@affine/env/constant';\nimport { useI18n } from '@affine/i18n';\nimport {\n DeleteIcon,\n FolderIcon,\n PageIcon,\n PlusIcon,\n PlusThickIcon,\n RemoveFolderIcon,\n TagsIcon,\n} from '@blocksuite/icons/rc';\nimport { DocsService, useLiveData, useServices } from '@toeverything/infra';\nimport { difference } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { ExplorerTreeNode, type ExplorerTreeNodeDropEffect } from '../../tree';\nimport type { ExplorerTreeNodeIcon } from '../../tree/node';\nimport type { NodeOperation } from '../../tree/types';\nimport { ExplorerCollectionNode } from '../collection';\nimport { ExplorerDocNode } from '../doc';\nimport { ExplorerTagNode } from '../tag';\nimport type { GenericExplorerNode } from '../types';\nimport { FolderEmpty } from './empty';\nimport { FavoriteFolderOperation } from './operations';\n\nexport const ExplorerFolderNode = ({\n nodeId,\n onDrop,\n defaultRenaming,\n operations,\n location,\n dropEffect,\n canDrop,\n reorderable,\n}: {\n defaultRenaming?: boolean;\n nodeId: string;\n onDrop?: (data: DropTargetDropEvent, node: FolderNode) => void;\n operations?:\n | NodeOperation[]\n | ((type: string, node: FolderNode) => NodeOperation[]);\n} & Omit) => {\n const { organizeService } = useServices({ OrganizeService });\n const node = useLiveData(organizeService.folderTree.folderNode$(nodeId));\n const type = useLiveData(node?.type$);\n const data = useLiveData(node?.data$);\n const handleDrop = useCallback(\n (data: DropTargetDropEvent) => {\n if (!node) {\n return;\n }\n onDrop?.(data, node);\n },\n [node, onDrop]\n );\n const additionalOperations = useMemo(() => {\n if (!type || !node) {\n return;\n }\n if (typeof operations === 'function') {\n return operations(type, node);\n }\n return operations;\n }, [node, operations, type]);\n\n if (!node) {\n return;\n }\n\n if (type === 'folder') {\n return (\n \n );\n } else if (type === 'doc') {\n return (\n data && (\n \n )\n );\n } else if (type === 'collection') {\n return (\n data && (\n \n )\n );\n } else if (type === 'tag') {\n return (\n data && (\n \n )\n );\n }\n\n return;\n};\n\n// Define outside the `ExplorerFolderNodeFolder` to avoid re-render(the close animation won't play)\nconst ExplorerFolderIcon: ExplorerTreeNodeIcon = ({\n collapsed,\n className,\n draggedOver,\n treeInstruction,\n}) => (\n \n);\n\nexport const ExplorerFolderNodeFolder = ({\n node,\n onDrop,\n defaultRenaming,\n location,\n operations: additionalOperations,\n canDrop,\n dropEffect,\n reorderable,\n}: {\n defaultRenaming?: boolean;\n node: FolderNode;\n} & GenericExplorerNode) => {\n const t = useI18n();\n const { docsService, workbenchService } = useServices({\n DocsService,\n WorkbenchService,\n CompatibleFavoriteItemsAdapter,\n });\n const openDocsSelector = useSelectDoc();\n const openTagsSelector = useSelectTag();\n const openCollectionsSelector = useSelectCollection();\n const name = useLiveData(node.name$);\n const [collapsed, setCollapsed] = useState(true);\n const [newFolderId, setNewFolderId] = useState(null);\n\n const handleDelete = useCallback(() => {\n node.delete();\n track.$.navigationPanel.organize.deleteOrganizeItem({\n type: 'folder',\n });\n notify.success({\n title: t['com.arms.rootAppSidebar.organize.delete.notify-title']({\n name,\n }),\n message: t['com.arms.rootAppSidebar.organize.delete.notify-message'](),\n });\n }, [name, node, t]);\n\n const children = useLiveData(node.sortedChildren$);\n\n const dndData = useMemo(() => {\n if (!node.id) {\n throw new Unreachable();\n }\n return {\n draggable: {\n entity: {\n type: 'folder',\n id: node.id,\n },\n from: location,\n },\n dropTarget: {\n at: 'explorer:organize:folder',\n },\n } satisfies AffineDNDData;\n }, [location, node.id]);\n\n const handleRename = useCallback(\n (newName: string) => {\n node.rename(newName);\n },\n [node]\n );\n\n const handleDropOnFolder = useCallback(\n (data: DropTargetDropEvent) => {\n if (data.treeInstruction?.type === 'make-child') {\n if (data.source.data.entity?.type === 'folder') {\n if (\n node.id === data.source.data.entity.id ||\n node.beChildOf(data.source.data.entity.id)\n ) {\n return;\n }\n node.moveHere(data.source.data.entity.id, node.indexAt('before'));\n track.$.navigationPanel.organize.moveOrganizeItem({ type: 'folder' });\n } else if (\n data.source.data.from?.at === 'explorer:organize:folder-node'\n ) {\n node.moveHere(data.source.data.from.nodeId, node.indexAt('before'));\n track.$.navigationPanel.organize.moveOrganizeItem({\n type: 'link',\n target: data.source.data.entity?.type,\n });\n } else if (\n data.source.data.entity?.type === 'collection' ||\n data.source.data.entity?.type === 'doc' ||\n data.source.data.entity?.type === 'tag'\n ) {\n node.createLink(\n data.source.data.entity?.type,\n data.source.data.entity.id,\n node.indexAt('before')\n );\n track.$.navigationPanel.organize.createOrganizeItem({\n type: 'link',\n target: data.source.data.entity?.type,\n });\n }\n } else {\n onDrop?.(data);\n }\n },\n [node, onDrop]\n );\n\n const handleDropEffect = useCallback(\n data => {\n if (data.treeInstruction?.type === 'make-child') {\n if (data.source.data.entity?.type === 'folder') {\n if (\n node.id === data.source.data.entity.id ||\n node.beChildOf(data.source.data.entity.id)\n ) {\n return;\n }\n return 'move';\n } else if (\n data.source.data.from?.at === 'explorer:organize:folder-node'\n ) {\n return 'move';\n } else if (\n data.source.data.entity?.type === 'collection' ||\n data.source.data.entity?.type === 'doc' ||\n data.source.data.entity?.type === 'tag'\n ) {\n return 'link';\n }\n } else {\n return dropEffect?.(data);\n }\n return;\n },\n [dropEffect, node]\n );\n\n const handleDropOnPlaceholder = useCallback(\n (data: DropTargetDropEvent) => {\n if (data.source.data.entity?.type === 'folder') {\n if (\n node.id === data.source.data.entity.id ||\n node.beChildOf(data.source.data.entity.id)\n ) {\n return;\n }\n node.moveHere(data.source.data.entity.id, node.indexAt('before'));\n track.$.navigationPanel.organize.moveOrganizeItem({ type: 'folder' });\n } else if (\n data.source.data.from?.at === 'explorer:organize:folder-node'\n ) {\n node.moveHere(data.source.data.from.nodeId, node.indexAt('before'));\n track.$.navigationPanel.organize.moveOrganizeItem({\n type: data.source.data.entity?.type,\n });\n } else if (\n data.source.data.entity?.type === 'collection' ||\n data.source.data.entity?.type === 'doc' ||\n data.source.data.entity?.type === 'tag'\n ) {\n node.createLink(\n data.source.data.entity?.type,\n data.source.data.entity.id,\n node.indexAt('before')\n );\n track.$.navigationPanel.organize.createOrganizeItem({\n type: 'link',\n target: data.source.data.entity?.type,\n });\n }\n },\n [node]\n );\n\n const handleDropOnChildren = useCallback(\n (data: DropTargetDropEvent, dropAtNode?: FolderNode) => {\n if (!dropAtNode || !dropAtNode.id) {\n return;\n }\n if (\n data.treeInstruction?.type === 'reorder-above' ||\n data.treeInstruction?.type === 'reorder-below'\n ) {\n const at =\n data.treeInstruction?.type === 'reorder-below' ? 'after' : 'before';\n if (data.source.data.entity?.type === 'folder') {\n if (\n node.id === data.source.data.entity.id ||\n node.beChildOf(data.source.data.entity.id)\n ) {\n return;\n }\n node.moveHere(\n data.source.data.entity.id,\n node.indexAt(at, dropAtNode.id)\n );\n track.$.navigationPanel.organize.moveOrganizeItem({ type: 'folder' });\n } else if (\n data.source.data.from?.at === 'explorer:organize:folder-node'\n ) {\n node.moveHere(\n data.source.data.from.nodeId,\n node.indexAt(at, dropAtNode.id)\n );\n track.$.navigationPanel.organize.moveOrganizeItem({\n type: 'link',\n target: data.source.data.entity?.type,\n });\n } else if (\n data.source.data.entity?.type === 'collection' ||\n data.source.data.entity?.type === 'doc' ||\n data.source.data.entity?.type === 'tag'\n ) {\n node.createLink(\n data.source.data.entity?.type,\n data.source.data.entity.id,\n node.indexAt(at, dropAtNode.id)\n );\n\n track.$.navigationPanel.organize.createOrganizeItem({\n type: 'link',\n target: data.source.data.entity?.type,\n });\n }\n } else if (data.treeInstruction?.type === 'reparent') {\n const currentLevel = data.treeInstruction.currentLevel;\n const desiredLevel = data.treeInstruction.desiredLevel;\n if (currentLevel === desiredLevel + 1) {\n onDrop?.({\n ...data,\n treeInstruction: {\n type: 'reorder-below',\n currentLevel,\n indentPerLevel: data.treeInstruction.indentPerLevel,\n },\n });\n return;\n } else {\n onDrop?.({\n ...data,\n treeInstruction: {\n ...data.treeInstruction,\n currentLevel: currentLevel - 1,\n },\n });\n }\n }\n },\n [node, onDrop]\n );\n\n const handleDropEffectOnChildren = useCallback(\n data => {\n if (\n data.treeInstruction?.type === 'reorder-above' ||\n data.treeInstruction?.type === 'reorder-below'\n ) {\n if (data.source.data.entity?.type === 'folder') {\n if (\n node.id === data.source.data.entity.id ||\n node.beChildOf(data.source.data.entity.id)\n ) {\n return;\n }\n return 'move';\n } else if (\n data.source.data.from?.at === 'explorer:organize:folder-node'\n ) {\n return 'move';\n } else if (\n data.source.data.entity?.type === 'collection' ||\n data.source.data.entity?.type === 'doc' ||\n data.source.data.entity?.type === 'tag'\n ) {\n return 'link';\n }\n } else if (data.treeInstruction?.type === 'reparent') {\n const currentLevel = data.treeInstruction.currentLevel;\n const desiredLevel = data.treeInstruction.desiredLevel;\n if (currentLevel === desiredLevel + 1) {\n dropEffect?.({\n ...data,\n treeInstruction: {\n type: 'reorder-below',\n currentLevel,\n indentPerLevel: data.treeInstruction.indentPerLevel,\n },\n });\n return;\n } else {\n dropEffect?.({\n ...data,\n treeInstruction: {\n ...data.treeInstruction,\n currentLevel: currentLevel - 1,\n },\n });\n }\n }\n return;\n },\n [dropEffect, node]\n );\n\n const handleCanDrop = useMemo['canDrop']>(\n () => args => {\n const entityType = args.source.data.entity?.type;\n if (args.treeInstruction && args.treeInstruction?.type !== 'make-child') {\n return (\n (typeof canDrop === 'function' ? canDrop(args) : canDrop) ?? true\n );\n }\n\n if (args.source.data.entity?.type === 'folder') {\n if (\n node.id === args.source.data.entity.id ||\n node.beChildOf(args.source.data.entity.id)\n ) {\n return false;\n }\n return true;\n } else if (\n args.source.data.from?.at === 'explorer:organize:folder-node'\n ) {\n return true;\n } else if (\n entityType === 'collection' ||\n entityType === 'doc' ||\n entityType === 'tag'\n ) {\n return true;\n }\n return false;\n },\n [canDrop, node]\n );\n\n const handleChildrenCanDrop = useMemo<\n DropTargetOptions['canDrop']\n >(\n () => args => {\n const entityType = args.source.data.entity?.type;\n\n if (args.source.data.entity?.type === 'folder') {\n if (\n node.id === args.source.data.entity.id ||\n node.beChildOf(args.source.data.entity.id)\n ) {\n return false;\n }\n return true;\n } else if (\n args.source.data.from?.at === 'explorer:organize:folder-node'\n ) {\n return true;\n } else if (\n entityType === 'collection' ||\n entityType === 'doc' ||\n entityType === 'tag'\n ) {\n return true;\n }\n return false;\n },\n [node]\n );\n\n const handleNewDoc = useCallback(() => {\n const newDoc = docsService.createDoc();\n node.createLink('doc', newDoc.id, node.indexAt('before'));\n workbenchService.workbench.openDoc(newDoc.id);\n track.$.navigationPanel.folders.createDoc();\n track.$.navigationPanel.organize.createOrganizeItem({\n type: 'link',\n target: 'doc',\n });\n setCollapsed(false);\n }, [docsService, node, workbenchService.workbench]);\n\n const handleCreateSubfolder = useCallback(() => {\n const newFolderId = node.createFolder(\n t['com.arms.rootAppSidebar.organize.new-folders'](),\n node.indexAt('before')\n );\n track.$.navigationPanel.organize.createOrganizeItem({ type: 'folder' });\n setCollapsed(false);\n setNewFolderId(newFolderId);\n }, [node, t]);\n\n const handleAddToFolder = useCallback(\n (type: 'doc' | 'collection' | 'tag') => {\n const initialIds = children\n .filter(node => node.type$.value === type)\n .map(node => node.data$.value)\n .filter(Boolean) as string[];\n const selector =\n type === 'doc'\n ? openDocsSelector\n : type === 'collection'\n ? openCollectionsSelector\n : openTagsSelector;\n selector(initialIds)\n .then(selectedIds => {\n const newItemIds = difference(selectedIds, initialIds);\n const removedItemIds = difference(initialIds, selectedIds);\n const removedItems = children.filter(\n node =>\n !!node.data$.value && removedItemIds.includes(node.data$.value)\n );\n\n newItemIds.forEach(id => {\n node.createLink(type, id, node.indexAt('after'));\n });\n removedItems.forEach(node => node.delete());\n const updated = newItemIds.length + removedItems.length;\n updated && setCollapsed(false);\n })\n .catch(err => {\n console.error(`Unexpected error while selecting ${type}`, err);\n });\n track.$.navigationPanel.organize.createOrganizeItem({\n type: 'link',\n target: type,\n });\n },\n [\n children,\n node,\n openCollectionsSelector,\n openDocsSelector,\n openTagsSelector,\n ]\n );\n\n const folderOperations = useMemo(() => {\n return [\n {\n index: 0,\n inline: true,\n view: (\n \n \n \n ),\n },\n {\n index: 100,\n view: (\n \n \n \n }\n onClick={handleCreateSubfolder}\n >\n {t['com.arms.rootAppSidebar.organize.folder.create-subfolder']()}\n \n ),\n },\n {\n index: 101,\n view: (\n \n \n \n }\n onClick={() => handleAddToFolder('doc')}\n >\n {t['com.arms.rootAppSidebar.organize.folder.add-docs']()}\n \n ),\n },\n {\n index: 102,\n view: (\n \n \n \n ),\n }}\n items={\n <>\n handleAddToFolder('tag')}\n preFix={\n \n \n \n }\n >\n {t['com.arms.rootAppSidebar.organize.folder.add-tags']()}\n \n handleAddToFolder('collection')}\n preFix={\n \n \n \n }\n >\n {t[\n 'com.arms.rootAppSidebar.organize.folder.add-collections'\n ]()}\n \n \n }\n >\n {t['com.arms.rootAppSidebar.organize.folder.add-others']()}\n \n ),\n },\n\n {\n index: 200,\n view: node.id ? : null,\n },\n\n {\n index: 9999,\n view: ,\n },\n {\n index: 10000,\n view: (\n \n \n \n }\n onClick={handleDelete}\n >\n {t['com.arms.rootAppSidebar.organize.delete']()}\n \n ),\n },\n ];\n }, [\n handleAddToFolder,\n handleCreateSubfolder,\n handleDelete,\n handleNewDoc,\n node,\n t,\n ]);\n\n const finalOperations = useMemo(() => {\n if (additionalOperations) {\n return [...additionalOperations, ...folderOperations];\n }\n return folderOperations;\n }, [additionalOperations, folderOperations]);\n\n const childrenOperations = useCallback(\n // eslint-disable-next-line @typescript-eslint/ban-types\n (type: string, node: FolderNode) => {\n if (type === 'doc' || type === 'collection' || type === 'tag') {\n return [\n {\n index: 999,\n view: (\n \n \n \n }\n data-event-props=\"$.navigationPanel.organize.deleteOrganizeItem\"\n data-event-args-type={node.type$.value}\n onClick={() => node.delete()}\n >\n {t['com.arms.rootAppSidebar.organize.delete-from-folder']()}\n \n ),\n },\n ] satisfies NodeOperation[];\n }\n return [];\n },\n [t]\n );\n\n const handleCollapsedChange = useCallback((collapsed: boolean) => {\n if (collapsed) {\n setNewFolderId(null); // reset new folder id to clear the renaming state\n setCollapsed(true);\n } else {\n setCollapsed(false);\n }\n }, []);\n\n return (\n \n }\n dropEffect={handleDropEffect}\n data-testid={`explorer-folder-${node.id}`}\n >\n {children.map(child => (\n \n ))}\n \n );\n};\n","import type { DropTargetOptions } from '@affine/component';\nimport { isFavoriteSupportType } from '@affine/core/modules/favorite';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\n\nimport type { ExplorerTreeNodeDropEffect } from '../../tree';\n\nexport const favoriteChildrenDropEffect: ExplorerTreeNodeDropEffect = data => {\n if (\n data.treeInstruction?.type === 'reorder-above' ||\n data.treeInstruction?.type === 'reorder-below'\n ) {\n if (\n data.source.data.from?.at === 'explorer:favorite:list' &&\n data.source.data.entity?.type &&\n isFavoriteSupportType(data.source.data.entity.type)\n ) {\n return 'move';\n } else if (\n data.source.data.entity?.type &&\n isFavoriteSupportType(data.source.data.entity.type)\n ) {\n return 'link';\n }\n }\n return; // not supported\n};\n\nexport const favoriteRootDropEffect: ExplorerTreeNodeDropEffect = data => {\n const sourceType = data.source.data.entity?.type;\n if (sourceType && isFavoriteSupportType(sourceType)) {\n return 'link';\n }\n return;\n};\n\nexport const favoriteRootCanDrop: DropTargetOptions['canDrop'] =\n data => {\n return data.source.data.entity?.type\n ? isFavoriteSupportType(data.source.data.entity.type)\n : false;\n };\n\nexport const favoriteChildrenCanDrop: DropTargetOptions['canDrop'] =\n // Same as favoriteRootCanDrop\n data => favoriteRootCanDrop(data);\n","import {\n type DropTargetDropEvent,\n Skeleton,\n useDropTarget,\n} from '@affine/component';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\nimport { FavoriteIcon } from '@blocksuite/icons/rc';\n\nimport { ExplorerEmptySection } from '../../layouts/empty-section';\nimport { DropEffect } from '../../tree';\nimport { favoriteRootCanDrop, favoriteRootDropEffect } from './dnd';\n\ninterface RootEmptyProps {\n onDrop?: (data: DropTargetDropEvent) => void;\n isLoading?: boolean;\n}\n\nconst RootEmptyLoading = () => {\n return ;\n};\nconst RootEmptyReady = ({ onDrop }: Omit) => {\n const t = useI18n();\n\n const { dropTargetRef, draggedOverDraggable, draggedOverPosition } =\n useDropTarget(\n () => ({\n data: {\n at: 'explorer:favorite:root',\n },\n onDrop: onDrop,\n canDrop: favoriteRootCanDrop,\n }),\n [onDrop]\n );\n\n return (\n \n {draggedOverDraggable && (\n \n )}\n \n );\n};\n\nexport const RootEmpty = ({ isLoading, ...props }: RootEmptyProps) => {\n return isLoading ? : ;\n};\n","import {\n type DropTargetDropEvent,\n IconButton,\n useDropTarget,\n} from '@affine/component';\nimport { track } from '@affine/core/mixpanel';\nimport {\n DropEffect,\n ExplorerTreeRoot,\n} from '@affine/core/modules/explorer/views/tree';\nimport type { FavoriteSupportType } from '@affine/core/modules/favorite';\nimport {\n FavoriteService,\n isFavoriteSupportType,\n} from '@affine/core/modules/favorite';\nimport { WorkbenchService } from '@affine/core/modules/workbench';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { isNewTabTrigger } from '@affine/core/utils';\nimport { useI18n } from '@affine/i18n';\nimport { PlusIcon } from '@blocksuite/icons/rc';\nimport { DocsService, useLiveData, useServices } from '@toeverything/infra';\nimport { type MouseEventHandler, useCallback } from 'react';\n\nimport { ExplorerService } from '../../../services/explorer';\nimport { CollapsibleSection } from '../../layouts/collapsible-section';\nimport { ExplorerCollectionNode } from '../../nodes/collection';\nimport { ExplorerDocNode } from '../../nodes/doc';\nimport { ExplorerFolderNode } from '../../nodes/folder';\nimport { ExplorerTagNode } from '../../nodes/tag';\nimport {\n favoriteChildrenCanDrop,\n favoriteChildrenDropEffect,\n favoriteRootCanDrop,\n favoriteRootDropEffect,\n} from './dnd';\nimport { RootEmpty } from './empty';\n\nexport const ExplorerFavorites = () => {\n const { favoriteService, docsService, workbenchService, explorerService } =\n useServices({\n FavoriteService,\n DocsService,\n WorkbenchService,\n ExplorerService,\n });\n\n const explorerSection = explorerService.sections.favorites;\n\n const favorites = useLiveData(favoriteService.favoriteList.sortedList$);\n\n const isLoading = useLiveData(favoriteService.favoriteList.isLoading$);\n\n const t = useI18n();\n\n const handleDrop = useCallback(\n (data: DropTargetDropEvent) => {\n if (\n data.source.data.entity?.type &&\n isFavoriteSupportType(data.source.data.entity.type)\n ) {\n favoriteService.favoriteList.add(\n data.source.data.entity.type,\n data.source.data.entity.id,\n favoriteService.favoriteList.indexAt('before')\n );\n track.$.navigationPanel.organize.toggleFavorite({\n type: data.source.data.entity.type,\n on: true,\n });\n explorerSection.setCollapsed(false);\n }\n },\n [explorerSection, favoriteService.favoriteList]\n );\n\n const handleCreateNewFavoriteDoc: MouseEventHandler = useCallback(\n e => {\n const newDoc = docsService.createDoc();\n favoriteService.favoriteList.add(\n 'doc',\n newDoc.id,\n favoriteService.favoriteList.indexAt('before')\n );\n workbenchService.workbench.openDoc(newDoc.id, {\n at: isNewTabTrigger(e) ? 'new-tab' : 'active',\n });\n explorerSection.setCollapsed(false);\n },\n [\n docsService,\n explorerSection,\n favoriteService.favoriteList,\n workbenchService.workbench,\n ]\n );\n\n const handleOnChildrenDrop = useCallback(\n (\n favorite: { id: string; type: FavoriteSupportType },\n data: DropTargetDropEvent\n ) => {\n if (\n data.treeInstruction?.type === 'reorder-above' ||\n data.treeInstruction?.type === 'reorder-below'\n ) {\n if (\n data.source.data.from?.at === 'explorer:favorite:list' &&\n data.source.data.entity?.type &&\n isFavoriteSupportType(data.source.data.entity.type)\n ) {\n // is reordering\n favoriteService.favoriteList.reorder(\n data.source.data.entity.type,\n data.source.data.entity.id,\n favoriteService.favoriteList.indexAt(\n data.treeInstruction?.type === 'reorder-above'\n ? 'before'\n : 'after',\n favorite\n )\n );\n track.$.navigationPanel.organize.orderOrganizeItem({\n type: data.source.data.entity.type,\n });\n } else if (\n data.source.data.entity?.type &&\n isFavoriteSupportType(data.source.data.entity.type)\n ) {\n favoriteService.favoriteList.add(\n data.source.data.entity.type,\n data.source.data.entity.id,\n favoriteService.favoriteList.indexAt(\n data.treeInstruction?.type === 'reorder-above'\n ? 'before'\n : 'after',\n favorite\n )\n );\n track.$.navigationPanel.organize.toggleFavorite({\n type: data.source.data.entity.type,\n on: true,\n });\n } else {\n return; // not supported\n }\n }\n },\n [favoriteService]\n );\n\n const { dropTargetRef, draggedOverDraggable, draggedOverPosition } =\n useDropTarget(\n () => ({\n data: {\n at: 'explorer:favorite:root',\n },\n onDrop: handleDrop,\n canDrop: favoriteRootCanDrop,\n }),\n [handleDrop]\n );\n\n return (\n \n \n \n \n {draggedOverDraggable && (\n \n )}\n \n }\n >\n }\n >\n {favorites.map(favorite => (\n \n ))}\n \n \n );\n};\n\nconst childLocation = {\n at: 'explorer:favorite:list' as const,\n};\nconst ExplorerFavoriteNode = ({\n favorite,\n onDrop,\n}: {\n favorite: {\n id: string;\n type: FavoriteSupportType;\n };\n onDrop: (\n favorite: {\n id: string;\n type: FavoriteSupportType;\n },\n data: DropTargetDropEvent\n ) => void;\n}) => {\n const handleOnChildrenDrop = useCallback(\n (data: DropTargetDropEvent) => {\n onDrop(favorite, data);\n },\n [favorite, onDrop]\n );\n return favorite.type === 'doc' ? (\n \n ) : favorite.type === 'tag' ? (\n \n ) : favorite.type === 'folder' ? (\n \n ) : (\n \n );\n};\n","import \"../core/src/modules/explorer/views/sections/migration-favorites/styles.css.ts.vanilla.css!=!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/sections/migration-favorites/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xOGtjcWVsMCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5fMThrY3FlbDBbZGF0YS1jb2xsYXBzZWQ9ImZhbHNlIl06YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAtOHB4OwogIHRvcDogMDsKICB3aWR0aDogNnB4OwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDMwZGVnLCAjRjVDQzQ3LCAjRjVDQzQ3IDhweCwgIzAwMDAwMCA4cHgsICMwMDAwMDAgMTRweCk7Cn0KLl8xOGtjcWVsMSB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0=\\\"}!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var container = '_18kcqel0';\nexport var descriptionHighlight = '_18kcqel1';","import { IconButton, useConfirmModal } from '@affine/component';\nimport { track } from '@affine/core/mixpanel';\nimport { ExplorerTreeRoot } from '@affine/core/modules/explorer/views/tree';\nimport { MigrationFavoriteItemsAdapter } from '@affine/core/modules/properties';\nimport { Trans, useI18n } from '@affine/i18n';\nimport { BroomIcon, HelpIcon } from '@blocksuite/icons/rc';\nimport { DocsService, useLiveData, useServices } from '@toeverything/infra';\nimport { useCallback } from 'react';\n\nimport { CollapsibleSection } from '../../layouts/collapsible-section';\nimport { ExplorerCollectionNode } from '../../nodes/collection';\nimport { ExplorerDocNode } from '../../nodes/doc';\nimport * as styles from './styles.css';\n\nexport const ExplorerMigrationFavorites = () => {\n const t = useI18n();\n\n const { migrationFavoriteItemsAdapter, docsService } = useServices({\n MigrationFavoriteItemsAdapter,\n DocsService,\n });\n\n const docs = useLiveData(docsService.list.docs$);\n const trashDocs = useLiveData(docsService.list.trashDocs$);\n const migrated = useLiveData(migrationFavoriteItemsAdapter.migrated$);\n const { openConfirmModal } = useConfirmModal();\n\n const favorites = useLiveData(\n migrationFavoriteItemsAdapter.favorites$.map(favs => {\n return favs.filter(fav => {\n if (fav.type === 'doc') {\n return (\n docs.some(doc => doc.id === fav.id) &&\n !trashDocs.some(doc => doc.id === fav.id)\n );\n }\n return true;\n });\n })\n );\n\n const handleClickClear = useCallback(() => {\n openConfirmModal({\n title: t['com.arms.rootAppSidebar.migration-data.clean-all'](),\n description: (\n ,\n }}\n />\n ),\n confirmText:\n t['com.arms.rootAppSidebar.migration-data.clean-all.confirm'](),\n confirmButtonOptions: {\n variant: 'primary',\n },\n cancelText:\n t['com.arms.rootAppSidebar.migration-data.clean-all.cancel'](),\n onConfirm() {\n migrationFavoriteItemsAdapter.markFavoritesMigrated();\n },\n });\n }, [migrationFavoriteItemsAdapter, openConfirmModal, t]);\n\n const handleClickHelp = useCallback(() => {\n openConfirmModal({\n title: t['com.arms.rootAppSidebar.migration-data.help'](),\n description: (\n ,\n }}\n />\n ),\n confirmText: t['com.arms.rootAppSidebar.migration-data.help.confirm'](),\n confirmButtonOptions: {\n variant: 'primary',\n },\n cancelText: t['com.arms.rootAppSidebar.migration-data.help.clean-all'](),\n cancelButtonOptions: {\n prefix: ,\n onClick: () => {\n requestAnimationFrame(() => {\n handleClickClear();\n });\n },\n },\n });\n track.$.navigationPanel.migrationData.openMigrationDataHelp();\n }, [handleClickClear, openConfirmModal, t]);\n\n if (favorites.length === 0 || migrated) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n \n \n }\n >\n \n {favorites.map((favorite, i) => (\n \n ))}\n \n \n );\n};\n\nconst childLocation = {\n at: 'explorer:migration-data:list' as const,\n};\nconst ExplorerMigrationFavoriteNode = ({\n favorite,\n}: {\n favorite: {\n id: string;\n type: 'collection' | 'doc';\n };\n}) => {\n return favorite.type === 'doc' ? (\n \n ) : (\n \n );\n};\n","export const OrganizeSupportType = [\n 'folder',\n 'doc',\n 'collection',\n 'tag',\n] as const;\nexport type OrganizeSupportType = 'folder' | 'doc' | 'collection' | 'tag';\n\nexport const isOrganizeSupportType = (\n type: string\n): type is OrganizeSupportType =>\n OrganizeSupportType.includes(type as OrganizeSupportType);\n","import type { DropTargetOptions } from '@affine/component';\nimport { isOrganizeSupportType } from '@affine/core/modules/organize/constants';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\n\nimport type { ExplorerTreeNodeDropEffect } from '../../tree';\n\nexport const organizeChildrenDropEffect: ExplorerTreeNodeDropEffect = data => {\n if (\n data.treeInstruction?.type === 'reorder-above' ||\n data.treeInstruction?.type === 'reorder-below'\n ) {\n if (data.source.data.entity?.type === 'folder') {\n return 'move';\n }\n } else {\n return; // not supported\n }\n return;\n};\n\nexport const organizeEmptyDropEffect: ExplorerTreeNodeDropEffect = data => {\n const sourceType = data.source.data.entity?.type;\n if (sourceType && isOrganizeSupportType(sourceType)) {\n return 'link';\n }\n return;\n};\n\n/**\n * Check whether the data can be dropped on the empty state of the organize section\n */\nexport const organizeEmptyRootCanDrop: DropTargetOptions['canDrop'] =\n data => {\n const type = data.source.data.entity?.type;\n return !!type && isOrganizeSupportType(type);\n };\n","import {\n AnimatedFolderIcon,\n type DropTargetDropEvent,\n Skeleton,\n useDropTarget,\n} from '@affine/component';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\n\nimport { ExplorerEmptySection } from '../../layouts/empty-section';\nimport { DropEffect } from '../../tree';\nimport { organizeEmptyDropEffect, organizeEmptyRootCanDrop } from './dnd';\n\ninterface RootEmptyProps {\n onClickCreate?: () => void;\n isLoading?: boolean;\n onDrop?: (data: DropTargetDropEvent) => void;\n}\n\nexport const RootEmptyLoading = () => {\n return ;\n};\n\nexport const RootEmptyReady = ({\n onClickCreate,\n onDrop,\n}: Omit) => {\n const t = useI18n();\n\n const { dropTargetRef, draggedOverDraggable, draggedOverPosition } =\n useDropTarget(\n () => ({\n data: { at: 'explorer:organize:root' },\n onDrop,\n canDrop: organizeEmptyRootCanDrop,\n }),\n [onDrop]\n );\n\n return (\n }\n message={t['com.arms.rootAppSidebar.organize.empty']()}\n messageTestId=\"slider-bar-organize-empty-message\"\n actionText={t[\n 'com.arms.rootAppSidebar.organize.empty.new-folders-button'\n ]()}\n onActionClick={onClickCreate}\n >\n {draggedOverDraggable && (\n \n )}\n \n );\n};\n\nexport const RootEmpty = ({ isLoading, ...props }: RootEmptyProps) => {\n return isLoading ? : ;\n};\n","import {\n type DropTargetDropEvent,\n type DropTargetOptions,\n IconButton,\n toast,\n} from '@affine/component';\nimport { track } from '@affine/core/mixpanel';\nimport { ExplorerTreeRoot } from '@affine/core/modules/explorer/views/tree';\nimport {\n type FolderNode,\n OrganizeService,\n} from '@affine/core/modules/organize';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\nimport { PlusIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useServices } from '@toeverything/infra';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ExplorerService } from '../../../services/explorer';\nimport { CollapsibleSection } from '../../layouts/collapsible-section';\nimport { ExplorerFolderNode } from '../../nodes/folder';\nimport { organizeChildrenDropEffect } from './dnd';\nimport { RootEmpty } from './empty';\n\nexport const ExplorerOrganize = () => {\n const { organizeService, explorerService } = useServices({\n OrganizeService,\n ExplorerService,\n });\n const explorerSection = explorerService.sections.organize;\n const collapsed = useLiveData(explorerSection.collapsed$);\n const [newFolderId, setNewFolderId] = useState(null);\n\n const t = useI18n();\n\n const folderTree = organizeService.folderTree;\n const rootFolder = folderTree.rootFolder;\n\n const folders = useLiveData(rootFolder.sortedChildren$);\n const isLoading = useLiveData(folderTree.isLoading$);\n\n const handleCreateFolder = useCallback(() => {\n const newFolderId = rootFolder.createFolder(\n 'New Folder',\n rootFolder.indexAt('before')\n );\n track.$.navigationPanel.organize.createOrganizeItem({ type: 'folder' });\n setNewFolderId(newFolderId);\n explorerSection.setCollapsed(false);\n return newFolderId;\n }, [explorerSection, rootFolder]);\n\n const handleOnChildrenDrop = useCallback(\n (data: DropTargetDropEvent, node?: FolderNode) => {\n if (!node || !node.id) {\n return; // never happens\n }\n if (\n data.treeInstruction?.type === 'reorder-above' ||\n data.treeInstruction?.type === 'reorder-below'\n ) {\n const at =\n data.treeInstruction?.type === 'reorder-below' ? 'after' : 'before';\n if (data.source.data.entity?.type === 'folder') {\n rootFolder.moveHere(\n data.source.data.entity.id,\n rootFolder.indexAt(at, node.id)\n );\n track.$.navigationPanel.organize.moveOrganizeItem({ type: 'folder' });\n } else {\n toast(t['com.arms.rootAppSidebar.organize.root-folder-only']());\n }\n } else {\n return; // not supported\n }\n },\n [rootFolder, t]\n );\n\n const createFolderAndDrop = useCallback(\n (data: DropTargetDropEvent) => {\n const newFolderId = handleCreateFolder();\n setNewFolderId(null);\n const newFolder$ = folderTree.folderNode$(newFolderId);\n\n const entity = data.source.data.entity;\n if (!entity) return;\n const { type, id } = entity;\n if (type === 'folder') return;\n\n const folder = newFolder$.value;\n if (!folder) return;\n folder.createLink(type, id, folder.indexAt('after'));\n },\n [folderTree, handleCreateFolder]\n );\n\n const handleChildrenCanDrop = useMemo<\n DropTargetOptions['canDrop']\n >(() => args => args.source.data.entity?.type === 'folder', []);\n\n useEffect(() => {\n if (collapsed) setNewFolderId(null); // reset new folder id to clear the renaming state\n }, [collapsed]);\n\n return (\n \n \n \n }\n >\n \n }\n >\n {folders.map(child => (\n \n ))}\n \n \n );\n};\n","import {\n type Framework,\n GlobalCache,\n WorkspaceScope,\n} from '@toeverything/infra';\n\nimport { ExplorerSection } from './entities/explore-section';\nimport { ExplorerService } from './services/explorer';\nexport { ExplorerService } from './services/explorer';\nexport type { CollapsibleSectionName } from './types';\nexport { ExplorerCollections } from './views/sections/collections';\nexport { ExplorerFavorites } from './views/sections/favorites';\nexport { ExplorerMigrationFavorites } from './views/sections/migration-favorites';\nexport { ExplorerOrganize } from './views/sections/organize';\n\nexport function configureExplorerModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(ExplorerService)\n .entity(ExplorerSection, [GlobalCache]);\n}\n","import { Service } from '@toeverything/infra';\n\nimport { ExplorerSection } from '../entities/explore-section';\nimport type { CollapsibleSectionName } from '../types';\n\nconst allSectionName: Array = [\n 'favorites',\n 'organize',\n 'collections',\n 'tags',\n 'favoritesOld',\n 'migrationFavorites',\n];\n\nexport class ExplorerService extends Service {\n readonly sections = allSectionName.reduce(\n (prev, name) =>\n Object.assign(prev, {\n [name]: this.framework.createEntity(ExplorerSection, { name }),\n }),\n {} as Record\n );\n}\n","import { CategoryDivider } from '@affine/core/components/app-sidebar';\nimport * as Collapsible from '@radix-ui/react-collapsible';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport clsx from 'clsx';\nimport {\n type PropsWithChildren,\n type ReactNode,\n type RefObject,\n useCallback,\n} from 'react';\n\nimport { ExplorerService } from '../../services/explorer';\nimport type { CollapsibleSectionName } from '../../types';\nimport { content, header, root } from './collapsible-section.css';\n\ninterface CollapsibleSectionProps extends PropsWithChildren {\n name: CollapsibleSectionName;\n title: string;\n actions?: ReactNode;\n\n className?: string;\n testId?: string;\n\n headerRef?: RefObject;\n headerTestId?: string;\n headerClassName?: string;\n\n contentClassName?: string;\n}\n\nexport const CollapsibleSection = ({\n name,\n title,\n actions,\n children,\n\n className,\n testId,\n\n headerRef,\n headerTestId,\n headerClassName,\n\n contentClassName,\n}: CollapsibleSectionProps) => {\n const section = useService(ExplorerService).sections[name];\n\n const collapsed = useLiveData(section.collapsed$);\n\n const setCollapsed = useCallback(\n (v: boolean) => {\n section.setCollapsed(v);\n },\n [section]\n );\n\n return (\n \n \n {actions}\n \n \n {children}\n \n \n );\n};\n","import \"../core/src/modules/explorer/views/layouts/collapsible-section.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/layouts/collapsible-section.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LnFhdmU3ZzEgewogIHBhZGRpbmctdG9wOiA2cHg7Cn0KLnFhdmU3ZzJbZGF0YS1kcmFnZ2VkLW92ZXI9InRydWUiXSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYWZmaW5lLWxheWVyLWJhY2tncm91bmQtaG92ZXJPdmVybGF5KTsKfQ==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var content = 'qave7g1';\nexport var header = 'qave7g2';\nexport var root = 'qave7g0';","import clsx from 'clsx';\nimport { forwardRef, type HTMLAttributes, type Ref } from 'react';\n\nimport { emptyChildren } from './empty-node-children.css';\n\nexport const EmptyNodeChildren = forwardRef(function EmptyNodeChildren(\n { children, className, ...attrs }: HTMLAttributes,\n ref: Ref\n) {\n return (\n
\n {children}\n
\n );\n});\n","import \"../core/src/modules/explorer/views/tree/node.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/tree/node.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61W227bMAx9z1cIAQa0DyqctOtFRYH9x1AMjETbXGTJkOS02dB/HyzbieU6WYfuKbF41eEhqW9b3OcOKvTsx+rn/s6V+Yb9XjCWfYk/jNkaJIW9YKvHBWNvC8Zuz8ju3suyQXZ/xu7hjN0qO2n4trga0l5FFWm1dYKRKdFReBwrrKOCIl9r2LcqmgzyXONr6ws0FYZTwMoLJtEEdO3xxjqFjjtQ1HjBbuqoHPA18GghmMY8PM5EZuyFVChFTL/9rMjwEqkog2DXWeeo8ei4R40yCGasweipcb51VVsa0qhBKTKFYNmQQm5N4J5+oWA7cBecQ57H+8Tz6jJaWU+BrBHMoYZAu+i+AleQ4cHWgsU0xhiJ0u7QRaQ2ILeFs41RkxBRhcf7XqbW3xUE4CDbUE/L4BpcPn/OlyIPG40q8TYApDCHRo/RT3zHKnmU1ihw+0MQNgDLcYcm+AH4meAOioJMkQQ/8vPqa2J0HcXzvse1gI23ugnxtCVPz/RYD77qiXHgTvc58GY1LdhNl9MOXa7ti2AlKYXmwNGjALWm2pOPzksKyH0NEtsEXxzUZ1qg7ZC+4U6iXDuqwO3TEn5NG+4vnea6G/b0nocrnQ1/L2PP5klGPxsfKN+3fZd3aXE0Ko1KhgKBToKu5oKC1knM2/EYSoAiac0IqKSF19O63kU3AwtuJyzovz8K7XBhaU1AE87Mt3U/3xyYAYn4P7euYtnV2p9iweRy45t0vSSt1lD7SScfnAvmbICAF/whU1jMupidBaN2vP4QKe4+NeLu/4nT74CPZPMB3HhB3AwjPQpLR2YbGT4K+3BEa7YsDMEjJ8Ntky69h8+jD+mV3wEKwhq957IkraYrtm+ikbaMKuMd1HOuX3G8G4ldNQaj7OQ6G3lW50t6FAw8HW2EvhLrrJ+3k7a4nXQn9qP+bD7YQR8ctpXxwTWy1X5aVrDFDq7lc6fTTqJu26CKM/tpmYP2uHwWkIeerAcSLZdJ82+0ldvTM/MXJ6MOE/yDjB8201wZuofDCDUJWl7ERxp/Z3CZbq/2JfS/IerktkYzhxoYqqBD5fjAXXlGJm/piax9BYJ7XLz9AQBQy98LCwAA\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nimport \"../core/src/modules/explorer/views/layouts/empty-node-children.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/layouts/empty-node-children.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xMTEzN3JjMCB7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1zbSk7CiAgY29sb3I6IHZhcigtLWFmZmluZS10ZXh0LWRpc2FibGUpOwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgbGluZS1oZWlnaHQ6IDIycHg7CiAgcGFkZGluZzogNHB4IDBweDsKICBtYXJnaW4tdG9wOiAycHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLV8xank3cmhmMCwgMjBweCkgKyA0OHB4KTsKfQouXzExMTM3cmMwW2RhdGEtZHJhZ2dlZC1vdmVyPSJ0cnVlIl0gewogIGJhY2tncm91bmQ6IHZhcigtLWFmZmluZS1sYXllci1iYWNrZ3JvdW5kLWhvdmVyT3ZlcmxheSk7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var emptyChildren = '_11137rc0';","import \"../core/src/modules/explorer/views/layouts/empty-section.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/layouts/empty-section.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LnB5YWtoODAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDRweDsKICBwYWRkaW5nOiAxMnB4IDBweDsKICBib3JkZXItcmFkaXVzOiA4cHg7Cn0KLnB5YWtoODBbZGF0YS1kcmFnZ2VkLW92ZXI9InRydWUiXSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWZmaW5lLWxheWVyLWJhY2tncm91bmQtaG92ZXJPdmVybGF5KTsKfQoucHlha2g4MSB7CiAgd2lkdGg6IDM2cHg7CiAgaGVpZ2h0OiAzNnB4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWZmaW5lLWJ1dHRvbi1lbXB0eUljb25CYWNrZ3JvdW5kKTsKfQoucHlha2g4MiB7CiAgZm9udC1zaXplOiAyMHB4OwogIGNvbG9yOiB2YXIoLS1hZmZpbmUtaWNvbi1zZWNvbmRhcnkpOwp9Ci5weWFraDgzIHsKICBmb250LXNpemU6IHZhcigtLWFmZmluZS1mb250LXNtKTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY29sb3I6IHZhcigtLWFmZmluZS10ZXh0LXRlcnRpYXJ5KTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBmb250LXdlaWdodDogNDAwOwogIGxpbmUtaGVpZ2h0OiAyMnB4Owp9Ci5weWFraDg0IHsKICBtYXJnaW4tdG9wOiA4cHg7CiAgcGFkZGluZzogNHB4IDhweDsKICBoZWlnaHQ6IDMwcHg7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC1zbSk7Cn0=\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var content = 'pyakh80';\nexport var icon = 'pyakh82';\nexport var iconWrapper = 'pyakh81';\nexport var message = 'pyakh83';\nexport var newButton = 'pyakh84';","import { Button } from '@affine/component';\nimport clsx from 'clsx';\nimport {\n cloneElement,\n forwardRef,\n type HTMLAttributes,\n type ReactElement,\n type Ref,\n type SVGProps,\n} from 'react';\n\nimport * as styles from './empty-section.css';\n\ninterface ExplorerEmptySectionProps extends HTMLAttributes {\n icon: ((props: SVGProps) => JSX.Element) | ReactElement;\n message: string;\n messageTestId?: string;\n actionText?: string;\n onActionClick?: () => void;\n}\n\nexport const ExplorerEmptySection = forwardRef(function ExplorerEmptySection(\n {\n icon: Icon,\n message,\n messageTestId,\n actionText,\n children,\n className,\n onActionClick,\n ...attrs\n }: ExplorerEmptySectionProps,\n ref: Ref\n) {\n const icon =\n typeof Icon === 'function' ? (\n \n ) : (\n cloneElement(Icon, { className: styles.icon })\n );\n\n return (\n
\n
{icon}
\n
\n {message}\n
\n {actionText ? (\n \n ) : null}\n {children}\n
\n );\n});\n","import { type DropTargetDropEvent, useDropTarget } from '@affine/component';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\n\nimport { EmptyNodeChildren } from '../../layouts/empty-node-children';\n\nexport const Empty = ({\n onDrop,\n}: {\n onDrop: (data: DropTargetDropEvent) => void;\n}) => {\n const { dropTargetRef } = useDropTarget(\n () => ({\n onDrop,\n }),\n [onDrop]\n );\n const t = useI18n();\n\n return (\n \n {t['com.arms.rootAppSidebar.docs.no-subdoc']()}\n \n );\n};\n","import {\n IconButton,\n MenuIcon,\n MenuItem,\n MenuSeparator,\n toast,\n useConfirmModal,\n} from '@affine/component';\nimport { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { track } from '@affine/core/mixpanel';\nimport { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties';\nimport { WorkbenchService } from '@affine/core/modules/workbench';\nimport { useI18n } from '@affine/i18n';\nimport {\n DeleteIcon,\n FavoritedIcon,\n FavoriteIcon,\n InformationIcon,\n LinkedPageIcon,\n OpenInNewIcon,\n PlusIcon,\n SplitViewIcon,\n} from '@blocksuite/icons/rc';\nimport { DocsService, useLiveData, useServices } from '@toeverything/infra';\nimport { useCallback, useMemo } from 'react';\n\nimport type { NodeOperation } from '../../tree/types';\n\nexport const useExplorerDocNodeOperations = (\n docId: string,\n options: {\n openInfoModal: () => void;\n openNodeCollapsed: () => void;\n }\n): NodeOperation[] => {\n const t = useI18n();\n const { appSettings } = useAppSettingHelper();\n const { workbenchService, docsService, compatibleFavoriteItemsAdapter } =\n useServices({\n DocsService,\n WorkbenchService,\n CompatibleFavoriteItemsAdapter,\n });\n const { openConfirmModal } = useConfirmModal();\n\n const docRecord = useLiveData(docsService.list.doc$(docId));\n\n const favorite = useLiveData(\n useMemo(() => {\n return compatibleFavoriteItemsAdapter.isFavorite$(docId, 'doc');\n }, [docId, compatibleFavoriteItemsAdapter])\n );\n\n const handleOpenInfoModal = useCallback(() => {\n track.$.docInfoPanel.$.open();\n options.openInfoModal();\n }, [options]);\n\n const handleMoveToTrash = useCallback(() => {\n if (!docRecord) {\n return;\n }\n openConfirmModal({\n title: t['com.arms.moveToTrash.title'](),\n description: t['com.arms.moveToTrash.confirmModal.description']({\n title: docRecord.title$.value,\n }),\n confirmText: t['com.arms.moveToTrash.confirmModal.confirm'](),\n cancelText: t['com.arms.moveToTrash.confirmModal.cancel'](),\n confirmButtonOptions: {\n variant: 'error',\n },\n onConfirm() {\n docRecord.moveToTrash();\n track.$.navigationPanel.docs.deleteDoc({\n control: 'button',\n });\n toast(t['com.arms.toastMessage.movedTrash']());\n },\n });\n }, [docRecord, openConfirmModal, t]);\n\n const handleOpenInNewTab = useCallback(() => {\n workbenchService.workbench.openDoc(docId, {\n at: 'new-tab',\n });\n track.$.navigationPanel.organize.openInNewTab({\n type: 'doc',\n });\n }, [docId, workbenchService]);\n\n const handleOpenInSplitView = useCallback(() => {\n workbenchService.workbench.openDoc(docId, {\n at: 'beside',\n });\n track.$.navigationPanel.organize.openInSplitView({\n type: 'doc',\n });\n }, [docId, workbenchService.workbench]);\n\n const handleAddLinkedPage = useAsyncCallback(async () => {\n const newDoc = docsService.createDoc();\n // TODO: handle timeout & error\n await docsService.addLinkedDoc(docId, newDoc.id);\n track.$.navigationPanel.docs.createDoc({ control: 'linkDoc' });\n track.$.navigationPanel.docs.linkDoc({ control: 'createDoc' });\n workbenchService.workbench.openDoc(newDoc.id);\n options.openNodeCollapsed();\n }, [docsService, docId, workbenchService.workbench, options]);\n\n const handleToggleFavoriteDoc = useCallback(() => {\n compatibleFavoriteItemsAdapter.toggle(docId, 'doc');\n track.$.navigationPanel.organize.toggleFavorite({\n type: 'doc',\n });\n }, [docId, compatibleFavoriteItemsAdapter]);\n\n return useMemo(\n () => [\n {\n index: 0,\n inline: true,\n view: (\n }\n tooltip={t['com.arms.rootAppSidebar.explorer.doc-add-tooltip']()}\n onClick={handleAddLinkedPage}\n />\n ),\n },\n ...(runtimeConfig.enableInfoModal\n ? [\n {\n index: 50,\n view: (\n \n \n \n }\n onClick={handleOpenInfoModal}\n >\n {t['com.arms.page-properties.page-info.view']()}\n \n ),\n },\n ]\n : []),\n {\n index: 99,\n view: (\n \n \n \n }\n onClick={handleAddLinkedPage}\n >\n {t['com.arms.page-operation.add-linked-page']()}\n \n ),\n },\n {\n index: 99,\n view: (\n \n \n \n }\n onClick={handleOpenInNewTab}\n >\n {t['com.arms.workbench.tab.page-menu-open']()}\n \n ),\n },\n ...(appSettings.enableMultiView\n ? [\n {\n index: 100,\n view: (\n \n \n \n }\n onClick={handleOpenInSplitView}\n >\n {t['com.arms.workbench.split-view.page-menu-open']()}\n \n ),\n },\n ]\n : []),\n {\n index: 199,\n view: (\n \n {favorite ? (\n \n ) : (\n \n )}\n \n }\n onClick={handleToggleFavoriteDoc}\n >\n {favorite\n ? t['com.arms.favoritePageOperation.remove']()\n : t['com.arms.favoritePageOperation.add']()}\n \n ),\n },\n {\n index: 9999,\n view: ,\n },\n {\n index: 10000,\n view: (\n \n \n \n }\n onClick={handleMoveToTrash}\n >\n {t['com.arms.moveToTrash.title']()}\n \n ),\n },\n ],\n [\n appSettings.enableMultiView,\n favorite,\n handleAddLinkedPage,\n handleMoveToTrash,\n handleOpenInNewTab,\n handleOpenInSplitView,\n handleOpenInfoModal,\n handleToggleFavoriteDoc,\n t,\n ]\n );\n};\n","import {\n type DropTargetDropEvent,\n type DropTargetOptions,\n Loading,\n toast,\n Tooltip,\n} from '@affine/component';\nimport { InfoModal } from '@affine/core/components/affine/page-properties';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { track } from '@affine/core/mixpanel';\nimport { DocsSearchService } from '@affine/core/modules/docs-search';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\nimport {\n EdgelessIcon,\n LinkedEdgelessIcon,\n LinkedPageIcon,\n PageIcon,\n} from '@blocksuite/icons/rc';\nimport {\n DocsService,\n GlobalContextService,\n LiveData,\n useLiveData,\n useServices,\n} from '@toeverything/infra';\nimport { useCallback, useLayoutEffect, useMemo, useState } from 'react';\n\nimport { ExplorerTreeNode, type ExplorerTreeNodeDropEffect } from '../../tree';\nimport type { GenericExplorerNode } from '../types';\nimport { Empty } from './empty';\nimport { useExplorerDocNodeOperations } from './operations';\nimport * as styles from './styles.css';\n\nexport const ExplorerDocNode = ({\n docId,\n onDrop,\n location,\n reorderable,\n isLinked,\n canDrop,\n operations: additionalOperations,\n dropEffect,\n}: {\n docId: string;\n isLinked?: boolean;\n} & GenericExplorerNode) => {\n const t = useI18n();\n const { docsSearchService, docsService, globalContextService } = useServices({\n DocsSearchService,\n DocsService,\n GlobalContextService,\n });\n const active =\n useLiveData(globalContextService.globalContext.docId.$) === docId;\n const [collapsed, setCollapsed] = useState(true);\n\n const docRecord = useLiveData(docsService.list.doc$(docId));\n const docMode = useLiveData(docRecord?.mode$);\n const docTitle = useLiveData(docRecord?.title$);\n const isInTrash = useLiveData(docRecord?.trash$);\n\n const Icon = useCallback(\n ({ className }: { className?: string }) => {\n return isLinked ? (\n docMode === 'edgeless' ? (\n \n ) : (\n \n )\n ) : docMode === 'edgeless' ? (\n \n ) : (\n \n );\n },\n [docMode, isLinked]\n );\n\n const children = useLiveData(\n useMemo(\n () => LiveData.from(docsSearchService.watchRefsFrom(docId), null),\n [docsSearchService, docId]\n )\n );\n\n const indexerLoading = useLiveData(\n docsSearchService.indexer.status$.map(\n v => v.remaining === undefined || v.remaining > 0\n )\n );\n const [referencesLoading, setReferencesLoading] = useState(true);\n useLayoutEffect(() => {\n setReferencesLoading(\n prev =>\n prev &&\n indexerLoading /* after loading becomes false, it never becomes true */\n );\n }, [indexerLoading]);\n\n const dndData = useMemo(() => {\n return {\n draggable: {\n entity: {\n type: 'doc',\n id: docId,\n },\n from: location,\n },\n dropTarget: {\n at: 'explorer:doc',\n },\n } satisfies AffineDNDData;\n }, [docId, location]);\n\n const handleRename = useAsyncCallback(\n async (newName: string) => {\n await docsService.changeDocTitle(docId, newName);\n track.$.navigationPanel.organize.renameOrganizeItem({ type: 'doc' });\n },\n [docId, docsService]\n );\n\n const handleDropOnDoc = useAsyncCallback(\n async (data: DropTargetDropEvent) => {\n if (data.treeInstruction?.type === 'make-child') {\n if (data.source.data.entity?.type === 'doc') {\n await docsService.addLinkedDoc(docId, data.source.data.entity.id);\n track.$.navigationPanel.docs.linkDoc({\n control: 'drag',\n });\n } else {\n toast(t['com.arms.rootAppSidebar.doc.link-doc-only']());\n }\n } else {\n onDrop?.(data);\n }\n },\n [docId, docsService, onDrop, t]\n );\n\n const handleDropEffectOnDoc = useCallback(\n data => {\n if (data.treeInstruction?.type === 'make-child') {\n if (data.source.data.entity?.type === 'doc') {\n return 'link';\n }\n } else {\n return dropEffect?.(data);\n }\n return;\n },\n [dropEffect]\n );\n\n const handleDropOnPlaceholder = useAsyncCallback(\n async (data: DropTargetDropEvent) => {\n if (data.source.data.entity?.type === 'doc') {\n // TODO(eyhn): timeout&error handling\n await docsService.addLinkedDoc(docId, data.source.data.entity.id);\n track.$.navigationPanel.docs.linkDoc({\n control: 'drag',\n });\n } else {\n toast(t['com.arms.rootAppSidebar.doc.link-doc-only']());\n }\n },\n [docId, docsService, t]\n );\n\n const handleCanDrop = useMemo['canDrop']>(\n () => args => {\n const entityType = args.source.data.entity?.type;\n return args.treeInstruction?.type !== 'make-child'\n ? (typeof canDrop === 'function' ? canDrop(args) : canDrop) ?? true\n : entityType === 'doc';\n },\n [canDrop]\n );\n\n const [enableInfoModal, setEnableInfoModal] = useState(false);\n const operations = useExplorerDocNodeOperations(\n docId,\n useMemo(\n () => ({\n openInfoModal: () => setEnableInfoModal(true),\n openNodeCollapsed: () => setCollapsed(false),\n }),\n []\n )\n );\n\n const finalOperations = useMemo(() => {\n if (additionalOperations) {\n return [...operations, ...additionalOperations];\n }\n return operations;\n }, [additionalOperations, operations]);\n\n if (isInTrash || !docRecord) {\n return null;\n }\n\n return (\n <>\n \n
\n \n
\n
\n )\n }\n reorderable={reorderable}\n onRename={handleRename}\n childrenPlaceholder={}\n operations={finalOperations}\n dropEffect={handleDropEffectOnDoc}\n data-testid={`explorer-doc-${docId}`}\n >\n {children?.map(child => (\n \n ))}\n \n {enableInfoModal && (\n \n )}\n \n );\n};\n","import \"../core/src/modules/explorer/views/nodes/doc/styles.css.ts.vanilla.css!=!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/nodes/doc/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xcHBmc215MCB7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQ==\\\"}!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var loadingIcon = '_1ppfsmy0';","import { type DropTargetDropEvent, useDropTarget } from '@affine/component';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\n\nimport { EmptyNodeChildren } from '../../layouts/empty-node-children';\n\nexport const Empty = ({\n onDrop,\n}: {\n onDrop: (data: DropTargetDropEvent) => void;\n}) => {\n const { dropTargetRef } = useDropTarget(\n () => ({\n onDrop,\n }),\n [onDrop]\n );\n const t = useI18n();\n return (\n \n {t['com.arms.rootAppSidebar.tags.no-doc']()}\n \n );\n};\n","import {\n IconButton,\n MenuIcon,\n MenuItem,\n MenuSeparator,\n toast,\n} from '@affine/component';\nimport { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper';\nimport { track } from '@affine/core/mixpanel';\nimport { FavoriteService } from '@affine/core/modules/favorite';\nimport { TagService } from '@affine/core/modules/tag';\nimport { WorkbenchService } from '@affine/core/modules/workbench';\nimport { useI18n } from '@affine/i18n';\nimport {\n DeleteIcon,\n FavoritedIcon,\n FavoriteIcon,\n OpenInNewIcon,\n PlusIcon,\n SplitViewIcon,\n} from '@blocksuite/icons/rc';\nimport { DocsService, useLiveData, useServices } from '@toeverything/infra';\nimport { useCallback, useMemo } from 'react';\n\nimport type { NodeOperation } from '../../tree/types';\n\nexport const useExplorerTagNodeOperations = (\n tagId: string,\n {\n openNodeCollapsed,\n }: {\n openNodeCollapsed: () => void;\n }\n): NodeOperation[] => {\n const t = useI18n();\n const { appSettings } = useAppSettingHelper();\n const { docsService, workbenchService, tagService, favoriteService } =\n useServices({\n WorkbenchService,\n TagService,\n DocsService,\n FavoriteService,\n });\n\n const favorite = useLiveData(\n favoriteService.favoriteList.favorite$('tag', tagId)\n );\n const tagRecord = useLiveData(tagService.tagList.tagByTagId$(tagId));\n\n const handleNewDoc = useCallback(() => {\n if (tagRecord) {\n const newDoc = docsService.createDoc();\n tagRecord?.tag(newDoc.id);\n track.$.navigationPanel.tags.createDoc();\n workbenchService.workbench.openDoc(newDoc.id);\n openNodeCollapsed();\n }\n }, [docsService, openNodeCollapsed, tagRecord, workbenchService.workbench]);\n\n const handleMoveToTrash = useCallback(() => {\n tagService.tagList.deleteTag(tagId);\n track.$.navigationPanel.organize.deleteOrganizeItem({ type: 'tag' });\n toast(t['com.arms.tags.delete-tags.toast']());\n }, [t, tagId, tagService.tagList]);\n\n const handleOpenInSplitView = useCallback(() => {\n workbenchService.workbench.openTag(tagId, {\n at: 'beside',\n });\n track.$.navigationPanel.organize.openInSplitView({ type: 'tag' });\n }, [tagId, workbenchService]);\n\n const handleToggleFavoriteTag = useCallback(() => {\n favoriteService.favoriteList.toggle('tag', tagId);\n track.$.navigationPanel.organize.toggleFavorite({\n type: 'tag',\n });\n }, [favoriteService, tagId]);\n\n const handleOpenInNewTab = useCallback(() => {\n workbenchService.workbench.openTag(tagId, {\n at: 'new-tab',\n });\n track.$.navigationPanel.organize.openInNewTab({ type: 'tag' });\n }, [tagId, workbenchService]);\n\n return useMemo(\n () => [\n {\n index: 0,\n inline: true,\n view: (\n \n \n \n ),\n },\n {\n index: 50,\n view: (\n \n \n \n }\n onClick={handleOpenInNewTab}\n >\n {t['com.arms.workbench.tab.page-menu-open']()}\n \n ),\n },\n ...(appSettings.enableMultiView\n ? [\n {\n index: 100,\n view: (\n \n \n \n }\n onClick={handleOpenInSplitView}\n >\n {t['com.arms.workbench.split-view.page-menu-open']()}\n \n ),\n },\n ]\n : []),\n {\n index: 199,\n view: (\n \n {favorite ? (\n \n ) : (\n \n )}\n \n }\n onClick={handleToggleFavoriteTag}\n >\n {favorite\n ? t['com.arms.favoritePageOperation.remove']()\n : t['com.arms.favoritePageOperation.add']()}\n \n ),\n },\n {\n index: 9999,\n view: ,\n },\n {\n index: 10000,\n view: (\n \n \n \n }\n onClick={handleMoveToTrash}\n >\n {t['Delete']()}\n \n ),\n },\n ],\n [\n appSettings.enableMultiView,\n favorite,\n handleMoveToTrash,\n handleNewDoc,\n handleOpenInNewTab,\n handleOpenInSplitView,\n handleToggleFavoriteTag,\n t,\n ]\n );\n};\n","import {\n type DropTargetDropEvent,\n type DropTargetOptions,\n toast,\n} from '@affine/component';\nimport { track } from '@affine/core/mixpanel';\nimport type { Tag } from '@affine/core/modules/tag';\nimport { TagService } from '@affine/core/modules/tag';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\nimport {\n GlobalContextService,\n useLiveData,\n useServices,\n} from '@toeverything/infra';\nimport clsx from 'clsx';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { ExplorerTreeNode, type ExplorerTreeNodeDropEffect } from '../../tree';\nimport { ExplorerDocNode } from '../doc';\nimport type { GenericExplorerNode } from '../types';\nimport { Empty } from './empty';\nimport { useExplorerTagNodeOperations } from './operations';\nimport * as styles from './styles.css';\n\nexport const ExplorerTagNode = ({\n tagId,\n onDrop,\n location,\n reorderable,\n operations: additionalOperations,\n dropEffect,\n canDrop,\n defaultRenaming,\n}: {\n tagId: string;\n defaultRenaming?: boolean;\n} & GenericExplorerNode) => {\n const t = useI18n();\n const { tagService, globalContextService } = useServices({\n TagService,\n GlobalContextService,\n });\n const active =\n useLiveData(globalContextService.globalContext.tagId.$) === tagId;\n const [collapsed, setCollapsed] = useState(true);\n\n const tagRecord = useLiveData(tagService.tagList.tagByTagId$(tagId));\n const tagColor = useLiveData(tagRecord?.color$);\n const tagName = useLiveData(tagRecord?.value$);\n\n const Icon = useCallback(\n ({ className }: { className?: string }) => {\n return (\n
\n
\n \n );\n },\n [tagColor]\n );\n\n const dndData = useMemo(() => {\n return {\n draggable: {\n entity: {\n type: 'tag',\n id: tagId,\n },\n from: location,\n },\n dropTarget: {\n at: 'explorer:tag',\n },\n } satisfies AffineDNDData;\n }, [location, tagId]);\n\n const handleRename = useCallback(\n (newName: string) => {\n if (tagRecord && tagRecord.value$.value !== newName) {\n tagRecord.rename(newName);\n track.$.navigationPanel.organize.renameOrganizeItem({\n type: 'tag',\n });\n }\n },\n [tagRecord]\n );\n\n const handleDropOnTag = useCallback(\n (data: DropTargetDropEvent) => {\n if (data.treeInstruction?.type === 'make-child' && tagRecord) {\n if (data.source.data.entity?.type === 'doc') {\n tagRecord.tag(data.source.data.entity.id);\n track.$.navigationPanel.tags.tagDoc({\n control: 'drag',\n });\n } else {\n toast(t['com.arms.rootAppSidebar.tag.doc-only']());\n }\n } else {\n onDrop?.(data);\n }\n },\n [onDrop, t, tagRecord]\n );\n\n const handleDropEffectOnTag = useCallback(\n data => {\n if (data.treeInstruction?.type === 'make-child') {\n if (data.source.data.entity?.type === 'doc') {\n return 'link';\n }\n } else {\n return dropEffect?.(data);\n }\n return;\n },\n [dropEffect]\n );\n\n const handleDropOnPlaceholder = useCallback(\n (data: DropTargetDropEvent) => {\n if (tagRecord) {\n if (data.source.data.entity?.type === 'doc') {\n tagRecord.tag(data.source.data.entity.id);\n } else {\n toast(t['com.arms.rootAppSidebar.tag.doc-only']());\n }\n }\n },\n [t, tagRecord]\n );\n\n const handleCanDrop = useMemo['canDrop']>(\n () => args => {\n const entityType = args.source.data.entity?.type;\n return args.treeInstruction?.type !== 'make-child'\n ? (typeof canDrop === 'function' ? canDrop(args) : canDrop) ?? true\n : entityType === 'doc';\n },\n [canDrop]\n );\n\n const operations = useExplorerTagNodeOperations(\n tagId,\n useMemo(\n () => ({\n openNodeCollapsed: () => setCollapsed(false),\n }),\n []\n )\n );\n\n const finalOperations = useMemo(() => {\n if (additionalOperations) {\n return [...operations, ...additionalOperations];\n }\n return operations;\n }, [additionalOperations, operations]);\n\n if (!tagRecord) {\n return null;\n }\n\n return (\n }\n operations={finalOperations}\n dropEffect={handleDropEffectOnTag}\n data-testid={`explorer-tag-${tagId}`}\n >\n \n \n );\n};\n\n/**\n * the `tag.pageIds$` has a performance issue,\n * so we split the tag node children into a separate component,\n * so it won't be rendered when the tag node is collapsed.\n */\nexport const ExplorerTagNodeDocs = ({ tag }: { tag: Tag }) => {\n const tagDocIds = useLiveData(tag.pageIds$);\n\n return tagDocIds.map(docId => (\n \n ));\n};\n","import \"../core/src/modules/explorer/views/nodes/tag/styles.css.ts.vanilla.css!=!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/nodes/tag/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xN3d4bmZvMCB7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGhlaWdodDogOHB4OwogIHdpZHRoOiA4cHg7Cn0KLl8xN3d4bmZvMSB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHdpZHRoOiAxZW07CiAgaGVpZ2h0OiAxZW07Cn0=\\\"}!../../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var tagIcon = '_17wxnfo0';\nexport var tagIconContainer = '_17wxnfo1';","import \"../core/src/modules/explorer/views/tree/drop-effect.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/tree/drop-effect.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xbGc5NjIxMCB7CiAgei1pbmRleDogOTk5OTk7CiAgcG9zaXRpb246IGZpeGVkOwogIGxlZnQ6IDEwcHg7CiAgdG9wOiAtMjBweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hZmZpbmUtYmFja2dyb3VuZC1wcmltYXJ5LWNvbG9yKTsKICBib3gtc2hhZG93OiB2YXIoLS1hZmZpbmUtdG9vbGJhci1zaGFkb3cpOwogIHBhZGRpbmc6IDBweCA0cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBsaW5lLWhlaWdodDogMS40OwogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDRweDsKfQouXzFsZzk2MjExIHsKICB3aWR0aDogMTJweDsKICBoZWlnaHQ6IDEycHg7Cn0=\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var dropEffect = '_1lg96210';\nexport var icon = '_1lg96211';","import type { useDropTarget } from '@affine/component';\nimport { useI18n } from '@affine/i18n';\nimport { CopyIcon, LinkIcon, MoveToIcon } from '@blocksuite/icons/rc';\nimport { createPortal } from 'react-dom';\n\nimport * as styles from './drop-effect.css';\n\nexport const DropEffect = ({\n dropEffect,\n position,\n}: {\n dropEffect?: 'copy' | 'move' | 'link' | undefined;\n position: ReturnType['draggedOverPosition'];\n}) => {\n const t = useI18n();\n if (dropEffect === undefined) return null;\n return createPortal(\n \n {dropEffect === 'copy' ? (\n \n ) : dropEffect === 'move' ? (\n \n ) : (\n \n )}\n {dropEffect === 'copy'\n ? t['com.arms.rootAppSidebar.explorer.drop-effect.copy']()\n : dropEffect === 'move'\n ? t['com.arms.rootAppSidebar.explorer.drop-effect.move']()\n : t['com.arms.rootAppSidebar.explorer.drop-effect.link']()}\n ,\n document.body\n );\n};\n","import type { KeyboardEvent, ReactElement } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport Input from '../../ui/input';\nimport { Menu } from '../../ui/menu';\n\nexport const RenameModal = ({\n onRename,\n currentName,\n open,\n width = 220,\n children,\n onOpenChange,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onRename: (newName: string) => void;\n currentName: string;\n width?: string | number;\n children?: ReactElement;\n}) => {\n const [value, setValue] = useState(currentName);\n\n const handleRename = useCallback(() => {\n onRename(value);\n onOpenChange(false);\n }, [onOpenChange, onRename, value]);\n\n const onKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key !== 'Escape') return;\n if (currentName !== value) setValue(currentName);\n onOpenChange(false);\n },\n [currentName, value, onOpenChange]\n );\n\n // Synchronize when the title is changed in the page header or title.\n useEffect(() => setValue(currentName), [currentName]);\n\n return (\n e.stopPropagation(),\n style: { borderRadius: 10, padding: 8 },\n }}\n items={\n \n }\n >\n {children ??
}\n \n );\n};\n","import React from 'react';\n\nexport interface ExplorerTreeContextData {\n /**\n * The level of the current tree node.\n */\n level: number;\n}\n\nexport const ExplorerTreeContext =\n React.createContext(null);\n","import {\n DropIndicator,\n type DropTargetDropEvent,\n type DropTargetOptions,\n type DropTargetTreeInstruction,\n IconButton,\n Menu,\n MenuIcon,\n MenuItem,\n useDraggable,\n useDropTarget,\n} from '@affine/component';\nimport { RenameModal } from '@affine/component/rename-modal';\nimport { appSidebarWidthAtom } from '@affine/core/components/app-sidebar/index.jotai';\nimport { WorkbenchLink } from '@affine/core/modules/workbench';\nimport type { AffineDNDData } from '@affine/core/types/dnd';\nimport { useI18n } from '@affine/i18n';\nimport {\n ArrowDownSmallIcon,\n EditIcon,\n MoreHorizontalIcon,\n} from '@blocksuite/icons/rc';\nimport * as Collapsible from '@radix-ui/react-collapsible';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport clsx from 'clsx';\nimport type { To } from 'history';\nimport { useAtomValue } from 'jotai';\nimport {\n Fragment,\n type RefAttributes,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { ExplorerTreeContext } from './context';\nimport { DropEffect } from './drop-effect';\nimport * as styles from './node.css';\nimport type { NodeOperation } from './types';\n\nexport type ExplorerTreeNodeDropEffectData = {\n source: { data: AffineDNDData['draggable'] };\n treeInstruction: DropTargetTreeInstruction | null;\n};\nexport type ExplorerTreeNodeDropEffect = (\n data: ExplorerTreeNodeDropEffectData\n) => 'copy' | 'move' | 'link' | undefined;\nexport type ExplorerTreeNodeIcon = React.ComponentType<{\n className?: string;\n draggedOver?: boolean;\n treeInstruction?: DropTargetTreeInstruction | null;\n collapsed?: boolean;\n}>;\n\nexport const ExplorerTreeNode = ({\n children,\n icon: Icon,\n name,\n onClick,\n to,\n active,\n defaultRenaming,\n renameable,\n onRename,\n disabled,\n collapsed,\n setCollapsed,\n canDrop,\n reorderable = true,\n operations = [],\n postfix,\n childrenOperations = [],\n childrenPlaceholder,\n linkComponent: LinkComponent = WorkbenchLink,\n dndData,\n onDrop,\n dropEffect,\n ...otherProps\n}: {\n name?: string;\n icon?: ExplorerTreeNodeIcon;\n children?: React.ReactNode;\n active?: boolean;\n reorderable?: boolean;\n defaultRenaming?: boolean;\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n renameable?: boolean;\n onRename?: (newName: string) => void;\n disabled?: boolean;\n onClick?: () => void;\n to?: To;\n postfix?: React.ReactNode;\n canDrop?: DropTargetOptions['canDrop'];\n operations?: NodeOperation[];\n childrenOperations?: NodeOperation[];\n childrenPlaceholder?: React.ReactNode;\n linkComponent?: React.ComponentType<\n React.PropsWithChildren<{ to: To; className?: string }> & RefAttributes\n >;\n dndData?: AffineDNDData;\n onDrop?: (data: DropTargetDropEvent) => void;\n dropEffect?: ExplorerTreeNodeDropEffect;\n} & { [key in `data-${string}`]?: any }) => {\n const t = useI18n();\n const cid = useId();\n const context = useContext(ExplorerTreeContext);\n const level = context?.level ?? 0;\n // If no onClick or to is provided, clicking on the node will toggle the collapse state\n const clickForCollapse = !onClick && !to && !disabled;\n const [childCount, setChildCount] = useState(0);\n const sidebarWidth = useAtomValue(appSidebarWidthAtom);\n const [renaming, setRenaming] = useState(defaultRenaming);\n const [lastInGroup, setLastInGroup] = useState(false);\n const rootRef = useRef(null);\n const { dragRef, dragging, CustomDragPreview } = useDraggable<\n AffineDNDData & { draggable: { __cid: string } }\n >(\n () => ({\n data: { ...dndData?.draggable, __cid: cid },\n dragPreviewPosition: 'pointer-outside',\n }),\n [cid, dndData]\n );\n const handleCanDrop = useMemo['canDrop']>(\n () => args => {\n if (!reorderable && args.treeInstruction?.type !== 'make-child') {\n return false;\n }\n return (typeof canDrop === 'function' ? canDrop(args) : canDrop) ?? true;\n },\n [canDrop, reorderable]\n );\n const {\n dropTargetRef,\n treeInstruction,\n draggedOverDraggable,\n draggedOver,\n draggedOverPosition,\n } = useDropTarget(\n () => ({\n data: dndData?.dropTarget,\n treeInstruction: {\n currentLevel: level,\n indentPerLevel: 20,\n mode: !collapsed\n ? 'expanded'\n : lastInGroup\n ? 'last-in-group'\n : 'standard',\n block:\n reorderable === false\n ? ['reorder-above', 'reorder-below', 'reparent']\n : [],\n },\n onDrop: data => {\n if (\n data.source.data.__cid === cid &&\n data.treeInstruction?.type !== 'reparent'\n ) {\n // Do nothing if dropped on self\n return;\n }\n onDrop?.(data);\n if (data.treeInstruction?.type === 'make-child') {\n setCollapsed(false);\n }\n },\n canDrop: handleCanDrop,\n }),\n [\n dndData?.dropTarget,\n level,\n collapsed,\n lastInGroup,\n reorderable,\n handleCanDrop,\n cid,\n onDrop,\n setCollapsed,\n ]\n );\n const isSelfDraggedOver = draggedOverDraggable?.data.__cid === cid;\n\n useEffect(() => {\n if (\n draggedOver &&\n treeInstruction?.type === 'make-child' &&\n !isSelfDraggedOver\n ) {\n // auto expand when dragged over\n const timeout = setTimeout(() => {\n setCollapsed(false);\n }, 1000);\n return () => clearTimeout(timeout);\n }\n return;\n }, [draggedOver, isSelfDraggedOver, setCollapsed, treeInstruction?.type]);\n\n useEffect(() => {\n if (rootRef.current) {\n const parent = rootRef.current.parentElement;\n if (parent) {\n const updateLastInGroup = () => {\n setLastInGroup(parent?.lastElementChild === rootRef.current);\n };\n updateLastInGroup();\n const observer = new MutationObserver(updateLastInGroup);\n observer.observe(parent, {\n childList: true,\n });\n return () => observer.disconnect();\n }\n }\n return;\n }, []);\n\n const presetOperations = useMemo(\n () =>\n (\n [\n renameable\n ? {\n index: 0,\n view: (\n \n \n \n }\n onClick={() => setRenaming(true)}\n >\n {t['com.arms.menu.rename']()}\n \n ),\n }\n : null,\n ] as (NodeOperation | null)[]\n ).filter((t): t is NodeOperation => t !== null),\n [renameable, t]\n );\n\n const { menuOperations, inlineOperations } = useMemo(() => {\n const sorted = [...presetOperations, ...operations].sort(\n (a, b) => a.index - b.index\n );\n return {\n menuOperations: sorted.filter(({ inline }) => !inline),\n inlineOperations: sorted.filter(({ inline }) => !!inline),\n };\n }, [presetOperations, operations]);\n\n const contextValue = useMemo(() => {\n return {\n operations: childrenOperations,\n level: (context?.level ?? 0) + 1,\n registerChild: () => {\n setChildCount(c => c + 1);\n return () => setChildCount(c => c - 1);\n },\n };\n }, [childrenOperations, context?.level]);\n\n const handleCollapsedChange = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault(); // for links\n setCollapsed(!collapsed);\n },\n [collapsed, setCollapsed]\n );\n\n const handleRename = useCallback(\n (newName: string) => {\n onRename?.(newName);\n },\n [onRename]\n );\n\n const handleClick = useCallback(() => {\n if (!clickForCollapse) {\n onClick?.();\n } else {\n setCollapsed(!collapsed);\n }\n }, [clickForCollapse, collapsed, onClick, setCollapsed]);\n\n const content = (\n \n {Icon && (\n
\n \n \n
\n \n
\n )}\n {renameable && renaming && (\n \n
\n \n )}\n\n
{name}
\n\n {postfix}\n {\n // prevent jump to page\n e.stopPropagation();\n e.preventDefault();\n }}\n >\n {inlineOperations.map(({ view }, index) => (\n {view}\n ))}\n {menuOperations.length > 0 && (\n (\n {view}\n ))}\n >\n \n \n \n \n )}\n
\n \n );\n\n return (\n \n \n {to ? (\n \n {content}\n \n ) : (\n
{content}
\n )}\n \n
{content}
\n
\n {treeInstruction &&\n // Do not show drop indicator for self dragged over\n !(treeInstruction.type !== 'reparent' && isSelfDraggedOver) &&\n treeInstruction.type !== 'instruction-blocked' && (\n \n )}\n {draggedOver &&\n dropEffect &&\n draggedOverPosition &&\n !isSelfDraggedOver &&\n draggedOverDraggable && (\n \n )}\n \n \n {/* For lastInGroup check, the placeholder must be placed above all children in the dom */}\n
\n {childCount === 0 && !collapsed && childrenPlaceholder}\n
\n \n {collapsed ? null : children}\n \n
\n \n );\n};\n","import \"../core/src/modules/explorer/views/tree/node.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/tree/node.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61W227bMAx9z1cIAQa0DyqctOtFRYH9x1AMjETbXGTJkOS02dB/HyzbieU6WYfuKbF41eEhqW9b3OcOKvTsx+rn/s6V+Yb9XjCWfYk/jNkaJIW9YKvHBWNvC8Zuz8ju3suyQXZ/xu7hjN0qO2n4trga0l5FFWm1dYKRKdFReBwrrKOCIl9r2LcqmgzyXONr6ws0FYZTwMoLJtEEdO3xxjqFjjtQ1HjBbuqoHPA18GghmMY8PM5EZuyFVChFTL/9rMjwEqkog2DXWeeo8ei4R40yCGasweipcb51VVsa0qhBKTKFYNmQQm5N4J5+oWA7cBecQ57H+8Tz6jJaWU+BrBHMoYZAu+i+AleQ4cHWgsU0xhiJ0u7QRaQ2ILeFs41RkxBRhcf7XqbW3xUE4CDbUE/L4BpcPn/OlyIPG40q8TYApDCHRo/RT3zHKnmU1ihw+0MQNgDLcYcm+AH4meAOioJMkQQ/8vPqa2J0HcXzvse1gI23ugnxtCVPz/RYD77qiXHgTvc58GY1LdhNl9MOXa7ti2AlKYXmwNGjALWm2pOPzksKyH0NEtsEXxzUZ1qg7ZC+4U6iXDuqwO3TEn5NG+4vnea6G/b0nocrnQ1/L2PP5klGPxsfKN+3fZd3aXE0Ko1KhgKBToKu5oKC1knM2/EYSoAiac0IqKSF19O63kU3AwtuJyzovz8K7XBhaU1AE87Mt3U/3xyYAYn4P7euYtnV2p9iweRy45t0vSSt1lD7SScfnAvmbICAF/whU1jMupidBaN2vP4QKe4+NeLu/4nT74CPZPMB3HhB3AwjPQpLR2YbGT4K+3BEa7YsDMEjJ8Ntky69h8+jD+mV3wEKwhq957IkraYrtm+ikbaMKuMd1HOuX3G8G4ldNQaj7OQ6G3lW50t6FAw8HW2EvhLrrJ+3k7a4nXQn9qP+bD7YQR8ctpXxwTWy1X5aVrDFDq7lc6fTTqJu26CKM/tpmYP2uHwWkIeerAcSLZdJ82+0ldvTM/MXJ6MOE/yDjB8201wZuofDCDUJWl7ERxp/Z3CZbq/2JfS/IerktkYzhxoYqqBD5fjAXXlGJm/piax9BYJ7XLz9AQBQy98LCwAA\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var collapseContentPlaceholder = '_1jy7rhfa';\nexport var collapsedIcon = '_1jy7rhf9';\nexport var collapsedIconContainer = '_1jy7rhf7';\nexport var contentContainer = '_1jy7rhfc';\nexport var draggedOverEffect = '_1jy7rhfe';\nexport var draggingContainer = '_1jy7rhfd';\nexport var icon = '_1jy7rhf6';\nexport var iconsContainer = '_1jy7rhf8';\nexport var itemContent = '_1jy7rhf4';\nexport var itemRenameAnchor = '_1jy7rhf3';\nexport var itemRoot = '_1jy7rhf2';\nexport var levelIndent = 'var(--_1jy7rhf0)';\nexport var linkItemRoot = '_1jy7rhf1';\nexport var postfix = '_1jy7rhf5';","import { useMemo, useState } from 'react';\n\nimport { ExplorerTreeContext } from './context';\nimport * as styles from './root.css';\nimport type { NodeOperation } from './types';\n\nexport const ExplorerTreeRoot = ({\n children,\n childrenOperations = [],\n placeholder,\n}: {\n children?: React.ReactNode;\n childrenOperations?: NodeOperation[];\n className?: string;\n placeholder?: React.ReactNode;\n}) => {\n const [childCount, setChildCount] = useState(0);\n const contextValue = useMemo(() => {\n return {\n operations: childrenOperations,\n level: 0,\n registerChild: () => {\n setChildCount(c => c + 1);\n return () => setChildCount(c => c - 1);\n },\n };\n }, [childrenOperations]);\n\n return (\n //
is for placeholder:last-child selector\n
\n {/* For lastInGroup check, the placeholder must be placed above all children in the dom */}\n
\n {childCount === 0 && placeholder}\n
\n \n {children}\n \n
\n );\n};\n","import \"../core/src/modules/explorer/views/tree/root.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/explorer/views/tree/root.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll84NncwanUwIHsKICBkaXNwbGF5OiBub25lOwp9Ci5fODZ3MGp1MDpvbmx5LWNoaWxkIHsKICBkaXNwbGF5OiBpbml0aWFsOwp9\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var placeholder = '_86w0ju0';","import { generateFractionalIndexingKeyBetween } from '@affine/core/utils/fractional-indexing';\nimport { Entity } from '@toeverything/infra';\n\nimport type { FavoriteSupportType } from '../constant';\nimport type { FavoriteRecord, FavoriteStore } from '../stores/favorite';\n\nexport class FavoriteList extends Entity {\n list$ = this.store.watchFavorites();\n sortedList$ = this.list$.map(v =>\n v.sort((a, b) => (a.index > b.index ? 1 : -1))\n );\n isLoading$ = this.store.watchIsLoading();\n\n constructor(private readonly store: FavoriteStore) {\n super();\n }\n\n /**\n * get favorite record by type and id\n */\n favorite$(type: FavoriteSupportType, id: string) {\n return this.store.watchFavorite(type, id);\n }\n\n isFavorite$(type: FavoriteSupportType, id: string) {\n return this.favorite$(type, id).map(v => !!v);\n }\n\n add(\n type: FavoriteSupportType,\n id: string,\n index: string = this.indexAt('before')\n ) {\n return this.store.addFavorite(type, id, index);\n }\n\n toggle(\n type: FavoriteSupportType,\n id: string,\n index: string = this.indexAt('before')\n ) {\n if (this.favorite$(type, id).value) {\n return this.remove(type, id);\n } else {\n return this.add(type, id, index);\n }\n }\n\n remove(type: FavoriteSupportType, id: string) {\n return this.store.removeFavorite(type, id);\n }\n\n reorder(type: FavoriteSupportType, id: string, index: string) {\n return this.store.reorderFavorite(type, id, index);\n }\n\n indexAt(\n at: 'before' | 'after',\n targetRecord?: {\n type: FavoriteSupportType;\n id: string;\n }\n ) {\n if (!targetRecord) {\n if (at === 'before') {\n const first = this.sortedList$.value.at(0);\n return generateFractionalIndexingKeyBetween(null, first?.index || null);\n } else {\n const last = this.sortedList$.value.at(-1);\n return generateFractionalIndexingKeyBetween(last?.index || null, null);\n }\n } else {\n const sortedChildren = this.sortedList$.value;\n const targetIndex = sortedChildren.findIndex(\n node => node.id === targetRecord.id && node.type === targetRecord.type\n );\n if (targetIndex === -1) {\n throw new Error('Target favorite record not found');\n }\n const target = sortedChildren[targetIndex];\n const before: FavoriteRecord | null =\n sortedChildren[targetIndex - 1] || null;\n const after: FavoriteRecord | null =\n sortedChildren[targetIndex + 1] || null;\n if (at === 'before') {\n return generateFractionalIndexingKeyBetween(\n before?.index || null,\n target.index\n );\n } else {\n return generateFractionalIndexingKeyBetween(\n target.index,\n after?.index || null\n );\n }\n }\n }\n}\n","import { Service } from '@toeverything/infra';\n\nimport { FavoriteList } from '../entities/favorite-list';\n\nexport class FavoriteService extends Service {\n favoriteList = this.framework.createEntity(FavoriteList);\n}\n","export const FavoriteSupportType = [\n 'collection',\n 'doc',\n 'tag',\n 'folder',\n] as const;\nexport type FavoriteSupportType = 'collection' | 'doc' | 'tag' | 'folder';\nexport const isFavoriteSupportType = (\n type: string\n): type is FavoriteSupportType =>\n FavoriteSupportType.includes(type as FavoriteSupportType);\n","import { WorkspaceFlavour } from '@affine/env/workspace';\nimport type { WorkspaceDBService, WorkspaceService } from '@toeverything/infra';\nimport { LiveData, Store } from '@toeverything/infra';\nimport { map } from 'rxjs';\n\nimport type { AuthService } from '../../cloud';\nimport type { FavoriteSupportType } from '../constant';\nimport { isFavoriteSupportType } from '../constant';\n\nexport interface FavoriteRecord {\n type: FavoriteSupportType;\n id: string;\n index: string;\n}\n\nexport class FavoriteStore extends Store {\n constructor(\n private readonly authService: AuthService,\n private readonly workspaceDBService: WorkspaceDBService,\n private readonly workspaceService: WorkspaceService\n ) {\n super();\n }\n\n private get userdataDB$() {\n return this.authService.session.account$.map(account => {\n // if is local workspace or no account, use __local__ userdata\n // sometimes we may have cloud workspace but no account for a short time, we also use __local__ userdata\n if (\n this.workspaceService.workspace.meta.flavour ===\n WorkspaceFlavour.LOCAL ||\n !account\n ) {\n return this.workspaceDBService.userdataDB('__local__');\n }\n return this.workspaceDBService.userdataDB(account.id);\n });\n }\n\n watchIsLoading() {\n return this.userdataDB$\n .map(db => LiveData.from(db.favorite.isLoading$, false))\n .flat();\n }\n\n watchFavorites() {\n return this.userdataDB$\n .map(db => LiveData.from(db.favorite.find$(), []))\n .flat()\n .map(raw => {\n return raw\n .map(data => this.toRecord(data))\n .filter((record): record is FavoriteRecord => !!record);\n });\n }\n\n addFavorite(\n type: FavoriteSupportType,\n id: string,\n index: string\n ): FavoriteRecord {\n const db = this.userdataDB$.value;\n const raw = db.favorite.create({\n key: this.encodeKey(type, id),\n index,\n });\n return this.toRecord(raw) as FavoriteRecord;\n }\n\n reorderFavorite(type: FavoriteSupportType, id: string, index: string) {\n const db = this.userdataDB$.value;\n db.favorite.update(this.encodeKey(type, id), { index });\n }\n\n removeFavorite(type: FavoriteSupportType, id: string) {\n const db = this.userdataDB$.value;\n db.favorite.delete(this.encodeKey(type, id));\n }\n\n watchFavorite(type: FavoriteSupportType, id: string) {\n const db = this.userdataDB$.value;\n return LiveData.from(\n db.favorite\n .get$(this.encodeKey(type, id))\n .pipe(map(data => (data ? this.toRecord(data) : undefined))),\n null as any\n );\n }\n\n private toRecord(data: {\n key: string;\n index: string;\n }): FavoriteRecord | undefined {\n const key = this.parseKey(data.key);\n if (!key) {\n return undefined;\n }\n return {\n type: key.type,\n id: key.id,\n index: data.index,\n };\n }\n\n /**\n * parse favorite key\n * key format: ${type}:${id}\n * type: collection | doc | tag\n * @returns null if key is invalid\n */\n private parseKey(key: string): {\n type: FavoriteSupportType;\n id: string;\n } | null {\n const [type, id] = key.split(':');\n if (!type || !id) {\n return null;\n }\n if (!isFavoriteSupportType(type)) {\n return null;\n }\n return { type: type as FavoriteSupportType, id };\n }\n\n private encodeKey(type: FavoriteSupportType, id: string) {\n return `${type}:${id}`;\n }\n}\n","import {\n type Framework,\n WorkspaceDBService,\n WorkspaceScope,\n WorkspaceService,\n} from '@toeverything/infra';\n\nimport { AuthService } from '../cloud';\nimport { FavoriteList } from './entities/favorite-list';\nimport { FavoriteService } from './services/favorite';\nimport { FavoriteStore } from './stores/favorite';\n\nexport { FavoriteSupportType, isFavoriteSupportType } from './constant';\nexport type { FavoriteList } from './entities/favorite-list';\nexport { FavoriteService } from './services/favorite';\n\nexport function configureFavoriteModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(FavoriteService)\n .entity(FavoriteList, [FavoriteStore])\n .store(FavoriteStore, [AuthService, WorkspaceDBService, WorkspaceService]);\n}\n","import { DebugLogger } from '@affine/debug';\nimport { apis } from '@affine/electron-api';\nimport { Entity, LiveData } from '@toeverything/infra';\nimport {\n debounceTime,\n distinctUntilChanged,\n of,\n shareReplay,\n switchMap,\n tap,\n} from 'rxjs';\n\nconst logger = new DebugLogger('affine:find-in-page');\n\nexport class FindInPage extends Entity {\n readonly searchText$ = new LiveData(null);\n readonly isSearching$ = new LiveData(false);\n private readonly direction$ = new LiveData<'forward' | 'backward'>('forward');\n readonly visible$ = new LiveData(false);\n\n readonly result$ = LiveData.from(\n this.visible$.pipe(\n distinctUntilChanged(),\n switchMap(visible => {\n if (!visible) {\n return of(null);\n }\n let searchId = 0;\n return this.searchText$.pipe(\n tap(() => {\n this.isSearching$.next(false);\n }),\n debounceTime(500),\n switchMap(searchText => {\n if (!searchText) {\n return of(null);\n } else {\n let findNext = true;\n return this.direction$.pipe(\n switchMap(direction => {\n if (apis?.findInPage) {\n this.isSearching$.next(true);\n const currentId = ++searchId;\n return apis?.findInPage\n .find(searchText, {\n forward: direction === 'forward',\n findNext,\n })\n .finally(() => {\n if (currentId === searchId) {\n this.isSearching$.next(false);\n findNext = false;\n }\n });\n } else {\n return of(null);\n }\n })\n );\n }\n })\n );\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n ),\n null\n );\n\n constructor() {\n super();\n // TODO(@Peng): hide on navigation\n }\n\n findInPage(searchText: string) {\n this.onChangeVisible(true);\n this.searchText$.next(searchText);\n }\n\n onChangeVisible(visible: boolean) {\n this.visible$.next(visible);\n if (!visible) {\n this.clear();\n }\n }\n\n toggleVisible(text?: string) {\n const nextVisible = !this.visible$.value;\n this.visible$.next(nextVisible);\n if (!nextVisible) {\n this.clear();\n } else if (text) {\n this.searchText$.next(text);\n }\n }\n\n backward() {\n if (!this.searchText$.value) {\n return;\n }\n this.direction$.next('backward');\n }\n\n forward() {\n if (!this.searchText$.value) {\n return;\n }\n this.direction$.next('forward');\n }\n\n clear() {\n logger.debug('clear');\n apis?.findInPage.clear().catch(logger.error);\n }\n}\n","import { Service } from '@toeverything/infra';\n\nimport { FindInPage } from '../entities/find-in-page';\n\nexport class FindInPageService extends Service {\n public readonly findInPage = this.framework.createEntity(FindInPage);\n}\n","import { Entity, LiveData } from '@toeverything/infra';\nimport type { Location } from 'history';\nimport { Observable, switchMap } from 'rxjs';\n\nimport type { WorkbenchService } from '../../workbench';\n\nexport class Navigator extends Entity {\n constructor(private readonly workbenchService: WorkbenchService) {\n super();\n }\n\n private readonly history$ = this.workbenchService.workbench.activeView$.map(\n view => view.history\n );\n\n private readonly location$ = LiveData.from(\n this.history$.pipe(\n switchMap(\n history =>\n new Observable<{ index: number; entries: Location[] }>(subscriber => {\n subscriber.next({ index: history.index, entries: history.entries });\n return history.listen(() => {\n subscriber.next({\n index: history.index,\n entries: history.entries,\n });\n });\n })\n )\n ),\n { index: 0, entries: [] }\n );\n\n readonly backable$ = this.location$.map(\n ({ index, entries }) => index > 0 && entries.length > 1\n );\n\n readonly forwardable$ = this.location$.map(\n ({ index, entries }) => index < entries.length - 1\n );\n\n back() {\n if (!environment.isDesktop) {\n window.history.back();\n } else {\n this.history$.value.back();\n }\n }\n\n forward() {\n if (!environment.isDesktop) {\n window.history.forward();\n } else {\n this.history$.value.forward();\n }\n }\n}\n","function maybeAffineOrigin(origin: string) {\n return (\n origin.startsWith('file://') ||\n origin.startsWith('affine://') ||\n origin.endsWith('affine.pro') || // stable/beta\n origin.endsWith('affine.fail') || // canary\n origin.endsWith('313.co.kr') || // canary\n origin.endsWith('www.313.co.kr') || // canary\n origin.endsWith('a-rms.net') || // canary\n origin.endsWith('www.a-rms.net') || // canary\n origin.endsWith('127.0.0.1') || // canary\n origin.includes('localhost') // dev\n );\n}\n\nexport const resolveRouteLinkMeta = (href: string) => {\n try {\n const url = new URL(href, location.origin);\n\n // check if origin is one of affine's origins\n\n if (!maybeAffineOrigin(url.origin)) {\n return null;\n }\n\n // http://---/workspace/{workspaceid}/xxx/yyy\n // http://---/workspace/{workspaceid}/xxx\n const [_, workspaceId, moduleName, subModuleName] =\n url.pathname.match(/\\/workspace\\/([^/]+)\\/([^/]+)(?:\\/([^/]+))?/) || [];\n\n if (workspaceId) {\n const basename = `/workspace/${workspaceId}`;\n const pathname = url.pathname.replace(basename, '');\n const search = url.search;\n const hash = url.hash;\n const location = {\n pathname,\n search,\n hash,\n };\n if (isRouteModulePath(moduleName)) {\n return {\n location,\n basename,\n workspaceId,\n moduleName,\n subModuleName,\n };\n } else if (moduleName) {\n // for now we assume all other cases are doc links\n return {\n location,\n basename,\n workspaceId,\n moduleName: 'doc' as const,\n docId: moduleName,\n blockId: hash.slice(1),\n };\n }\n }\n return null;\n } catch {\n return null;\n }\n};\n\n/**\n * @see /packages/frontend/core/src/router.tsx\n */\nexport const routeModulePaths = ['all', 'collection', 'tag', 'trash'] as const;\nexport type RouteModulePath = (typeof routeModulePaths)[number];\n\nconst isRouteModulePath = (\n path: string\n): path is (typeof routeModulePaths)[number] =>\n routeModulePaths.includes(path as any);\n\nexport const resolveLinkToDoc = (href: string) => {\n const meta = resolveRouteLinkMeta(href);\n if (!meta || meta.moduleName !== 'doc') return null;\n return {\n workspaceId: meta.workspaceId,\n docId: meta.docId,\n blockId: meta.blockId,\n };\n};\n","import \"../core/src/modules/navigation/view/navigation-buttons.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/navigation/view/navigation-buttons.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xb283Nzc5MCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGNvbHVtbi1nYXA6IDhweDsKfQouXzFvbzc3NzkxIHsKICB3aWR0aDogMzJweDsKICBoZWlnaHQ6IDMycHg7CiAgZmxleC1zaHJpbms6IDA7Cn0=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var button = '_1oo77791';\nexport var container = '_1oo77790';","import { IconButton } from '@affine/component';\nimport { useI18n } from '@affine/i18n';\nimport { ArrowLeftSmallIcon, ArrowRightSmallIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { useCallback, useEffect } from 'react';\n\nimport { NavigatorService } from '../services/navigator';\nimport * as styles from './navigation-buttons.css';\n\nconst tooltipSideBottom = { side: 'bottom' as const };\n\nexport const NavigationButtons = () => {\n const t = useI18n();\n\n const navigator = useService(NavigatorService).navigator;\n\n const backable = useLiveData(navigator.backable$);\n const forwardable = useLiveData(navigator.forwardable$);\n\n const handleBack = useCallback(() => {\n navigator.back();\n }, [navigator]);\n\n const handleForward = useCallback(() => {\n navigator.forward();\n }, [navigator]);\n\n useEffect(() => {\n const cb = (event: MouseEvent) => {\n if (event.button === 3 || event.button === 4) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.button === 3) {\n navigator.back();\n } else {\n navigator.forward();\n }\n }\n };\n document.addEventListener('mouseup', cb);\n return () => {\n document.removeEventListener('mouseup', cb);\n };\n }, [navigator]);\n\n if (!environment.isDesktop) {\n return null;\n }\n\n return (\n
\n \n \n \n \n \n \n
\n );\n};\n","export { Navigator } from './entities/navigator';\nexport { resolveLinkToDoc, resolveRouteLinkMeta } from './utils';\nexport { NavigationButtons } from './view/navigation-buttons';\n\nimport { type Framework, WorkspaceScope } from '@toeverything/infra';\n\nimport { WorkbenchService } from '../workbench';\nimport { Navigator } from './entities/navigator';\nimport { NavigatorService } from './services/navigator';\n\nexport function configureNavigationModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(NavigatorService)\n .entity(Navigator, [WorkbenchService]);\n}\n","import { Service } from '@toeverything/infra';\n\nimport { Navigator } from '../entities/navigator';\n\nexport class NavigatorService extends Service {\n public readonly navigator = this.framework.createEntity(Navigator);\n}\n","import { generateFractionalIndexingKeyBetween } from '@affine/core/utils';\nimport { Entity, LiveData } from '@toeverything/infra';\nimport { map, of, switchMap } from 'rxjs';\n\nimport type { FolderStore } from '../stores/folder';\n\nexport class FolderNode extends Entity<{\n id: string | null;\n}> {\n id = this.props.id;\n\n info$ = LiveData.from<{\n data: string;\n // eslint-disable-next-line @typescript-eslint/ban-types\n type: (string & {}) | 'folder' | 'doc' | 'tag' | 'collection';\n index: string;\n id: string;\n parentId?: string | null;\n } | null>(this.store.watchNodeInfo(this.id ?? ''), null);\n type$ = this.info$.map(info =>\n this.id === null ? 'folder' : (info?.type ?? '')\n );\n data$ = this.info$.map(info => info?.data);\n name$ = this.info$.map(info => (info?.type === 'folder' ? info.data : ''));\n children$ = LiveData.from(\n // watch children if this is a folder, otherwise return empty array\n this.type$.pipe(\n switchMap(type =>\n type === 'folder'\n ? this.store\n .watchNodeChildren(this.id)\n .pipe(\n map(children =>\n children\n .filter(e => this.filterInvalidChildren(e))\n .map(child =>\n this.framework.createEntity(FolderNode, child)\n )\n )\n )\n .pipe()\n : of([])\n )\n ),\n []\n );\n sortedChildren$ = LiveData.computed(get => {\n return get(this.children$)\n .map(node => [node, get(node.index$)] as const)\n .sort((a, b) => (a[1] > b[1] ? 1 : -1))\n .map(([node]) => node);\n });\n index$ = this.info$.map(info => info?.index ?? '');\n\n constructor(readonly store: FolderStore) {\n super();\n }\n\n contains(childId: string | null): boolean {\n if (!this.id) {\n return true;\n }\n if (!childId) {\n return false;\n }\n return this.store.isAncestor(childId, this.id);\n }\n\n beChildOf(parentId: string | null): boolean {\n if (!this.id) {\n return false;\n }\n if (!parentId) {\n return true;\n }\n return this.store.isAncestor(this.id, parentId);\n }\n\n filterInvalidChildren(child: { type: string }): boolean {\n if (this.id === null && child.type !== 'folder') {\n return false; // root node can only have folders\n }\n return true;\n }\n\n createFolder(name: string, index: string) {\n if (this.type$.value !== 'folder') {\n throw new Error('Cannot create folder on non-folder node');\n }\n return this.store.createFolder(this.id, name, index);\n }\n\n createLink(\n type: 'doc' | 'tag' | 'collection',\n targetId: string,\n index: string\n ) {\n if (this.id === null) {\n throw new Error('Cannot create link on root node');\n }\n if (this.type$.value !== 'folder') {\n throw new Error('Cannot create link on non-folder node');\n }\n this.store.createLink(this.id, type, targetId, index);\n }\n\n delete() {\n if (this.id === null) {\n throw new Error('Cannot delete root node');\n }\n if (this.type$.value === 'folder') {\n this.store.removeFolder(this.id);\n } else {\n this.store.removeLink(this.id);\n }\n }\n\n moveHere(childId: string, index: string) {\n this.store.moveNode(childId, this.id, index);\n }\n\n rename(name: string) {\n if (this.id === null) {\n throw new Error('Cannot rename root node');\n }\n this.store.renameNode(this.id, name);\n }\n\n indexAt(at: 'before' | 'after', targetId?: string) {\n if (!targetId) {\n if (at === 'before') {\n const first = this.sortedChildren$.value.at(0);\n return generateFractionalIndexingKeyBetween(\n null,\n first?.index$.value || null\n );\n } else {\n const last = this.sortedChildren$.value.at(-1);\n return generateFractionalIndexingKeyBetween(\n last?.index$.value || null,\n null\n );\n }\n } else {\n const sortedChildren = this.sortedChildren$.value;\n const targetIndex = sortedChildren.findIndex(\n node => node.id === targetId\n );\n if (targetIndex === -1) {\n throw new Error('Target node not found');\n }\n const target = sortedChildren[targetIndex];\n const before: FolderNode | null = sortedChildren[targetIndex - 1] || null;\n const after: FolderNode | null = sortedChildren[targetIndex + 1] || null;\n if (at === 'before') {\n return generateFractionalIndexingKeyBetween(\n before?.index$.value || null,\n target.index$.value\n );\n } else {\n return generateFractionalIndexingKeyBetween(\n target.index$.value,\n after?.index$.value || null\n );\n }\n }\n }\n}\n","import { Entity, LiveData } from '@toeverything/infra';\nimport { map } from 'rxjs';\n\nimport type { FolderStore } from '../stores/folder';\nimport { FolderNode } from './folder-node';\n\nexport class FolderTree extends Entity {\n constructor(private readonly folderStore: FolderStore) {\n super();\n }\n\n readonly rootFolder = this.framework.createEntity(FolderNode, {\n id: null,\n });\n\n isLoading$ = this.folderStore.watchIsLoading();\n\n // get folder by id\n folderNode$(id: string) {\n return LiveData.from(\n this.folderStore.watchNodeInfo(id).pipe(\n map(info => {\n if (!info) {\n return null;\n }\n return this.framework.createEntity(FolderNode, {\n id,\n });\n })\n ),\n null\n );\n }\n}\n","import { Service } from '@toeverything/infra';\n\nimport { FolderTree } from '../entities/folder-tree';\nexport class OrganizeService extends Service {\n folderTree = this.framework.createEntity(FolderTree);\n}\n","import type { WorkspaceDBService } from '@toeverything/infra';\nimport { Store } from '@toeverything/infra';\n\nexport class FolderStore extends Store {\n constructor(private readonly dbService: WorkspaceDBService) {\n super();\n }\n\n watchNodeInfo(nodeId: string) {\n return this.dbService.db.folders.get$(nodeId);\n }\n\n watchNodeChildren(parentId: string | null) {\n return this.dbService.db.folders.find$({\n parentId: parentId,\n });\n }\n\n watchIsLoading() {\n return this.dbService.db.folders.isLoading$;\n }\n\n isAncestor(childId: string, ancestorId: string): boolean {\n if (childId === ancestorId) {\n return false;\n }\n const history = new Set([childId]);\n let current: string = childId;\n while (current) {\n const info = this.dbService.db.folders.get(current);\n if (info === null || !info.parentId) {\n return false;\n }\n current = info.parentId;\n if (history.has(current)) {\n return false; // loop detected\n }\n history.add(current);\n if (current === ancestorId) {\n return true;\n }\n }\n return false;\n }\n\n createLink(\n parentId: string,\n type: 'doc' | 'tag' | 'collection',\n nodeId: string,\n index: string\n ) {\n const parent = this.dbService.db.folders.get(parentId);\n if (parent === null || parent.type !== 'folder') {\n throw new Error('Parent folder not found');\n }\n\n this.dbService.db.folders.create({\n parentId,\n type,\n data: nodeId,\n index: index,\n });\n }\n\n renameNode(nodeId: string, name: string) {\n const node = this.dbService.db.folders.get(nodeId);\n if (node === null) {\n throw new Error('Node not found');\n }\n if (node.type !== 'folder') {\n throw new Error('Cannot rename non-folder node');\n }\n this.dbService.db.folders.update(nodeId, {\n data: name,\n });\n }\n\n createFolder(parentId: string | null, name: string, index: string) {\n if (parentId) {\n const parent = this.dbService.db.folders.get(parentId);\n if (parent === null || parent.type !== 'folder') {\n throw new Error('Parent folder not found');\n }\n }\n\n return this.dbService.db.folders.create({\n parentId: parentId,\n type: 'folder',\n data: name,\n index: index,\n }).id;\n }\n\n removeFolder(folderId: string) {\n const info = this.dbService.db.folders.get(folderId);\n if (info === null || info.type !== 'folder') {\n throw new Error('Folder not found');\n }\n const stack = [info];\n while (stack.length > 0) {\n const current = stack.pop();\n if (!current) {\n continue;\n }\n if (current.type !== 'folder') {\n this.dbService.db.folders.delete(current.id);\n } else {\n const children = this.dbService.db.folders.find({\n parentId: current.id,\n });\n stack.push(...children);\n this.dbService.db.folders.delete(current.id);\n }\n }\n }\n\n removeLink(linkId: string) {\n const link = this.dbService.db.folders.get(linkId);\n if (link === null || link.type === 'folder') {\n throw new Error('Link not found');\n }\n this.dbService.db.folders.delete(linkId);\n }\n\n moveNode(nodeId: string, parentId: string | null, index: string) {\n const node = this.dbService.db.folders.get(nodeId);\n if (node === null) {\n throw new Error('Node not found');\n }\n\n if (parentId) {\n if (nodeId === parentId) {\n throw new Error('Cannot move a node to itself');\n }\n if (this.isAncestor(parentId, nodeId)) {\n throw new Error('Cannot move a node to its descendant');\n }\n const parent = this.dbService.db.folders.get(parentId);\n if (parent === null || parent.type !== 'folder') {\n throw new Error('Parent folder not found');\n }\n } else {\n if (node.type !== 'folder') {\n throw new Error('Root node can only have folders');\n }\n }\n this.dbService.db.folders.update(nodeId, {\n parentId,\n index,\n });\n }\n}\n","import {\n type Framework,\n WorkspaceDBService,\n WorkspaceScope,\n} from '@toeverything/infra';\n\nimport { FolderNode } from './entities/folder-node';\nimport { FolderTree } from './entities/folder-tree';\nimport { OrganizeService } from './services/organize';\nimport { FolderStore } from './stores/folder';\n\nexport type { FolderNode } from './entities/folder-node';\nexport { OrganizeService } from './services/organize';\n\nexport function configureOrganizeModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(OrganizeService)\n .entity(FolderTree, [FolderStore])\n .entity(FolderNode, [FolderStore])\n .store(FolderStore, [WorkspaceDBService]);\n}\n","import { OnEvent, Service } from '@toeverything/infra';\n\nimport { WorkbenchLocationChanged } from '../../workbench/services/workbench';\nimport { PeekViewEntity } from '../entities/peek-view';\n\n@OnEvent(WorkbenchLocationChanged, e => () => e.peekView.close())\nexport class PeekViewService extends Service {\n public readonly peekView = this.framework.createEntity(PeekViewEntity);\n}\n","import type { BlockComponent, EditorHost } from '@blocksuite/block-std';\nimport {\n AffineReference,\n type EmbedLinkedDocModel,\n type EmbedSyncedDocModel,\n type ImageBlockModel,\n type SurfaceRefBlockComponent,\n type SurfaceRefBlockModel,\n} from '@blocksuite/blocks';\nimport type { AIChatBlockModel } from '@blocksuite/presets';\nimport type { BlockModel } from '@blocksuite/store';\nimport { type DocMode, Entity, LiveData } from '@toeverything/infra';\nimport type { TemplateResult } from 'lit';\nimport { firstValueFrom, map, race } from 'rxjs';\n\nimport { resolveLinkToDoc } from '../../navigation';\nimport type { WorkbenchService } from '../../workbench';\n\nexport type PeekViewTarget =\n | HTMLElement\n | BlockComponent\n | AffineReference\n | HTMLAnchorElement\n | { docId: string; blockId?: string };\n\nexport interface DocPeekViewInfo {\n type: 'doc';\n docId: string;\n blockId?: string;\n mode?: DocMode;\n xywh?: `[${number},${number},${number},${number}]`;\n}\n\nexport type ImagePeekViewInfo = {\n type: 'image';\n docId: string;\n blockId: string;\n};\n\nexport type AIChatBlockPeekViewInfo = {\n type: 'ai-chat-block';\n docId: string;\n host: EditorHost;\n model: AIChatBlockModel;\n};\n\nexport type CustomTemplatePeekViewInfo = {\n type: 'template';\n template: TemplateResult;\n};\n\nexport type ActivePeekView = {\n target: PeekViewTarget;\n info:\n | DocPeekViewInfo\n | ImagePeekViewInfo\n | CustomTemplatePeekViewInfo\n | AIChatBlockPeekViewInfo;\n};\n\nconst EMBED_DOC_FLAVOURS = [\n 'affine:embed-linked-doc',\n 'affine:embed-synced-doc',\n];\n\nconst isEmbedDocModel = (\n blockModel: BlockModel\n): blockModel is EmbedSyncedDocModel | EmbedLinkedDocModel => {\n return EMBED_DOC_FLAVOURS.includes(blockModel.flavour);\n};\n\nconst isImageBlockModel = (\n blockModel: BlockModel\n): blockModel is ImageBlockModel => {\n return blockModel.flavour === 'affine:image';\n};\n\nconst isSurfaceRefModel = (\n blockModel: BlockModel\n): blockModel is SurfaceRefBlockModel => {\n return blockModel.flavour === 'affine:surface-ref';\n};\n\nconst isAIChatBlockModel = (\n blockModel: BlockModel\n): blockModel is AIChatBlockModel => {\n return blockModel.flavour === 'affine:embed-ai-chat';\n};\n\nfunction resolvePeekInfoFromPeekTarget(\n peekTarget: PeekViewTarget,\n template?: TemplateResult\n): ActivePeekView['info'] | undefined {\n if (template) {\n return {\n type: 'template',\n template,\n };\n }\n\n if (peekTarget instanceof AffineReference) {\n if (peekTarget.refMeta) {\n return {\n type: 'doc',\n docId: peekTarget.refMeta.id,\n };\n }\n } else if ('model' in peekTarget) {\n const blockModel = peekTarget.model;\n if (isEmbedDocModel(blockModel)) {\n return {\n type: 'doc',\n docId: blockModel.pageId,\n };\n } else if (isSurfaceRefModel(blockModel)) {\n const refModel = (peekTarget as SurfaceRefBlockComponent).referenceModel;\n // refModel can be null if the reference is invalid\n if (refModel) {\n const docId =\n 'doc' in refModel ? refModel.doc.id : refModel.surface.doc.id;\n return {\n type: 'doc',\n docId,\n mode: 'edgeless',\n xywh: refModel.xywh,\n };\n }\n } else if (isImageBlockModel(blockModel)) {\n return {\n type: 'image',\n docId: blockModel.doc.id,\n blockId: blockModel.id,\n };\n } else if (isAIChatBlockModel(blockModel)) {\n return {\n type: 'ai-chat-block',\n docId: blockModel.doc.id,\n model: blockModel,\n host: peekTarget.host,\n };\n }\n } else if (peekTarget instanceof HTMLAnchorElement) {\n const maybeDoc = resolveLinkToDoc(peekTarget.href);\n if (maybeDoc) {\n return {\n type: 'doc',\n docId: maybeDoc.docId,\n blockId: maybeDoc.blockId,\n };\n }\n } else if ('docId' in peekTarget) {\n return {\n type: 'doc',\n docId: peekTarget.docId,\n blockId: peekTarget.blockId,\n };\n }\n return;\n}\n\nexport type PeekViewAnimation = 'fade' | 'zoom' | 'none';\n\nexport class PeekViewEntity extends Entity {\n private readonly _active$ = new LiveData(null);\n private readonly _show$ = new LiveData<{\n animation: PeekViewAnimation;\n value: boolean;\n }>({\n animation: 'zoom',\n value: false,\n });\n\n constructor(private readonly workbenchService: WorkbenchService) {\n super();\n }\n\n active$ = this._active$.distinctUntilChanged();\n show$ = this._show$\n .map(show => (this._active$.value !== null ? show : null))\n .distinctUntilChanged();\n\n // return true if the peek view will be handled\n open = async (\n target: ActivePeekView['target'],\n template?: TemplateResult\n ) => {\n const resolvedInfo = resolvePeekInfoFromPeekTarget(target, template);\n if (!resolvedInfo) {\n return;\n }\n\n const active = this._active$.value;\n\n // if there is an active peek view and it is a doc peek view, we will navigate it first\n if (active?.info.type === 'doc' && this.show$.value?.value) {\n // TODO(@pengx17): scroll to the viewing position?\n this.workbenchService.workbench.openDoc(active.info.docId);\n }\n\n this._active$.next({ target, info: resolvedInfo });\n this._show$.next({\n value: true,\n animation:\n resolvedInfo.type === 'doc' || resolvedInfo.type === 'ai-chat-block'\n ? 'zoom'\n : 'fade',\n });\n return firstValueFrom(race(this._active$, this.show$).pipe(map(() => {})));\n };\n\n close = (animation?: PeekViewAnimation) => {\n this._show$.next({\n value: false,\n animation: animation ?? this._show$.value.animation,\n });\n };\n}\n","import { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport anime, { type AnimeInstance, type AnimeParams } from 'animejs';\nimport clsx from 'clsx';\nimport {\n createContext,\n forwardRef,\n type PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport type { PeekViewAnimation } from '../entities/peek-view';\nimport * as styles from './modal-container.css';\n\nconst contentOptions: Dialog.DialogContentProps = {\n ['data-testid' as string]: 'peek-view-modal',\n onPointerDownOutside: e => {\n const el = e.target as HTMLElement;\n if (\n el.closest('[data-peek-view-wrapper]') ||\n // workaround for slash menu click outside issue\n el.closest('affine-slash-menu')\n ) {\n e.preventDefault();\n }\n },\n onEscapeKeyDown: e => {\n // prevent closing the modal when pressing escape key by default\n // this is because radix-ui register the escape key event on the document using capture, which is not possible to prevent in blocksuite\n e.preventDefault();\n },\n};\n\n// a dummy context to let elements know they are inside a peek view\nexport const PeekViewContext = createContext | null>(\n null\n);\n\nconst emptyContext = {};\n\nexport const useInsidePeekView = () => {\n const context = useContext(PeekViewContext);\n return !!context;\n};\n\nexport type PeekViewModalContainerProps = PropsWithChildren<{\n onOpenChange: (open: boolean) => void;\n open: boolean;\n target?: HTMLElement;\n controls?: React.ReactNode;\n onAnimationStart?: () => void;\n onAnimateEnd?: () => void;\n padding?: boolean;\n animation?: PeekViewAnimation;\n testId?: string;\n /** Whether to apply shadow & bg */\n dialogFrame?: boolean;\n}>;\n\nconst PeekViewModalOverlay = 'div';\n\nexport const PeekViewModalContainer = forwardRef<\n HTMLDivElement,\n PeekViewModalContainerProps\n>(function PeekViewModalContainer(\n {\n onOpenChange,\n open,\n target,\n controls,\n children,\n onAnimationStart,\n onAnimateEnd,\n animation = 'zoom',\n padding = true,\n dialogFrame = true,\n },\n ref\n) {\n const [vtOpen, setVtOpen] = useState(open);\n const [animeState, setAnimeState] = useState<'idle' | 'ready' | 'animating'>(\n 'idle'\n );\n const contentClipRef = useRef(null);\n const contentRef = useRef(null);\n const overlayRef = useRef(null);\n const controlsRef = useRef(null);\n const prevAnimeMap = useRef>({});\n const { appSettings } = useAppSettingHelper();\n\n const animateControls = useCallback((animateIn = false) => {\n const controls = controlsRef.current;\n if (!controls) return;\n anime({\n targets: controls,\n opacity: animateIn ? [0, 1] : [1, 0],\n translateX: animateIn ? [-32, 0] : [0, -32],\n easing: 'easeOutQuad',\n duration: 230,\n });\n }, []);\n const zoomAnimate = useCallback(\n async (\n zoomIn?: boolean,\n paramsMap?: {\n overlay?: AnimeParams;\n content?: AnimeParams;\n contentWrapper?: AnimeParams;\n }\n ) => {\n return new Promise(resolve => {\n const contentClip = contentClipRef.current;\n const content = contentRef.current;\n const overlay = overlayRef.current;\n\n if (!contentClip || !content || !target || !overlay) {\n resolve();\n return;\n }\n const targets = contentClip;\n const lockSizeEl = content;\n\n const from = zoomIn ? target : contentClip;\n const to = zoomIn ? contentClip : target;\n\n const fromRect = from.getBoundingClientRect();\n const toRect = to.getBoundingClientRect();\n\n targets.style.position = 'fixed';\n targets.style.opacity = '1';\n lockSizeEl.style.width = zoomIn\n ? `${toRect.width}px`\n : `${fromRect.width}px`;\n lockSizeEl.style.height = zoomIn\n ? `${toRect.height}px`\n : `${fromRect.height}px`;\n lockSizeEl.style.overflow = 'hidden';\n overlay.style.pointerEvents = 'none';\n\n prevAnimeMap.current.overlay?.pause();\n prevAnimeMap.current.content?.pause();\n prevAnimeMap.current.contentWrapper?.pause();\n\n const overlayAnime = anime({\n targets: overlay,\n opacity: zoomIn ? [0, 1] : [1, 0],\n easing: 'easeOutQuad',\n duration: 230,\n ...paramsMap?.overlay,\n });\n\n const contentAnime =\n paramsMap?.content &&\n anime({\n targets: content,\n ...paramsMap.content,\n });\n\n const contentWrapperAnime = anime({\n targets,\n left: [fromRect.left, toRect.left],\n top: [fromRect.top, toRect.top],\n width: [fromRect.width, toRect.width],\n height: [fromRect.height, toRect.height],\n easing: 'easeOutQuad',\n duration: 230,\n ...paramsMap?.contentWrapper,\n complete: (ins: AnimeInstance) => {\n paramsMap?.contentWrapper?.complete?.(ins);\n setAnimeState('idle');\n overlay.style.pointerEvents = '';\n if (zoomIn) {\n Object.assign(targets.style, {\n position: '',\n left: '',\n top: '',\n width: '',\n height: '',\n });\n Object.assign(lockSizeEl.style, {\n width: '100%',\n height: '100%',\n overflow: '',\n });\n }\n resolve();\n },\n });\n\n prevAnimeMap.current = {\n overlay: overlayAnime,\n content: contentAnime,\n contentWrapper: contentWrapperAnime,\n };\n });\n },\n [target]\n );\n /**\n * ### Animation timeline:\n * ```plain\n * 150ms\n * ⎮ - - - - ⎮\n * dialog: +--------400ms--------+\n * controls: +-------230ms-------+\n * ⎮ - - - - - ⎮\n * controls delay =\n * 400 - 230 + 150\n * ```\n */\n const animateZoomIn = useCallback(() => {\n setAnimeState('animating');\n setVtOpen(true);\n setTimeout(() => {\n zoomAnimate(true, {\n contentWrapper: {\n opacity: [0.5, 1],\n easing: 'cubicBezier(.46,.36,0,1)',\n duration: 400,\n },\n content: {\n opacity: [0, 1],\n duration: 100,\n },\n }).catch(console.error);\n }, 0);\n setTimeout(\n () => animateControls(true),\n // controls delay: to make sure the time interval for animations of dialog and controls is 150ms.\n 400 - 230 + 150\n );\n }, [animateControls, zoomAnimate]);\n const animateZoomOut = useCallback(() => {\n setAnimeState('animating');\n animateControls(false);\n zoomAnimate(false, {\n contentWrapper: {\n easing: 'cubicBezier(.57,.25,.76,.44)',\n opacity: [1, 0.5],\n duration: 180,\n },\n content: {\n opacity: [1, 0],\n duration: 180,\n easing: 'easeOutQuad',\n },\n })\n .then(() => setVtOpen(false))\n .catch(console.error);\n }, [animateControls, zoomAnimate]);\n\n const animateFade = useCallback((animateIn: boolean) => {\n setAnimeState('animating');\n return new Promise(resolve => {\n if (animateIn) setVtOpen(true);\n setTimeout(() => {\n const overlay = overlayRef.current;\n const contentClip = contentClipRef.current;\n if (!overlay || !contentClip) {\n resolve();\n return;\n }\n anime({\n targets: [overlay, contentClip],\n opacity: animateIn ? [0, 1] : [1, 0],\n easing: 'easeOutQuad',\n duration: 230,\n complete: () => {\n if (!animateIn) setVtOpen(false);\n setAnimeState('idle');\n resolve();\n },\n });\n });\n });\n }, []);\n\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onOpenChange(false);\n }\n };\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [onOpenChange]);\n\n useEffect(() => {\n if (animation === 'zoom') {\n open ? animateZoomIn() : animateZoomOut();\n } else if (animation === 'fade') {\n animateFade(open).catch(console.error);\n } else if (animation === 'none') {\n setVtOpen(open);\n }\n }, [animateZoomOut, animation, open, target, animateZoomIn, animateFade]);\n\n return (\n \n \n \n \n \n \n
\n \n \n
\n {children}\n
\n \n
\n {controls ? (\n \n {controls}\n
\n ) : null}\n \n \n \n \n \n );\n});\n","import \"../core/src/modules/peek-view/view/modal-container.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/peek-view/view/modal-container.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61U227bMAx9z1cQAQa0DyrsJgsKFfmSIRgYi47ZyJQnyamzYf8+yHYbJ0vRYNibxMvhIXWoh+95/UMo+Ax+zQAaFziyEw0ld2SeZwAsgaKGLJ1/KhZDnYYD+julsCxZSI1WVTuD9j7FbbHY77xrxajCWecvErYWi71aZH1s41gieUUHkhg0YBvd8+z37OGd2TeDERUK16RCxEjrebpgZNnNNz1v12DB8djTnKTmtzRlODQWjxpKS10yoOWdKI5UBw0FJXbJ/NKGyOVRFU4iSZy6bpvLhNhjT+yVTaw05Fn2JaFUxLsqnu4n3p4sRj7Qf6K7dd6QVx4Nt0FD/th0id0w5waNYdmt59G3NN/Adc4F2uIuEQUFq2XT3U8buOoccZUfYpZPQ9ET/L8/8+KWaV40zVKR55g87kC+tO5VQ8XGkJxhL3vszwR9cicwi0fVoJAdgoeVcJ0KFZpU5ix3MKrFuUC+DmU/5PxJs0kbKlSeZT+q/O8mAWoW9Za5yLKml5Nro2UhDeKEPpLhlOnwbuJUv8dYpNh1Es9m3L7z/R5gJwCriyXFbXC2jX3tUSx9B9E1l9+Qyt/aGOcxqOpdbBqemg4yyCBfjY7rv80f6v2d0wcFAAA=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var dialog = '_1mqnesr4';\nexport var modalContent = '_1mqnesr5';\nexport var modalContentClip = '_1mqnesr3';\nexport var modalContentContainer = '_1mqnesr2';\nexport var modalContentWrapper = '_1mqnesr1';\nexport var modalControls = '_1mqnesr6';\nexport var modalOverlay = '_1mqnesr0';","import type { Doc } from '@toeverything/infra';\nimport {\n DocsService,\n useLiveData,\n useService,\n WorkspaceService,\n} from '@toeverything/infra';\nimport { useEffect, useLayoutEffect, useState } from 'react';\n\nexport const useDoc = (pageId: string) => {\n const currentWorkspace = useService(WorkspaceService).workspace;\n const docsService = useService(DocsService);\n const docRecordList = docsService.list;\n const docListReady = useLiveData(docRecordList.isReady$);\n const docRecord = docRecordList.doc$(pageId).value;\n\n const [doc, setDoc] = useState(null);\n\n useLayoutEffect(() => {\n if (!docRecord) {\n return;\n }\n const { doc: opened, release } = docsService.open(pageId);\n setDoc(opened);\n return () => {\n release();\n };\n }, [docRecord, docsService, pageId]);\n\n // set sync engine priority target\n useEffect(() => {\n currentWorkspace.engine.doc.setPriority(pageId, 10);\n return () => {\n currentWorkspace.engine.doc.setPriority(pageId, 5);\n };\n }, [currentWorkspace, pageId]);\n\n return { doc, workspace: currentWorkspace, loading: !docListReady };\n};\n","import { Scrollable } from '@affine/component';\nimport { PageDetailSkeleton } from '@affine/component/page-detail-skeleton';\nimport { AIProvider } from '@affine/core/blocksuite/presets/ai';\nimport { AffineErrorBoundary } from '@affine/core/components/affine/affine-error-boundary';\nimport { BlockSuiteEditor } from '@affine/core/components/blocksuite/block-suite-editor';\nimport { EditorOutlineViewer } from '@affine/core/components/blocksuite/outline-viewer';\nimport { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper';\nimport { PageNotFound } from '@affine/core/pages/404';\nimport { DebugLogger } from '@affine/debug';\nimport { type EdgelessRootService } from '@blocksuite/blocks';\nimport { Bound, DisposableGroup } from '@blocksuite/global/utils';\nimport type { AffineEditorContainer } from '@blocksuite/presets';\nimport type { DocMode } from '@toeverything/infra';\nimport { DocsService, FrameworkScope, useService } from '@toeverything/infra';\nimport clsx from 'clsx';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { WorkbenchService } from '../../../workbench';\nimport { PeekViewService } from '../../services/peek-view';\nimport { useDoc } from '../utils';\nimport * as styles from './doc-peek-view.css';\n\nconst logger = new DebugLogger('doc-peek-view');\n\nfunction fitViewport(\n editor: AffineEditorContainer,\n xywh?: `[${number},${number},${number},${number}]`\n) {\n try {\n if (!editor.host) {\n throw new Error('editor host is not ready');\n }\n\n const rootService =\n editor.host.std.spec.getService('affine:page');\n rootService.viewport.onResize();\n\n if (xywh) {\n const viewport = {\n xywh: xywh,\n padding: [60, 20, 20, 20] as [number, number, number, number],\n };\n rootService.viewport.setViewportByBound(\n Bound.deserialize(viewport.xywh),\n viewport.padding,\n false\n );\n } else {\n const data = rootService.getFitToScreenData();\n rootService.viewport.setViewport(\n data.zoom,\n [data.centerX, data.centerY],\n false\n );\n }\n } catch (e) {\n logger.warn('failed to fitViewPort', e);\n }\n}\n\nexport function DocPeekPreview({\n docId,\n blockId,\n mode,\n xywh,\n}: {\n docId: string;\n blockId?: string;\n mode?: DocMode;\n xywh?: `[${number},${number},${number},${number}]`;\n}) {\n const { doc, workspace, loading } = useDoc(docId);\n const { jumpToTag } = useNavigateHelper();\n const workbench = useService(WorkbenchService).workbench;\n const peekView = useService(PeekViewService).peekView;\n const [editor, setEditor] = useState(null);\n\n const onRef = (editor: AffineEditorContainer) => {\n setEditor(editor);\n };\n\n const docs = useService(DocsService);\n const [resolvedMode, setResolvedMode] = useState(mode);\n\n useEffect(() => {\n editor?.updateComplete\n .then(() => {\n if (resolvedMode === 'edgeless') {\n fitViewport(editor, xywh);\n }\n })\n .catch(console.error);\n return;\n }, [editor, resolvedMode, xywh]);\n\n useEffect(() => {\n if (!mode || !resolvedMode) {\n setResolvedMode(docs.list.doc$(docId).value?.mode$.value || 'page');\n }\n }, [docId, docs.list, resolvedMode, mode]);\n\n useEffect(() => {\n const disposable = AIProvider.slots.requestOpenWithChat.on(() => {\n if (doc) {\n workbench.openDoc(doc.id);\n peekView.close();\n // chat panel open is already handled in \n }\n });\n\n return () => {\n disposable.dispose();\n };\n }, [doc, peekView, workbench, workspace.id]);\n\n useEffect(() => {\n const disposableGroup = new DisposableGroup();\n if (editor) {\n editor.updateComplete\n .then(() => {\n if (!editor.host) {\n return;\n }\n\n const rootService = editor.host.std.spec.getService('affine:page');\n // doc change event inside peek view should be handled by peek view\n disposableGroup.add(\n rootService.slots.docLinkClicked.on(({ docId, blockId }) => {\n peekView.open({ docId, blockId }).catch(console.error);\n })\n );\n // TODO(@Peng): no tag peek view yet\n disposableGroup.add(\n rootService.slots.tagClicked.on(({ tagId }) => {\n jumpToTag(workspace.id, tagId);\n peekView.close();\n })\n );\n })\n .catch(console.error);\n }\n return () => {\n disposableGroup.dispose();\n };\n }, [editor, jumpToTag, peekView, workspace.id]);\n\n const openOutlinePanel = useCallback(() => {\n workbench.openDoc(docId);\n workbench.openSidebar();\n workbench.activeView$.value.activeSidebarTab('outline');\n peekView.close();\n }, [docId, peekView, workbench]);\n\n // if sync engine has been synced and the page is null, show 404 page.\n if (!doc || !resolvedMode) {\n return loading || !resolvedMode ? (\n \n ) : (\n \n );\n }\n\n return (\n \n \n \n \n \n \n \n \n\n \n \n \n );\n}\n","import \"../core/src/modules/peek-view/view/doc-preview/doc-peek-view.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/peek-view/view/doc-preview/doc-peek-view.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xcjd0Ym5pMCB7CiAgY29udGFpbmVyLXR5cGU6IGlubGluZS1zaXplOwp9Ci5fMXI3dGJuaTEgewogIC0tYWZmaW5lLWVkaXRvci1zaWRlLXBhZGRpbmc6IDE2MHB4OwogIG1pbi1oZWlnaHQ6IDEwMCU7Cn0KW2RhdGEtZnVsbC13aWR0aC1sYXlvdXQ9InRydWUiXSAuXzFyN3RibmkxIHsKICAtLWFmZmluZS1lZGl0b3Itd2lkdGg6IDEwMCU7CiAgLS1hZmZpbmUtZWRpdG9yLXNpZGUtcGFkZGluZzogMjRweDsKfQouXzFyN3RibmkyIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgY29udGFpbmVyLW5hbWU6IHZpZXdwb3J0OwogIGNvbnRhaW5lci10eXBlOiBpbmxpbmUtc2l6ZTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hZmZpbmUtYmFja2dyb3VuZC1wcmltYXJ5LWNvbG9yKTsKfQ==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var affineDocViewport = '_1r7tbni2';\nexport var editor = '_1r7tbni1';\nexport var root = '_1r7tbni0';","import type { MouseEvent as ReactMouseEvent, RefObject } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\n\ninterface UseZoomControlsProps {\n zoomRef: RefObject;\n imageRef: RefObject;\n}\n\nexport const useZoomControls = ({\n zoomRef,\n imageRef,\n}: UseZoomControlsProps) => {\n const [currentScale, setCurrentScale] = useState(1);\n const [isZoomedBigger, setIsZoomedBigger] = useState(false);\n const [isDragging, setIsDragging] = useState(false);\n const [mouseX, setMouseX] = useState(0);\n const [mouseY, setMouseY] = useState(0);\n const [dragBeforeX, setDragBeforeX] = useState(0);\n const [dragBeforeY, setDragBeforeY] = useState(0);\n const [imagePos, setImagePos] = useState<{ x: number; y: number }>({\n x: 0,\n y: 0,\n });\n\n const handleDragStart = useCallback(\n (event: ReactMouseEvent) => {\n event?.preventDefault();\n setIsDragging(true);\n const image = imageRef.current;\n if (image && isZoomedBigger) {\n image.style.cursor = 'grab';\n const rect = image.getBoundingClientRect();\n setDragBeforeX(rect.left);\n setDragBeforeY(rect.top);\n setMouseX(event.clientX);\n setMouseY(event.clientY);\n }\n },\n [imageRef, isZoomedBigger]\n );\n\n const handleDrag = useCallback(\n (event: ReactMouseEvent) => {\n event?.preventDefault();\n const image = imageRef.current;\n\n if (isDragging && image && isZoomedBigger) {\n image.style.cursor = 'grabbing';\n const currentX = imagePos.x;\n const currentY = imagePos.y;\n const newPosX = currentX + event.clientX - mouseX;\n const newPosY = currentY + event.clientY - mouseY;\n image.style.transform = `translate(${newPosX}px, ${newPosY}px)`;\n }\n },\n [\n imagePos.x,\n imagePos.y,\n imageRef,\n isDragging,\n isZoomedBigger,\n mouseX,\n mouseY,\n ]\n );\n\n const dragEndImpl = useCallback(() => {\n setIsDragging(false);\n\n const image = imageRef.current;\n if (image && isZoomedBigger && isDragging) {\n image.style.cursor = 'pointer';\n const rect = image.getBoundingClientRect();\n const newPos = { x: rect.left, y: rect.top };\n const currentX = imagePos.x;\n const currentY = imagePos.y;\n const newPosX = currentX + newPos.x - dragBeforeX;\n const newPosY = currentY + newPos.y - dragBeforeY;\n setImagePos({ x: newPosX, y: newPosY });\n }\n }, [\n dragBeforeX,\n dragBeforeY,\n imagePos.x,\n imagePos.y,\n imageRef,\n isDragging,\n isZoomedBigger,\n ]);\n\n const handleDragEnd = useCallback(\n (event: ReactMouseEvent) => {\n event.preventDefault();\n dragEndImpl();\n },\n [dragEndImpl]\n );\n\n const handleMouseUp = useCallback(\n (evt: MouseEvent) => {\n evt.preventDefault();\n if (isDragging) {\n dragEndImpl();\n }\n },\n [isDragging, dragEndImpl]\n );\n\n const checkZoomSize = useCallback(() => {\n const { current: zoomArea } = zoomRef;\n if (zoomArea) {\n const image = zoomArea.querySelector('img');\n if (image) {\n const zoomedWidth = image.naturalWidth * currentScale;\n const zoomedHeight = image.naturalHeight * currentScale;\n const containerWidth = window.innerWidth;\n const containerHeight = window.innerHeight;\n setIsZoomedBigger(\n zoomedWidth > containerWidth || zoomedHeight > containerHeight\n );\n }\n }\n }, [currentScale, zoomRef]);\n\n const zoomIn = useCallback(() => {\n const image = imageRef.current;\n\n if (image && currentScale < 2) {\n const newScale = currentScale + 0.1;\n setCurrentScale(newScale);\n image.style.width = `${image.naturalWidth * newScale}px`;\n image.style.height = `${image.naturalHeight * newScale}px`;\n }\n }, [imageRef, currentScale]);\n\n const zoomOut = useCallback(() => {\n const image = imageRef.current;\n if (image && currentScale > 0.2) {\n const newScale = currentScale - 0.1;\n setCurrentScale(newScale);\n image.style.width = `${image.naturalWidth * newScale}px`;\n image.style.height = `${image.naturalHeight * newScale}px`;\n const zoomedWidth = image.naturalWidth * newScale;\n const zoomedHeight = image.naturalHeight * newScale;\n const containerWidth = window.innerWidth;\n const containerHeight = window.innerHeight;\n if (zoomedWidth > containerWidth || zoomedHeight > containerHeight) {\n image.style.transform = `translate(0px, 0px)`;\n setImagePos({ x: 0, y: 0 });\n }\n }\n }, [imageRef, currentScale]);\n\n const resetZoom = useCallback(() => {\n const image = imageRef.current;\n if (image) {\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const margin = 0.2;\n\n const availableWidth = viewportWidth * (1 - margin);\n const availableHeight = viewportHeight * (1 - margin);\n\n const widthRatio = availableWidth / image.naturalWidth;\n const heightRatio = availableHeight / image.naturalHeight;\n\n const newScale = Math.min(widthRatio, heightRatio);\n setCurrentScale(newScale);\n image.style.width = `${image.naturalWidth * newScale}px`;\n image.style.height = `${image.naturalHeight * newScale}px`;\n image.style.transform = 'translate(0px, 0px)';\n setImagePos({ x: 0, y: 0 });\n checkZoomSize();\n }\n }, [imageRef, checkZoomSize]);\n\n const resetScale = useCallback(() => {\n const image = imageRef.current;\n if (image) {\n setCurrentScale(1);\n image.style.width = `${image.naturalWidth}px`;\n image.style.height = `${image.naturalHeight}px`;\n image.style.transform = 'translate(0px, 0px)';\n setImagePos({ x: 0, y: 0 });\n }\n }, [imageRef]);\n\n useEffect(() => {\n const handleScroll = (event: WheelEvent) => {\n event.preventDefault();\n const { deltaY } = event;\n if (deltaY > 0) {\n zoomOut();\n } else if (deltaY < 0 && currentScale < 2) {\n zoomIn();\n }\n };\n\n const handleResize = (event: UIEvent) => {\n event.preventDefault();\n checkZoomSize();\n };\n\n checkZoomSize();\n\n window.addEventListener('wheel', handleScroll, { passive: false });\n window.addEventListener('resize', handleResize);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('wheel', handleScroll);\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }, [zoomIn, zoomOut, checkZoomSize, handleMouseUp, currentScale]);\n\n return {\n zoomIn,\n zoomOut,\n resetZoom,\n resetScale,\n isZoomedBigger,\n currentScale,\n handleDragStart,\n handleDrag,\n handleDragEnd,\n };\n};\n","import \"../core/src/modules/peek-view/view/image-preview/index.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/peek-view/view/image-preview/index.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61V247aMBB95yumD5V2pRolAQJ1X/orTjwEt4kd2c6S3Yp/r+w4NyDstlqBIJ6Mx2fmzBmvTZTmL4cI/qwATiiKk6UQR9HXHysALkxdslcKxxJbZ2ClKCQRFitDIUdpUTvzr8ZYcXwluZIWpR1fXVbrLn7s49fKCCuUpMAyo8rGotstpEFLIXLPZ8HtaQQwBzRESx5Eu8Hs/gkXGvPOOVdlU8mHsBcT7fFs0rqdwO2XmdIcNdGMi8Y41J3ZqppCtN5prNxSdzFGQ8by34VWjeQUXph+IoQdj0IiOZ+ExecxMgWppM+yZpwLWUyj5I02SlOolejh5qp0lllMkStJ/Asf2Gom+zKOOCBaJwaQGSRCEtVY5/pGhOTYUojdqmK6EJL43DaHLtFgCwl21oG0jSftHqQxzfuUHpW0xIg3pJCGkpZuX89Gb/R+52DMVMmdUdUsF/bVVSqZVw7iXbfvpnID5q3HfNNS1zoZKpPcbStTsxxJhvaMKBe7azh0d//Q5T5eaNYpX0Pw9JOCNwY1MVhibvuuHM7Yf4Dpafsk21mjHGazqNdWxVoS5OYeQ3GvGA2+N+n9u9ILVlM43JX1dmr1CqxbMKoUfJ5s2DZqbdQXeVycTLXEnBhXZwpR3bq0IHY/bqGLjD1F3yB81/F23CPefCFCmiRT7QfHwCM6v99vmf+fnkmoYCVkT+kmmAYu47qFZCLrTv7xvFOYRxZCeB7uqXNxvN4Q9Hn3XTbr4eRBdpMi7KKFhN+lEL6IqlbaMqeIEQQ9qRfUHso7vecdh0oMEfJPmhbjXD+KFnnXr9aqikISRDadocP53J8/kX56SJcLMhHQhPKgF/9Z73fPcyKi2c01gIpnfYYexniTXF+c4Q1c35mX1c8KuWBgco0ogUkOT5Ns9umhbp998NnsX6zjZfTcB0+LrSXefe54+QtayFhe2gkAAA==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var captionStyle = 's06cv8d';\nexport var cursorStyle = 's06cv89';\nexport var dividerStyle = 's06cv8a';\nexport var imageBottomContainerStyle = 's06cv8c';\nexport var imageNavigationControlStyle = 's06cv84';\nexport var imagePreviewActionBarStyle = 's06cv88';\nexport var imagePreviewModalCaptionStyle = 's06cv87';\nexport var imagePreviewModalCenterStyle = 's06cv86';\nexport var imagePreviewModalCloseButtonStyle = 's06cv82';\nexport var imagePreviewModalContainerStyle = 's06cv85';\nexport var imagePreviewModalGoStyle = 's06cv83';\nexport var imagePreviewModalStyle = 's06cv80';\nexport var imagePreviewTrap = 's06cv81';\nexport var scaleIndicatorButtonStyle = 's06cv8b';\nexport var suspenseFallbackStyle = 's06cv8e';","import { toast } from '@affine/component';\nimport { Button, IconButton } from '@affine/component/ui/button';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport type { ImageBlockModel } from '@blocksuite/blocks';\nimport { assertExists } from '@blocksuite/global/utils';\nimport {\n ArrowLeftSmallIcon,\n ArrowRightSmallIcon,\n CloseIcon,\n CopyIcon,\n DeleteIcon,\n DownloadIcon,\n MinusIcon,\n PlusIcon,\n ViewBarIcon,\n} from '@blocksuite/icons/rc';\nimport type { BlockModel } from '@blocksuite/store';\nimport { useService } from '@toeverything/infra';\nimport clsx from 'clsx';\nimport { fileTypeFromBuffer } from 'file-type';\nimport { useErrorBoundary } from 'foxact/use-error-boundary';\nimport type { PropsWithChildren, ReactElement } from 'react';\nimport {\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { FallbackProps } from 'react-error-boundary';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport useSWR from 'swr';\n\nimport { PeekViewService } from '../../services/peek-view';\nimport { useDoc } from '../utils';\nimport { useZoomControls } from './hooks/use-zoom';\nimport * as styles from './index.css';\n\nconst filterImageBlock = (block: BlockModel): block is ImageBlockModel => {\n return block.flavour === 'affine:image';\n};\n\nasync function imageUrlToBlob(url: string): Promise {\n const buffer = await fetch(url).then(response => {\n return response.arrayBuffer();\n });\n\n if (!buffer) {\n console.warn('Could not get blob');\n return;\n }\n try {\n const type = await fileTypeFromBuffer(buffer);\n if (!type) {\n return;\n }\n const blob = new Blob([buffer], { type: type.mime });\n return blob;\n } catch (error) {\n console.error('Error converting image to blob', error);\n }\n return;\n}\n\nasync function copyImageToClipboard(url: string) {\n const blob = await imageUrlToBlob(url);\n if (!blob) {\n return;\n }\n try {\n await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })]);\n console.log('Image copied to clipboard');\n toast('Copied to clipboard.');\n } catch (error) {\n console.error('Error copying image to clipboard', error);\n }\n}\n\nasync function saveBufferToFile(url: string, filename: string) {\n // given input url may not have correct mime type\n const blob = await imageUrlToBlob(url);\n if (!blob) {\n return;\n }\n\n const blobUrl = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = blobUrl;\n a.download = filename;\n document.body.append(a);\n a.click();\n a.remove();\n URL.revokeObjectURL(blobUrl);\n}\n\nexport type ImagePreviewModalProps = {\n docId: string;\n blockId: string;\n};\n\nconst ImagePreviewModalImpl = ({\n docId,\n blockId,\n onBlockIdChange,\n onClose,\n}: ImagePreviewModalProps & {\n onBlockIdChange: (blockId: string) => void;\n onClose: () => void;\n}): ReactElement | null => {\n const { doc, workspace } = useDoc(docId);\n const blocksuiteDoc = doc?.blockSuiteDoc;\n const docCollection = workspace.docCollection;\n const blockModel = useMemo(() => {\n const block = blocksuiteDoc?.getBlock(blockId);\n if (!block) {\n return null;\n }\n return block.model as ImageBlockModel;\n }, [blockId, blocksuiteDoc]);\n const caption = useMemo(() => {\n return blockModel?.caption ?? '';\n }, [blockModel?.caption]);\n const [blocks, setBlocks] = useState([]);\n const [cursor, setCursor] = useState(0);\n const zoomRef = useRef(null);\n const imageRef = useRef(null);\n const {\n isZoomedBigger,\n handleDrag,\n handleDragStart,\n handleDragEnd,\n resetZoom,\n zoomIn,\n zoomOut,\n resetScale,\n currentScale,\n } = useZoomControls({ zoomRef, imageRef });\n\n const goto = useCallback(\n (index: number) => {\n const page = docCollection.getDoc(docId);\n assertExists(page);\n\n const block = blocks[index];\n\n if (!block) return;\n\n setCursor(index);\n onBlockIdChange(block.id);\n resetZoom();\n },\n [docCollection, docId, blocks, onBlockIdChange, resetZoom]\n );\n\n const deleteHandler = useCallback(\n (index: number) => {\n if (!blocksuiteDoc) {\n return;\n }\n\n let block = blocks[index];\n\n if (!block) return;\n const newBlocks = blocks.toSpliced(index, 1);\n setBlocks(newBlocks);\n\n blocksuiteDoc.deleteBlock(block);\n\n // next\n block = newBlocks[index];\n\n // prev\n if (!block) {\n index -= 1;\n block = newBlocks[index];\n\n if (!block) {\n onClose();\n return;\n }\n\n setCursor(index);\n }\n\n onBlockIdChange(block.id);\n\n resetZoom();\n },\n [blocksuiteDoc, blocks, onBlockIdChange, resetZoom, onClose]\n );\n\n const downloadHandler = useAsyncCallback(async () => {\n const url = imageRef.current?.src;\n if (url) {\n await saveBufferToFile(url, caption || blockModel?.id || 'image');\n }\n }, [caption, blockModel?.id]);\n\n const copyHandler = useAsyncCallback(async () => {\n const url = imageRef.current?.src;\n if (url) {\n await copyImageToClipboard(url);\n }\n }, []);\n\n useEffect(() => {\n if (!blockModel || !blocksuiteDoc) {\n return;\n }\n\n const prevs = blocksuiteDoc.getPrevs(blockModel).filter(filterImageBlock);\n const nexts = blocksuiteDoc.getNexts(blockModel).filter(filterImageBlock);\n\n const blocks = [...prevs, blockModel, ...nexts];\n setBlocks(blocks);\n setCursor(blocks.length ? prevs.length : 0);\n }, [setBlocks, blockModel, blocksuiteDoc]);\n\n const { data, error } = useSWR(['workspace', 'image', docId, blockId], {\n fetcher: ([_, __, pageId, blockId]) => {\n const page = docCollection.getDoc(pageId);\n assertExists(page);\n\n const block = page.getBlock(blockId);\n if (!block) {\n return null;\n }\n const blockModel = block.model as ImageBlockModel;\n return docCollection.blobSync.get(blockModel.sourceId as string);\n },\n suspense: true,\n });\n\n useEffect(() => {\n const handleKeyUp = (event: KeyboardEvent) => {\n if (!blocksuiteDoc || !blockModel) {\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n const prevBlock = blocksuiteDoc\n .getPrevs(blockModel)\n .findLast(\n (block): block is ImageBlockModel =>\n block.flavour === 'affine:image'\n );\n if (prevBlock) {\n onBlockIdChange(prevBlock.id);\n }\n } else if (event.key === 'ArrowRight') {\n const nextBlock = blocksuiteDoc\n .getNexts(blockModel)\n .find(\n (block): block is ImageBlockModel =>\n block.flavour === 'affine:image'\n );\n if (nextBlock) {\n onBlockIdChange(nextBlock.id);\n }\n } else {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n };\n\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, [blockModel, blocksuiteDoc, onBlockIdChange]);\n\n useErrorBoundary(error);\n\n const [prevData, setPrevData] = useState(() => data);\n const [url, setUrl] = useState(null);\n\n if (data === null) {\n return null;\n } else if (prevData !== data) {\n if (url) {\n URL.revokeObjectURL(url);\n }\n setUrl(URL.createObjectURL(data));\n\n setPrevData(data);\n } else if (!url) {\n setUrl(URL.createObjectURL(data));\n }\n if (!url) {\n return null;\n }\n return (\n \n
\n
\n \n
\n \n {isZoomedBigger ? null : (\n \n {caption}\n

\n )}\n
\n
\n
\n\n
\n {isZoomedBigger && caption !== '' ? (\n \n {caption}\n

\n ) : null}\n
\n }\n disabled={cursor < 1}\n onClick={() => goto(cursor - 1)}\n />\n
\n {`${blocks.length ? cursor + 1 : 0}/${blocks.length}`}\n
\n }\n disabled={cursor + 1 === blocks.length}\n onClick={() => goto(cursor + 1)}\n />\n
\n }\n onClick={() => resetZoom()}\n />\n }\n onClick={zoomOut}\n />\n \n {`${(currentScale * 100).toFixed(0)}%`}\n \n\n }\n onClick={zoomIn}\n />\n
\n }\n onClick={downloadHandler}\n />\n }\n onClick={copyHandler}\n />\n {blockModel && !blockModel.doc.readonly && (\n <>\n
\n }\n disabled={blocks.length === 0}\n onClick={() => deleteHandler(cursor)}\n variant=\"danger\"\n />\n \n )}\n
\n
\n \n );\n};\n\nconst ErrorLogger = (props: FallbackProps) => {\n console.error('image preview modal error', props.error);\n return null;\n};\n\nexport const ImagePreviewErrorBoundary = (\n props: PropsWithChildren\n): ReactElement => {\n return (\n {props.children}\n );\n};\n\nexport const ImagePreviewPeekView = (\n props: ImagePreviewModalProps\n): ReactElement | null => {\n const [blockId, setBlockId] = useState(props.blockId);\n const peekView = useService(PeekViewService).peekView;\n const onClose = useCallback(() => peekView.close(), [peekView]);\n const buttonRef = useRef(null);\n\n useEffect(() => {\n setBlockId(props.blockId);\n }, [props.blockId]);\n\n return (\n \n \n {blockId ? (\n \n ) : null}\n \n \n \n \n \n );\n};\n","import \"../core/src/modules/peek-view/view/peek-view-controls.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/peek-view/view/peek-view-controls.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xM3hsMXpkMCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGhlaWdodDogMTAwJTsKICBnYXA6IDhweDsKfQouXzEzeGwxemQxIHsKICBib3JkZXItcmFkaXVzOiA4cHg7CiAgd2lkdGg6IDMycHg7CiAgaGVpZ2h0OiAzMnB4Owp9\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var button = '_13xl1zd1';\nexport var root = '_13xl1zd0';","import { IconButton } from '@affine/component';\nimport { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper';\nimport { useI18n } from '@affine/i18n';\nimport {\n CloseIcon,\n ExpandFullIcon,\n OpenInNewIcon,\n SplitViewIcon,\n} from '@blocksuite/icons/rc';\nimport { type DocMode, useService } from '@toeverything/infra';\nimport { clsx } from 'clsx';\nimport {\n type HTMLAttributes,\n type MouseEventHandler,\n type ReactElement,\n useCallback,\n useMemo,\n} from 'react';\n\nimport { WorkbenchService } from '../../workbench';\nimport { PeekViewService } from '../services/peek-view';\nimport * as styles from './peek-view-controls.css';\nimport { useDoc } from './utils';\n\ntype ControlButtonProps = {\n nameKey: string;\n icon: ReactElement;\n name: string;\n onClick: () => void;\n};\n\nexport const ControlButton = ({\n icon,\n nameKey,\n name,\n onClick,\n}: ControlButtonProps) => {\n const handleClick: MouseEventHandler = useCallback(\n e => {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n },\n [onClick]\n );\n\n return (\n \n );\n};\n\ntype DocPeekViewControlsProps = HTMLAttributes & {\n docId: string;\n blockId?: string;\n mode?: DocMode;\n};\n\nexport const DefaultPeekViewControls = ({\n className,\n ...rest\n}: HTMLAttributes) => {\n const peekView = useService(PeekViewService).peekView;\n const t = useI18n();\n const controls = useMemo(() => {\n return [\n {\n icon: ,\n nameKey: 'close',\n name: t['com.arms.peek-view-controls.close'](),\n onClick: () => peekView.close(),\n },\n ].filter((opt): opt is ControlButtonProps => Boolean(opt));\n }, [peekView, t]);\n return (\n
\n {controls.map(option => (\n \n ))}\n
\n );\n};\n\nexport const DocPeekViewControls = ({\n docId,\n blockId,\n mode,\n className,\n ...rest\n}: DocPeekViewControlsProps) => {\n const peekView = useService(PeekViewService).peekView;\n const workbench = useService(WorkbenchService).workbench;\n const { jumpToPageBlock } = useNavigateHelper();\n const t = useI18n();\n const { doc, workspace } = useDoc(docId);\n const controls = useMemo(() => {\n return [\n {\n icon: ,\n nameKey: 'close',\n name: t['com.arms.peek-view-controls.close'](),\n onClick: () => peekView.close(),\n },\n {\n icon: ,\n name: t['com.arms.peek-view-controls.open-doc'](),\n nameKey: 'open',\n onClick: () => {\n // TODO(@Peng): for frame blocks, we should mimic \"view in edgeless\" button behavior\n blockId\n ? jumpToPageBlock(workspace.id, docId, blockId)\n : workbench.openDoc(docId);\n if (mode) {\n doc?.setMode(mode);\n }\n peekView.close('none');\n },\n },\n {\n icon: ,\n nameKey: 'new-tab',\n name: t['com.arms.peek-view-controls.open-doc-in-new-tab'](),\n onClick: () => {\n workbench.openDoc(docId, { at: 'new-tab' });\n peekView.close('none');\n },\n },\n environment.isDesktop && {\n icon: ,\n nameKey: 'split-view',\n name: t['com.arms.peek-view-controls.open-doc-in-split-view'](),\n onClick: () => {\n workbench.openDoc(docId, { at: 'beside' });\n peekView.close('none');\n },\n },\n ].filter((opt): opt is ControlButtonProps => Boolean(opt));\n }, [\n blockId,\n doc,\n docId,\n jumpToPageBlock,\n mode,\n peekView,\n t,\n workbench,\n workspace.id,\n ]);\n return (\n
\n {controls.map(option => (\n \n ))}\n
\n );\n};\n","import { toReactNode } from '@affine/component';\nimport { AIChatBlockPeekViewTemplate } from '@affine/core/blocksuite/presets/ai';\nimport { BlockComponent } from '@blocksuite/block-std';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { useEffect, useMemo } from 'react';\n\nimport type { ActivePeekView } from '../entities/peek-view';\nimport { PeekViewService } from '../services/peek-view';\nimport { DocPeekPreview } from './doc-preview';\nimport { ImagePreviewPeekView } from './image-preview';\nimport {\n PeekViewModalContainer,\n type PeekViewModalContainerProps,\n} from './modal-container';\nimport {\n DefaultPeekViewControls,\n DocPeekViewControls,\n} from './peek-view-controls';\n\nfunction renderPeekView({ info }: ActivePeekView) {\n if (info.type === 'template') {\n return toReactNode(info.template);\n }\n if (info.type === 'doc') {\n return (\n \n );\n }\n\n if (info.type === 'image') {\n return ;\n }\n\n if (info.type === 'ai-chat-block') {\n const template = AIChatBlockPeekViewTemplate(info.model, info.host);\n return toReactNode(template);\n }\n\n return null; // unreachable\n}\n\nconst renderControls = ({ info }: ActivePeekView) => {\n if (info.type === 'doc') {\n return (\n \n );\n }\n\n if (info.type === 'image') {\n return null; // image controls are rendered in the image preview\n }\n\n return ;\n};\n\nconst getRendererProps = (\n activePeekView?: ActivePeekView\n): Partial | undefined => {\n if (!activePeekView) {\n return;\n }\n\n const preview = renderPeekView(activePeekView);\n const controls = renderControls(activePeekView);\n return {\n children: preview,\n controls,\n target:\n activePeekView?.target instanceof HTMLElement\n ? activePeekView.target\n : undefined,\n padding: activePeekView.info.type !== 'image',\n dialogFrame: activePeekView.info.type !== 'image',\n };\n};\n\nexport const PeekViewManagerModal = () => {\n const peekViewEntity = useService(PeekViewService).peekView;\n const activePeekView = useLiveData(peekViewEntity.active$);\n const show = useLiveData(peekViewEntity.show$);\n\n const renderProps = useMemo(() => {\n if (!activePeekView) {\n return;\n }\n return getRendererProps(activePeekView);\n }, [activePeekView]);\n\n useEffect(() => {\n const subscription = peekViewEntity.show$.subscribe(() => {\n if (activePeekView?.target instanceof BlockComponent) {\n activePeekView.target.requestUpdate();\n }\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [activePeekView, peekViewEntity]);\n\n return (\n {\n if (!open) {\n peekViewEntity.close();\n }\n }}\n >\n {renderProps?.children}\n \n );\n};\n","import { type Framework, WorkspaceScope } from '@toeverything/infra';\n\nimport { WorkbenchService } from '../workbench';\nimport { PeekViewEntity } from './entities/peek-view';\nimport { PeekViewService } from './services/peek-view';\n\nexport function configurePeekViewModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(PeekViewService)\n .entity(PeekViewEntity, [WorkbenchService]);\n}\n\nexport { PeekViewEntity, PeekViewService };\nexport { PeekViewManagerModal, useInsidePeekView } from './view';\n","import { DebugLogger } from '@affine/debug';\nimport { WorkspaceFlavour } from '@affine/env/workspace';\nimport type { WorkspaceService } from '@toeverything/infra';\nimport {\n backoffRetry,\n catchErrorInto,\n effect,\n Entity,\n fromPromise,\n LiveData,\n mapInto,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { exhaustMap } from 'rxjs';\n\nimport { isBackendError, isNetworkError } from '../../cloud';\nimport type { WorkspacePermissionStore } from '../stores/permission';\n\nconst logger = new DebugLogger('affine:workspace-permission');\n\nexport class WorkspacePermission extends Entity {\n isOwner$ = new LiveData(null);\n isLoading$ = new LiveData(false);\n error$ = new LiveData(null);\n\n constructor(\n private readonly workspaceService: WorkspaceService,\n private readonly store: WorkspacePermissionStore\n ) {\n super();\n }\n\n revalidate = effect(\n exhaustMap(() => {\n return fromPromise(async signal => {\n if (\n this.workspaceService.workspace.flavour ===\n WorkspaceFlavour.AFFINE_CLOUD\n ) {\n return await this.store.fetchIsOwner(\n this.workspaceService.workspace.id,\n signal\n );\n } else {\n return true;\n }\n }).pipe(\n backoffRetry({\n when: isNetworkError,\n count: Infinity,\n }),\n backoffRetry({\n when: isBackendError,\n }),\n mapInto(this.isOwner$),\n catchErrorInto(this.error$, error => {\n logger.error('Failed to fetch isOwner', error);\n }),\n onStart(() => this.isLoading$.setValue(true)),\n onComplete(() => this.isLoading$.setValue(false))\n );\n })\n );\n}\n","import type { WorkspaceService, WorkspacesService } from '@toeverything/infra';\nimport { Service } from '@toeverything/infra';\n\nimport { WorkspacePermission } from '../entities/permission';\nimport type { WorkspacePermissionStore } from '../stores/permission';\n\nexport class WorkspacePermissionService extends Service {\n permission = this.framework.createEntity(WorkspacePermission);\n\n constructor(\n private readonly workspaceService: WorkspaceService,\n private readonly workspacesService: WorkspacesService,\n private readonly store: WorkspacePermissionStore\n ) {\n super();\n }\n\n async leaveWorkspace() {\n await this.store.leaveWorkspace(\n this.workspaceService.workspace.id,\n this.workspaceService.workspace.name$.value ?? ''\n );\n this.workspacesService.list.revalidate();\n }\n}\n","import type { GraphQLService } from '@affine/core/modules/cloud';\nimport { getIsOwnerQuery, leaveWorkspaceMutation } from '@affine/graphql';\nimport { Store } from '@toeverything/infra';\n\nexport class WorkspacePermissionStore extends Store {\n constructor(private readonly graphqlService: GraphQLService) {\n super();\n }\n\n async fetchIsOwner(workspaceId: string, signal?: AbortSignal) {\n const isOwner = await this.graphqlService.gql({\n query: getIsOwnerQuery,\n variables: {\n workspaceId,\n },\n context: { signal },\n });\n\n return isOwner.isOwner;\n }\n\n /**\n * @param workspaceName for send email\n */\n async leaveWorkspace(workspaceId: string, workspaceName: string) {\n await this.graphqlService.gql({\n query: leaveWorkspaceMutation,\n variables: {\n workspaceId,\n workspaceName,\n },\n });\n }\n}\n","export { WorkspacePermissionService } from './services/permission';\n\nimport { GraphQLService } from '@affine/core/modules/cloud';\nimport {\n type Framework,\n WorkspaceScope,\n WorkspaceService,\n WorkspacesService,\n} from '@toeverything/infra';\n\nimport { WorkspacePermission } from './entities/permission';\nimport { WorkspacePermissionService } from './services/permission';\nimport { WorkspacePermissionStore } from './stores/permission';\n\nexport function configurePermissionsModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(WorkspacePermissionService, [\n WorkspaceService,\n WorkspacesService,\n WorkspacePermissionStore,\n ])\n .store(WorkspacePermissionStore, [GraphQLService])\n .entity(WorkspacePermission, [WorkspaceService, WorkspacePermissionStore]);\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n// the adapter is to bridge the workspace rootdoc & native js bindings\nimport { createYProxy, type Y } from '@blocksuite/store';\nimport type { WorkspaceService } from '@toeverything/infra';\nimport { LiveData, Service } from '@toeverything/infra';\nimport { defaultsDeep } from 'lodash-es';\nimport { Observable } from 'rxjs';\n\nimport type { FavoriteService, FavoriteSupportType } from '../../favorite';\nimport {\n PagePropertyType,\n PageSystemPropertyId,\n type WorkspaceAffineProperties,\n} from './schema';\n\nconst AFFINE_PROPERTIES_ID = 'affine:workspace-properties';\n\n/**\n * WorkspacePropertiesAdapter is a wrapper for workspace properties.\n * Users should not directly access the workspace properties via yjs, but use this adapter instead.\n *\n * Question for enhancement in the future:\n * May abstract the adapter for each property type, e.g. PagePropertiesAdapter, SchemaAdapter, etc.\n * So that the adapter could be more focused and easier to maintain (like assigning default values)\n * However the properties for an abstraction may not be limited to a single yjs map.\n */\nexport class WorkspacePropertiesAdapter extends Service {\n // provides a easy-to-use interface for workspace properties\n public readonly proxy: WorkspaceAffineProperties;\n public readonly properties: Y.Map;\n public readonly properties$: LiveData;\n\n private ensuredRoot = false;\n private ensuredPages = {} as Record;\n\n get workspace() {\n return this.workspaceService.workspace;\n }\n\n constructor(public readonly workspaceService: WorkspaceService) {\n super();\n // check if properties exists, if not, create one\n const rootDoc = workspaceService.workspace.docCollection.doc;\n this.properties = rootDoc.getMap(AFFINE_PROPERTIES_ID);\n this.proxy = createYProxy(this.properties);\n\n this.properties$ = LiveData.from(\n new Observable(observer => {\n const update = () => {\n requestAnimationFrame(() => {\n observer.next(new Proxy(this.proxy, {}));\n });\n };\n update();\n this.properties.observeDeep(update);\n return () => {\n this.properties.unobserveDeep(update);\n };\n }),\n this.proxy\n );\n }\n\n public ensureRootProperties() {\n if (this.ensuredRoot) {\n return;\n }\n this.ensuredRoot = true;\n // TODO(@Peng): deal with schema change issue\n // fixme: may not to be called every time\n defaultsDeep(this.proxy, {\n schema: {\n pageProperties: {\n custom: {},\n system: {\n journal: {\n id: PageSystemPropertyId.Journal,\n name: 'Journal',\n source: 'system',\n type: PagePropertyType.Date,\n },\n tags: {\n id: PageSystemPropertyId.Tags,\n name: 'Tags',\n source: 'system',\n type: PagePropertyType.Tags,\n options:\n this.workspaceService.workspace.docCollection.meta.properties\n .tags?.options ?? [], // better use a one time migration\n },\n },\n },\n },\n pageProperties: {},\n });\n }\n\n ensurePageProperties(pageId: string) {\n this.ensureRootProperties();\n if (this.ensuredPages[pageId]) {\n return;\n }\n this.ensuredPages[pageId] = true;\n // fixme: may not to be called every time\n defaultsDeep(this.proxy.pageProperties, {\n [pageId]: {\n custom: {},\n system: {\n [PageSystemPropertyId.Journal]: {\n id: PageSystemPropertyId.Journal,\n value: false,\n },\n [PageSystemPropertyId.Tags]: {\n id: PageSystemPropertyId.Tags,\n value: [],\n },\n },\n },\n });\n }\n\n // leak some yjs abstraction to modify multiple properties at once\n transact = this.workspaceService.workspace.docCollection.doc.transact.bind(\n this.workspaceService.workspace.docCollection.doc\n );\n\n get schema() {\n return this.proxy.schema;\n }\n\n /**\n * @deprecated\n */\n get favorites() {\n return this.proxy.favorites;\n }\n\n get pageProperties() {\n return this.proxy.pageProperties;\n }\n\n // ====== utilities ======\n\n getPageProperties(pageId: string) {\n return this.pageProperties?.[pageId] ?? null;\n }\n\n getJournalPageDateString(id: string) {\n return this.pageProperties?.[id]?.system[PageSystemPropertyId.Journal]\n ?.value;\n }\n\n setJournalPageDateString(id: string, date: string) {\n this.ensurePageProperties(id);\n const pageProperties = this.pageProperties?.[id];\n pageProperties!.system[PageSystemPropertyId.Journal].value = date;\n }\n\n /**\n * After the user completes the migration, call this function to clear the favorite data\n */\n markFavoritesMigrated() {\n this.proxy.favoritesMigrated = true;\n }\n}\n\nexport class MigrationFavoriteItemsAdapter extends Service {\n constructor(private readonly adapter: WorkspacePropertiesAdapter) {\n super();\n }\n\n favorites$ = this.adapter.properties$.map(() =>\n this.getItems().filter(i => i.value)\n );\n\n migrated$ = this.adapter.properties$.map(\n props => props.favoritesMigrated ?? false\n );\n\n getItems() {\n return Object.entries(this.adapter.favorites ?? {})\n .filter(([k]) => k.includes(':'))\n .map(([, v]) => v);\n }\n\n markFavoritesMigrated() {\n this.adapter.markFavoritesMigrated();\n }\n}\n\ntype CompatibleFavoriteSupportType = FavoriteSupportType;\n\n/**\n * A service written for compatibility,with the same API as old FavoriteItemsAdapter.\n */\nexport class CompatibleFavoriteItemsAdapter extends Service {\n constructor(private readonly favoriteService: FavoriteService) {\n super();\n }\n\n toggle(id: string, type: CompatibleFavoriteSupportType) {\n this.favoriteService.favoriteList.toggle(type, id);\n }\n\n isFavorite$(id: string, type: CompatibleFavoriteSupportType) {\n return this.favoriteService.favoriteList.isFavorite$(type, id);\n }\n\n isFavorite(id: string, type: CompatibleFavoriteSupportType) {\n return this.favoriteService.favoriteList.isFavorite$(type, id).value;\n }\n\n get favorites$() {\n return this.favoriteService.favoriteList.list$.map<\n {\n id: string;\n order: string;\n type: 'doc' | 'collection';\n value: boolean;\n }[]\n >(v =>\n v\n .filter(i => i.type === 'doc' || i.type === 'collection') // only support doc and collection\n .map(i => ({\n id: i.id,\n order: '',\n type: i.type as 'doc' | 'collection',\n value: true,\n }))\n );\n }\n}\n","import type { Tag } from '@affine/env/filter';\nimport type { DocsPropertiesMeta } from '@blocksuite/store';\nimport type { WorkspaceService } from '@toeverything/infra';\nimport { LiveData, Service } from '@toeverything/infra';\nimport { Observable } from 'rxjs';\n\n/**\n * @deprecated use WorkspacePropertiesAdapter instead (later)\n */\nexport class WorkspaceLegacyProperties extends Service {\n constructor(private readonly workspaceService: WorkspaceService) {\n super();\n }\n\n get workspaceId() {\n return this.workspaceService.workspace.id;\n }\n\n get properties() {\n return this.workspaceService.workspace.docCollection.meta.properties;\n }\n get tagOptions() {\n return this.properties.tags?.options ?? [];\n }\n\n updateProperties = (properties: DocsPropertiesMeta) => {\n this.workspaceService.workspace.docCollection.meta.setProperties(\n properties\n );\n };\n\n subscribe(cb: () => void) {\n const disposable =\n this.workspaceService.workspace.docCollection.meta.docMetaUpdated.on(cb);\n return disposable.dispose;\n }\n\n properties$ = LiveData.from(\n new Observable(sub => {\n return this.subscribe(() => sub.next(this.properties));\n }),\n this.properties\n );\n\n tagOptions$ = LiveData.from(\n new Observable(sub => {\n return this.subscribe(() => sub.next(this.tagOptions));\n }),\n this.tagOptions\n );\n\n updateTagOptions = (options: Tag[]) => {\n this.updateProperties({\n ...this.properties,\n tags: {\n options,\n },\n });\n };\n\n updateTagOption = (id: string, option: Tag) => {\n this.updateTagOptions(this.tagOptions.map(o => (o.id === id ? option : o)));\n };\n\n removeTagOption = (id: string) => {\n this.workspaceService.workspace.docCollection.doc.transact(() => {\n this.updateTagOptions(this.tagOptions.filter(o => o.id !== id));\n // need to remove tag from all pages\n this.workspaceService.workspace.docCollection.docs.forEach(doc => {\n const tags = doc.meta?.tags ?? [];\n if (tags.includes(id)) {\n this.updatePageTags(\n doc.id,\n tags.filter(t => t !== id)\n );\n }\n });\n });\n };\n\n updatePageTags = (pageId: string, tags: string[]) => {\n this.workspaceService.workspace.docCollection.setDocMeta(pageId, {\n tags,\n });\n };\n}\n","export {\n CompatibleFavoriteItemsAdapter,\n MigrationFavoriteItemsAdapter,\n WorkspacePropertiesAdapter,\n} from './services/adapter';\nexport { WorkspaceLegacyProperties } from './services/legacy-properties';\n\nimport {\n type Framework,\n WorkspaceScope,\n WorkspaceService,\n} from '@toeverything/infra';\n\nimport { FavoriteService } from '../favorite';\nimport {\n CompatibleFavoriteItemsAdapter,\n MigrationFavoriteItemsAdapter,\n WorkspacePropertiesAdapter,\n} from './services/adapter';\nimport { WorkspaceLegacyProperties } from './services/legacy-properties';\n\nexport function configureWorkspacePropertiesModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(WorkspaceLegacyProperties, [WorkspaceService])\n .service(WorkspacePropertiesAdapter, [WorkspaceService])\n .service(MigrationFavoriteItemsAdapter, [WorkspacePropertiesAdapter])\n .service(CompatibleFavoriteItemsAdapter, [FavoriteService]);\n}\n","import { z } from 'zod';\n\n// ===== workspace-wide page property schema =====\nexport const TagOptionSchema = z.object({\n id: z.string(),\n name: z.string(),\n color: z.string(),\n});\n\nexport type TagOption = z.infer;\n\nexport enum PageSystemPropertyId {\n Tags = 'tags',\n Journal = 'journal',\n}\n\nexport enum PagePropertyType {\n Text = 'text',\n Number = 'number',\n Date = 'date',\n Progress = 'progress',\n Checkbox = 'checkbox',\n Tags = 'tags',\n}\n\nexport const PagePropertyMetaBaseSchema = z.object({\n id: z.string(),\n name: z.string(),\n source: z.string(),\n type: z.nativeEnum(PagePropertyType),\n icon: z.string(),\n required: z.boolean().optional(),\n});\n\nexport const PageSystemPropertyMetaBaseSchema =\n PagePropertyMetaBaseSchema.extend({\n source: z.literal('system'),\n });\n\nexport const PageCustomPropertyMetaSchema = PagePropertyMetaBaseSchema.extend({\n source: z.literal('custom'),\n order: z.number(),\n});\n\n// ====== page info schema ======\nexport const PageInfoItemSchema = z.object({\n id: z.string(), // property id. Maps to PagePropertyMetaSchema.id\n visibility: z.enum(['visible', 'hide', 'hide-if-empty']),\n value: z.any(), // corresponds to PagePropertyMetaSchema.type\n});\n\nexport const PageInfoJournalItemSchema = PageInfoItemSchema.extend({\n id: z.literal(PageSystemPropertyId.Journal),\n value: z.union([z.string(), z.literal(false)]),\n});\n\nexport const PageInfoTagsItemSchema = PageInfoItemSchema.extend({\n id: z.literal(PageSystemPropertyId.Tags),\n value: z.array(z.string()),\n});\n\nexport type PageInfoTagsItem = z.infer;\n\n// ====== workspace properties schema ======\nexport const WorkspaceFavoriteItemSchema = z.object({\n id: z.string(),\n order: z.string(),\n type: z.enum(['doc', 'collection']),\n value: z.boolean(),\n});\n\nexport type WorkspaceFavoriteItem = z.infer;\n\nconst WorkspaceAffinePropertiesSchemaSchema = z.object({\n pageProperties: z.object({\n custom: z.record(PageCustomPropertyMetaSchema),\n system: z.object({\n [PageSystemPropertyId.Journal]: PageSystemPropertyMetaBaseSchema.extend({\n id: z.literal(PageSystemPropertyId.Journal),\n type: z.literal(PagePropertyType.Date),\n }),\n [PageSystemPropertyId.Tags]: PagePropertyMetaBaseSchema.extend({\n id: z.literal(PageSystemPropertyId.Tags),\n type: z.literal(PagePropertyType.Tags),\n options: z.array(TagOptionSchema),\n }),\n }),\n }),\n});\n\nconst PageInfoCustomPropertyItemSchema = PageInfoItemSchema.extend({\n order: z.string(),\n});\n\nconst WorkspacePagePropertiesSchema = z.object({\n custom: z.record(PageInfoCustomPropertyItemSchema),\n system: z.object({\n [PageSystemPropertyId.Journal]: PageInfoJournalItemSchema,\n [PageSystemPropertyId.Tags]: PageInfoTagsItemSchema,\n }),\n});\n\nexport const WorkspaceAffinePropertiesSchema = z.object({\n schema: WorkspaceAffinePropertiesSchemaSchema.optional(),\n favorites: z.record(WorkspaceFavoriteItemSchema).optional(),\n pageProperties: z.record(WorkspacePagePropertiesSchema).optional(),\n favoritesMigrated: z.boolean().optional(),\n});\n\nexport type PageInfoCustomPropertyMeta = z.infer<\n typeof PageCustomPropertyMetaSchema\n>;\n\nexport type WorkspaceAffineProperties = z.infer<\n typeof WorkspaceAffinePropertiesSchema\n>;\n\nexport type PageInfoCustomProperty = z.infer<\n typeof PageInfoCustomPropertyItemSchema\n>;\n\nexport type WorkspaceAffinePageProperties = z.infer<\n typeof WorkspacePagePropertiesSchema\n>;\n","import { ViewLayersIcon } from '@blocksuite/icons/rc';\nimport { Entity, LiveData } from '@toeverything/infra';\nimport Fuse from 'fuse.js';\n\nimport type { CollectionService } from '../../collection';\nimport type { QuickSearchSession } from '../providers/quick-search-provider';\nimport type { QuickSearchGroup } from '../types/group';\nimport type { QuickSearchItem } from '../types/item';\nimport { highlighter } from '../utils/highlighter';\n\nconst group = {\n id: 'collections',\n label: {\n key: 'com.arms.cmdk.affine.category.affine.collections',\n },\n score: 10,\n} as QuickSearchGroup;\n\nexport class CollectionsQuickSearchSession\n extends Entity\n implements QuickSearchSession<'collections', { collectionId: string }>\n{\n constructor(private readonly collectionService: CollectionService) {\n super();\n }\n\n query$ = new LiveData('');\n\n items$: LiveData[]> =\n LiveData.computed(get => {\n const query = get(this.query$);\n\n const collections = get(this.collectionService.collections$);\n\n const fuse = new Fuse(collections, {\n keys: ['name'],\n includeMatches: true,\n includeScore: true,\n ignoreLocation: true,\n threshold: 0.0,\n });\n\n const result = fuse.search(query);\n\n return result.map<\n QuickSearchItem<'collections', { collectionId: string }>\n >(({ item, matches, score = 1 }) => {\n const nomalizedRange = ([start, end]: [number, number]) =>\n [\n start,\n end + 1 /* in fuse, the `end` is different from the `substring` */,\n ] as [number, number];\n const titleMatches = matches\n ?.filter(match => match.key === 'name')\n .flatMap(match => match.indices.map(nomalizedRange));\n\n return {\n id: 'collection:' + item.id,\n source: 'collections',\n label: {\n title: (highlighter(item.name, '', '', titleMatches ?? []) ??\n item.name) || {\n key: 'Untitled',\n },\n },\n group,\n score:\n 1 -\n score /* in fuse, the smaller the score, the better the match, so we need to reverse it */,\n icon: ViewLayersIcon,\n payload: { collectionId: item.id },\n };\n });\n });\n\n query(query: string) {\n this.query$.next(query);\n }\n}\n","import {\n type AffineCommand,\n AffineCommandRegistry,\n type CommandCategory,\n PreconditionStrategy,\n} from '@affine/core/commands';\nimport type { DocMode, GlobalContextService } from '@toeverything/infra';\nimport { Entity, LiveData } from '@toeverything/infra';\nimport Fuse from 'fuse.js';\n\nimport type { QuickSearchSession } from '../providers/quick-search-provider';\nimport type { QuickSearchGroup } from '../types/group';\nimport type { QuickSearchItem } from '../types/item';\nimport { highlighter } from '../utils/highlighter';\n\nconst categories = {\n 'affine:recent': {\n id: 'command:affine:recent',\n label: { key: 'com.arms.cmdk.affine.category.affine.recent' },\n score: 10,\n },\n 'affine:navigation': {\n id: 'command:affine:navigation',\n label: {\n key: 'com.arms.cmdk.affine.category.affine.navigation',\n },\n score: 10,\n },\n 'affine:creation': {\n id: 'command:affine:creation',\n label: { key: 'com.arms.cmdk.affine.category.affine.creation' },\n score: 10,\n },\n 'affine:general': {\n id: 'command:affine:general',\n label: { key: 'com.arms.cmdk.affine.category.affine.general' },\n score: 10,\n },\n 'affine:layout': {\n id: 'command:affine:layout',\n label: { key: 'com.arms.cmdk.affine.category.affine.layout' },\n score: 10,\n },\n 'affine:pages': {\n id: 'command:affine:pages',\n label: { key: 'com.arms.cmdk.affine.category.affine.pages' },\n score: 10,\n },\n 'affine:edgeless': {\n id: 'command:affine:edgeless',\n label: { key: 'com.arms.cmdk.affine.category.affine.edgeless' },\n score: 10,\n },\n 'affine:collections': {\n id: 'command:affine:collections',\n label: {\n key: 'com.arms.cmdk.affine.category.affine.collections',\n },\n score: 10,\n },\n 'affine:settings': {\n id: 'command:affine:settings',\n label: { key: 'com.arms.cmdk.affine.category.affine.settings' },\n score: 10,\n },\n 'affine:updates': {\n id: 'command:affine:updates',\n label: { key: 'com.arms.cmdk.affine.category.affine.updates' },\n score: 10,\n },\n 'affine:help': {\n id: 'command:affine:help',\n label: { key: 'com.arms.cmdk.affine.category.affine.help' },\n score: 10,\n },\n 'editor:edgeless': {\n id: 'command:editor:edgeless',\n label: { key: 'com.arms.cmdk.affine.category.editor.edgeless' },\n score: 10,\n },\n 'editor:insert-object': {\n id: 'command:editor:insert-object',\n label: { key: 'com.arms.cmdk.affine.category.editor.insert-object' },\n score: 10,\n },\n 'editor:page': {\n id: 'command:editor:page',\n label: { key: 'com.arms.cmdk.affine.category.editor.page' },\n score: 10,\n },\n 'affine:results': {\n id: 'command:affine:results',\n label: { key: 'com.arms.cmdk.affine.category.results' },\n score: 10,\n },\n} satisfies Required<{\n [key in CommandCategory]: QuickSearchGroup & { id: `command:${key}` };\n}>;\n\nfunction filterCommandByContext(\n command: AffineCommand,\n context: {\n docMode: DocMode | undefined;\n }\n) {\n if (command.preconditionStrategy === PreconditionStrategy.Always) {\n return true;\n }\n if (command.preconditionStrategy === PreconditionStrategy.InEdgeless) {\n return context.docMode === 'edgeless';\n }\n if (command.preconditionStrategy === PreconditionStrategy.InPaper) {\n return context.docMode === 'page';\n }\n if (command.preconditionStrategy === PreconditionStrategy.InPaperOrEdgeless) {\n return !!context.docMode;\n }\n if (command.preconditionStrategy === PreconditionStrategy.Never) {\n return false;\n }\n if (typeof command.preconditionStrategy === 'function') {\n return command.preconditionStrategy();\n }\n return true;\n}\n\nfunction getAllCommand(context: { docMode: DocMode | undefined }) {\n const commands = AffineCommandRegistry.getAll();\n return commands.filter(command => {\n return filterCommandByContext(command, context);\n });\n}\n\nexport class CommandsQuickSearchSession\n extends Entity\n implements QuickSearchSession<'commands', AffineCommand>\n{\n constructor(private readonly contextService: GlobalContextService) {\n super();\n }\n\n query$ = new LiveData('');\n\n items$ = LiveData.computed(get => {\n const query = get(this.query$);\n const docMode =\n get(this.contextService.globalContext.docMode.$) ?? undefined;\n const commands = getAllCommand({ docMode });\n\n const fuse = new Fuse(commands, {\n keys: [{ name: 'label.title', weight: 2 }, 'label.subTitle'],\n includeMatches: true,\n includeScore: true,\n ignoreLocation: true,\n threshold: 0.0,\n });\n\n const result = query\n ? fuse.search(query)\n : commands.map(item => ({ item, matches: [], score: 0 }));\n\n return result.map>(\n ({ item, matches, score = 1 }) => {\n const normalizedRange = ([start, end]: [number, number]) =>\n [\n start,\n end + 1 /* in fuse, the `end` is different from the `substring` */,\n ] as [number, number];\n const titleMatches = matches\n ?.filter(match => match.key === 'label.title')\n .flatMap(match => match.indices.map(normalizedRange));\n const subTitleMatches = matches\n ?.filter(match => match.key === 'label.subTitle')\n .flatMap(match => match.indices.map(normalizedRange));\n\n return {\n id: 'command:' + item.id,\n source: 'commands',\n label: {\n title:\n highlighter(\n item.label.title,\n '',\n '',\n titleMatches ?? []\n ) ?? item.label.title,\n subTitle: item.label.subTitle\n ? highlighter(\n item.label.subTitle,\n '',\n '',\n subTitleMatches ?? []\n ) ?? item.label.subTitle\n : undefined,\n },\n group: categories[item.category],\n score:\n 1 -\n score /* in fuse, the smaller the score, the better the match, so we need to reverse it */,\n icon: item.icon,\n keyBinding: item.keyBinding?.binding,\n payload: item,\n };\n }\n );\n });\n\n query(query: string) {\n this.query$.next(query);\n }\n}\n","import { EdgelessIcon, PageIcon } from '@blocksuite/icons/rc';\nimport { type DocMode, Entity, LiveData } from '@toeverything/infra';\n\nimport type { QuickSearchSession } from '../providers/quick-search-provider';\nimport type { QuickSearchGroup } from '../types/group';\nimport type { QuickSearchItem } from '../types/item';\n\nconst group = {\n id: 'creation',\n label: { key: 'com.arms.quicksearch.group.creation' },\n score: 0,\n} as QuickSearchGroup;\n\nexport class CreationQuickSearchSession\n extends Entity\n implements QuickSearchSession<'creation', { title: string; mode: DocMode }>\n{\n query$ = new LiveData('');\n\n items$ = LiveData.computed(get => {\n const query = get(this.query$);\n\n if (!query.trim()) {\n return [];\n }\n\n return [\n {\n id: 'creation:create-page',\n source: 'creation',\n label: {\n key: 'com.arms.cmdk.affine.create-new-page-as',\n options: { keyWord: query },\n },\n group,\n icon: PageIcon,\n payload: { mode: 'edgeless', title: query },\n },\n {\n id: 'creation:create-edgeless',\n source: 'creation',\n label: {\n key: 'com.arms.cmdk.affine.create-new-edgeless-as',\n options: { keyWord: query },\n },\n group,\n icon: EdgelessIcon,\n payload: { mode: 'edgeless', title: query },\n },\n ] as QuickSearchItem<'creation', { title: string; mode: DocMode }>[];\n });\n\n query(query: string) {\n this.query$.next(query);\n }\n}\n","import type { DocRecord, DocsService } from '@toeverything/infra';\nimport {\n effect,\n Entity,\n LiveData,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { truncate } from 'lodash-es';\nimport { EMPTY, map, mergeMap, of, switchMap } from 'rxjs';\n\nimport type { DocsSearchService } from '../../docs-search';\nimport { resolveLinkToDoc } from '../../navigation';\nimport type { QuickSearchSession } from '../providers/quick-search-provider';\nimport type { DocDisplayMetaService } from '../services/doc-display-meta';\nimport type { QuickSearchItem } from '../types/item';\n\ninterface DocsPayload {\n docId: string;\n title?: string;\n blockId?: string | undefined;\n blockContent?: string | undefined;\n}\n\nexport class DocsQuickSearchSession\n extends Entity\n implements QuickSearchSession<'docs', DocsPayload>\n{\n constructor(\n private readonly docsSearchService: DocsSearchService,\n private readonly docsService: DocsService,\n private readonly docDisplayMetaService: DocDisplayMetaService\n ) {\n super();\n }\n\n private readonly isIndexerLoading$ =\n this.docsSearchService.indexer.status$.map(({ remaining }) => {\n return remaining === undefined || remaining > 0;\n });\n\n private readonly isQueryLoading$ = new LiveData(false);\n\n isLoading$ = LiveData.computed(get => {\n return get(this.isIndexerLoading$) || get(this.isQueryLoading$);\n });\n\n query$ = new LiveData('');\n\n items$ = new LiveData[]>([]);\n\n query = effect(\n switchMap((query: string) => {\n let out;\n if (!query) {\n out = of([] as QuickSearchItem<'docs', DocsPayload>[]);\n } else {\n out = this.docsSearchService.search$(query).pipe(\n map(docs => {\n const resolvedDoc = resolveLinkToDoc(query);\n if (\n resolvedDoc &&\n !docs.some(doc => doc.docId === resolvedDoc.docId)\n ) {\n return [\n {\n docId: resolvedDoc.docId,\n score: 100,\n blockId: resolvedDoc.blockId,\n blockContent: '',\n },\n ...docs,\n ];\n } else {\n return docs;\n }\n }),\n map(docs =>\n docs\n .map(doc => {\n const docRecord = this.docsService.list.doc$(doc.docId).value;\n return [doc, docRecord] as const;\n })\n .filter(\n (props): props is [(typeof props)[0], DocRecord] => !!props[1]\n )\n .map(([doc, docRecord]) => {\n const { title, icon, updatedDate } =\n this.docDisplayMetaService.getDocDisplayMeta(\n docRecord,\n 'title' in doc ? doc.title : undefined\n );\n return {\n id: 'doc:' + docRecord.id,\n source: 'docs',\n group: {\n id: 'docs',\n label: {\n key: 'com.arms.quicksearch.group.searchfor',\n options: { query: truncate(query) },\n },\n score: 5,\n },\n label: {\n title: title,\n subTitle: doc.blockContent,\n },\n score: doc.score,\n icon,\n timestamp: updatedDate,\n payload: doc,\n } as QuickSearchItem<'docs', DocsPayload>;\n })\n )\n );\n }\n return out.pipe(\n mergeMap((items: QuickSearchItem<'docs', DocsPayload>[]) => {\n this.items$.next(items);\n this.isQueryLoading$.next(false);\n return EMPTY;\n }),\n onStart(() => {\n this.items$.next([]);\n this.isQueryLoading$.next(true);\n }),\n onComplete(() => {})\n );\n })\n );\n\n // TODO(@EYHN): load more\n\n setQuery(query: string) {\n this.query$.next(query);\n }\n}\n","import { Entity, LiveData } from '@toeverything/infra';\n\nimport type { QuickSearchSession } from '../providers/quick-search-provider';\nimport type { DocDisplayMetaService } from '../services/doc-display-meta';\nimport type { RecentDocsService } from '../services/recent-pages';\nimport type { QuickSearchGroup } from '../types/group';\nimport type { QuickSearchItem } from '../types/item';\n\nconst group = {\n id: 'recent-docs',\n label: {\n key: 'com.arms.cmdk.affine.category.affine.recent',\n },\n score: 15,\n} as QuickSearchGroup;\n\nexport class RecentDocsQuickSearchSession\n extends Entity\n implements QuickSearchSession<'recent-doc', { docId: string }>\n{\n constructor(\n private readonly recentDocsService: RecentDocsService,\n private readonly docDisplayMetaService: DocDisplayMetaService\n ) {\n super();\n }\n\n query$ = new LiveData('');\n\n items$: LiveData[]> =\n LiveData.computed(get => {\n const query = get(this.query$);\n\n if (query) {\n return []; /* recent docs only for empty query */\n }\n\n const docRecords = this.recentDocsService.getRecentDocs();\n\n return docRecords\n .filter(doc => !get(doc.trash$))\n .map>(docRecord => {\n const { title, icon } =\n this.docDisplayMetaService.getDocDisplayMeta(docRecord);\n\n return {\n id: 'recent-doc:' + docRecord.id,\n source: 'recent-doc',\n group: group,\n label: {\n title: title,\n },\n score: 0,\n icon,\n timestamp: docRecord.meta$.value.updatedDate,\n payload: { docId: docRecord.id },\n };\n });\n });\n\n query(query: string) {\n this.query$.next(query);\n }\n}\n","import { Entity, LiveData } from '@toeverything/infra';\nimport { mean } from 'lodash-es';\n\nimport type {\n QuickSearchSession,\n QuickSearchSource,\n QuickSearchSourceItemType,\n} from '../providers/quick-search-provider';\nimport type { QuickSearchItem } from '../types/item';\nimport type { QuickSearchOptions } from '../types/options';\n\nexport class QuickSearch extends Entity {\n constructor() {\n super();\n }\n private readonly state$ = new LiveData<{\n query: string;\n sessions: QuickSearchSession[];\n options: QuickSearchOptions;\n callback: (result: QuickSearchItem | null) => void;\n } | null>(null);\n\n readonly items$ = this.state$\n .map(s => s?.sessions.map(session => session.items$) ?? [])\n .flat()\n .map(items => items.flat());\n\n readonly show$ = this.state$.map(s => !!s);\n\n readonly options$ = this.state$.map(s => s?.options);\n\n readonly isLoading$ = this.state$\n .map(\n s =>\n s?.sessions.map(session => session.isLoading$ ?? new LiveData(false)) ??\n []\n )\n .flat()\n .map(items => items.reduce((acc, item) => acc || item, false));\n\n readonly loadingProgress$ = this.state$\n .map(\n s =>\n s?.sessions.map(\n session =>\n (session.loadingProgress$ ?? new LiveData(null)) as LiveData<\n number | null\n >\n ) ?? []\n )\n .flat()\n .map(items => mean(items.filter((v): v is number => v === null)));\n\n show = (\n sources: Sources,\n cb: (result: QuickSearchSourceItemType | null) => void,\n options: QuickSearchOptions = {}\n ) => {\n if (this.state$.value) {\n this.hide();\n }\n\n const sessions = sources.map((source: QuickSearchSource) => {\n if (typeof source === 'function') {\n const items$ = new LiveData[]>([]);\n return {\n items$,\n query: (query: string) => {\n items$.next(source(query));\n },\n } as QuickSearchSession;\n } else {\n return source as QuickSearchSession;\n }\n });\n sessions.forEach(session => {\n session.query?.(options.defaultQuery || '');\n });\n this.state$.next({\n query: options.defaultQuery ?? '',\n options,\n sessions: sessions,\n callback: cb as any,\n });\n };\n\n query$ = this.state$.map(s => s?.query || '');\n\n setQuery = (query: string) => {\n if (!this.state$.value) return;\n this.state$.next({\n ...this.state$.value,\n query,\n });\n this.state$.value.sessions.forEach(session => session.query?.(query));\n };\n\n hide() {\n if (this.state$.value) {\n this.state$.value.sessions.forEach(session => session.dispose?.());\n this.state$.value.callback?.(null);\n }\n\n this.state$.next(null);\n }\n\n submit(result: QuickSearchItem | null) {\n if (this.state$.value?.callback) {\n this.state$.value.callback(result);\n }\n this.state$.next(null);\n }\n}\n","import { i18nTime } from '@affine/i18n';\nimport { EdgelessIcon, PageIcon, TodayIcon } from '@blocksuite/icons/rc';\nimport type { DocRecord } from '@toeverything/infra';\nimport { Service } from '@toeverything/infra';\n\nimport type { WorkspacePropertiesAdapter } from '../../properties';\n\nexport class DocDisplayMetaService extends Service {\n constructor(private readonly propertiesAdapter: WorkspacePropertiesAdapter) {\n super();\n }\n\n getDocDisplayMeta(docRecord: DocRecord, originalTitle?: string) {\n const journalDateString = this.propertiesAdapter.getJournalPageDateString(\n docRecord.id\n );\n const icon = journalDateString\n ? TodayIcon\n : docRecord.mode$.value === 'edgeless'\n ? EdgelessIcon\n : PageIcon;\n\n const title = journalDateString\n ? i18nTime(journalDateString, { absolute: { accuracy: 'day' } })\n : originalTitle ||\n docRecord.meta$.value.title ||\n ({\n key: 'Untitled',\n } as const);\n\n return {\n title: title,\n icon: icon,\n updatedDate: docRecord.meta$.value.updatedDate,\n };\n }\n}\n","import { Service } from '@toeverything/infra';\n\nimport { QuickSearch } from '../entities/quick-search';\n\nexport class QuickSearchService extends Service {\n public readonly quickSearch = this.framework.createEntity(QuickSearch);\n}\n","import type {\n DocRecord,\n DocsService,\n WorkspaceLocalState,\n} from '@toeverything/infra';\nimport { Service } from '@toeverything/infra';\n\nconst RECENT_PAGES_LIMIT = 3; // adjust this?\nconst RECENT_PAGES_KEY = 'recent-pages';\n\nconst EMPTY_ARRAY: string[] = [];\n\nexport class RecentDocsService extends Service {\n constructor(\n private readonly localState: WorkspaceLocalState,\n private readonly docsService: DocsService\n ) {\n super();\n }\n\n addRecentDoc(pageId: string) {\n let recentPages = this.getRecentDocIds();\n recentPages = recentPages.filter(id => id !== pageId);\n if (recentPages.length >= RECENT_PAGES_LIMIT) {\n recentPages.pop();\n }\n recentPages.unshift(pageId);\n this.localState.set(RECENT_PAGES_KEY, recentPages);\n }\n\n getRecentDocs() {\n const docs = this.docsService.list.docs$.value;\n return this.getRecentDocIds()\n .map(id => docs.find(doc => doc.id === id))\n .filter((d): d is DocRecord => !!d);\n }\n\n private getRecentDocIds() {\n return (\n this.localState.get(RECENT_PAGES_KEY) || EMPTY_ARRAY\n );\n }\n}\n","import { Fragment, useMemo } from 'react';\n\nimport * as styles from './highlight-text.css';\n\ntype HighlightProps = {\n text: string;\n start: string;\n end: string;\n};\n\nexport const HighlightText = ({ text = '', end, start }: HighlightProps) => {\n const parts = useMemo(\n () =>\n text.split(start).flatMap(part => {\n if (part.includes(end)) {\n const [highlighted, ...ending] = part.split(end);\n\n return [\n {\n h: highlighted,\n },\n ending.join(),\n ];\n } else {\n return part;\n }\n }),\n [end, start, text]\n );\n\n return (\n \n {parts.map((part, i) =>\n typeof part === 'string' ? (\n {part}\n ) : (\n \n {part.h}\n \n )\n )}\n \n );\n};\n","import \"../core/src/modules/quicksearch/views/highlight-text.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/quicksearch/views/highlight-text.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xZHhvcG9sMCB7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwp9Ci5fMWR4b3BvbDEgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogIGNvbG9yOiB2YXIoLS1hZmZpbmUtcHJpbWFyeS1jb2xvcik7CiAgd2hpdGUtc3BhY2U6IHByZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIGZsZXgtc2hyaW5rOiAwOwogIG1heC13aWR0aDogMzYwcHg7Cn0=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var highlightKeyword = '_1dxopol1';\nexport var highlightText = '_1dxopol0';","import { Loading } from '@affine/component/ui/loading';\nimport { i18nTime, isI18nString, useI18n } from '@affine/i18n';\nimport clsx from 'clsx';\nimport { Command } from 'cmdk';\nimport {\n type ReactNode,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\n\nimport type { QuickSearchGroup } from '../types/group';\nimport type { QuickSearchItem } from '../types/item';\nimport * as styles from './cmdk.css';\nimport { HighlightText } from './highlight-text';\n\ntype Groups = { group?: QuickSearchGroup; items: QuickSearchItem[] }[];\n\nexport const CMDK = ({\n className,\n query,\n groups: newGroups = [],\n inputLabel,\n placeholder,\n loading: newLoading = false,\n loadingProgress,\n onQueryChange,\n onSubmit,\n}: React.PropsWithChildren<{\n className?: string;\n query: string;\n inputLabel?: ReactNode;\n placeholder?: string;\n loading?: boolean;\n loadingProgress?: number;\n groups?: Groups;\n onSubmit?: (item: QuickSearchItem) => void;\n onQueryChange?: (query: string) => void;\n}>) => {\n const [opening, setOpening] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const [{ groups, selectedValue }, dispatch] = useReducer(\n (\n state: {\n groups: Groups;\n selectedValue: string;\n },\n action:\n | { type: 'select'; payload: string }\n | { type: 'reset-select' }\n | { type: 'update-groups'; payload: Groups }\n ) => {\n // control the currently selected item so that when the item list changes, the selected item remains controllable\n if (action.type === 'select') {\n return {\n ...state,\n selectedValue: action.payload,\n };\n }\n if (action.type === 'reset-select') {\n // reset selected item to the first item\n const firstItem = state.groups.at(0)?.items.at(0)?.id;\n return {\n ...state,\n selectedValue: firstItem ?? '',\n };\n }\n if (action.type === 'update-groups') {\n const prevGroups = state.groups;\n const prevSelectedValue = state.selectedValue;\n\n const prevFirstItem = prevGroups.at(0)?.items.at(0)?.id;\n const newFirstItem = action.payload.at(0)?.items.at(0)?.id;\n const isSelectingFirstItem = prevSelectedValue === prevFirstItem;\n // if previous selected item is the first item, select the new first item\n if (isSelectingFirstItem) {\n return {\n ...state,\n groups: action.payload,\n selectedValue: newFirstItem ?? '',\n };\n }\n\n const selectedExists = state.groups.some(({ items }) =>\n items.some(item => item.id === prevSelectedValue)\n );\n // if previous selected item exists in the new list, keep it\n if (selectedExists) {\n return {\n ...state,\n groups: action.payload,\n selectedValue: prevSelectedValue,\n };\n }\n\n // if previous selected item does not exist in the new list, select the new first item\n return {\n ...state,\n groups: action.payload,\n selectedExists: newFirstItem ?? '',\n };\n }\n return state;\n },\n { groups: [], selectedValue: '' }\n );\n\n const listRef = useRef(null);\n const inputRef = useRef(null);\n\n // fix list height animation on opening\n useLayoutEffect(() => {\n setOpening(true);\n const timeout = setTimeout(() => {\n setOpening(false);\n inputRef.current?.focus();\n }, 150);\n return () => {\n clearTimeout(timeout);\n };\n }, []);\n\n const handleValueChange = useCallback(\n (query: string) => {\n onQueryChange?.(query);\n dispatch({\n type: 'reset-select',\n });\n requestAnimationFrame(() => {\n if (listRef.current) listRef.current.scrollTop = 0;\n });\n },\n [onQueryChange]\n );\n\n const handleSelectChange = useCallback(\n (value: string) => {\n dispatch({\n type: 'select',\n payload: value,\n });\n },\n [dispatch]\n );\n\n useEffect(() => {\n // on group change\n dispatch({\n type: 'update-groups',\n payload: newGroups,\n });\n }, [newGroups]);\n\n useEffect(() => {\n // debounce loading state\n const timeout = setTimeout(() => setLoading(newLoading), 1000);\n return () => clearTimeout(timeout);\n }, [newLoading]);\n\n return (\n \n {inputLabel ? (\n
\n {inputLabel}\n
\n ) : null}\n \n \n {loading ? (\n \n ) : null}\n \n\n \n {groups.map(({ group, items }) => {\n return (\n \n );\n })}\n \n \n );\n};\n\nexport const CMDKGroup = ({\n group: { group, items },\n onSubmit,\n query,\n}: {\n group: { group?: QuickSearchGroup; items: QuickSearchItem[] };\n onSubmit?: (item: QuickSearchItem) => void;\n query: string;\n}) => {\n const i18n = useI18n();\n return (\n \n {items.map(item => {\n const title = !isI18nString(item.label)\n ? i18n.t(item.label.title)\n : i18n.t(item.label);\n const subTitle = !isI18nString(item.label)\n ? item.label.subTitle && i18n.t(item.label.subTitle)\n : null;\n return (\n onSubmit?.(item)}\n value={item.id}\n disabled={item.disabled}\n data-is-danger={\n item.id === 'editor:page-move-to-trash' ||\n item.id === 'editor:edgeless-move-to-trash'\n }\n >\n
\n {item.icon &&\n (typeof item.icon === 'function' ? : item.icon)}\n
\n \n
\n {subTitle && (\n
\n \" end=\"\" />\n
\n )}\n \n {item.timestamp ? (\n
\n {i18nTime(new Date(item.timestamp))}\n
\n ) : null}\n {item.keyBinding ? (\n \n ) : null}\n \n );\n })}\n \n );\n};\n\nconst CMDKKeyBinding = ({ keyBinding }: { keyBinding: string }) => {\n const isMacOS = environment.isBrowser && environment.isMacOs;\n const fragments = useMemo(() => {\n return keyBinding.split('+').map(fragment => {\n if (fragment === '$mod') {\n return isMacOS ? '⌘' : 'Ctrl';\n }\n if (fragment === 'Alt') {\n return isMacOS ? '⌥' : 'Alt';\n }\n if (fragment.startsWith('Key')) {\n return fragment.slice(3);\n }\n if (fragment === 'ArrowUp') {\n return '↑';\n }\n if (fragment === 'ArrowDown') {\n return '↓';\n }\n if (fragment === 'ArrowLeft') {\n return '←';\n }\n if (fragment === 'ArrowRight') {\n return '→';\n }\n return fragment;\n });\n }, [isMacOS, keyBinding]);\n\n return (\n
\n {fragments.map((fragment, index) => {\n return (\n
\n {fragment}\n
\n );\n })}\n
\n );\n};\n","import \"../core/src/modules/quicksearch/views/cmdk.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/quicksearch/views/cmdk.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61X227jNhB9z1fwpUCMloZ8idfLoF8SBAVFji2uKZIgqdhpsf9eUNQ9kiNl980ekjNnzly1/mfzw+92T8UG/feA0Ekrj534FwjaJub2/IBQTu1ZKGzFOfMEbQ5RepJwwy6zQl0ISoKEC2ckfSflURBQKc4KCw+5I4iB8mCDmGmpLUFv1D5iTE8noQALphV2wLTi1L6vnh9+PqxrYNshsM0+QpDhZQYVrvXTlHIPN4+NFTm177i8sKo9IGgTfuo3sCeprwRlgnNQQVa+ag9ASmGccOHomgkP2BnKgCClr5aaHuIEvbCcX7DV2r+W6BuUSfLH6NWz1YXBGVAu1Dm+MZSHPwQdo7uTrjW8dZ1r6eo9KOU31965VsgOSTLC6eHbNNrXl0hWRNtEX2kFo4+kcBUbOb01NvZJnWZCNcJjJWvpp4XXtcQxq6XEKWT0TQRKmFaeijJqtYZcqMfdLjG3vxCjkj1GEhoclaUV+jOwu1q1eV7Sjaokj5ZSavG58B4sQc7TVEJ7hqso4VRqdiFosx2+vAruM4J8FgG2B5N1EKOIvKXKGWpB+Wk+idL+8YVTT7E2oELyrEqOy9fCC61IRQpabxwC6u5EhxB8hfQiPG5glsoqHypWao7LvwtUYZ8VeVoqTLXlYLGlXBSOoKqgU8ouIbUUx0wKQ1BDrr5nKQtJ8Ym9juYR2rl4EwFPXT9fNBWP5xjsxHnUWmiag7qqu2q3TvYVcU2rOJhbk4JT7bewLuDhcKKF9M+T0SgcWOxAAvN3qrpEGhMw3gX+t7cFvA5oGBDQ4edj+1piJsqEw5yqM9iFtsFabTttcyxW/TuLKFj3h+uXM2G+4zMsft2fT0xul5vcjUzHkZwvlw0uLLDY0JiWRa56mvbj1TJRBE3BbEK3DztN3GGqRvdhTD/1J/K2HRHjtTNn/PZGbb1sLRryv2NtidO45/en3Wtu8R560T0cBs2q4b6zZabae503O88A19zwnqlpR3EVoVrzxtyQ01LwgU/xVn897C64Hb++dbMBe90x1k6sytpxMCSPk0UytabeS6UMP63u5e2RECMpg0xLXk2mBRnWUfR9vLzm5PmilA7TrXamrolh9Vt9xRbCItgfSfSXMBa5wmXebAcRSxd1lh+F8+IUXFIelB9tOkmz8Iw2j0WEzS9VD9aLSba3+/5yV5NfGi6XyZO2OUGFMWDZcItkw2+0j0yn1MFI3+s2zGv7TdCYLmkmNa2Lu14HI/8c473OPBvhz/8BqodS4VMPAAA=\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var hasInputLabel = '_1jt335u7 _1jt335u6';\nexport var itemIcon = '_1jt335u1';\nexport var itemLabel = '_1jt335u2';\nexport var itemSubtitle = '_1jt335ud';\nexport var itemTitle = '_1jt335uc';\nexport var keybinding = '_1jt335ua';\nexport var keybindingFragment = '_1jt335ub';\nexport var pageTitle = '_1jt335u5';\nexport var pageTitleWrapper = '_1jt335u4';\nexport var panelContainer = '_1jt335u3';\nexport var root = '_1jt335u0';\nexport var searchInput = '_1jt335u8';\nexport var searchInputContainer = '_1jt335u6';\nexport var timestamp = '_1jt335u9';","import * as Dialog from '@radix-ui/react-dialog';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport { useEffect } from 'react';\nimport { useTransition } from 'react-transition-state';\n\nimport * as styles from './modal.css';\n\n// a QuickSearch modal that can be used to display a QuickSearch command\n// it has a smooth animation and can be closed by clicking outside of the modal\n\nexport interface QuickSearchModalProps {\n open: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst animationTimeout = 120;\n\nexport const QuickSearchModal = ({\n onOpenChange,\n open,\n children,\n}: React.PropsWithChildren) => {\n const [{ status }, toggle] = useTransition({\n timeout: animationTimeout,\n });\n useEffect(() => {\n toggle(open);\n }, [open]);\n return (\n \n \n \n
\n \n {children}\n \n
\n
\n
\n );\n};\n","import \"../core/src/modules/quicksearch/views/modal.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/quicksearch/views/modal.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA7WUYWvbMBCGv+dX3JdBAlGQ0yRrFQr9G2WUcZHOzq2yZCQlcTr634dlZ23aEtrBvhjp7tV7j+9k3z3SsQxYU4SfxXe8qZZawu8RQBl8nRcAvkHN6ahArvM+BXSx9KFW/dJiovuxmH+bQNRoaSxnN6tJp30eAST/1qa4ZCNPJsXg8Dy6e89YZM/31v9E+NGrfpVxdiKbZ6fGR07snYKSWzKdil2kNBBuUD9Wwe+cEdpbHwb3BgO51AmeBDtDrYI9hrEQWJbsSAxRUXuDdrJ+XfbqM2UNx8biUUFpqe0CaLlyghPVsQ+KmDBkgl+7mLg8Cu1dIpcUaHKJwufhABo0hl2loLjab6FYNW1+nHEvM/eBTdoqWC1k037cn7NSr9J+T8HiUTToyPbiXHvjWxG3aPzhzVldmyEx6IKhIAIa3kUFxbwHqLEVA5RGq8eFlPsDCFjKps3nanYnweJ6oPa7ZNmRAucdrc/GEchi4j19pX0HtlboLbqK1MtFnJ7u6HkbfxhM2E0v0W0eFJmHKVzIs6secu/RcY095csfoEc77RcT0LsNa7GhJ6YwlrPFfApyCnK2vJ5C/xX89RFlB157QwpKHw4YTLwA23K6xNpyuoRa/A/UP91+x/cVBQAA\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var animationTimeout = 'var(--_17a9g5c4)';\nexport var modalContent = '_17a9g5c5';\nexport var modalContentWrapper = '_17a9g5c3';\nexport var modalOverlay = '_17a9g5c2';","import { useI18n } from '@affine/i18n';\nimport { useLiveData, useServices } from '@toeverything/infra';\nimport { useCallback, useMemo } from 'react';\n\nimport { QuickSearchService } from '../services/quick-search';\nimport type { QuickSearchGroup } from '../types/group';\nimport type { QuickSearchItem } from '../types/item';\nimport { CMDK } from './cmdk';\nimport { QuickSearchModal } from './modal';\n\nexport const QuickSearchContainer = () => {\n const { quickSearchService } = useServices({\n QuickSearchService,\n });\n const quickSearch = quickSearchService.quickSearch;\n const open = useLiveData(quickSearch.show$);\n const query = useLiveData(quickSearch.query$);\n const loading = useLiveData(quickSearch.isLoading$);\n const loadingProgress = useLiveData(quickSearch.loadingProgress$);\n const items = useLiveData(quickSearch.items$);\n const options = useLiveData(quickSearch.options$);\n const i18n = useI18n();\n\n const onToggleQuickSearch = useCallback(\n (open: boolean) => {\n if (open) {\n // should never be here\n } else {\n quickSearch.hide();\n }\n },\n [quickSearch]\n );\n\n const groups = useMemo(() => {\n const groups: { group?: QuickSearchGroup; items: QuickSearchItem[] }[] = [];\n\n for (const item of items) {\n const group = item.group;\n const existingGroup = groups.find(g => g.group?.id === group?.id);\n if (existingGroup) {\n existingGroup.items.push(item);\n } else {\n groups.push({ group, items: [item] });\n }\n }\n\n for (const { items } of groups) {\n items.sort((a, b) => (b.score ?? 0) - (a.score ?? 0));\n }\n\n groups.sort((a, b) => {\n const group = (b.group?.score ?? 0) - (a.group?.score ?? 0);\n if (group !== 0) {\n return group;\n }\n return (b.items[0].score ?? 0) - (a.items[0].score ?? 0);\n });\n\n return groups;\n }, [items]);\n\n const handleChangeQuery = useCallback(\n (query: string) => {\n quickSearch.setQuery(query);\n },\n [quickSearch]\n );\n\n const handleSubmit = useCallback(\n (item: QuickSearchItem) => {\n quickSearch.submit(item);\n },\n [quickSearch]\n );\n\n return (\n \n \n \n );\n};\n","import {\n DocsService,\n type Framework,\n GlobalContextService,\n WorkspaceLocalState,\n WorkspaceScope,\n} from '@toeverything/infra';\n\nimport { CollectionService } from '../collection';\nimport { DocsSearchService } from '../docs-search';\nimport { WorkspacePropertiesAdapter } from '../properties';\nimport { WorkbenchService } from '../workbench';\nimport { QuickSearch } from './entities/quick-search';\nimport { CollectionsQuickSearchSession } from './impls/collections';\nimport { CommandsQuickSearchSession } from './impls/commands';\nimport { CreationQuickSearchSession } from './impls/creation';\nimport { DocsQuickSearchSession } from './impls/docs';\nimport { RecentDocsQuickSearchSession } from './impls/recent-docs';\nimport { CMDKQuickSearchService } from './services/cmdk';\nimport { DocDisplayMetaService } from './services/doc-display-meta';\nimport { QuickSearchService } from './services/quick-search';\nimport { RecentDocsService } from './services/recent-pages';\n\nexport { QuickSearch } from './entities/quick-search';\nexport { QuickSearchService, RecentDocsService };\nexport { CollectionsQuickSearchSession } from './impls/collections';\nexport { CommandsQuickSearchSession } from './impls/commands';\nexport { CreationQuickSearchSession } from './impls/creation';\nexport { DocsQuickSearchSession } from './impls/docs';\nexport { RecentDocsQuickSearchSession } from './impls/recent-docs';\nexport type { QuickSearchItem } from './types/item';\nexport { QuickSearchContainer } from './views/container';\n\nexport function configureQuickSearchModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(QuickSearchService)\n .service(CMDKQuickSearchService, [\n QuickSearchService,\n WorkbenchService,\n DocsService,\n ])\n .service(RecentDocsService, [WorkspaceLocalState, DocsService])\n .service(DocDisplayMetaService, [WorkspacePropertiesAdapter])\n .entity(QuickSearch)\n .entity(CommandsQuickSearchSession, [GlobalContextService])\n .entity(DocsQuickSearchSession, [\n DocsSearchService,\n DocsService,\n DocDisplayMetaService,\n ])\n .entity(CreationQuickSearchSession)\n .entity(CollectionsQuickSearchSession, [CollectionService])\n .entity(RecentDocsQuickSearchSession, [\n RecentDocsService,\n DocDisplayMetaService,\n ]);\n}\n","import { track } from '@affine/core/mixpanel';\nimport type { DocsService } from '@toeverything/infra';\nimport { Service } from '@toeverything/infra';\n\nimport type { WorkbenchService } from '../../workbench';\nimport { CollectionsQuickSearchSession } from '../impls/collections';\nimport { CommandsQuickSearchSession } from '../impls/commands';\nimport { CreationQuickSearchSession } from '../impls/creation';\nimport { DocsQuickSearchSession } from '../impls/docs';\nimport { RecentDocsQuickSearchSession } from '../impls/recent-docs';\nimport type { QuickSearchService } from './quick-search';\n\nexport class CMDKQuickSearchService extends Service {\n constructor(\n private readonly quickSearchService: QuickSearchService,\n private readonly workbenchService: WorkbenchService,\n private readonly docsService: DocsService\n ) {\n super();\n }\n\n toggle() {\n if (this.quickSearchService.quickSearch.show$.value) {\n this.quickSearchService.quickSearch.hide();\n } else {\n this.quickSearchService.quickSearch.show(\n [\n this.framework.createEntity(RecentDocsQuickSearchSession),\n this.framework.createEntity(CollectionsQuickSearchSession),\n this.framework.createEntity(CommandsQuickSearchSession),\n this.framework.createEntity(CreationQuickSearchSession),\n this.framework.createEntity(DocsQuickSearchSession),\n ],\n result => {\n if (!result) {\n return;\n }\n if (result.source === 'commands') {\n result.payload.run()?.catch(err => {\n console.error(err);\n });\n } else if (\n result.source === 'recent-doc' ||\n result.source === 'docs'\n ) {\n const doc: {\n docId: string;\n blockId?: string;\n } = result.payload;\n\n result.source === 'recent-doc' && track.$.cmdk.recent.recentDocs();\n result.source === 'docs' &&\n track.$.cmdk.results.searchResultsDocs();\n\n this.workbenchService.workbench.openDoc({\n docId: doc.docId,\n blockId: doc.blockId,\n });\n } else if (result.source === 'collections') {\n this.workbenchService.workbench.openCollection(\n result.payload.collectionId\n );\n } else if (result.source === 'creation') {\n if (result.id === 'creation:create-page') {\n const newDoc = this.docsService.createDoc({\n mode: 'page',\n title: result.payload.title,\n });\n this.workbenchService.workbench.openDoc(newDoc.id);\n } else if (result.id === 'creation:create-edgeless') {\n const newDoc = this.docsService.createDoc({\n mode: 'edgeless',\n title: result.payload.title,\n });\n this.workbenchService.workbench.openDoc(newDoc.id);\n }\n }\n },\n {\n placeholder: {\n key: 'com.arms.cmdk.docs.placeholder',\n },\n }\n );\n }\n }\n}\n","export function highlighter(\n originText: string,\n before: string,\n after: string,\n matches: [number, number][],\n {\n maxLength = 50,\n maxPrefix = 20,\n }: { maxLength?: number; maxPrefix?: number } = {}\n) {\n if (!originText) {\n return;\n }\n const merged = mergeRanges(matches);\n\n if (merged.length === 0) {\n return null;\n }\n\n const firstMatch = merged[0][0];\n const start = Math.max(\n 0,\n Math.min(firstMatch - maxPrefix, originText.length - maxLength)\n );\n const end = Math.min(start + maxLength, originText.length);\n const text = originText.substring(start, end);\n\n let result = '';\n\n let pointer = 0;\n for (const match of merged) {\n const matchStart = match[0] - start;\n const matchEnd = match[1] - start;\n if (matchStart >= text.length) {\n break;\n }\n result += text.substring(pointer, matchStart);\n pointer = matchStart;\n const highlighted = text.substring(matchStart, matchEnd);\n\n if (highlighted.length === 0) {\n continue;\n }\n\n result += `${before}${highlighted}${after}`;\n pointer = matchEnd;\n }\n result += text.substring(pointer);\n\n if (start > 0) {\n result = `...${result}`;\n }\n\n if (end < originText.length) {\n result = `${result}...`;\n }\n\n return result;\n}\n\nfunction mergeRanges(intervals: [number, number][]) {\n if (intervals.length === 0) return [];\n\n intervals.sort((a, b) => a[0] - b[0]);\n\n const merged = [intervals[0]];\n\n for (let i = 1; i < intervals.length; i++) {\n const last = merged[merged.length - 1];\n const current = intervals[i];\n\n if (current[0] <= last[1]) {\n last[1] = Math.max(last[1], current[1]);\n } else {\n merged.push(current);\n }\n }\n\n return merged;\n}\n","import { DebugLogger } from '@affine/debug';\nimport type { WorkspaceQuotaQuery } from '@affine/graphql';\nimport type { WorkspaceService } from '@toeverything/infra';\nimport {\n backoffRetry,\n catchErrorInto,\n effect,\n Entity,\n fromPromise,\n LiveData,\n mapInto,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { exhaustMap } from 'rxjs';\n\nimport { isBackendError, isNetworkError } from '../../cloud';\nimport type { WorkspaceQuotaStore } from '../stores/quota';\n\ntype QuotaType = WorkspaceQuotaQuery['workspace']['quota'];\n\nconst logger = new DebugLogger('affine:workspace-permission');\n\nexport class WorkspaceQuota extends Entity {\n quota$ = new LiveData(null);\n isLoading$ = new LiveData(false);\n error$ = new LiveData(null);\n\n constructor(\n private readonly workspaceService: WorkspaceService,\n private readonly store: WorkspaceQuotaStore\n ) {\n super();\n }\n\n revalidate = effect(\n exhaustMap(() => {\n return fromPromise(signal =>\n this.store.fetchWorkspaceQuota(\n this.workspaceService.workspace.id,\n signal\n )\n ).pipe(\n backoffRetry({\n when: isNetworkError,\n count: Infinity,\n }),\n backoffRetry({\n when: isBackendError,\n count: 3,\n }),\n mapInto(this.quota$),\n catchErrorInto(this.error$, error => {\n logger.error('Failed to fetch isOwner', error);\n }),\n onStart(() => this.isLoading$.setValue(true)),\n onComplete(() => this.isLoading$.setValue(false))\n );\n })\n );\n}\n","import { Service } from '@toeverything/infra';\n\nimport { WorkspaceQuota } from '../entities/quota';\n\nexport class WorkspaceQuotaService extends Service {\n quota = this.framework.createEntity(WorkspaceQuota);\n}\n","import type { GraphQLService } from '@affine/core/modules/cloud';\nimport { workspaceQuotaQuery } from '@affine/graphql';\nimport { Store } from '@toeverything/infra';\n\nexport class WorkspaceQuotaStore extends Store {\n constructor(private readonly graphqlService: GraphQLService) {\n super();\n }\n\n async fetchWorkspaceQuota(workspaceId: string, signal?: AbortSignal) {\n const data = await this.graphqlService.gql({\n query: workspaceQuotaQuery,\n variables: {\n id: workspaceId,\n },\n context: {\n signal,\n },\n });\n return data.workspace.quota;\n }\n}\n","export { WorkspaceQuotaService } from './services/quota';\n\nimport { GraphQLService } from '@affine/core/modules/cloud';\nimport {\n type Framework,\n WorkspaceScope,\n WorkspaceService,\n} from '@toeverything/infra';\n\nimport { WorkspaceQuota } from './entities/quota';\nimport { WorkspaceQuotaService } from './services/quota';\nimport { WorkspaceQuotaStore } from './stores/quota';\n\nexport function configureQuotaModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(WorkspaceQuotaService)\n .store(WorkspaceQuotaStore, [GraphQLService])\n .entity(WorkspaceQuota, [WorkspaceService, WorkspaceQuotaStore]);\n}\n","import type {\n GetWorkspacePublicPageByIdQuery,\n PublicPageMode,\n} from '@affine/graphql';\nimport type { DocService, WorkspaceService } from '@toeverything/infra';\nimport {\n backoffRetry,\n catchErrorInto,\n effect,\n Entity,\n fromPromise,\n LiveData,\n mapInto,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { switchMap } from 'rxjs';\n\nimport { isBackendError, isNetworkError } from '../../cloud';\nimport type { ShareStore } from '../stores/share';\n\ntype ShareInfoType = GetWorkspacePublicPageByIdQuery['workspace']['publicPage'];\n\nexport class Share extends Entity {\n info$ = new LiveData(null);\n isShared$ = this.info$.map(info =>\n // null means not loaded yet, undefined means not shared\n info !== null ? info !== undefined : null\n );\n sharedMode$ = this.info$.map(info => (info !== null ? info?.mode : null));\n\n error$ = new LiveData(null);\n isRevalidating$ = new LiveData(false);\n\n constructor(\n private readonly workspaceService: WorkspaceService,\n private readonly docService: DocService,\n private readonly store: ShareStore\n ) {\n super();\n }\n\n revalidate = effect(\n switchMap(() => {\n return fromPromise(signal =>\n this.store.getShareInfoByDocId(\n this.workspaceService.workspace.id,\n this.docService.doc.id,\n signal\n )\n ).pipe(\n backoffRetry({\n when: isNetworkError,\n count: Infinity,\n }),\n backoffRetry({\n when: isBackendError,\n }),\n mapInto(this.info$),\n catchErrorInto(this.error$),\n onStart(() => this.isRevalidating$.next(true)),\n onComplete(() => this.isRevalidating$.next(false))\n );\n })\n );\n\n waitForRevalidation(signal?: AbortSignal) {\n this.revalidate();\n return this.isRevalidating$.waitFor(v => v === false, signal);\n }\n\n async enableShare(mode: PublicPageMode) {\n await this.store.enableSharePage(\n this.workspaceService.workspace.id,\n this.docService.doc.id,\n mode\n );\n await this.waitForRevalidation();\n }\n\n async changeShare(mode: PublicPageMode) {\n await this.enableShare(mode);\n }\n\n async disableShare() {\n await this.store.disableSharePage(\n this.workspaceService.workspace.id,\n this.docService.doc.id\n );\n await this.waitForRevalidation();\n }\n}\n","import { Service } from '@toeverything/infra';\n\nimport { Share } from '../entities/share-info';\n\nexport class ShareService extends Service {\n share = this.framework.createEntity(Share);\n}\n","import { DebugLogger } from '@affine/debug';\nimport type { GetWorkspacePublicPagesQuery } from '@affine/graphql';\nimport type { GlobalCache, WorkspaceService } from '@toeverything/infra';\nimport {\n backoffRetry,\n catchErrorInto,\n effect,\n Entity,\n fromPromise,\n LiveData,\n onComplete,\n onStart,\n} from '@toeverything/infra';\nimport { EMPTY, mergeMap, switchMap } from 'rxjs';\n\nimport { isBackendError, isNetworkError } from '../../cloud';\nimport type { ShareDocsStore } from '../stores/share-docs';\n\ntype ShareDocListType =\n GetWorkspacePublicPagesQuery['workspace']['publicPages'];\n\nexport const logger = new DebugLogger('affine:share-doc-list');\n\nexport class ShareDocsList extends Entity {\n list$ = LiveData.from(this.cache.watch('share-docs'), []);\n isLoading$ = new LiveData(false);\n error$ = new LiveData(null);\n\n constructor(\n private readonly workspaceService: WorkspaceService,\n private readonly store: ShareDocsStore,\n private readonly cache: GlobalCache\n ) {\n super();\n }\n\n revalidate = effect(\n switchMap(() =>\n fromPromise(signal => {\n return this.store.getWorkspacesShareDocs(\n this.workspaceService.workspace.id,\n signal\n );\n }).pipe(\n backoffRetry({\n when: isNetworkError,\n count: Infinity,\n }),\n backoffRetry({\n when: isBackendError,\n }),\n mergeMap(list => {\n this.cache.set('share-docs', list);\n return EMPTY;\n }),\n catchErrorInto(this.error$, err =>\n logger.error('revalidate share docs error', err)\n ),\n onStart(() => {\n this.isLoading$.next(true);\n }),\n onComplete(() => {\n this.isLoading$.next(false);\n })\n )\n )\n );\n}\n","import { WorkspaceFlavour } from '@affine/env/workspace';\nimport type { WorkspaceService } from '@toeverything/infra';\nimport { Service } from '@toeverything/infra';\n\nimport { ShareDocsList } from '../entities/share-docs-list';\n\nexport class ShareDocsService extends Service {\n constructor(private readonly workspaceService: WorkspaceService) {\n super();\n }\n\n shareDocs =\n this.workspaceService.workspace.flavour === WorkspaceFlavour.AFFINE_CLOUD\n ? this.framework.createEntity(ShareDocsList)\n : null;\n}\n","import type { PublicPageMode } from '@affine/graphql';\nimport {\n getWorkspacePublicPageByIdQuery,\n publishPageMutation,\n revokePublicPageMutation,\n} from '@affine/graphql';\nimport { Store } from '@toeverything/infra';\n\nimport type { GraphQLService } from '../../cloud';\n\nexport class ShareStore extends Store {\n constructor(private readonly gqlService: GraphQLService) {\n super();\n }\n\n async getShareInfoByDocId(\n workspaceId: string,\n docId: string,\n signal?: AbortSignal\n ) {\n const data = await this.gqlService.gql({\n query: getWorkspacePublicPageByIdQuery,\n variables: {\n pageId: docId,\n workspaceId,\n },\n context: {\n signal,\n },\n });\n return data.workspace.publicPage ?? undefined;\n }\n\n async enableSharePage(\n workspaceId: string,\n pageId: string,\n docMode?: PublicPageMode,\n signal?: AbortSignal\n ) {\n await this.gqlService.gql({\n query: publishPageMutation,\n variables: {\n pageId,\n workspaceId,\n mode: docMode,\n },\n context: {\n signal,\n },\n });\n }\n\n async disableSharePage(\n workspaceId: string,\n pageId: string,\n signal?: AbortSignal\n ) {\n await this.gqlService.gql({\n query: revokePublicPageMutation,\n variables: {\n pageId,\n workspaceId,\n },\n context: {\n signal,\n },\n });\n }\n}\n","import type { GraphQLService } from '@affine/core/modules/cloud';\nimport { getWorkspacePublicPagesQuery } from '@affine/graphql';\nimport { Store } from '@toeverything/infra';\n\nexport class ShareDocsStore extends Store {\n constructor(private readonly graphqlService: GraphQLService) {\n super();\n }\n\n async getWorkspacesShareDocs(workspaceId: string, signal?: AbortSignal) {\n const data = await this.graphqlService.gql({\n query: getWorkspacePublicPagesQuery,\n variables: {\n workspaceId: workspaceId,\n },\n context: {\n signal,\n },\n });\n return data.workspace.publicPages;\n }\n}\n","export { ShareService } from './services/share';\nexport { ShareDocsService } from './services/share-docs';\n\nimport {\n DocScope,\n DocService,\n type Framework,\n WorkspaceLocalCache,\n WorkspaceScope,\n WorkspaceService,\n} from '@toeverything/infra';\n\nimport { GraphQLService } from '../cloud';\nimport { ShareDocsList } from './entities/share-docs-list';\nimport { Share } from './entities/share-info';\nimport { ShareService } from './services/share';\nimport { ShareDocsService } from './services/share-docs';\nimport { ShareStore } from './stores/share';\nimport { ShareDocsStore } from './stores/share-docs';\n\nexport function configureShareDocsModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(ShareDocsService, [WorkspaceService])\n .store(ShareDocsStore, [GraphQLService])\n .entity(ShareDocsList, [\n WorkspaceService,\n ShareDocsStore,\n WorkspaceLocalCache,\n ])\n .scope(DocScope)\n .service(ShareService)\n .entity(Share, [WorkspaceService, DocService, ShareStore])\n .store(ShareStore, [GraphQLService]);\n}\n","// hack: map var(--affine-tag-xxx) colors to var(--affine-palette-line-xxx)\nexport const tagColorMap = (color: string) => {\n const mapping: Record = {\n 'var(--affine-tag-red)': 'var(--affine-palette-line-red)',\n 'var(--affine-tag-teal)': 'var(--affine-palette-line-green)',\n 'var(--affine-tag-blue)': 'var(--affine-palette-line-blue)',\n 'var(--affine-tag-yellow)': 'var(--affine-palette-line-yellow)',\n 'var(--affine-tag-pink)': 'var(--affine-palette-line-magenta)',\n 'var(--affine-tag-white)': 'var(--affine-palette-line-grey)',\n 'var(--affine-tag-gray)': 'var(--affine-palette-line-grey)',\n 'var(--affine-tag-orange)': 'var(--affine-palette-line-orange)',\n 'var(--affine-tag-purple)': 'var(--affine-palette-line-purple)',\n 'var(--affine-tag-green)': 'var(--affine-palette-line-green)',\n };\n return mapping[color] || color;\n};\n","import type { DocsService } from '@toeverything/infra';\nimport { Entity, LiveData } from '@toeverything/infra';\n\nimport type { TagStore } from '../stores/tag';\nimport { tagColorMap } from './utils';\n\nexport class Tag extends Entity<{ id: string }> {\n id = this.props.id;\n constructor(\n private readonly store: TagStore,\n private readonly docs: DocsService\n ) {\n super();\n }\n\n private readonly tagOption$ = LiveData.from(\n this.store.watchTagInfo(this.id),\n undefined\n ).map(tagInfo => tagInfo);\n\n value$ = this.tagOption$.map(tag => tag?.value || '');\n\n color$ = this.tagOption$.map(tag => tagColorMap(tag?.color ?? '') || '');\n\n createDate$ = this.tagOption$.map(tag => tag?.createDate || Date.now());\n\n updateDate$ = this.tagOption$.map(tag => tag?.updateDate || Date.now());\n\n rename(value: string) {\n this.store.updateTagInfo(this.id, {\n id: this.id,\n value,\n color: this.color$.value,\n createDate: this.createDate$.value,\n updateDate: Date.now(),\n });\n }\n\n changeColor(color: string) {\n this.store.updateTagInfo(this.id, {\n color,\n });\n }\n\n tag(pageId: string) {\n const pageRecord = this.docs.list.doc$(pageId).value;\n if (!pageRecord) {\n return;\n }\n pageRecord?.setMeta({\n tags: [...(pageRecord.meta$.value.tags ?? []), this.id],\n });\n }\n\n untag(pageId: string) {\n const pageRecord = this.docs.list.doc$(pageId).value;\n if (!pageRecord) {\n return;\n }\n pageRecord?.setMeta({\n tags: pageRecord.meta$.value.tags?.filter(tagId => tagId !== this.id),\n });\n }\n\n /**\n * @deprecated performance issue here, use with caution until it is fixed\n * @fixme(EYHN): page.meta$ has performance issue\n */\n readonly pageIds$ = LiveData.computed(get => {\n const pages = get(this.docs.list.docs$);\n return pages\n .filter(page => get(page.meta$).tags?.includes(this.id))\n .map(page => page.id);\n });\n}\n","import type { DocsService } from '@toeverything/infra';\nimport { Entity, LiveData } from '@toeverything/infra';\n\nimport { Tag } from '../entities/tag';\nimport type { TagStore } from '../stores/tag';\n\nexport class TagList extends Entity {\n constructor(\n private readonly store: TagStore,\n private readonly docs: DocsService\n ) {\n super();\n }\n\n private readonly pool = new Map();\n\n readonly tags$ = LiveData.from(this.store.watchTagIds(), []).map(ids => {\n return ids.map(id => {\n const exists = this.pool.get(id);\n if (exists) {\n return exists;\n }\n const record = this.framework.createEntity(Tag, { id });\n this.pool.set(id, record);\n return record;\n });\n });\n\n createTag(value: string, color: string) {\n const newId = this.store.createNewTag(value, color);\n const newTag = this.framework.createEntity(Tag, { id: newId });\n return newTag;\n }\n\n deleteTag(tagId: string) {\n this.store.deleteTag(tagId);\n }\n\n tagsByPageId$(pageId: string) {\n return LiveData.computed(get => {\n const docRecord = get(this.docs.list.doc$(pageId));\n if (!docRecord) return [];\n const tagIds = get(docRecord.meta$).tags;\n\n return get(this.tags$).filter(tag => (tagIds ?? []).includes(tag.id));\n });\n }\n\n tagIdsByPageId$(pageId: string) {\n return this.tagsByPageId$(pageId).map(tags => tags.map(tag => tag.id));\n }\n\n tagByTagId$(tagId?: string) {\n return this.tags$.map(tags => tags.find(tag => tag.id === tagId));\n }\n\n tagMetas$ = LiveData.computed(get => {\n return get(this.tags$).map(tag => {\n return {\n id: tag.id,\n title: get(tag.value$),\n color: get(tag.color$),\n pageCount: get(tag.pageIds$).length,\n createDate: get(tag.createDate$),\n updatedDate: get(tag.updateDate$),\n };\n });\n });\n\n private filterFn(value: string, query?: string) {\n const trimmedQuery = query?.trim().toLowerCase() ?? '';\n const trimmedValue = value.trim().toLowerCase();\n return trimmedValue.includes(trimmedQuery);\n }\n\n filterTagsByName$(name: string) {\n return LiveData.computed(get => {\n return get(this.tags$).filter(tag =>\n this.filterFn(get(tag.value$), name)\n );\n });\n }\n}\n","import { Service } from '@toeverything/infra';\nimport { cssVar } from '@toeverything/theme';\n\nimport { TagList } from '../entities/tag-list';\n\ntype TagColorHelper = T extends `paletteLine${infer Color}` ? Color : never;\nexport type TagColorName = TagColorHelper[0]>;\n\nconst tagColorIds: TagColorName[] = [\n 'Red',\n 'Magenta',\n 'Orange',\n 'Yellow',\n 'Green',\n 'Teal',\n 'Blue',\n 'Purple',\n 'Grey',\n];\n\nexport class TagService extends Service {\n tagList = this.framework.createEntity(TagList);\n\n tagColors = tagColorIds.map(\n color => [color, cssVar(`paletteLine${color}`)] as const\n );\n\n randomTagColor() {\n const randomIndex = Math.floor(Math.random() * this.tagColors.length);\n return this.tagColors[randomIndex][1];\n }\n}\n","import { ConfirmModal, toast } from '@affine/component';\nimport { Trans, useI18n } from '@affine/i18n';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { useCallback, useMemo } from 'react';\n\nimport { TagService } from '../service/tag';\n\nexport const DeleteTagConfirmModal = ({\n open,\n onOpenChange,\n selectedTagIds,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n selectedTagIds: string[];\n}) => {\n const t = useI18n();\n const tagService = useService(TagService);\n const tags = useLiveData(tagService.tagList.tags$);\n const selectedTags = useMemo(() => {\n return tags.filter(tag => selectedTagIds.includes(tag.id));\n }, [selectedTagIds, tags]);\n const tagName = useLiveData(selectedTags[0]?.value$ || '');\n\n const handleDelete = useCallback(() => {\n selectedTagIds.forEach(tagId => {\n tagService.tagList.deleteTag(tagId);\n });\n\n toast(\n selectedTagIds.length > 1\n ? t['com.arms.delete-tags.count']({ count: selectedTagIds.length })\n : t['com.arms.tags.delete-tags.toast']()\n );\n\n onOpenChange(false);\n }, [onOpenChange, selectedTagIds, t, tagService]);\n\n return (\n }}\n />\n ) : (\n t['com.arms.delete-tags.confirm.multi-tag-description']({\n count: selectedTags.length.toString(),\n })\n )\n }\n confirmText={t['Delete']()}\n confirmButtonOptions={{\n variant: 'error',\n }}\n onConfirm={handleDelete}\n />\n );\n};\n","import type { Tag as TagSchema } from '@affine/env/filter';\nimport { Store } from '@toeverything/infra';\nimport { nanoid } from 'nanoid';\n\nimport type { WorkspaceLegacyProperties } from '../../properties';\n\nexport class TagStore extends Store {\n constructor(private readonly properties: WorkspaceLegacyProperties) {\n super();\n }\n\n watchTagIds() {\n return this.properties.tagOptions$\n .map(tags => tags.map(tag => tag.id))\n .asObservable();\n }\n\n createNewTag(value: string, color: string) {\n const newId = nanoid();\n this.properties.updateTagOptions([\n ...this.properties.tagOptions$.value,\n {\n id: newId,\n value,\n color,\n createDate: Date.now(),\n updateDate: Date.now(),\n },\n ]);\n return newId;\n }\n\n deleteTag(id: string) {\n this.properties.removeTagOption(id);\n }\n\n watchTagInfo(id: string) {\n return this.properties.tagOptions$.map(\n tags => tags.find(tag => tag.id === id) as TagSchema | undefined\n );\n }\n\n updateTagInfo(id: string, tagInfo: Partial) {\n const tag = this.properties.tagOptions$.value.find(tag => tag.id === id) as\n | TagSchema\n | undefined;\n if (!tag) {\n return;\n }\n this.properties.updateTagOption(id, {\n id: id,\n value: tag.value,\n color: tag.color,\n createDate: tag.createDate,\n updateDate: Date.now(),\n ...tagInfo,\n });\n }\n}\n","export { Tag } from './entities/tag';\nexport { tagColorMap } from './entities/utils';\nexport { TagService } from './service/tag';\nexport { DeleteTagConfirmModal } from './view/delete-tag-modal';\n\nimport {\n DocsService,\n type Framework,\n WorkspaceScope,\n} from '@toeverything/infra';\n\nimport { WorkspaceLegacyProperties } from '../properties';\nimport { Tag } from './entities/tag';\nimport { TagList } from './entities/tag-list';\nimport { TagService } from './service/tag';\nimport { TagStore } from './stores/tag';\n\nexport function configureTagModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(TagService)\n .store(TagStore, [WorkspaceLegacyProperties])\n .entity(TagList, [TagStore, DocsService])\n .entity(Tag, [TagStore, DocsService]);\n}\n","import type { GlobalState } from '@toeverything/infra';\nimport { LiveData, Service } from '@toeverything/infra';\nimport { map } from 'rxjs';\n\nimport type { CustomTheme } from '../types';\n\nexport class ThemeEditorService extends Service {\n constructor(public readonly globalState: GlobalState) {\n super();\n }\n\n private readonly _key = 'custom-theme';\n\n customTheme$ = LiveData.from(\n this.globalState.watch(this._key).pipe(\n map(value => {\n if (!value) return { light: {}, dark: {} };\n if (!value.light) value.light = {};\n if (!value.dark) value.dark = {};\n const removeEmpty = (obj: Record) =>\n Object.fromEntries(Object.entries(obj).filter(([, v]) => v));\n return {\n light: removeEmpty(value.light),\n dark: removeEmpty(value.dark),\n };\n })\n ),\n { light: {}, dark: {} }\n );\n\n modified$ = LiveData.computed(get => {\n const theme = get(this.customTheme$);\n const isEmptyObj = (obj: Record) =>\n Object.keys(obj).length === 0;\n return theme && !(isEmptyObj(theme.light) && isEmptyObj(theme.dark));\n });\n\n reset() {\n this.globalState.set(this._key, { light: {}, dark: {} });\n }\n\n setCustomTheme(theme: CustomTheme) {\n this.globalState.set(this._key, theme);\n }\n\n updateCustomTheme(mode: 'light' | 'dark', key: string, value?: string) {\n const prev: CustomTheme = this.globalState.get(this._key) ?? {\n light: {},\n dark: {},\n };\n const next = {\n ...prev,\n [mode]: {\n ...prev[mode],\n [key]: value,\n },\n };\n\n if (!value) {\n delete next[mode][key];\n }\n\n this.globalState.set(this._key, next);\n }\n}\n","import { useService } from '@toeverything/infra';\nimport { useTheme } from 'next-themes';\nimport { useEffect } from 'react';\n\nimport { ThemeEditorService } from '../services/theme-editor';\n\nlet _provided = false;\n\nexport const useCustomTheme = (target: HTMLElement) => {\n const themeEditor = useService(ThemeEditorService);\n const { resolvedTheme } = useTheme();\n\n useEffect(() => {\n if (!runtimeConfig.enableThemeEditor) return;\n if (_provided) return;\n\n _provided = true;\n\n const sub = themeEditor.customTheme$.subscribe(themeObj => {\n if (!themeObj) return;\n\n const mode = resolvedTheme === 'dark' ? 'dark' : 'light';\n const valueMap = themeObj[mode];\n\n // remove previous style\n target.style.cssText = '';\n\n Object.entries(valueMap).forEach(([key, value]) => {\n value && target.style.setProperty(key, value);\n });\n });\n\n return () => {\n _provided = false;\n sub.unsubscribe();\n };\n }, [resolvedTheme, target.style, themeEditor.customTheme$]);\n};\n\nexport const CustomThemeModifier = () => {\n useCustomTheme(document.documentElement);\n\n return null;\n};\n","import { Empty } from '@affine/component';\n\nexport const ThemeEmpty = () => {\n return (\n \n \n \n );\n};\n","import \"../core/src/modules/theme-editor/views/theme-editor.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/theme-editor/views/theme-editor.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA61W/W7aMBD/n6ewKk2CqUaBQgtB2yvsAaZpcuxL4jaxM9uh0KnvPtnONymDtkIIdD7f/e53X57/XiwfHqM/Afo7QeiZM5OGaBEE++fdBKEUeJIaL0itgHFdZOQYojiDgxVEhD4lSpaChWhP1BRjEsdcAM7IERRuj3GheE7UcWZvUZlJNbhg4GBqJewUZrvJ62TeAPzqIEbygDV/4SIJUSQVs07koau5cHoWINap4uIpRMGuDW65CgoP3d9WVYjFAWmZcTYahlOdjTLgHDGugBouRWhjK3NhT0oNCmvIgJoQCSmgi3LZJTyoDYVocZWT1t6ds1cQxhw1m+KAVpviAzlqyDVG5pfy0+JZOTx1AQ0D7OG038D/di3cn7HQaj04rXcQthlU/JdR4knGE4G5gVyHiIIwoKw4IYWD9DpJgTBQqG81lsLg5wr5OvDYrUzzFxgkwctzx3lmBXXEy6VPX8PV1vL0Cal5GKBtHKy8g1HNUEgzDTOiDaYpz9is6sYekmC+vhLLBn1HGb+qF95IyWOpDY/t6BAGhOke9QIcVNn2w2WwGaTJlvPivj9jCOOlblQvHn8I0VJpq1tI7p12kP9kxBBMqOF7+HZjVAk3v1w0Y/YjRQQbmauVFZoCfQJWm7ltEr8NU7kH5bN98SBxd37sQWXkOOqu1Ebm/KX16Bw4EhhQqYhv21IwULYrujbIdS1fpanfTTiD2ITobiA1snBV0pXVxb3qF070JtWcSoE1UClYPUw/oYjr9VVtr2ZKBH1Y1BOpiNDc8+D+x1LlKJgv9a4+tZIQKWmIgSneBgySXqaoz5QsQPRzdHL55CobT9AFTXR2SB70rEvEMHJ4t9dC1lwpyIhtJyvNuWhn8d3AlycH8sIce+w07of7vrph+0Jx1u9XWRDKzdHOTzfyTtrA7QWTKlkmaddofP6pU0+h5hk3PpVWb7PQcRVGEEsFVdVX5Xlzc4G71jCJtMxKAyMguEhBceO2oGtNF4jrx87O6y47lURkGty6z3xRvVn+9ziE7vz5hfpEDiCt7TJoryany3Jzjs/utHRYF8v1bf31iFvj6dgaqon0U+r1H/NhJOKsCwAA\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var colorCell = '_127jbqd';\nexport var colorCellColor = '_127jbqf';\nexport var colorCellInput = '_127jbqh';\nexport var colorCellRow = '_127jbqe';\nexport var colorCellValue = '_127jbqg';\nexport var content = '_127jbq2';\nexport var mainHeader = '_127jbq5';\nexport var mainScrollable = '_127jbq6';\nexport var mainViewport = '_127jbq7';\nexport var root = '_127jbq0';\nexport var row = '_127jbq8';\nexport var sidebar = '_127jbq1';\nexport var sidebarHeader = '_127jbq3';\nexport var sidebarScrollable = '_127jbq4';\nexport var treeNode = '_127jbq9';\nexport var treeNodeCollapseIcon = '_127jbqc';\nexport var treeNodeContent = '_127jbqa';\nexport var treeNodeIconWrapper = '_127jbqb';","import { ArrowDownSmallIcon, PaletteIcon } from '@blocksuite/icons/rc';\nimport * as Collapsible from '@radix-ui/react-collapsible';\nimport { useCallback, useState } from 'react';\n\nimport { type TreeNode } from '../resource';\nimport * as styles from '../theme-editor.css';\n\nexport const ThemeTreeNode = ({\n node,\n checked,\n setActive,\n isActive,\n isCustomized,\n}: {\n node: TreeNode;\n checked?: TreeNode;\n setActive: (vs: TreeNode) => void;\n isActive?: (node: TreeNode) => boolean;\n isCustomized?: (node: TreeNode) => boolean;\n}) => {\n const isLeaf = !node.children && node.variables;\n const [open, setOpen] = useState(false);\n\n const onClick = useCallback(() => {\n if (isLeaf || node.variables?.length) setActive(node);\n if (node.children) setOpen(prev => !prev);\n }, [isLeaf, node, setActive]);\n\n return (\n \n \n
\n {isLeaf ? (\n \n ) : (\n \n )}\n
\n {node.label}\n \n \n {node.children?.map(child => (\n \n ))}\n \n
\n );\n};\n","export const variableNameToParts = (name: string) => name.slice(9).split('-');\n\nexport const partsToVariableName = (parts: string[]) =>\n `--affine-${parts.join('-')}`;\n\nexport const isColor = (value: string) => {\n return value.startsWith('#') || value.startsWith('rgb');\n};\n","import clsx from 'clsx';\nimport { type HTMLAttributes, useId } from 'react';\n\nimport * as styles from './simple-color-picker.css';\n\nexport const SimpleColorPicker = ({\n value,\n setValue,\n className,\n ...attrs\n}: HTMLAttributes & {\n value: string;\n setValue: (value: string) => void;\n}) => {\n const id = useId();\n return (\n \n );\n};\n","import \"../core/src/modules/theme-editor/views/components/simple-color-picker.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/theme-editor/views/components/simple-color-picker.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xMGloeGN4MCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LDEyNSwxMjUsIDAuMyk7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5fMTBpaHhjeDEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgb3BhY2l0eTogMDsKfQ==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var input = '_10ihxcx1';\nexport var wrapper = '_10ihxcx0';","import { IconButton, Input, Menu, MenuItem } from '@affine/component';\nimport { MoreHorizontalIcon } from '@blocksuite/icons/rc';\nimport { cssVar } from '@toeverything/theme';\nimport { useCallback, useState } from 'react';\n\nimport * as styles from '../theme-editor.css';\nimport { SimpleColorPicker } from './simple-color-picker';\n\nexport const ColorCell = ({\n value,\n custom,\n onValueChange,\n}: {\n value: string;\n custom?: string;\n onValueChange?: (color?: string) => void;\n}) => {\n const [inputValue, setInputValue] = useState(value);\n\n const onInput = useCallback(\n (color: string) => {\n onValueChange?.(color);\n setInputValue(color);\n },\n [onValueChange]\n );\n return (\n
\n
\n
\n \n
{value}
\n
\n\n
\n \n
{custom}
\n
\n
\n\n \n \n \n {custom ? (\n onValueChange?.()}>\n Recover\n \n ) : null}\n \n }\n >\n } />\n \n
\n );\n};\n","import { Input } from '@affine/component';\nimport { useCallback, useState } from 'react';\n\nimport * as styles from './string-cell.css';\n\nexport const StringCell = ({\n value,\n custom,\n onValueChange,\n}: {\n value: string;\n custom?: string;\n onValueChange?: (color?: string) => void;\n}) => {\n const [inputValue, setInputValue] = useState(custom ?? '');\n\n const onInput = useCallback(\n (color: string) => {\n onValueChange?.(color || undefined);\n setInputValue(color);\n },\n [onValueChange]\n );\n\n return (\n
\n
{value}
\n \n
\n );\n};\n","import \"../core/src/modules/theme-editor/views/components/string-cell.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/theme-editor/views/components/string-cell.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Lm9wbGEzbDAgewogIGJhY2tncm91bmQ6IHJnYmEoMTI1LDEyNSwxMjUsMC4xKTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgZm9udC1zaXplOiB2YXIoLS1hZmZpbmUtZm9udC14cyk7CiAgcGFkZGluZzogNHB4IDhweDsKfQ==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var row = 'opla3l0';","import { Scrollable } from '@affine/component';\nimport { useLiveData, useService } from '@toeverything/infra';\n\nimport { ThemeEditorService } from '../../services/theme-editor';\nimport type { TreeNode } from '../resource';\nimport * as styles from '../theme-editor.css';\nimport { isColor } from '../utils';\nimport { ColorCell } from './color-cell';\nimport { StringCell } from './string-cell';\n\nexport const VariableList = ({ node }: { node: TreeNode }) => {\n const themeEditor = useService(ThemeEditorService);\n const customTheme = useLiveData(themeEditor.customTheme$);\n\n const variables = node.variables ?? [];\n\n return (\n
\n
\n
    \n
  • Name
  • \n
  • Light
  • \n
  • Dark
  • \n
\n
\n \n \n {variables.map(variable => (\n
    \n \n {variable.name}\n \n {(['light', 'dark'] as const).map(mode => {\n const Renderer = isColor(variable[mode])\n ? ColorCell\n : StringCell;\n return (\n
  • \n \n themeEditor.updateCustomTheme(\n mode,\n variable.variableName,\n color\n )\n }\n />\n
  • \n );\n })}\n
\n ))}\n
\n \n
\n
\n );\n};\n","import { darkCssVariables, lightCssVariables } from '@toeverything/theme';\nimport {\n darkCssVariablesV2,\n lightCssVariablesV2,\n} from '@toeverything/theme/v2';\n\nimport { partsToVariableName, variableNameToParts } from './utils';\n\nexport type Variable = {\n id: string;\n name: string;\n variableName: string;\n light: string;\n dark: string;\n ancestors: string[];\n};\n\nexport interface TreeNode {\n id: string;\n label: string;\n parentId?: string;\n children?: TreeNode[];\n variables?: Variable[];\n}\nexport interface ThemeInfo {\n tree: TreeNode[];\n nodeMap: Map;\n variableMap: Map;\n}\n\nconst sortTree = (tree: TreeNode[]) => {\n const compare = (a: TreeNode, b: TreeNode) => {\n if (a.children && !b.children) return -1;\n if (!a.children && b.children) return 1;\n return a.label.localeCompare(b.label);\n };\n const walk = (node: TreeNode) => {\n node.children?.sort(compare);\n node.children?.forEach(walk);\n };\n\n tree.sort(compare).forEach(walk);\n return tree;\n};\n\nconst getTree = (\n light: Record,\n dark: Record\n): ThemeInfo => {\n const lightKeys = Object.keys(light);\n const darkKeys = Object.keys(dark);\n const allKeys = Array.from(new Set([...lightKeys, ...darkKeys])).map(name =>\n variableNameToParts(name)\n );\n const rootNodesSet = new Set();\n const nodeMap = new Map();\n const variableMap = new Map();\n\n allKeys.forEach(parts => {\n let id = '';\n let node: TreeNode | undefined;\n const ancestors: string[] = [];\n\n parts.slice(0, -1).forEach((part, index) => {\n const isLeaf = index === parts.length - 2;\n const parentId = id ? id : undefined;\n id += `/${part}`;\n ancestors.push(id);\n if (!nodeMap.has(id)) {\n nodeMap.set(id, {\n id,\n parentId,\n label: part,\n children: isLeaf ? undefined : [],\n variables: isLeaf ? [] : undefined,\n });\n }\n\n node = nodeMap.get(id);\n\n if (!node) return; // should never reach\n\n if (parentId) {\n const parent = nodeMap.get(parentId);\n if (!parent) return; // should never reach\n if (parent.children?.includes(node)) return;\n parent.children?.push(node);\n }\n\n if (index === 0) rootNodesSet.add(node);\n });\n\n if (node) {\n const variableName = partsToVariableName(parts);\n // for the case that a node should have both children & variables\n if (!node.variables) {\n node.variables = [];\n }\n const variable = {\n id: variableName,\n name: parts[parts.length - 1],\n variableName,\n light: light[variableName],\n dark: dark[variableName],\n ancestors,\n };\n node.variables.push(variable);\n variableMap.set(variableName, variable);\n }\n });\n\n return {\n tree: sortTree(Array.from(rootNodesSet)),\n nodeMap,\n variableMap,\n };\n};\n\nexport const affineThemes = {\n v1: getTree(lightCssVariables, darkCssVariables),\n v2: getTree(lightCssVariablesV2, darkCssVariablesV2),\n};\n","import { RadioGroup, Scrollable } from '@affine/component';\nimport { useService } from '@toeverything/infra';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { ThemeEditorService } from '../services/theme-editor';\nimport { ThemeEmpty } from './components/empty';\nimport { ThemeTreeNode } from './components/tree-node';\nimport { VariableList } from './components/variable-list';\nimport { affineThemes, type TreeNode } from './resource';\nimport * as styles from './theme-editor.css';\n\nexport const ThemeEditor = () => {\n const themeEditor = useService(ThemeEditorService);\n const [version, setVersion] = useState<'v1' | 'v2'>('v1');\n const [activeNode, setActiveNode] = useState();\n\n const { nodeMap, variableMap, tree } = affineThemes[version];\n\n const [customizedNodeIds, setCustomizedNodeIds] = useState>(\n new Set()\n );\n\n // workaround for the performance issue of using `useLiveData(themeEditor.customTheme$)` here\n useEffect(() => {\n const sub = themeEditor.customTheme$.subscribe(customTheme => {\n const ids = Array.from(\n new Set([\n ...Object.keys(customTheme?.light ?? {}),\n ...Object.keys(customTheme?.dark ?? {}),\n ])\n ).reduce((acc, name) => {\n const variable = variableMap.get(name);\n if (!variable) return acc;\n variable.ancestors.forEach(id => acc.add(id));\n return acc;\n }, new Set());\n\n setCustomizedNodeIds(prev => {\n const isSame =\n Array.from(ids).every(id => prev.has(id)) &&\n Array.from(prev).every(id => ids.has(id));\n return isSame ? prev : ids;\n });\n });\n return () => sub.unsubscribe();\n }, [themeEditor.customTheme$, variableMap]);\n\n const onToggleVersion = useCallback((v: 'v1' | 'v2') => {\n setVersion(v);\n setActiveNode(null);\n }, []);\n\n const isActive = useCallback(\n (node: TreeNode) => {\n let pointer = activeNode;\n while (pointer) {\n if (!pointer) return false;\n if (pointer === node) return true;\n pointer = pointer.parentId ? nodeMap.get(pointer.parentId) : undefined;\n }\n return false;\n },\n [activeNode, nodeMap]\n );\n\n const isCustomized = useCallback(\n (node: TreeNode) => customizedNodeIds.has(node.id),\n [customizedNodeIds]\n );\n\n return (\n
\n
\n
\n \n
\n \n \n {tree.map(node => (\n \n ))}\n \n \n \n
\n {activeNode ? : }\n
\n );\n};\n","import { type Framework, GlobalState } from '@toeverything/infra';\n\nimport { ThemeEditorService } from './services/theme-editor';\n\nexport { CustomThemeModifier, useCustomTheme } from './views/custom-theme';\nexport { ThemeEditor } from './views/theme-editor';\nexport { ThemeEditorService };\n\nexport function configureThemeEditorModule(framework: Framework) {\n framework.service(ThemeEditorService, [GlobalState]);\n}\n","import { Entity } from '@toeverything/infra';\n\nexport class SidebarTab extends Entity<{ id: string }> {\n readonly id = this.props.id;\n}\n","import type {\n Blocker,\n Listener,\n Location,\n MemoryHistory,\n MemoryHistoryOptions,\n To,\n} from 'history';\nimport { Action, createPath, parsePath } from 'history';\n\nexport interface NavigableHistory extends MemoryHistory {\n entries: Location[];\n}\n\n/**\n * Same as `createMemoryHistory` from `history` package, but with additional `entries` property.\n *\n * Original `MemoryHistory` does not have `entries` property, so we can't get `backable` and `forwardable` state which\n * is needed for implementing back and forward buttons.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#creatememoryhistory\n */\nexport function createNavigableHistory(\n options: MemoryHistoryOptions = {}\n): NavigableHistory {\n const { initialEntries = ['/'], initialIndex } = options;\n const entries: Location[] = initialEntries.map(entry => {\n const location = Object.freeze({\n pathname: '/',\n search: '',\n hash: '',\n state: null,\n key: createKey(),\n ...(typeof entry === 'string' ? parsePath(entry) : entry),\n });\n\n warning(\n location.pathname.charAt(0) === '/',\n `Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: ${JSON.stringify(\n entry\n )})`\n );\n\n return location;\n });\n let index = clamp(\n initialIndex == null ? entries.length - 1 : initialIndex,\n 0,\n entries.length - 1\n );\n\n let action = Action.Pop;\n let location = entries[index];\n const listeners = createEvents();\n const blockers = createEvents();\n\n function createHref(to: To) {\n return typeof to === 'string' ? to : createPath(to);\n }\n\n function getNextLocation(to: To, state: any = null): Location {\n return Object.freeze({\n pathname: location.pathname,\n search: '',\n hash: '',\n ...(typeof to === 'string' ? parsePath(to) : to),\n state,\n key: createKey(),\n });\n }\n\n function allowTx(action: Action, location: Location, retry: () => void) {\n return (\n !blockers.length || (blockers.call({ action, location, retry }), false)\n );\n }\n\n function applyTx(nextAction: Action, nextLocation: Location) {\n action = nextAction;\n location = nextLocation;\n listeners.call({ action, location });\n }\n\n function push(to: To, state?: any) {\n const nextAction = Action.Push;\n const nextLocation = getNextLocation(to, state);\n function retry() {\n push(to, state);\n }\n\n warning(\n location.pathname.charAt(0) === '/',\n `Relative pathnames are not supported in memory history.push(${JSON.stringify(\n to\n )})`\n );\n\n if (allowTx(nextAction, nextLocation, retry)) {\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n applyTx(nextAction, nextLocation);\n }\n }\n\n function replace(to: To, state?: any) {\n const nextAction = Action.Replace;\n const nextLocation = getNextLocation(to, state);\n function retry() {\n replace(to, state);\n }\n\n warning(\n location.pathname.charAt(0) === '/',\n `Relative pathnames are not supported in memory history.replace(${JSON.stringify(\n to\n )})`\n );\n\n if (allowTx(nextAction, nextLocation, retry)) {\n entries[index] = nextLocation;\n applyTx(nextAction, nextLocation);\n }\n }\n\n function go(delta: number) {\n const nextIndex = clamp(index + delta, 0, entries.length - 1);\n const nextAction = Action.Pop;\n const nextLocation = entries[nextIndex];\n function retry() {\n go(delta);\n }\n\n if (allowTx(nextAction, nextLocation, retry)) {\n index = nextIndex;\n applyTx(nextAction, nextLocation);\n }\n }\n\n const history: NavigableHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return location;\n },\n get entries() {\n return entries;\n },\n createHref,\n push,\n replace,\n go,\n back() {\n go(-1);\n },\n forward() {\n go(1);\n },\n listen(listener) {\n return listeners.push(listener);\n },\n block(blocker) {\n return blockers.push(blocker);\n },\n };\n\n return history;\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\nfunction warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== 'undefined') console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction clamp(n: number, lowerBound: number, upperBound: number) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n\ntype Events = {\n length: number;\n push: (fn: F) => () => void;\n call: (arg: any) => void;\n};\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction createEvents(): Events {\n let handlers: F[] = [];\n\n return {\n get length() {\n return handlers.length;\n },\n push(fn: F) {\n handlers.push(fn);\n return function () {\n handlers = handlers.filter(handler => handler !== fn);\n };\n },\n call(arg) {\n handlers.forEach(fn => fn && fn(arg));\n },\n };\n}\n","import { Entity, LiveData } from '@toeverything/infra';\nimport type { Location, To } from 'history';\nimport { Observable } from 'rxjs';\n\nimport { createNavigableHistory } from '../../../utils/navigable-history';\nimport type { ViewIconName } from '../constants';\nimport { ViewScope } from '../scopes/view';\nimport { SidebarTab } from './sidebar-tab';\n\nexport class View extends Entity<{\n id: string;\n defaultLocation?: To | undefined;\n title?: string;\n icon?: ViewIconName;\n}> {\n scope = this.framework.createScope(ViewScope, {\n view: this as View,\n });\n\n get id() {\n return this.props.id;\n }\n\n set id(id: string) {\n this.props.id = id;\n }\n\n sidebarTabs$ = new LiveData([]);\n\n // _activeTabId may point to a non-existent tab.\n // In this case, we still retain the activeTabId data and wait for the non-existent tab to be mounted.\n _activeSidebarTabId$ = new LiveData(null);\n activeSidebarTab$ = LiveData.computed(get => {\n const activeTabId = get(this._activeSidebarTabId$);\n const tabs = get(this.sidebarTabs$);\n return tabs.length > 0\n ? (tabs.find(tab => tab.id === activeTabId) ?? tabs[0])\n : null;\n });\n\n constructor() {\n super();\n this.history = createNavigableHistory({\n initialEntries: [this.props.defaultLocation ?? { pathname: '/all' }],\n initialIndex: 0,\n });\n }\n\n history = createNavigableHistory({\n initialEntries: ['/all'],\n initialIndex: 0,\n });\n\n location$ = LiveData.from(\n new Observable(subscriber => {\n subscriber.next(this.history.location);\n return this.history.listen(update => {\n subscriber.next(update.location);\n });\n }),\n this.history.location\n );\n\n entries$ = LiveData.from(\n new Observable(subscriber => {\n subscriber.next(this.history.entries);\n return this.history.listen(() => {\n subscriber.next(this.history.entries);\n });\n }),\n this.history.entries\n );\n\n size$ = new LiveData(100);\n\n title$ = new LiveData(this.props.title ?? '');\n\n icon$ = new LiveData(this.props.icon ?? 'allDocs');\n\n push(path: To) {\n this.history.push(path);\n }\n\n go(n: number) {\n this.history.go(n);\n }\n\n replace(path: To) {\n this.history.replace(path);\n }\n\n setSize(size?: number) {\n this.size$.next(size ?? 100);\n }\n\n addSidebarTab(id: string) {\n this.sidebarTabs$.next([\n ...this.sidebarTabs$.value,\n this.scope.createEntity(SidebarTab, {\n id,\n }),\n ]);\n return id;\n }\n\n removeSidebarTab(id: string) {\n this.sidebarTabs$.next(\n this.sidebarTabs$.value.filter(tab => tab.id !== id)\n );\n }\n\n activeSidebarTab(id: string | null) {\n this._activeSidebarTabId$.next(id);\n }\n\n setTitle(title: string) {\n this.title$.next(title);\n }\n\n setIcon(icon: ViewIconName) {\n this.icon$.next(icon);\n }\n}\n","import { Unreachable } from '@affine/env/constant';\nimport { Entity, LiveData } from '@toeverything/infra';\nimport { type To } from 'history';\nimport { nanoid } from 'nanoid';\n\nimport type { WorkbenchNewTabHandler } from '../services/workbench-new-tab-handler';\nimport type { WorkbenchDefaultState } from '../services/workbench-view-state';\nimport { View } from './view';\n\nexport type WorkbenchPosition = 'beside' | 'active' | 'head' | 'tail' | number;\n\ntype WorkbenchOpenOptions = {\n at?: WorkbenchPosition | 'new-tab';\n replaceHistory?: boolean;\n show?: boolean; // only for new tab\n};\n\nexport class Workbench extends Entity {\n constructor(\n private readonly defaultState: WorkbenchDefaultState,\n private readonly newTabHandler: WorkbenchNewTabHandler\n ) {\n super();\n }\n\n readonly activeViewIndex$ = new LiveData(this.defaultState.activeViewIndex);\n readonly basename$ = new LiveData(this.defaultState.basename);\n\n readonly views$: LiveData = new LiveData(\n this.defaultState.views.map(meta => {\n return this.framework.createEntity(View, {\n id: meta.id,\n defaultLocation: meta.path,\n icon: meta.icon,\n title: meta.title,\n });\n })\n );\n\n activeView$ = LiveData.computed(get => {\n const activeIndex = get(this.activeViewIndex$);\n const views = get(this.views$);\n return views[activeIndex]; // todo: this could be null\n });\n location$ = LiveData.computed(get => {\n return get(get(this.activeView$).location$);\n });\n sidebarOpen$ = new LiveData(false);\n\n active(index: number) {\n index = Math.max(0, Math.min(index, this.views$.value.length - 1));\n this.activeViewIndex$.next(index);\n }\n\n updateBasename(basename: string) {\n this.basename$.next(basename);\n }\n\n createView(at: WorkbenchPosition = 'beside', defaultLocation: To) {\n const view = this.framework.createEntity(View, {\n id: nanoid(),\n defaultLocation,\n });\n const newViews = [...this.views$.value];\n newViews.splice(this.indexAt(at), 0, view);\n this.views$.next(newViews);\n const index = newViews.indexOf(view);\n this.active(index);\n return index;\n }\n\n openSidebar() {\n this.sidebarOpen$.next(true);\n }\n\n closeSidebar() {\n this.sidebarOpen$.next(false);\n }\n\n toggleSidebar() {\n this.sidebarOpen$.next(!this.sidebarOpen$.value);\n }\n\n open(to: To, option: WorkbenchOpenOptions = {}) {\n if (option.at === 'new-tab') {\n this.newTab(to, {\n show: option.show,\n });\n } else {\n const { at = 'active', replaceHistory = false } = option;\n let view = this.viewAt(at);\n if (!view) {\n const newIndex = this.createView(at, to);\n view = this.viewAt(newIndex);\n if (!view) {\n throw new Unreachable();\n }\n } else {\n if (replaceHistory) {\n view.history.replace(to);\n } else {\n view.history.push(to);\n }\n }\n }\n }\n\n newTab(\n to: To,\n {\n show,\n }: {\n show?: boolean;\n } = {}\n ) {\n this.newTabHandler({\n basename: this.basename$.value,\n to,\n show: show ?? true,\n });\n }\n\n openDoc(\n id: string | { docId: string; blockId?: string },\n options?: WorkbenchOpenOptions\n ) {\n const docId = typeof id === 'string' ? id : id.docId;\n const blockId = typeof id === 'string' ? undefined : id.blockId;\n this.open(blockId ? `/${docId}#${blockId}` : `/${docId}`, options);\n }\n\n openCollections(options?: WorkbenchOpenOptions) {\n this.open('/collection', options);\n }\n\n openCollection(collectionId: string, options?: WorkbenchOpenOptions) {\n this.open(`/collection/${collectionId}`, options);\n }\n\n openAll(options?: WorkbenchOpenOptions) {\n this.open('/all', options);\n }\n\n openTrash(options?: WorkbenchOpenOptions) {\n this.open('/trash', options);\n }\n\n openTags(options?: WorkbenchOpenOptions) {\n this.open('/tag', options);\n }\n\n openTag(tagId: string, options?: WorkbenchOpenOptions) {\n this.open(`/tag/${tagId}`, options);\n }\n\n viewAt(positionIndex: WorkbenchPosition): View | undefined {\n return this.views$.value[this.indexAt(positionIndex)];\n }\n\n close(view: View) {\n if (this.views$.value.length === 1) return;\n const index = this.views$.value.indexOf(view);\n if (index === -1) return;\n const newViews = [...this.views$.value];\n newViews.splice(index, 1);\n const activeViewIndex = this.activeViewIndex$.value;\n if (activeViewIndex !== 0 && activeViewIndex >= index) {\n this.active(activeViewIndex - 1);\n }\n this.views$.next(newViews);\n }\n\n closeOthers(view: View) {\n view.size$.next(100);\n this.views$.next([view]);\n this.active(0);\n }\n\n moveView(from: number, to: number) {\n from = Math.max(0, Math.min(from, this.views$.value.length - 1));\n to = Math.max(0, Math.min(to, this.views$.value.length - 1));\n if (from === to) return;\n const views = [...this.views$.value];\n const fromView = views[from];\n const toView = views[to];\n views[to] = fromView;\n views[from] = toView;\n this.views$.next(views);\n this.active(to);\n }\n\n /**\n * resize specified view and the next view\n * @param view\n * @param percent from 0 to 1\n * @returns\n */\n resize(index: number, percent: number) {\n const view = this.views$.value[index];\n const nextView = this.views$.value[index + 1];\n if (!nextView) return;\n\n const totalViewSize = this.views$.value.reduce(\n (sum, v) => sum + v.size$.value,\n 0\n );\n const percentOfTotal = totalViewSize * percent;\n const newSize = Number((view.size$.value + percentOfTotal).toFixed(4));\n const newNextSize = Number(\n (nextView.size$.value - percentOfTotal).toFixed(4)\n );\n // TODO(@catsjuice): better strategy to limit size\n if (newSize / totalViewSize < 0.2 || newNextSize / totalViewSize < 0.2)\n return;\n view.setSize(newSize);\n nextView.setSize(newNextSize);\n }\n\n private indexAt(positionIndex: WorkbenchPosition): number {\n if (positionIndex === 'active') {\n return this.activeViewIndex$.value;\n }\n if (positionIndex === 'beside') {\n return this.activeViewIndex$.value + 1;\n }\n if (positionIndex === 'head') {\n return 0;\n }\n if (positionIndex === 'tail') {\n return this.views$.value.length;\n }\n return positionIndex;\n }\n}\n","import { useLiveData, useService } from '@toeverything/infra';\n\nimport { ViewService } from '../services/view';\nimport { WorkbenchService } from '../services/workbench';\n\nexport function useIsActiveView() {\n const workbench = useService(WorkbenchService).workbench;\n const view = useService(ViewService).view;\n\n const activeView = useLiveData(workbench.activeView$);\n return view === activeView;\n}\n","import { LiveData, useLiveData } from '@toeverything/infra';\nimport {\n forwardRef,\n type Ref,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const createIsland = () => {\n const targetLiveData$ = new LiveData(null);\n let mounted = false;\n let provided = false;\n return {\n Target: forwardRef(function IslandTarget(\n { ...other }: React.HTMLProps,\n ref: Ref\n ) {\n const target = useRef(null);\n\n useImperativeHandle(ref, () => target.current as HTMLDivElement, []);\n useEffect(() => {\n if (mounted === true) {\n throw new Error('Island should not be mounted more than once');\n }\n mounted = true;\n targetLiveData$.next(target.current);\n return () => {\n mounted = false;\n targetLiveData$.next(null);\n };\n }, []);\n return
;\n }),\n Provider: ({ children }: React.PropsWithChildren) => {\n const target = useLiveData(targetLiveData$);\n useEffect(() => {\n if (provided === true && process.env.NODE_ENV !== 'production') {\n throw new Error('Island should not be provided more than once');\n }\n provided = true;\n return () => {\n provided = false;\n };\n }, []);\n return target ? createPortal(children, target) : null;\n },\n };\n};\n\nexport type Island = ReturnType;\n","/**\n * # View Islands\n *\n * This file defines some components that allow each UI area to be defined inside each View route as shown below,\n * and the Workbench is responsible for rendering these areas into their containers.\n *\n * ```tsx\n * const MyView = () => {\n * return <>\n * \n * ...\n * \n * \n * ...\n * \n * }>\n * ...\n * \n * \n * }\n *\n * const viewRoute = [\n * {\n * path: '/my-view',\n * component: MyView,\n * }\n * ]\n * ```\n *\n * Each Island is divided into `Target` and `Provider`.\n * The `Provider` wraps the content to be rendered, while the `Target` is placed where it needs to be rendered.\n * Then you get a view portal.\n */\n\nimport { createIsland, type Island } from '@affine/core/utils/island';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport type React from 'react';\nimport {\n createContext,\n forwardRef,\n type Ref,\n useContext,\n useEffect,\n useState,\n} from 'react';\n\nimport { ViewService } from '../services/view';\n\ninterface ViewIslandRegistry {\n [key: string]: Island | undefined;\n}\n\n/**\n * A registry context will be placed at the top level of the workbench.\n *\n * The `View` will create islands and place them in the registry,\n * while `Workbench` can use the KEY to retrieve and display the islands.\n */\nconst ViewIslandRegistryContext = createContext({});\nconst ViewIslandSetContext = createContext\n> | null>(null);\n\nconst ViewIsland = ({\n id,\n children,\n}: React.PropsWithChildren<{ id: string }>) => {\n const setter = useContext(ViewIslandSetContext);\n\n if (!setter) {\n throw new Error(\n 'ViewIslandProvider must be used inside ViewIslandRegistryProvider'\n );\n }\n\n const [island] = useState(createIsland());\n\n useEffect(() => {\n setter(prev => ({ ...prev, [id]: island }));\n\n return () => {\n setter(prev => {\n const next = { ...prev };\n delete next[id];\n return next;\n });\n };\n }, [id, island, setter]);\n\n return {children};\n};\n\nconst ViewIslandTarget = forwardRef(function ViewIslandTarget(\n {\n id,\n children,\n ...otherProps\n }: { id: string } & React.HTMLProps,\n ref: Ref\n) {\n const island = useContext(ViewIslandRegistryContext)[id];\n if (!island) {\n return
;\n }\n\n return (\n \n {children}\n \n );\n});\n\nexport const ViewIslandRegistryProvider = ({\n children,\n}: React.PropsWithChildren) => {\n const [contextValue, setContextValue] = useState({});\n\n return (\n \n \n {children}\n \n \n );\n};\n\nexport const ViewBody = ({ children }: React.PropsWithChildren) => {\n const view = useService(ViewService).view;\n\n return {children};\n};\n\nexport const ViewBodyTarget = forwardRef(function ViewBodyTarget(\n {\n viewId,\n ...otherProps\n }: React.HTMLProps & { viewId: string },\n ref: React.ForwardedRef\n) {\n return ;\n});\n\nexport const ViewHeader = ({ children }: React.PropsWithChildren) => {\n const view = useService(ViewService).view;\n\n return {children};\n};\n\nexport const ViewHeaderTarget = forwardRef(function ViewHeaderTarget(\n {\n viewId,\n ...otherProps\n }: React.HTMLProps & { viewId: string },\n ref: React.ForwardedRef\n) {\n return ;\n});\n\nexport const ViewSidebarTab = ({\n children,\n tabId,\n icon,\n unmountOnInactive = true,\n}: React.PropsWithChildren<{\n tabId: string;\n icon: React.ReactNode;\n unmountOnInactive?: boolean;\n}>) => {\n const view = useService(ViewService).view;\n const activeTab = useLiveData(view.activeSidebarTab$);\n useEffect(() => {\n view.addSidebarTab(tabId);\n return () => {\n view.removeSidebarTab(tabId);\n };\n }, [tabId, view]);\n\n return (\n <>\n {icon}\n \n {unmountOnInactive && activeTab?.id !== tabId ? null : children}\n \n \n );\n};\n\nexport const ViewSidebarTabIconTarget = forwardRef(\n function ViewSidebarTabIconTarget(\n {\n viewId,\n tabId,\n ...otherProps\n }: React.HTMLProps & { tabId: string; viewId: string },\n ref: Ref\n ) {\n return (\n \n );\n }\n);\n\nexport const ViewSidebarTabBodyTarget = forwardRef(\n function ViewSidebarTabBodyTarget(\n {\n viewId,\n tabId,\n ...otherProps\n }: React.HTMLProps & {\n tabId: string;\n viewId: string;\n },\n ref: Ref\n ) {\n return (\n \n );\n }\n);\n","import { IconButton } from '@affine/component';\nimport { RightSidebarIcon } from '@blocksuite/icons/rc';\n\nimport * as styles from './sidebar-header.css';\n\nexport type HeaderProps = {\n floating: boolean;\n onToggle?: () => void;\n children?: React.ReactNode;\n};\n\nfunction Container({\n children,\n style,\n className,\n floating,\n}: {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n floating?: boolean;\n}) {\n return (\n \n {children}\n
\n );\n}\n\nconst ToggleButton = ({ onToggle }: { onToggle?: () => void }) => {\n return (\n \n \n \n );\n};\n\nexport const Header = ({ floating, children, onToggle }: HeaderProps) => {\n return (\n \n {children}\n {!environment.isDesktop && (\n <>\n
\n \n \n )}\n \n );\n};\n","import \"../core/src/modules/workbench/view/sidebar/sidebar-header.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/workbench/view/sidebar/sidebar-header.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xNnZwdnFhMCB7CiAgZGlzcGxheTogZmxleDsKICBoZWlnaHQ6IDUycHg7CiAgd2lkdGg6IDEwMCU7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBmbGV4LXNocmluazogMDsKICBwYWRkaW5nOiAwIDE2cHg7CiAgei1pbmRleDogMTsKICBnYXA6IDEycHg7CiAgYmFja2dyb3VuZDogdmFyKC0tYWZmaW5lLWJhY2tncm91bmQtcHJpbWFyeS1jb2xvcik7Cn0KLl8xNnZwdnFhMSB7CiAgZmxleC1ncm93OiAxOwogIG1pbi13aWR0aDogMTJweDsKfQouXzE2dnB2cWEyIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZmxleC1zaHJpbms6IDA7CiAgaGVpZ2h0OiA1MnB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQpAbWVkaWEgcHJpbnQgewogIC5fMTZ2cHZxYTAgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0=\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var header = '_16vpvqa0';\nexport var spacer = '_16vpvqa1';\nexport var standaloneExtensionSwitcherWrapper = '_16vpvqa2';","import { RadioGroup } from '@affine/component';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { useCallback } from 'react';\n\nimport { ViewService } from '../../services/view';\nimport { ViewSidebarTabIconTarget } from '../view-islands';\nimport * as styles from './sidebar-header-switcher.css';\n\n// provide a switcher for active extensions\n// will be used in global top header (MacOS) or sidebar (Windows)\nexport const SidebarHeaderSwitcher = () => {\n const view = useService(ViewService).view;\n const tabs = useLiveData(view.sidebarTabs$);\n const activeTab = useLiveData(view.activeSidebarTab$);\n\n const tabItems = tabs.map(tab => ({\n value: tab.id,\n label: (\n \n ),\n style: { padding: 0, fontSize: 20, width: 24 },\n }));\n\n const handleActiveTabChange = useCallback(\n (tabId: string) => {\n view.activeSidebarTab(tabId);\n },\n [view]\n );\n\n return tabItems.length ? (\n \n ) : null;\n};\n","import \"../core/src/modules/workbench/view/sidebar/sidebar-header-switcher.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/workbench/view/sidebar/sidebar-header-switcher.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LnY2cmg0MjAgewogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQ==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var iconContainer = 'v6rh420';","import { useLiveData, useService } from '@toeverything/infra';\nimport clsx from 'clsx';\nimport { useCallback } from 'react';\n\nimport { ViewService } from '../../services/view';\nimport { WorkbenchService } from '../../services/workbench';\nimport { ViewSidebarTabBodyTarget } from '../view-islands';\nimport * as styles from './sidebar-container.css';\nimport { Header } from './sidebar-header';\nimport { SidebarHeaderSwitcher } from './sidebar-header-switcher';\n\nexport const SidebarContainer = ({\n className,\n ...props\n}: React.HtmlHTMLAttributes) => {\n const workbenchService = useService(WorkbenchService);\n const workbench = workbenchService.workbench;\n const viewService = useService(ViewService);\n const view = viewService.view;\n const sidebarTabs = useLiveData(view.sidebarTabs$);\n const activeSidebarTab = useLiveData(view.activeSidebarTab$);\n\n const handleToggleOpen = useCallback(() => {\n workbench.toggleSidebar();\n }, [workbench]);\n\n return (\n
\n
\n \n
\n {sidebarTabs.length > 0 ? (\n sidebarTabs.map(sidebar => (\n \n ))\n ) : (\n
No Selection
\n )}\n
\n );\n};\n","import \"../core/src/modules/workbench/view/sidebar/sidebar-container.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/workbench/view/sidebar/sidebar-container.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll84cTZxeG0wIHsKICBkaXNwbGF5OiBmbGV4OwogIGJhY2tncm91bmQ6IHZhcigtLWFmZmluZS1iYWNrZ3JvdW5kLXByaW1hcnktY29sb3IpOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKfQpbZGF0YS1jbGllbnQtYm9yZGVyPXRydWVdW2RhdGEtaXMtZmxvYXRpbmc9InRydWUiXSAuXzhxNnF4bTAgewogIGJveC1zaGFkb3c6IHZhcigtLWFmZmluZS1zaGFkb3ctMyk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYWZmaW5lLWJvcmRlci1jb2xvcik7Cn0KLl84cTZxeG0xIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZmxleDogMTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci5fOHE2cXhtMiB7CiAgYm9yZGVyLXRvcDogMC41cHggc29saWQgdmFyKC0tYWZmaW5lLWJvcmRlci1jb2xvcik7Cn0KLl84cTZxeG0zIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZmxleDogMTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBjb2xvcjogdmFyKC0tYWZmaW5lLXRleHQtc2Vjb25kYXJ5LWNvbG9yKTsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var borderTop = '_8q6qxm2';\nexport var sidebarBodyNoSelection = '_8q6qxm3';\nexport var sidebarBodyTarget = '_8q6qxm1';\nexport var sidebarContainerInner = '_8q6qxm0';","import type { MenuProps } from '@affine/component';\nimport { Menu } from '@affine/component';\nimport clsx from 'clsx';\nimport type { HTMLAttributes, MouseEventHandler } from 'react';\nimport { forwardRef, memo, useCallback, useMemo, useState } from 'react';\n\nimport * as styles from './indicator.css';\n\nexport interface SplitViewMenuProps extends HTMLAttributes {\n active?: boolean;\n open?: boolean;\n onOpenMenu?: () => void;\n setPressed: (v: boolean) => void;\n}\n\nexport const SplitViewMenuIndicator = memo(\n forwardRef(\n function SplitViewMenuIndicator(\n {\n className,\n active,\n open,\n setPressed,\n onOpenMenu,\n ...attrs\n }: SplitViewMenuProps,\n ref\n ) {\n // dnd's `isDragging` changes after mouseDown and mouseMoved\n const onMouseDown = useCallback(() => {\n const t = setTimeout(() => setPressed(true), 100);\n window.addEventListener(\n 'mouseup',\n () => {\n clearTimeout(t);\n setPressed(false);\n },\n { once: true }\n );\n }, [setPressed]);\n\n const onClick: MouseEventHandler = useCallback(() => {\n !open && onOpenMenu?.();\n }, [onOpenMenu, open]);\n\n return (\n \n
\n
\n );\n }\n )\n);\n\ninterface SplitViewIndicatorProps extends HTMLAttributes {\n isDragging?: boolean;\n isActive?: boolean;\n menuItems?: React.ReactNode;\n // import type { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities' is not allowed\n listeners?: any;\n setPressed?: (pressed: boolean) => void;\n}\nexport const SplitViewIndicator = ({\n isDragging,\n isActive,\n menuItems,\n listeners,\n setPressed,\n}: SplitViewIndicatorProps) => {\n const active = isActive || isDragging;\n const [menuOpen, setMenuOpen] = useState(false);\n\n // prevent menu from opening when dragging\n const setOpenMenuManually = useCallback((open: boolean) => {\n if (open) return;\n setMenuOpen(open);\n }, []);\n const openMenu = useCallback(() => {\n setMenuOpen(true);\n }, []);\n\n const menuRootOptions = useMemo(\n () =>\n ({\n open: menuOpen,\n onOpenChange: setOpenMenuManually,\n }) satisfies MenuProps['rootOptions'],\n [menuOpen, setOpenMenuManually]\n );\n const menuContentOptions = useMemo(\n () =>\n ({\n align: 'center',\n }) satisfies MenuProps['contentOptions'],\n []\n );\n\n return (\n
\n \n
\n \n \n
\n );\n};\n","import \"../core/src/modules/workbench/view/split-view/indicator.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/workbench/view/split-view/indicator.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xbHR1eGNlMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDQ7CiAgdG9wOiAwOwogIGxlZnQ6IDUwJTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgd2lkdGg6IDUwJTsKICBtYXgtd2lkdGg6IDMwMHB4OwogIG1pbi13aWR0aDogMTIwcHg7CiAgaGVpZ2h0OiAxNXB4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAtd2Via2l0LWFwcC1yZWdpb246IG5vLWRyYWc7Cn0KLl8xbHR1eGNlMSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouXzFsdHV4Y2UyIHsKICB3aWR0aDogMjlweDsKICBoZWlnaHQ6IDE1cHg7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGN1cnNvcjogZ3JhYjsKICAtd2Via2l0LWFwcC1yZWdpb246IG5vLWRyYWc7CiAgY29sb3I6IHZhcigtLWFmZmluZS1wbGFjZWhvbGRlci1jb2xvcik7Cn0KLl8xbHR1eGNlMjpob3ZlciwgLl8xbHR1eGNlMjphY3RpdmUsIC5fMWx0dXhjZTJbZGF0YS1hY3RpdmU9InRydWUiXSB7CiAgY29sb3I6IHZhcigtLWFmZmluZS1icmFuZC1jb2xvcik7Cn0KLl8xbHR1eGNlMyB7CiAgd2lkdGg6IDE2cHg7CiAgaGVpZ2h0OiAzcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7CiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7Cn0KW2RhdGEtaXMtZHJhZ2dpbmc9InRydWUiXSAuXzFsdHV4Y2UzIHsKICB3aWR0aDogMjRweDsKICBoZWlnaHQ6IDJweDsKfQ==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var indicator = '_1ltuxce2';\nexport var indicatorInner = '_1ltuxce3';\nexport var indicatorWrapper = '_1ltuxce0';\nexport var menuTrigger = '_1ltuxce1';","import { MenuIcon, MenuItem } from '@affine/component';\nimport { useI18n } from '@affine/i18n';\nimport {\n ExpandCloseIcon,\n MoveToLeftDuotoneIcon,\n MoveToRightDuotoneIcon,\n SoloViewIcon,\n} from '@blocksuite/icons/rc';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport type { SetStateAction } from 'jotai';\nimport type {\n Dispatch,\n HTMLAttributes,\n PropsWithChildren,\n RefObject,\n} from 'react';\nimport {\n memo,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport type { View } from '../../entities/view';\nimport { WorkbenchService } from '../../services/workbench';\nimport { SplitViewIndicator } from './indicator';\nimport * as styles from './split-view.css';\n\nexport interface SplitViewPanelProps\n extends PropsWithChildren> {\n view: View;\n resizeHandle?: React.ReactNode;\n setSlots?: Dispatch<\n SetStateAction>>\n >;\n}\n\nexport const SplitViewPanel = memo(function SplitViewPanel({\n children,\n view,\n setSlots,\n}: SplitViewPanelProps) {\n const [indicatorPressed, setIndicatorPressed] = useState(false);\n const ref = useRef(null);\n const size = useLiveData(view.size$);\n const workbench = useService(WorkbenchService).workbench;\n const activeView = useLiveData(workbench.activeView$);\n const views = useLiveData(workbench.views$);\n const isLast = views[views.length - 1] === view;\n\n const {\n attributes,\n listeners,\n transform,\n transition,\n isDragging: dndIsDragging,\n setNodeRef,\n } = useSortable({ id: view.id, attributes: { role: 'group' } });\n\n const isDragging = dndIsDragging || indicatorPressed;\n const isActive = activeView === view;\n\n useLayoutEffect(() => {\n if (ref.current) {\n setSlots?.(slots => ({ ...slots, [view.id]: ref }));\n }\n }, [setSlots, view.id]);\n\n const style = useMemo(\n () => ({\n ...assignInlineVars({ '--size': size.toString() }),\n }),\n [size]\n );\n const dragStyle = useMemo(\n () => ({\n transform: `translate3d(${transform?.x ?? 0}px, 0, 0)`,\n transition,\n }),\n [transform, transition]\n );\n\n return (\n 1}\n data-is-last={isLast}\n >\n \n
\n {views.length > 1 ? (\n }\n setPressed={setIndicatorPressed}\n />\n ) : null}\n
\n {children}\n
\n );\n});\n\nconst SplitViewMenu = ({ view }: { view: View }) => {\n const t = useI18n();\n const workbench = useService(WorkbenchService).workbench;\n const views = useLiveData(workbench.views$);\n\n const viewIndex = views.findIndex(v => v === view);\n\n const handleClose = useCallback(\n () => workbench.close(view),\n [view, workbench]\n );\n const handleMoveLeft = useCallback(() => {\n workbench.moveView(viewIndex, viewIndex - 1);\n }, [viewIndex, workbench]);\n const handleMoveRight = useCallback(() => {\n workbench.moveView(viewIndex, viewIndex + 1);\n }, [viewIndex, workbench]);\n const handleCloseOthers = useCallback(() => {\n workbench.closeOthers(view);\n }, [view, workbench]);\n\n const CloseItem =\n views.length > 1 ? (\n } />}\n onClick={handleClose}\n >\n {t['com.arms.workbench.split-view-menu.close']()}\n \n ) : null;\n\n const MoveLeftItem =\n viewIndex > 0 && views.length > 1 ? (\n } />}\n >\n {t['com.arms.workbench.split-view-menu.move-left']()}\n \n ) : null;\n\n const FullScreenItem =\n views.length > 1 ? (\n } />}\n >\n {t['com.arms.workbench.split-view-menu.keep-this-one']()}\n \n ) : null;\n\n const MoveRightItem =\n viewIndex < views.length - 1 ? (\n } />}\n >\n {t['com.arms.workbench.split-view-menu.move-right']()}\n \n ) : null;\n return (\n <>\n {MoveRightItem}\n {MoveLeftItem}\n {FullScreenItem}\n {CloseItem}\n \n );\n};\n","import \"../core/src/modules/workbench/view/split-view/split-view.css.ts.vanilla.css!=!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/workbench/view/split-view/split-view.css.ts.vanilla.css\\\",\\\"source\\\":\\\"#H4sIAAAAAAAAA6VVUY/aMAx+51dYSJM4ibAWRjUF3S+Z7iGkbutdL6mSlOOY7r9PaUNpobBuEw8oTvzZ/j7bXWVJUh+rNfyaATDWniIOUXXc9SxxZ0nJVqX44JCV2Bj8P0vJoHSkFQej37250paCAUvh6IDeutcmRcOMSKm2HA7CLLoQT/5BLqqhOXrazT5nq5Dmj1Q4wWRJqBxrwZ7nztQ4f7mu4PtNBYm3XGNp47GET/V5fkDjSIoyoF2XJnVZv6kexubyzBaG1CuHqOMkN/r9XIulEy6hLXESM6QKNOR8rMd5DjIpkPLCNUmM+hXa0Ekrd+v5TqkrBo5XJGeitNjz4kq7RfuSLCuFdWchnoZXqRF5Tirvrpt453JDvqttdQSrS0oDYSLLSGGIzqQutek3wuYufIN+YqRSPHKI79YTXg9IaO/+IZ1vfQ7jKPqy64lxPt9X+IzCucgcmgZMauVQOQ7z+bBpxN7qsnZN05Cy6ELP3YP3vqQcGoYHVM5yUFo13heWAoDvYpH6rm2AIQo/Z4SylTCoGrzmGLK5OHnWLMh6T5Lt8URoFtEqTpYQLyFabdruP4sxJtwYC/dyWlfHK2WMUOmtMNv/EQZAH9BkpQ9eUJpif/STBnlcFqerThTn9Fs4hGZn23YzdVm1x06Nzeia/VlbR9kH6/pCohfVX4mScsXI4ZvlYJ1BJwtvl7Wx2jRrixn0K2jiNLS1hXSlKOXC5wzsajHDV1hPHMoBcFdb24iTN1XC+R4zbXAJ0z3uTlSgf92yPy7kTacI+ZobXauUPxyK7hlEq9iO9Fgr+vTK23eNiKTyl78n4gbgwksgYjP4Oia88M1/CfSHTNpp7dEzZTq7IE0yD2KML4SoOkLsN8E6ro7w7fFKANCVkOQ+/HqPt7vZ528QUhIi+wgAAA==\\\"}!../../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var resizeHandle = 'f66uxp6';\nexport var splitViewPanel = 'f66uxp3';\nexport var splitViewPanelContent = 'f66uxp5';\nexport var splitViewPanelDrag = 'f66uxp4';\nexport var splitViewRoot = 'f66uxp2';","import type { HTMLAttributes } from 'react';\nimport { useCallback } from 'react';\n\nimport * as styles from './split-view.css';\n\ninterface ResizeHandleProps extends HTMLAttributes {\n resizing: boolean;\n onResizeStart: () => void;\n onResizeEnd: () => void;\n onResizing: (offset: { x: number; y: number }) => void;\n}\nexport const ResizeHandle = ({\n resizing,\n onResizing,\n onResizeStart,\n onResizeEnd,\n}: ResizeHandleProps) => {\n // TODO(@catsjuice): touch support\n const onMouseDown = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n\n onResizeStart();\n const prevPos = { x: e.clientX, y: e.clientY };\n\n function onMouseMove(e: MouseEvent) {\n e.preventDefault();\n const dx = e.clientX - prevPos.x;\n const dy = e.clientY - prevPos.y;\n onResizing({ x: dx, y: dy });\n prevPos.x = e.clientX;\n prevPos.y = e.clientY;\n }\n\n function onMouseUp(e: MouseEvent) {\n e.preventDefault();\n onResizeEnd();\n document.removeEventListener('mousemove', onMouseMove);\n }\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp, { once: true });\n },\n [onResizeEnd, onResizeStart, onResizing]\n );\n\n return (\n \n );\n};\n","import { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper';\nimport type { DragEndEvent } from '@dnd-kit/core';\nimport {\n closestCenter,\n DndContext,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n horizontalListSortingStrategy,\n SortableContext,\n} from '@dnd-kit/sortable';\nimport { useService } from '@toeverything/infra';\nimport clsx from 'clsx';\nimport type { HTMLAttributes, RefObject } from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport type { View } from '../../entities/view';\nimport { WorkbenchService } from '../../services/workbench';\nimport { SplitViewPanel } from './panel';\nimport { ResizeHandle } from './resize-handle';\nimport * as styles from './split-view.css';\n\nexport interface SplitViewProps extends HTMLAttributes {\n /**\n * ⚠️ `vertical` orientation is not supported yet\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n views: View[];\n renderer: (item: View, index: number) => React.ReactNode;\n onMove?: (from: number, to: number) => void;\n}\n\ntype SlotsMap = Record>;\n// TODO(@catsjuice): vertical orientation support\nexport const SplitView = ({\n orientation = 'horizontal',\n className,\n views,\n renderer,\n onMove,\n ...attrs\n}: SplitViewProps) => {\n const rootRef = useRef(null);\n const [slots, setSlots] = useState({});\n const [resizingViewId, setResizingViewId] = useState(null);\n const { appSettings } = useAppSettingHelper();\n const workbench = useService(WorkbenchService).workbench;\n\n const sensors = useSensors(\n useSensor(\n PointerSensor,\n useMemo(\n /* avoid re-rendering */\n () => ({\n activationConstraint: {\n distance: 0,\n },\n }),\n []\n )\n )\n );\n\n const onResizing = useCallback(\n (index: number, { x, y }: { x: number; y: number }) => {\n const rootEl = rootRef.current;\n if (!rootEl) return;\n\n const rootRect = rootEl.getBoundingClientRect();\n const offset = orientation === 'horizontal' ? x : y;\n const total =\n orientation === 'horizontal' ? rootRect.width : rootRect.height;\n\n const percent = offset / total;\n workbench.resize(index, percent);\n },\n [orientation, workbench]\n );\n\n const resizeHandleRenderer = useCallback(\n (view: View, index: number) =>\n index < views.length - 1 ? (\n setResizingViewId(view.id)}\n onResizeEnd={() => setResizingViewId(null)}\n onResizing={dxy => onResizing(index, dxy)}\n />\n ) : null,\n [onResizing, resizingViewId, views.length]\n );\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n if (active.id !== over?.id) {\n // update order\n const fromIndex = views.findIndex(v => v.id === active.id);\n const toIndex = views.findIndex(v => v.id === over?.id);\n onMove?.(fromIndex, toIndex);\n }\n },\n [onMove, views]\n );\n\n return (\n \n \n \n {views.map((view, index) => (\n \n {resizeHandleRenderer(view, index)}\n \n ))}\n \n \n\n {views.map((view, index) => {\n const slot = slots[view.id]?.current;\n if (!slot) return null;\n return createPortal(\n renderer(view, index),\n slot,\n `portalToSplitViewPanel_${view.id}`\n );\n })}\n
\n );\n};\n","import { IconButton } from '@affine/component';\nimport { RightSidebarIcon } from '@blocksuite/icons/rc';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { useAtomValue } from 'jotai';\nimport { Suspense, useCallback } from 'react';\n\nimport { AffineErrorBoundary } from '../../../components/affine/affine-error-boundary';\nimport { appSidebarOpenAtom } from '../../../components/app-sidebar/index.jotai';\nimport { SidebarSwitch } from '../../../components/app-sidebar/sidebar-header/sidebar-switch';\nimport { ViewService } from '../services/view';\nimport { WorkbenchService } from '../services/workbench';\nimport * as styles from './route-container.css';\nimport { useViewPosition } from './use-view-position';\nimport { ViewBodyTarget, ViewHeaderTarget } from './view-islands';\n\nexport interface Props {\n route: {\n Component: React.ComponentType;\n };\n}\n\nconst ToggleButton = ({\n onToggle,\n className,\n show,\n}: {\n onToggle?: () => void;\n className: string;\n show: boolean;\n}) => {\n return (\n \n \n \n );\n};\n\nexport const RouteContainer = ({ route }: Props) => {\n const viewPosition = useViewPosition();\n const leftSidebarOpen = useAtomValue(appSidebarOpenAtom);\n const workbench = useService(WorkbenchService).workbench;\n const view = useService(ViewService).view;\n const sidebarOpen = useLiveData(workbench.sidebarOpen$);\n const handleToggleSidebar = useCallback(() => {\n workbench.toggleSidebar();\n }, [workbench]);\n\n return (\n
\n
\n {viewPosition.isFirst && !environment.isDesktop && (\n \n )}\n \n {viewPosition.isLast && !environment.isDesktop && (\n \n )}\n
\n\n \n \n \n \n \n \n
\n );\n};\n","import \"../core/src/modules/workbench/view/route-container.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/workbench/view/route-container.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xZ2NucDRmMCB7CiAgZGlzcGxheTogZmxleDsKICBoZWlnaHQ6IDEwMCU7CiAgb3ZlcmZsb3c6IGNsaXA7CiAgd2lkdGg6IDEwMCU7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWluLXdpZHRoOiAwOwogIGJhY2tncm91bmQ6IHZhcigtLWFmZmluZS1iYWNrZ3JvdW5kLXByaW1hcnktY29sb3IpOwp9Ci5fMWdjbnA0ZjEgewogIGRpc3BsYXk6IGZsZXg7CiAgaGVpZ2h0OiA1MnB4OwogIHdpZHRoOiAxMDAlOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC1zaHJpbms6IDA7CiAgYmFja2dyb3VuZDogdmFyKC0tYWZmaW5lLWJhY2tncm91bmQtcHJpbWFyeS1jb2xvcik7CiAgcGFkZGluZzogMCAxNnB4Owp9Ci5fMWdjbnA0ZjIgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleDogMTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5fMWdjbnA0ZjMgewogIG1hcmdpbjogMCAxNnB4IDAgMDsKfQouXzFnY25wNGY0IHsKICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDsKfQouXzFnY25wNGY0W2RhdGEtc2hvdz10cnVlXSB7CiAgb3BhY2l0eTogMTsKICB3aWR0aDogMzJweDsKICBtYXgtd2lkdGg6IDMycHg7CiAgbWFyZ2luLWxlZnQ6IDE2cHg7Cn0KLl8xZ2NucDRmNFtkYXRhLXNob3c9ZmFsc2VdIHsKICBvcGFjaXR5OiAwOwogIG1heC13aWR0aDogMDsKICBtYXJnaW4tbGVmdDogMDsKfQouXzFnY25wNGY1IHsKICBkaXNwbGF5OiBmbGV4OwogIGhlaWdodDogMTAwJTsKICB3aWR0aDogMDsKICBmbGV4LWdyb3c6IDE7CiAgbWluLXdpZHRoOiAxMnB4Owp9CkBtZWRpYSBwcmludCB7CiAgLl8xZ2NucDRmMSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQ==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var header = '_1gcnp4f1';\nexport var leftSidebarButton = '_1gcnp4f3';\nexport var rightSidebarButton = '_1gcnp4f4';\nexport var root = '_1gcnp4f0';\nexport var viewBodyContainer = '_1gcnp4f2';\nexport var viewHeaderContainer = '_1gcnp4f5';","import { FrameworkScope, useLiveData } from '@toeverything/infra';\nimport { lazy as reactLazy, useLayoutEffect, useMemo } from 'react';\nimport {\n createMemoryRouter,\n RouterProvider,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from 'react-router-dom';\n\nimport { viewRoutes } from '../../../router';\nimport type { View } from '../entities/view';\nimport { RouteContainer } from './route-container';\n\nconst warpedRoutes = viewRoutes.map(({ path, lazy }) => {\n const Component = reactLazy(() =>\n lazy().then(m => ({\n default: m.Component as React.ComponentType,\n }))\n );\n const route = {\n Component,\n };\n\n return {\n path,\n Component: () => {\n return ;\n },\n };\n});\n\nexport const ViewRoot = ({ view }: { view: View }) => {\n const viewRouter = useMemo(() => createMemoryRouter(warpedRoutes), []);\n\n const location = useLiveData(view.location$);\n\n useLayoutEffect(() => {\n viewRouter.navigate(location).catch(err => {\n console.error('navigate error', err);\n });\n }, [location, view, viewRouter]);\n\n // https://github.com/remix-run/react-router/issues/7375#issuecomment-975431736\n return (\n \n \n \n \n \n \n \n );\n};\n","import { ResizePanel } from '@affine/component/resize-panel';\nimport { rightSidebarWidthAtom } from '@affine/core/atoms';\nimport {\n appSettingAtom,\n FrameworkScope,\n useLiveData,\n useService,\n} from '@toeverything/infra';\nimport { useAtom, useAtomValue } from 'jotai';\nimport { memo, useCallback, useEffect, useRef, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport type { View } from '../entities/view';\nimport { WorkbenchService } from '../services/workbench';\nimport { useBindWorkbenchToBrowserRouter } from './browser-adapter';\nimport { useBindWorkbenchToDesktopRouter } from './desktop-adapter';\nimport { SidebarContainer } from './sidebar/sidebar-container';\nimport { SplitView } from './split-view/split-view';\nimport { ViewIslandRegistryProvider } from './view-islands';\nimport { ViewRoot } from './view-root';\nimport * as styles from './workbench-root.css';\n\nconst useAdapter = environment.isDesktop\n ? useBindWorkbenchToDesktopRouter\n : useBindWorkbenchToBrowserRouter;\n\nexport const WorkbenchRoot = memo(() => {\n const workbench = useService(WorkbenchService).workbench;\n\n // for debugging\n (window as any).workbench = workbench;\n\n const views = useLiveData(workbench.views$);\n\n const location = useLocation();\n const basename = location.pathname.match(/\\/workspace\\/[^/]+/g)?.[0] ?? '/';\n\n useAdapter(workbench, basename);\n\n const panelRenderer = useCallback((view: View, index: number) => {\n return ;\n }, []);\n\n const onMove = useCallback(\n (from: number, to: number) => {\n workbench.moveView(from, to);\n },\n [workbench]\n );\n\n useEffect(() => {\n workbench.updateBasename(basename);\n }, [basename, workbench]);\n\n return (\n \n \n \n \n );\n});\n\nWorkbenchRoot.displayName = 'memo(WorkbenchRoot)';\n\nconst WorkbenchView = ({ view, index }: { view: View; index: number }) => {\n const workbench = useService(WorkbenchService).workbench;\n\n const handleOnFocus = useCallback(() => {\n workbench.active(index);\n }, [workbench, index]);\n\n const containerRef = useRef(null);\n\n useEffect(() => {\n if (containerRef.current) {\n const element = containerRef.current;\n element.addEventListener('pointerdown', handleOnFocus, {\n capture: true,\n });\n return () => {\n element.removeEventListener('pointerdown', handleOnFocus, {\n capture: true,\n });\n };\n }\n return;\n }, [handleOnFocus]);\n\n return (\n
\n \n
\n );\n};\n\nconst MIN_SIDEBAR_WIDTH = 320;\nconst MAX_SIDEBAR_WIDTH = 800;\n\nconst WorkbenchSidebar = () => {\n const { clientBorder } = useAtomValue(appSettingAtom);\n\n const [width, setWidth] = useAtom(rightSidebarWidthAtom);\n const [resizing, setResizing] = useState(false);\n\n const workbench = useService(WorkbenchService).workbench;\n\n const views = useLiveData(workbench.views$);\n const activeView = useLiveData(workbench.activeView$);\n const sidebarOpen = useLiveData(workbench.sidebarOpen$);\n const [floating, setFloating] = useState(false);\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (open) {\n workbench.openSidebar();\n } else {\n workbench.closeSidebar();\n }\n },\n [workbench]\n );\n\n useEffect(() => {\n const onResize = () => setFloating(!!(window.innerWidth < 768));\n onResize();\n window.addEventListener('resize', onResize);\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, []);\n\n return (\n \n {views.map(view => (\n \n \n \n ))}\n \n );\n};\n","import type { Location } from 'history';\nimport { useEffect } from 'react';\n// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { useLocation } from 'react-router-dom';\n\nimport type { Workbench } from '../entities/workbench';\n\n/**\n * This hook binds the workbench to the browser router.\n *\n * It listens to the browser location and updates the active view accordingly.\n *\n * In desktop, we not really care about the browser history, we only listen it,\n * and never modify it.\n *\n * REPLACE and POP action in browser history is not supported.\n * To do these actions, you should use the workbench API.\n */\nexport function useBindWorkbenchToDesktopRouter(\n workbench: Workbench,\n basename: string\n) {\n const browserLocation = useLocation();\n\n useEffect(() => {\n const newLocation = browserLocationToViewLocation(\n browserLocation,\n basename\n );\n if (newLocation === null) {\n return;\n }\n if (\n workbench.location$.value.pathname === newLocation.pathname &&\n workbench.location$.value.search === newLocation.search &&\n workbench.location$.value.hash === newLocation.hash\n ) {\n return;\n }\n\n workbench.open(newLocation);\n }, [basename, browserLocation, workbench]);\n}\n\nfunction browserLocationToViewLocation(\n location: Location,\n basename: string\n): Location | null {\n if (!location.pathname.startsWith(basename)) {\n return null;\n }\n return {\n ...location,\n pathname: location.pathname.slice(basename.length),\n };\n}\n","import { useLiveData } from '@toeverything/infra';\nimport type { Location } from 'history';\nimport { useEffect } from 'react';\n// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport type { Workbench } from '../entities/workbench';\n\n/**\n * This hook binds the workbench to the browser router.\n * It listens to the active view and updates the browser location accordingly.\n * It also listens to the browser location and updates the active view accordingly.\n *\n * The history of the active view and the browser are two different stacks.\n *\n * In the browser, we use browser history as the criterion, and view history is not very important.\n * So our synchronization strategy is as follows:\n *\n * 1. When the active view history changed, we update the browser history, based on the update action.\n * - If the update action is PUSH, we navigate to the new location.\n * - If the update action is REPLACE, we replace the current location.\n * 2. When the browser location changed, we update the active view history just in PUSH action.\n * 3. To avoid infinite loop, we add a state to the location to indicate the source of the change.\n */\nexport function useBindWorkbenchToBrowserRouter(\n workbench: Workbench,\n basename: string\n) {\n const navigate = useNavigate();\n const browserLocation = useLocation();\n\n const view = useLiveData(workbench.activeView$);\n\n useEffect(() => {\n return view.history.listen(update => {\n if (update.action === 'POP') {\n // This is because the history of view and browser are two different stacks,\n // the POP action cannot be synchronized.\n throw new Error('POP view history is not allowed on browser');\n }\n\n if (update.location.state === 'fromBrowser') {\n return;\n }\n\n const newBrowserLocation = viewLocationToBrowserLocation(\n update.location,\n basename\n );\n\n if (locationIsEqual(browserLocation, newBrowserLocation)) {\n return;\n }\n\n navigate(newBrowserLocation, {\n state: 'fromView',\n replace: update.action === 'REPLACE',\n });\n });\n }, [basename, browserLocation, navigate, view]);\n\n useEffect(() => {\n const newLocation = browserLocationToViewLocation(\n browserLocation,\n basename\n );\n if (newLocation === null) {\n return;\n }\n\n view.history.push(newLocation, 'fromBrowser');\n }, [basename, browserLocation, view]);\n}\n\nfunction browserLocationToViewLocation(\n location: Location,\n basename: string\n): Location | null {\n if (!location.pathname.startsWith(basename)) {\n return null;\n }\n return {\n ...location,\n pathname: location.pathname.slice(basename.length),\n };\n}\n\nfunction viewLocationToBrowserLocation(\n location: Location,\n basename: string\n): Location {\n return {\n ...location,\n pathname: `${basename}${location.pathname}`,\n };\n}\n\nfunction locationIsEqual(a: Location, b: Location) {\n return (\n a.hash === b.hash &&\n a.pathname === b.pathname &&\n a.search === b.search &&\n a.state === b.state\n );\n}\n","import \"../core/src/modules/workbench/view/workbench-root.css.ts.vanilla.css!=!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../core/src/modules/workbench/view/workbench-root.css.ts.vanilla.css\\\",\\\"source\\\":\\\"Ll8xd2FpZ3d4MCB7CiAgZGlzcGxheTogZmxleDsKICBoZWlnaHQ6IDEwMCU7CiAgZmxleDogMTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5fMXdhaWd3eDEgewogIGZsZXg6IDE7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBoZWlnaHQ6IDEwMCU7Cn0KLl8xd2FpZ3d4MiB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXNocmluazogMDsKICBoZWlnaHQ6IDEwMCU7CiAgcmlnaHQ6IDA7Cn0KLl8xd2FpZ3d4MltkYXRhLWNsaWVudC1ib3JkZXI9dHJ1ZV0gewogIHBhZGRpbmctbGVmdDogOHB4OwogIGJvcmRlci1yYWRpdXM6IDZweDsKfQouXzF3YWlnd3gyW2RhdGEtY2xpZW50LWJvcmRlcj1mYWxzZV0gewogIGJvcmRlci1sZWZ0OiAwLjVweCBzb2xpZCB2YXIoLS1hZmZpbmUtYm9yZGVyLWNvbG9yKTsKfQ==\\\"}!../../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var workbenchRootContainer = '_1waigwx0';\nexport var workbenchSidebar = '_1waigwx2';\nexport var workbenchViewContainer = '_1waigwx1';","import { popupWindow } from '@affine/core/utils';\nimport { apis } from '@affine/electron-api';\nimport { createIdentifier } from '@toeverything/infra';\nimport { parsePath, type To } from 'history';\n\nexport type WorkbenchNewTabHandler = (option: {\n basename: string;\n to: To;\n show: boolean;\n}) => void;\n\nexport const WorkbenchNewTabHandler = createIdentifier(\n 'WorkbenchNewTabHandler'\n);\n\nexport const BrowserWorkbenchNewTabHandler: WorkbenchNewTabHandler = ({\n basename,\n to,\n}) => {\n const link =\n basename +\n (typeof to === 'string' ? to : `${to.pathname}${to.search}${to.hash}`);\n popupWindow(link);\n};\n\nexport const DesktopWorkbenchNewTabHandler: WorkbenchNewTabHandler = ({\n basename,\n to,\n}) => {\n const path = typeof to === 'string' ? parsePath(to) : to;\n apis?.ui\n .addTab({\n basename,\n view: { path },\n show: false,\n })\n .catch(console.error);\n};\n","import { appInfo, type TabViewsMetaSchema } from '@affine/electron-api';\nimport type { GlobalStateService } from '@toeverything/infra';\nimport { createIdentifier, Service } from '@toeverything/infra';\nimport { nanoid } from 'nanoid';\n\nimport type { ViewIconName } from '../constants';\n\nexport type WorkbenchDefaultState = {\n basename: string;\n views: {\n id: string;\n path?: { pathname?: string; hash?: string; search?: string };\n icon?: ViewIconName;\n title?: string;\n }[];\n activeViewIndex: number;\n};\n\nexport const WorkbenchDefaultState = createIdentifier(\n 'WorkbenchDefaultState'\n);\n\nexport const InMemoryWorkbenchDefaultState: WorkbenchDefaultState = {\n basename: '/',\n views: [\n {\n id: nanoid(),\n },\n ],\n activeViewIndex: 0,\n};\n\nexport class DesktopWorkbenchDefaultState\n extends Service\n implements WorkbenchDefaultState\n{\n constructor(private readonly globalStateService: GlobalStateService) {\n super();\n }\n\n get value() {\n const tabViewsMeta =\n this.globalStateService.globalState.get(\n 'tabViewsMetaSchema'\n );\n\n return (\n tabViewsMeta?.workbenches.find(w => w.id === appInfo?.viewId) ||\n InMemoryWorkbenchDefaultState\n );\n }\n\n get basename() {\n return this.value.basename;\n }\n\n get activeViewIndex() {\n return this.value.activeViewIndex;\n }\n\n get views() {\n return this.value.views;\n }\n}\n","export { Workbench } from './entities/workbench';\nexport { ViewScope } from './scopes/view';\nexport { WorkbenchService } from './services/workbench';\nexport { useIsActiveView } from './view/use-is-active-view';\nexport { ViewBody, ViewHeader, ViewSidebarTab } from './view/view-islands';\nexport { ViewIcon, ViewTitle } from './view/view-meta';\nexport { WorkbenchLink } from './view/workbench-link';\nexport { WorkbenchRoot } from './view/workbench-root';\n\nimport {\n type Framework,\n GlobalStateService,\n WorkspaceScope,\n} from '@toeverything/infra';\n\nimport { SidebarTab } from './entities/sidebar-tab';\nimport { View } from './entities/view';\nimport { Workbench } from './entities/workbench';\nimport { ViewScope } from './scopes/view';\nimport { DesktopStateSynchronizer } from './services/desktop-state-synchronizer';\nimport { ViewService } from './services/view';\nimport { WorkbenchService } from './services/workbench';\nimport {\n BrowserWorkbenchNewTabHandler,\n DesktopWorkbenchNewTabHandler,\n WorkbenchNewTabHandler,\n} from './services/workbench-new-tab-handler';\nimport {\n DesktopWorkbenchDefaultState,\n InMemoryWorkbenchDefaultState,\n WorkbenchDefaultState,\n} from './services/workbench-view-state';\n\nexport function configureWorkbenchCommonModule(services: Framework) {\n services\n .scope(WorkspaceScope)\n .service(WorkbenchService)\n .entity(Workbench, [WorkbenchDefaultState, WorkbenchNewTabHandler])\n .entity(View)\n .scope(ViewScope)\n .service(ViewService, [ViewScope])\n .entity(SidebarTab);\n}\n\nexport function configureBrowserWorkbenchModule(services: Framework) {\n configureWorkbenchCommonModule(services);\n services\n .scope(WorkspaceScope)\n .impl(WorkbenchDefaultState, InMemoryWorkbenchDefaultState)\n .impl(WorkbenchNewTabHandler, () => BrowserWorkbenchNewTabHandler);\n}\n\nexport function configureDesktopWorkbenchModule(services: Framework) {\n configureWorkbenchCommonModule(services);\n services\n .scope(WorkspaceScope)\n .impl(WorkbenchDefaultState, DesktopWorkbenchDefaultState, [\n GlobalStateService,\n ])\n .impl(WorkbenchNewTabHandler, () => DesktopWorkbenchNewTabHandler)\n .service(DesktopStateSynchronizer, [WorkbenchService]);\n}\n","import { Scope } from '@toeverything/infra';\n\nimport type { View } from '../entities/view';\n\nexport class ViewScope extends Scope<{\n view: View;\n}> {}\n","import { apis, appInfo, events } from '@affine/electron-api';\nimport { LiveData, Service } from '@toeverything/infra';\n\nimport type { WorkbenchService } from '../../workbench';\n\n/**\n * Synchronize workbench state with state stored in main process\n */\nexport class DesktopStateSynchronizer extends Service {\n constructor(private readonly workbenchService: WorkbenchService) {\n super();\n this.startSync();\n }\n\n startSync = () => {\n if (!environment.isDesktop) {\n return;\n }\n\n const workbench = this.workbenchService.workbench;\n\n events?.ui.onTabAction(event => {\n if (\n event.type === 'open-in-split-view' &&\n event.payload.tabId === appInfo?.viewId\n ) {\n const to =\n event.payload.view?.path ??\n workbench.activeView$.value?.location$.value;\n\n workbench.open(to, {\n at: 'beside',\n });\n }\n\n if (\n event.type === 'separate-view' &&\n event.payload.tabId === appInfo?.viewId\n ) {\n const view = workbench.viewAt(event.payload.viewIndex);\n if (view) {\n workbench.close(view);\n }\n }\n\n if (\n event.type === 'activate-view' &&\n event.payload.tabId === appInfo?.viewId\n ) {\n workbench.active(event.payload.viewIndex);\n }\n });\n\n events?.ui.onToggleRightSidebar(tabId => {\n if (tabId === appInfo?.viewId) {\n workbench.sidebarOpen$.next(!workbench.sidebarOpen$.value);\n }\n });\n\n // sync workbench state with main process\n // also fill tab view meta with title & moduleName\n LiveData.computed(get => {\n return get(workbench.views$).map(view => {\n const location = get(view.location$);\n return {\n id: view.id,\n title: get(view.title$),\n iconName: get(view.icon$),\n path: {\n pathname: location.pathname,\n search: location.search,\n hash: location.hash,\n },\n };\n });\n }).subscribe(views => {\n if (!apis || !appInfo?.viewId) {\n return;\n }\n\n apis.ui\n .updateWorkbenchMeta(appInfo.viewId, {\n views,\n })\n .catch(console.error);\n });\n\n workbench.activeViewIndex$.subscribe(activeViewIndex => {\n if (!apis || !appInfo?.viewId) {\n return;\n }\n\n apis.ui\n .updateWorkbenchMeta(appInfo.viewId, {\n activeViewIndex: activeViewIndex,\n })\n .catch(console.error);\n });\n\n workbench.basename$.subscribe(basename => {\n if (!apis || !appInfo?.viewId) {\n return;\n }\n\n apis.ui\n .updateWorkbenchMeta(appInfo.viewId, {\n basename: basename,\n })\n .catch(console.error);\n });\n };\n}\n","import { Service } from '@toeverything/infra';\n\nimport type { ViewScope } from '../scopes/view';\n\nexport class ViewService extends Service {\n view = this.scope.props.view;\n\n constructor(private readonly scope: ViewScope) {\n super();\n }\n}\n","import { mixpanel } from '@affine/core/mixpanel';\nimport { createEvent, Service } from '@toeverything/infra';\nimport { combineLatest, distinctUntilChanged, map, skip } from 'rxjs';\n\nimport { Workbench } from '../entities/workbench';\n\nexport const WorkbenchLocationChanged = createEvent(\n 'WorkbenchLocationChanged'\n);\n\nexport class WorkbenchService extends Service {\n constructor() {\n super();\n combineLatest([this.workbench.location$, this.workbench.basename$])\n .pipe(\n map(([location, basename]) => basename + location.pathname),\n distinctUntilChanged(),\n skip(1)\n )\n .subscribe(newLocation => {\n this.eventBus.root.emit(WorkbenchLocationChanged, newLocation);\n mixpanel.track_pageview({\n location: newLocation,\n });\n });\n }\n\n workbench = this.framework.createEntity(Workbench);\n}\n","import { useService } from '@toeverything/infra';\nimport { useEffect, useState } from 'react';\n\nimport type { View } from '../entities/view';\nimport { ViewService } from '../services/view';\nimport { WorkbenchService } from '../services/workbench';\n\nexport const useViewPosition = () => {\n const workbench = useService(WorkbenchService).workbench;\n const view = useService(ViewService).view;\n\n const [position, setPosition] = useState(() =>\n calcPosition(view, workbench.views$.value)\n );\n\n useEffect(() => {\n const subscription = workbench.views$.subscribe(views => {\n setPosition(calcPosition(view, views));\n });\n return () => {\n subscription.unsubscribe();\n };\n }, [view, workbench]);\n\n return position;\n};\n\nfunction calcPosition(view: View, viewList: View[]) {\n const index = viewList.indexOf(view);\n return {\n index: index,\n isFirst: index === 0,\n isLast: index === viewList.length - 1,\n };\n}\n","import { useServiceOptional } from '@toeverything/infra';\nimport { useEffect } from 'react';\n\nimport type { ViewIconName } from '../constants';\nimport { ViewService } from '../services/view';\n\nexport const ViewTitle = ({ title }: { title: string }) => {\n const view = useServiceOptional(ViewService)?.view;\n\n useEffect(() => {\n if (view) {\n view.setTitle(title);\n }\n }, [title, view]);\n\n return null;\n};\n\nexport const ViewIcon = ({ icon }: { icon: ViewIconName }) => {\n const view = useServiceOptional(ViewService)?.view;\n\n useEffect(() => {\n if (view) {\n view.setIcon(icon);\n }\n }, [icon, view]);\n\n return null;\n};\n","import { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper';\nimport { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook';\nimport { isNewTabTrigger } from '@affine/core/utils';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { type To } from 'history';\nimport { forwardRef, type MouseEvent } from 'react';\n\nimport { WorkbenchService } from '../services/workbench';\n\nexport const WorkbenchLink = forwardRef<\n HTMLAnchorElement,\n React.PropsWithChildren<\n {\n to: To;\n onClick?: (e: MouseEvent) => void;\n } & React.HTMLProps\n >\n>(function WorkbenchLink({ to, onClick, ...other }, ref) {\n const workbench = useService(WorkbenchService).workbench;\n const { appSettings } = useAppSettingHelper();\n const basename = useLiveData(workbench.basename$);\n const link =\n basename +\n (typeof to === 'string' ? to : `${to.pathname}${to.search}${to.hash}`);\n const handleClick = useCatchEventCallback(\n async (event: React.MouseEvent) => {\n onClick?.(event);\n if (event.defaultPrevented) {\n return;\n }\n const at = (() => {\n if (isNewTabTrigger(event)) {\n return event.altKey && appSettings.enableMultiView\n ? 'tail'\n : 'new-tab';\n }\n return 'active';\n })();\n workbench.open(to, { at });\n event.preventDefault();\n },\n [appSettings.enableMultiView, onClick, to, workbench]\n );\n\n // eslint suspicious runtime error\n // eslint-disable-next-line react/no-danger-with-children\n return (\n \n );\n});\n","import {\n deleteBlobMutation,\n fetcher,\n getBaseUrl,\n listBlobsQuery,\n setBlobMutation,\n UserFriendlyError,\n} from '@affine/graphql';\nimport type { BlobStorage } from '@toeverything/infra';\nimport { BlobStorageOverCapacity } from '@toeverything/infra';\n\nimport { bufferToBlob } from '../../utils/buffer-to-blob';\n\nexport class CloudBlobStorage implements BlobStorage {\n constructor(private readonly workspaceId: string) {}\n\n name = 'cloud';\n readonly = false;\n\n async get(key: string) {\n const suffix = key.startsWith('/')\n ? key\n : `/api/workspaces/${this.workspaceId}/blobs/${key}`;\n\n return fetch(getBaseUrl() + suffix, { cache: 'default' }).then(\n async res => {\n if (!res.ok) {\n // status not in the range 200-299\n return null;\n }\n return bufferToBlob(await res.arrayBuffer());\n }\n );\n }\n\n async set(key: string, value: Blob) {\n // set blob will check blob size & quota\n return await fetcher({\n query: setBlobMutation,\n variables: {\n workspaceId: this.workspaceId,\n blob: new File([value], key),\n },\n })\n .then(res => res.setBlob)\n .catch(err => {\n const error = UserFriendlyError.fromAnyError(err);\n if (error.status === 413) {\n throw new BlobStorageOverCapacity(error);\n }\n\n throw err;\n });\n }\n\n async delete(key: string) {\n await fetcher({\n query: deleteBlobMutation,\n variables: {\n workspaceId: key,\n hash: key,\n },\n });\n }\n\n async list() {\n const result = await fetcher({\n query: listBlobsQuery,\n variables: {\n workspaceId: this.workspaceId,\n },\n });\n return result.listBlobs;\n }\n}\n","import { DebugLogger } from '@affine/debug';\nimport { WorkspaceFlavour } from '@affine/env/workspace';\nimport {\n createWorkspaceMutation,\n deleteWorkspaceMutation,\n getIsOwnerQuery,\n getWorkspacesQuery,\n} from '@affine/graphql';\nimport { DocCollection } from '@blocksuite/store';\nimport {\n ApplicationStarted,\n type BlobStorage,\n catchErrorInto,\n type DocStorage,\n exhaustMapSwitchUntilChanged,\n fromPromise,\n type GlobalState,\n LiveData,\n onComplete,\n OnEvent,\n onStart,\n type WorkspaceEngineProvider,\n type WorkspaceFlavourProvider,\n type WorkspaceMetadata,\n type WorkspaceProfileInfo,\n} from '@toeverything/infra';\nimport { effect, globalBlockSuiteSchema, Service } from '@toeverything/infra';\nimport { isEqual } from 'lodash-es';\nimport { nanoid } from 'nanoid';\nimport { EMPTY, map, mergeMap } from 'rxjs';\nimport { applyUpdate, encodeStateAsUpdate } from 'yjs';\n\nimport type {\n AuthService,\n GraphQLService,\n WebSocketService,\n} from '../../cloud';\nimport { AccountChanged } from '../../cloud';\nimport type { WorkspaceEngineStorageProvider } from '../providers/engine';\nimport { BroadcastChannelAwarenessConnection } from './engine/awareness-broadcast-channel';\nimport { CloudAwarenessConnection } from './engine/awareness-cloud';\nimport { CloudBlobStorage } from './engine/blob-cloud';\nimport { StaticBlobStorage } from './engine/blob-static';\nimport { CloudDocEngineServer } from './engine/doc-cloud';\nimport { CloudStaticDocStorage } from './engine/doc-cloud-static';\n\nconst CLOUD_WORKSPACES_CACHE_KEY = 'cloud-workspace:';\n\nconst logger = new DebugLogger('affine:cloud-workspace-flavour-provider');\n\n@OnEvent(ApplicationStarted, e => e.revalidate)\n@OnEvent(AccountChanged, e => e.revalidate)\nexport class CloudWorkspaceFlavourProviderService\n extends Service\n implements WorkspaceFlavourProvider\n{\n constructor(\n private readonly globalState: GlobalState,\n private readonly authService: AuthService,\n private readonly storageProvider: WorkspaceEngineStorageProvider,\n private readonly graphqlService: GraphQLService,\n private readonly webSocketService: WebSocketService\n ) {\n super();\n }\n flavour: WorkspaceFlavour = WorkspaceFlavour.AFFINE_CLOUD;\n\n async deleteWorkspace(id: string): Promise {\n await this.graphqlService.gql({\n query: deleteWorkspaceMutation,\n variables: {\n id: id,\n },\n });\n this.revalidate();\n await this.waitForLoaded();\n }\n async createWorkspace(\n initial: (\n docCollection: DocCollection,\n blobStorage: BlobStorage,\n docStorage: DocStorage\n ) => Promise\n ): Promise {\n // create workspace on cloud, get workspace id\n const {\n createWorkspace: { id: workspaceId },\n } = await this.graphqlService.gql({\n query: createWorkspaceMutation,\n });\n\n // save the initial state to local storage, then sync to cloud\n const blobStorage = this.storageProvider.getBlobStorage(workspaceId);\n const docStorage = this.storageProvider.getDocStorage(workspaceId);\n\n const docCollection = new DocCollection({\n id: workspaceId,\n idGenerator: () => nanoid(),\n schema: globalBlockSuiteSchema,\n blobSources: {\n main: blobStorage,\n },\n disableBacklinkIndex: true,\n disableSearchIndex: true,\n });\n\n // apply initial state\n await initial(docCollection, blobStorage, docStorage);\n\n // save workspace to local storage, should be vary fast\n await docStorage.doc.set(\n workspaceId,\n encodeStateAsUpdate(docCollection.doc)\n );\n for (const subdocs of docCollection.doc.getSubdocs()) {\n await docStorage.doc.set(subdocs.guid, encodeStateAsUpdate(subdocs));\n }\n\n this.revalidate();\n await this.waitForLoaded();\n\n return { id: workspaceId, flavour: WorkspaceFlavour.AFFINE_CLOUD };\n }\n revalidate = effect(\n map(() => {\n return { accountId: this.authService.session.account$.value?.id };\n }),\n exhaustMapSwitchUntilChanged(\n (a, b) => a.accountId === b.accountId,\n ({ accountId }) => {\n return fromPromise(async signal => {\n if (!accountId) {\n return null; // no cloud workspace if no account\n }\n\n const { workspaces } = await this.graphqlService.gql({\n query: getWorkspacesQuery,\n context: {\n signal,\n },\n });\n\n const ids = workspaces.map(({ id }) => id);\n return {\n accountId,\n workspaces: ids.map(id => ({\n id,\n flavour: WorkspaceFlavour.AFFINE_CLOUD,\n })),\n };\n }).pipe(\n mergeMap(data => {\n if (data) {\n const { accountId, workspaces } = data;\n const sorted = workspaces.sort((a, b) => {\n return a.id.localeCompare(b.id);\n });\n this.globalState.set(\n CLOUD_WORKSPACES_CACHE_KEY + accountId,\n sorted\n );\n if (!isEqual(this.workspaces$.value, sorted)) {\n this.workspaces$.next(sorted);\n }\n } else {\n this.workspaces$.next([]);\n }\n return EMPTY;\n }),\n catchErrorInto(this.error$, err => {\n logger.error('error to revalidate cloud workspaces', err);\n }),\n onStart(() => this.isLoading$.next(true)),\n onComplete(() => this.isLoading$.next(false))\n );\n },\n ({ accountId }) => {\n if (accountId) {\n this.workspaces$.next(\n this.globalState.get(CLOUD_WORKSPACES_CACHE_KEY + accountId) ?? []\n );\n } else {\n this.workspaces$.next([]);\n }\n }\n )\n );\n error$ = new LiveData(null);\n isLoading$ = new LiveData(false);\n workspaces$ = new LiveData([]);\n async getWorkspaceProfile(\n id: string,\n signal?: AbortSignal\n ): Promise {\n // get information from both cloud and local storage\n\n // we use affine 'static' storage here, which use http protocol, no need to websocket.\n const cloudStorage = new CloudStaticDocStorage(id);\n const docStorage = this.storageProvider.getDocStorage(id);\n // download root doc\n const localData = await docStorage.doc.get(id);\n const cloudData = await cloudStorage.pull(id);\n\n const isOwner = await this.getIsOwner(id, signal);\n\n if (!cloudData && !localData) {\n return {\n isOwner,\n };\n }\n\n const bs = new DocCollection({\n id,\n schema: globalBlockSuiteSchema,\n disableBacklinkIndex: true,\n disableSearchIndex: true,\n });\n\n if (localData) applyUpdate(bs.doc, localData);\n if (cloudData) applyUpdate(bs.doc, cloudData.data);\n\n return {\n name: bs.meta.name,\n avatar: bs.meta.avatar,\n isOwner,\n };\n }\n async getWorkspaceBlob(id: string, blob: string): Promise {\n const localBlob = await this.storageProvider.getBlobStorage(id).get(blob);\n\n if (localBlob) {\n return localBlob;\n }\n\n const cloudBlob = new CloudBlobStorage(id);\n return await cloudBlob.get(blob);\n }\n getEngineProvider(workspaceId: string): WorkspaceEngineProvider {\n return {\n getAwarenessConnections: () => {\n return [\n new BroadcastChannelAwarenessConnection(workspaceId),\n new CloudAwarenessConnection(\n workspaceId,\n this.webSocketService.newSocket()\n ),\n ];\n },\n getDocServer: () => {\n return new CloudDocEngineServer(\n workspaceId,\n this.webSocketService.newSocket()\n );\n },\n getDocStorage: () => {\n return this.storageProvider.getDocStorage(workspaceId);\n },\n getLocalBlobStorage: () => {\n return this.storageProvider.getBlobStorage(workspaceId);\n },\n getRemoteBlobStorages() {\n return [new CloudBlobStorage(workspaceId), new StaticBlobStorage()];\n },\n };\n }\n\n private async getIsOwner(workspaceId: string, signal?: AbortSignal) {\n return (\n await this.graphqlService.gql({\n query: getIsOwnerQuery,\n variables: {\n workspaceId,\n },\n context: { signal },\n })\n ).isOwner;\n }\n\n private waitForLoaded() {\n return this.isLoading$.waitFor(loading => !loading);\n }\n}\n","import type { AwarenessConnection } from '@toeverything/infra';\nimport type { Awareness } from 'y-protocols/awareness.js';\nimport {\n applyAwarenessUpdate,\n encodeAwarenessUpdate,\n} from 'y-protocols/awareness.js';\n\ntype AwarenessChanges = Record<'added' | 'updated' | 'removed', number[]>;\n\ntype ChannelMessage =\n | { type: 'connect' }\n | { type: 'update'; update: Uint8Array };\n\nexport class BroadcastChannelAwarenessConnection\n implements AwarenessConnection\n{\n channel: BroadcastChannel | null = null;\n awareness: Awareness | null = null;\n\n constructor(private readonly workspaceId: string) {}\n\n connect(awareness: Awareness): void {\n this.awareness = awareness;\n this.channel = new BroadcastChannel('awareness:' + this.workspaceId);\n this.channel.postMessage({\n type: 'connect',\n } satisfies ChannelMessage);\n this.awareness.on('update', this.handleAwarenessUpdate);\n this.channel.addEventListener('message', this.handleChannelMessage);\n }\n\n disconnect(): void {\n this.channel?.close();\n this.channel = null;\n this.awareness?.off('update', this.handleAwarenessUpdate);\n this.awareness = null;\n }\n\n handleAwarenessUpdate = (changes: AwarenessChanges, origin: unknown) => {\n if (this.awareness === null) {\n return;\n }\n\n if (origin === 'remote') {\n return;\n }\n\n const changedClients = Object.values(changes).reduce((res, cur) =>\n res.concat(cur)\n );\n\n const update = encodeAwarenessUpdate(this.awareness, changedClients);\n this.channel?.postMessage({\n type: 'update',\n update: update,\n } satisfies ChannelMessage);\n };\n\n handleChannelMessage = (event: MessageEvent) => {\n if (this.awareness === null) {\n return;\n }\n\n if (event.data.type === 'update') {\n const update = event.data.update;\n applyAwarenessUpdate(this.awareness, update, 'remote');\n }\n if (event.data.type === 'connect') {\n this.channel?.postMessage({\n type: 'update',\n update: encodeAwarenessUpdate(this.awareness, [\n this.awareness.clientID,\n ]),\n } satisfies ChannelMessage);\n }\n };\n}\n","export function uint8ArrayToBase64(array: Uint8Array): Promise {\n return new Promise(resolve => {\n // Create a blob from the Uint8Array\n const blob = new Blob([array]);\n\n const reader = new FileReader();\n reader.onload = function () {\n const dataUrl = reader.result as string | null;\n if (!dataUrl) {\n resolve('');\n return;\n }\n // The result includes the `data:` URL prefix and the MIME type. We only want the Base64 data\n const base64 = dataUrl.split(',')[1];\n resolve(base64);\n };\n\n reader.readAsDataURL(blob);\n });\n}\n\nexport function base64ToUint8Array(base64: string) {\n const binaryString = atob(base64);\n const binaryArray = binaryString.split('').map(function (char) {\n return char.charCodeAt(0);\n });\n return new Uint8Array(binaryArray);\n}\n","import { DebugLogger } from '@affine/debug';\nimport type { AwarenessConnection } from '@toeverything/infra';\nimport type { Socket } from 'socket.io-client';\nimport type { Awareness } from 'y-protocols/awareness';\nimport {\n applyAwarenessUpdate,\n encodeAwarenessUpdate,\n removeAwarenessStates,\n} from 'y-protocols/awareness';\n\nimport { base64ToUint8Array, uint8ArrayToBase64 } from '../../utils/base64';\n\nconst logger = new DebugLogger('affine:awareness:socketio');\n\ntype AwarenessChanges = Record<'added' | 'updated' | 'removed', number[]>;\n\nexport class CloudAwarenessConnection implements AwarenessConnection {\n awareness: Awareness | null = null;\n\n constructor(\n private readonly workspaceId: string,\n private readonly socket: Socket\n ) {}\n\n connect(awareness: Awareness): void {\n this.socket.on('server-awareness-broadcast', this.awarenessBroadcast);\n this.socket.on(\n 'new-client-awareness-init',\n this.newClientAwarenessInitHandler\n );\n this.awareness = awareness;\n this.awareness.on('update', this.awarenessUpdate);\n\n window.addEventListener('beforeunload', this.windowBeforeUnloadHandler);\n\n this.socket.on('connect', this.handleConnect);\n this.socket.on('server-version-rejected', this.handleReject);\n\n if (this.socket.connected) {\n this.handleConnect();\n } else {\n this.socket.connect();\n }\n }\n\n disconnect(): void {\n if (this.awareness) {\n removeAwarenessStates(\n this.awareness,\n [this.awareness.clientID],\n 'disconnect'\n );\n this.awareness.off('update', this.awarenessUpdate);\n }\n this.awareness = null;\n\n this.socket.emit('client-leave-awareness', this.workspaceId);\n this.socket.off('server-awareness-broadcast', this.awarenessBroadcast);\n this.socket.off(\n 'new-client-awareness-init',\n this.newClientAwarenessInitHandler\n );\n this.socket.off('connect', this.handleConnect);\n this.socket.off('server-version-rejected', this.handleReject);\n window.removeEventListener('unload', this.windowBeforeUnloadHandler);\n }\n\n awarenessBroadcast = ({\n workspaceId: wsId,\n awarenessUpdate,\n }: {\n workspaceId: string;\n awarenessUpdate: string;\n }) => {\n if (!this.awareness) {\n return;\n }\n if (wsId !== this.workspaceId) {\n return;\n }\n applyAwarenessUpdate(\n this.awareness,\n base64ToUint8Array(awarenessUpdate),\n 'remote'\n );\n };\n\n awarenessUpdate = (changes: AwarenessChanges, origin: unknown) => {\n if (!this.awareness) {\n return;\n }\n\n if (origin === 'remote') {\n return;\n }\n\n const changedClients = Object.values(changes).reduce((res, cur) =>\n res.concat(cur)\n );\n\n const update = encodeAwarenessUpdate(this.awareness, changedClients);\n uint8ArrayToBase64(update)\n .then(encodedUpdate => {\n this.socket.emit('awareness-update', {\n workspaceId: this.workspaceId,\n awarenessUpdate: encodedUpdate,\n });\n })\n .catch(err => logger.error(err));\n };\n\n newClientAwarenessInitHandler = () => {\n if (!this.awareness) {\n return;\n }\n\n const awarenessUpdate = encodeAwarenessUpdate(this.awareness, [\n this.awareness.clientID,\n ]);\n uint8ArrayToBase64(awarenessUpdate)\n .then(encodedAwarenessUpdate => {\n this.socket.emit('awareness-update', {\n workspaceId: this.workspaceId,\n awarenessUpdate: encodedAwarenessUpdate,\n });\n })\n .catch(err => logger.error(err));\n };\n\n windowBeforeUnloadHandler = () => {\n if (!this.awareness) {\n return;\n }\n\n removeAwarenessStates(\n this.awareness,\n [this.awareness.clientID],\n 'window unload'\n );\n };\n\n handleConnect = () => {\n this.socket.emit(\n 'client-handshake-awareness',\n {\n workspaceId: this.workspaceId,\n version: runtimeConfig.appVersion,\n },\n (res: any) => {\n logger.debug('awareness handshake finished', res);\n this.socket.emit('awareness-init', this.workspaceId, (res: any) => {\n logger.debug('awareness-init finished', res);\n });\n }\n );\n };\n\n handleReject = () => {\n this.socket.off('server-version-rejected', this.handleReject);\n this.disconnect();\n this.socket.disconnect();\n };\n}\n","import type { BlobStorage } from '@toeverything/infra';\n\nexport const predefinedStaticFiles = [\n '029uztLz2CzJezK7UUhrbGiWUdZ0J7NVs_qR6RDsvb8=',\n '047ebf2c9a5c7c9d8521c2ea5e6140ff7732ef9e28a9f944e9bf3ca4',\n '0hjYqQd8SvwHT2gPds7qFw8W6qIEGVbZvG45uzoYjUU=',\n '1326bc48553a572c6756d9ee1b30a0dfdda26222fc2d2c872b14e609',\n '27f983d0765289c19d10ee0b51c00c3c7665236a1a82406370d46e0a',\n '28516717d63e469cd98729ff46be6595711898bab3dc43302319a987',\n '4HXJrnBZGaGPFpowNawNog0aMg3dgoVaAnNqEMeUxq0=',\n '5Cfem_137WmzR35ZeIC76oTkq5SQt-eHlZwJiLy0hgU=',\n '6aa785ee927547ce9dd9d7b43e01eac948337fe57571443e87bc3a60',\n '8oj6ym4HlTcshT40Zn6D5DeOgaVCSOOXJvT_EyiqUw8=',\n '9288be57321c8772d04e05dbb69a22742372b3534442607a2d6a9998',\n '9vXwWGEX5W9v5pzwpu0eK4pf22DZ_sCloO0zCH1aVQ4=',\n 'Bd5F0WRI0fLh8RK1al9PawPVT3jv7VwBrqiiBEtdV-g=',\n 'CBWoKrhSDndjBJzscQKENRqiXOOZnzIA5qyiCoy4-A0=',\n 'D7g-4LMqOsVWBNOD-_kGgCOvJEoc8rcpYbkfDlF2u5U=',\n 'Vqc8rxFbGyc5L1QeE_Zr10XEcIai_0Xw4Qv6d3ldRPE=',\n 'VuXYyM9JUv1Fv_qjg1v5Go4Zksz0r4NXFeh3Na7JkIc=',\n 'bfXllFddegV9vvxPcSWnOtm-_tuzXm-0OQ59z9Su1zA=',\n 'c820edeeba50006b531883903f5bb0b96bf523c9a6b3ce5868f03db5',\n 'cw9XjQ-pCeSW7LKMzVREGHeCPTXWYbtE-QbZLEY3RrI=',\n 'e93536e1be97e3b5206d43bf0793fdef24e60044d174f0abdefebe08',\n 'f9yKnlNMgKhF-CxOgHBsXkxfViCCkC6KwTv6Uj2Fcjw=',\n 'fb0SNPtMpQlzBQ90_PB7vCu34WpiSUJbNKocFkL2vIo=',\n 'gZLmSgmwumNdgf0eIfOSW44emctrLyFUaZapbk8eZ6s=',\n 'i39ZQ24NlUfWI0MhkbtvHTzGnWMVdr-aC2aOjvHPVg4=',\n 'k07JiWnb-S7qgd9gDQNgqo-LYMe03RX8fR0TXQ-SpG4=',\n 'nSEEkYxrThpZfLoPNOzMp6HWekvutAIYmADElDe1J6I=',\n 'pIqdA3pM1la1gKzxOmAcpLmTh3yXBrL9mGTz_hGj5xE=',\n 'qezoK6du9n3PF4dl4aq5r7LeXz_sV3xOVpFzVVgjNsE=',\n 'rY96Bunn-69CnNe5X_e5CJLwgCJnN6rcbUisecs8kkQ=',\n 'sNVNYDBzUDN2J9OFVJdLJlryBLzRZBLl-4MTNoPF1tA=',\n 'uvpOG9DrldeqIGNaqfwjFdMw_CcfXKfiEjYf7RXdeL0=',\n 'v2yF7lY2L5rtorTtTmYFsoMb9dBPKs5M1y9cUKxcI1M=',\n];\n\nexport class StaticBlobStorage implements BlobStorage {\n name = 'static';\n readonly = true;\n async get(key: string) {\n const isStaticResource =\n predefinedStaticFiles.includes(key) || key.startsWith('/static/');\n\n if (!isStaticResource) {\n return null;\n }\n\n const path = key.startsWith('/static/') ? key : `/static/${key}`;\n const response = await fetch(path);\n\n if (response.ok) {\n return await response.blob();\n }\n\n return null;\n }\n\n async set(key: string) {\n // ignore\n return key;\n }\n async delete() {\n // ignore\n }\n async list() {\n // ignore\n return [];\n }\n}\n","import { DebugLogger } from '@affine/debug';\nimport {\n ErrorNames,\n UserFriendlyError,\n type UserFriendlyErrorResponse,\n} from '@affine/graphql';\nimport type { DocServer } from '@toeverything/infra';\nimport { throwIfAborted } from '@toeverything/infra';\nimport type { Socket } from 'socket.io-client';\n\nimport { base64ToUint8Array, uint8ArrayToBase64 } from '../../utils/base64';\n\n(window as any)._TEST_SIMULATE_SYNC_LAG = Promise.resolve();\n\nconst logger = new DebugLogger('affine-cloud-doc-engine-server');\n\ntype WebsocketResponse = { error: UserFriendlyErrorResponse } | { data: T };\n\nexport class CloudDocEngineServer implements DocServer {\n interruptCb: ((reason: string) => void) | null = null;\n SEND_TIMEOUT = 30000;\n\n constructor(\n private readonly workspaceId: string,\n private readonly socket: Socket\n ) {}\n\n private async clientHandShake() {\n await this.socket.emitWithAck('client-handshake-sync', {\n workspaceId: this.workspaceId,\n version: runtimeConfig.appVersion,\n });\n }\n\n async pullDoc(docId: string, state: Uint8Array) {\n // for testing\n await (window as any)._TEST_SIMULATE_SYNC_LAG;\n\n const stateVector = state ? await uint8ArrayToBase64(state) : undefined;\n\n const response: WebsocketResponse<{\n missing: string;\n state: string;\n timestamp: number;\n }> = await this.socket\n .timeout(this.SEND_TIMEOUT)\n .emitWithAck('doc-load-v2', {\n workspaceId: this.workspaceId,\n guid: docId,\n stateVector,\n });\n\n if ('error' in response) {\n const error = new UserFriendlyError(response.error);\n if (error.name === ErrorNames.DOC_NOT_FOUND) {\n return null;\n } else {\n throw error;\n }\n } else {\n return {\n data: base64ToUint8Array(response.data.missing),\n stateVector: response.data.state\n ? base64ToUint8Array(response.data.state)\n : undefined,\n serverClock: response.data.timestamp,\n };\n }\n }\n async pushDoc(docId: string, data: Uint8Array) {\n const payload = await uint8ArrayToBase64(data);\n\n const response: WebsocketResponse<{ timestamp: number }> = await this.socket\n .timeout(this.SEND_TIMEOUT)\n .emitWithAck('client-update-v2', {\n workspaceId: this.workspaceId,\n guid: docId,\n updates: [payload],\n });\n\n if ('error' in response) {\n logger.error('client-update-v2 error', {\n workspaceId: this.workspaceId,\n guid: docId,\n response,\n });\n\n throw new UserFriendlyError(response.error);\n }\n\n return { serverClock: response.data.timestamp };\n }\n async loadServerClock(after: number): Promise> {\n const response: WebsocketResponse> =\n await this.socket\n .timeout(this.SEND_TIMEOUT)\n .emitWithAck('client-pre-sync', {\n workspaceId: this.workspaceId,\n timestamp: after,\n });\n\n if ('error' in response) {\n logger.error('client-pre-sync error', {\n workspaceId: this.workspaceId,\n response,\n });\n\n throw new UserFriendlyError(response.error);\n }\n\n return new Map(Object.entries(response.data));\n }\n async subscribeAllDocs(\n cb: (updates: {\n docId: string;\n data: Uint8Array;\n serverClock: number;\n }) => void\n ): Promise<() => void> {\n const handleUpdate = async (message: {\n workspaceId: string;\n guid: string;\n updates: string[];\n timestamp: number;\n }) => {\n if (message.workspaceId === this.workspaceId) {\n message.updates.forEach(update => {\n cb({\n docId: message.guid,\n data: base64ToUint8Array(update),\n serverClock: message.timestamp,\n });\n });\n }\n };\n this.socket.on('server-updates', handleUpdate);\n\n return () => {\n this.socket.off('server-updates', handleUpdate);\n };\n }\n async waitForConnectingServer(signal: AbortSignal): Promise {\n this.socket.on('server-version-rejected', this.handleVersionRejected);\n this.socket.on('disconnect', this.handleDisconnect);\n\n throwIfAborted(signal);\n if (this.socket.connected) {\n await this.clientHandShake();\n } else {\n this.socket.connect();\n await new Promise((resolve, reject) => {\n this.socket.on('connect', () => {\n resolve();\n });\n signal.addEventListener('abort', () => {\n reject('aborted');\n });\n });\n throwIfAborted(signal);\n await this.clientHandShake();\n }\n }\n disconnectServer(): void {\n if (!this.socket) {\n return;\n }\n\n this.socket.emit('client-leave-sync', this.workspaceId);\n this.socket.off('server-version-rejected', this.handleVersionRejected);\n this.socket.off('disconnect', this.handleDisconnect);\n this.socket.disconnect();\n }\n onInterrupted = (cb: (reason: string) => void) => {\n this.interruptCb = cb;\n };\n handleInterrupted = (reason: string) => {\n this.interruptCb?.(reason);\n };\n handleDisconnect = (reason: Socket.DisconnectReason) => {\n this.interruptCb?.(reason);\n };\n handleVersionRejected = () => {\n this.interruptCb?.('Client version rejected');\n };\n}\n","export class CloudStaticDocStorage {\n name = 'cloud-static';\n constructor(private readonly workspaceId: string) {}\n\n async pull(\n docId: string\n ): Promise<{ data: Uint8Array; state?: Uint8Array | undefined } | null> {\n const response = await fetch(\n `/api/workspaces/${this.workspaceId}/docs/${docId}`,\n {\n priority: 'high',\n } as any\n );\n if (response.ok) {\n const arrayBuffer = await response.arrayBuffer();\n\n return { data: new Uint8Array(arrayBuffer) };\n }\n\n return null;\n }\n}\n","import type { BlobStorage } from '@toeverything/infra';\nimport { createStore, del, get, keys, set } from 'idb-keyval';\n\nimport { bufferToBlob } from '../../utils/buffer-to-blob';\n\nexport class IndexedDBBlobStorage implements BlobStorage {\n constructor(private readonly workspaceId: string) {}\n\n name = 'indexeddb';\n readonly = false;\n db = createStore(`${this.workspaceId}_blob`, 'blob');\n mimeTypeDb = createStore(`${this.workspaceId}_blob_mime`, 'blob_mime');\n\n async get(key: string) {\n const res = await get(key, this.db);\n if (res) {\n return bufferToBlob(res);\n }\n return null;\n }\n async set(key: string, value: Blob) {\n await set(key, await value.arrayBuffer(), this.db);\n await set(key, value.type, this.mimeTypeDb);\n return key;\n }\n async delete(key: string) {\n await del(key, this.db);\n await del(key, this.mimeTypeDb);\n }\n async list() {\n return keys(this.db);\n }\n}\n","import type { DocEvent, DocEventBus } from '@toeverything/infra';\n\nexport class BroadcastChannelDocEventBus implements DocEventBus {\n senderChannel = new BroadcastChannel('doc:' + this.workspaceId);\n constructor(private readonly workspaceId: string) {}\n emit(event: DocEvent): void {\n this.senderChannel.postMessage(event);\n }\n\n on(cb: (event: DocEvent) => void): () => void {\n const listener = (event: MessageEvent) => {\n cb(event.data);\n };\n const channel = new BroadcastChannel('doc:' + this.workspaceId);\n channel.addEventListener('message', listener);\n return () => {\n channel.removeEventListener('message', listener);\n channel.close();\n };\n }\n}\n","import type { ByteKV, ByteKVBehavior, DocStorage } from '@toeverything/infra';\nimport type { DBSchema, IDBPDatabase, IDBPObjectStore } from 'idb';\nimport { openDB } from 'idb';\nimport { mergeUpdates } from 'yjs';\n\nimport { BroadcastChannelDocEventBus } from './doc-broadcast-channel';\n\nfunction isEmptyUpdate(binary: Uint8Array) {\n return (\n binary.byteLength === 0 ||\n (binary.byteLength === 2 && binary[0] === 0 && binary[1] === 0)\n );\n}\n\nexport class IndexedDBDocStorage implements DocStorage {\n constructor(private readonly workspaceId: string) {}\n eventBus = new BroadcastChannelDocEventBus(this.workspaceId);\n readonly doc = new Doc();\n readonly syncMetadata = new KV(`${this.workspaceId}:sync-metadata`);\n readonly serverClock = new KV(`${this.workspaceId}:server-clock`);\n}\n\ninterface DocDBSchema extends DBSchema {\n workspace: {\n key: string;\n value: {\n id: string;\n updates: {\n timestamp: number;\n update: Uint8Array;\n }[];\n };\n };\n}\n\ntype DocType = DocStorage['doc'];\nclass Doc implements DocType {\n dbName = 'affine-local';\n dbPromise: Promise> | null = null;\n dbVersion = 1;\n\n constructor() {}\n\n upgradeDB(db: IDBPDatabase) {\n db.createObjectStore('workspace', { keyPath: 'id' });\n }\n\n getDb() {\n if (this.dbPromise === null) {\n this.dbPromise = openDB(this.dbName, this.dbVersion, {\n upgrade: db => this.upgradeDB(db),\n });\n }\n return this.dbPromise;\n }\n\n async get(docId: string): Promise {\n const db = await this.getDb();\n const store = db\n .transaction('workspace', 'readonly')\n .objectStore('workspace');\n const data = await store.get(docId);\n\n if (!data) {\n return null;\n }\n\n const updates = data.updates\n .map(({ update }) => update)\n .filter(update => !isEmptyUpdate(update));\n const update = updates.length > 0 ? mergeUpdates(updates) : null;\n\n return update;\n }\n\n async set(docId: string, data: Uint8Array) {\n const db = await this.getDb();\n const store = db\n .transaction('workspace', 'readwrite')\n .objectStore('workspace');\n\n const rows = [{ timestamp: Date.now(), update: data }];\n await store.put({\n id: docId,\n updates: rows,\n });\n }\n\n async keys() {\n const db = await this.getDb();\n const store = db\n .transaction('workspace', 'readonly')\n .objectStore('workspace');\n\n return store.getAllKeys();\n }\n\n clear(): void | Promise {\n return;\n }\n\n del(_key: string): void | Promise {\n return;\n }\n\n async transaction(\n cb: (transaction: ByteKVBehavior) => Promise\n ): Promise {\n const db = await this.getDb();\n const store = db\n .transaction('workspace', 'readwrite')\n .objectStore('workspace');\n return await cb({\n async get(docId) {\n const data = await store.get(docId);\n\n if (!data) {\n return null;\n }\n\n const { updates } = data;\n const update = mergeUpdates(updates.map(({ update }) => update));\n\n return update;\n },\n keys() {\n return store.getAllKeys();\n },\n async set(docId, data) {\n const rows = [{ timestamp: Date.now(), update: data }];\n await store.put({\n id: docId,\n updates: rows,\n });\n },\n async clear() {\n return await store.clear();\n },\n async del(key) {\n return store.delete(key);\n },\n });\n }\n}\n\ninterface KvDBSchema extends DBSchema {\n kv: {\n key: string;\n value: { key: string; val: Uint8Array };\n };\n}\n\nclass KV implements ByteKV {\n constructor(private readonly dbName: string) {}\n\n dbPromise: Promise> | null = null;\n dbVersion = 1;\n\n upgradeDB(db: IDBPDatabase) {\n db.createObjectStore('kv', { keyPath: 'key' });\n }\n\n getDb() {\n if (this.dbPromise === null) {\n this.dbPromise = openDB(this.dbName, this.dbVersion, {\n upgrade: db => this.upgradeDB(db),\n });\n }\n return this.dbPromise;\n }\n\n async transaction(\n cb: (transaction: ByteKVBehavior) => Promise\n ): Promise {\n const db = await this.getDb();\n const store = db.transaction('kv', 'readwrite').objectStore('kv');\n\n const behavior = new KVBehavior(store);\n return await cb(behavior);\n }\n\n async get(key: string): Promise {\n const db = await this.getDb();\n const store = db.transaction('kv', 'readonly').objectStore('kv');\n return new KVBehavior(store).get(key);\n }\n async set(key: string, value: Uint8Array): Promise {\n const db = await this.getDb();\n const store = db.transaction('kv', 'readwrite').objectStore('kv');\n return new KVBehavior(store).set(key, value);\n }\n async keys(): Promise {\n const db = await this.getDb();\n const store = db.transaction('kv', 'readwrite').objectStore('kv');\n return new KVBehavior(store).keys();\n }\n async clear() {\n const db = await this.getDb();\n const store = db.transaction('kv', 'readwrite').objectStore('kv');\n return new KVBehavior(store).clear();\n }\n async del(key: string) {\n const db = await this.getDb();\n const store = db.transaction('kv', 'readwrite').objectStore('kv');\n return new KVBehavior(store).del(key);\n }\n}\n\nclass KVBehavior implements ByteKVBehavior {\n constructor(\n private readonly store: IDBPObjectStore\n ) {}\n async get(key: string): Promise {\n const value = await this.store.get(key);\n return value?.val ?? null;\n }\n async set(key: string, value: Uint8Array): Promise {\n if (this.store.put === undefined) {\n throw new Error('Cannot set in a readonly transaction');\n }\n await this.store.put({\n key: key,\n val: value,\n });\n }\n async keys(): Promise {\n return await this.store.getAllKeys();\n }\n async del(key: string) {\n if (this.store.delete === undefined) {\n throw new Error('Cannot set in a readonly transaction');\n }\n return await this.store.delete(key);\n }\n\n async clear() {\n if (this.store.clear === undefined) {\n throw new Error('Cannot set in a readonly transaction');\n }\n return await this.store.clear();\n }\n}\n","import { apis } from '@affine/electron-api';\nimport { WorkspaceFlavour } from '@affine/env/workspace';\nimport { DocCollection } from '@blocksuite/store';\nimport type {\n BlobStorage,\n DocStorage,\n WorkspaceEngineProvider,\n WorkspaceFlavourProvider,\n WorkspaceMetadata,\n WorkspaceProfileInfo,\n} from '@toeverything/infra';\nimport { globalBlockSuiteSchema, LiveData, Service } from '@toeverything/infra';\nimport { isEqual } from 'lodash-es';\nimport { nanoid } from 'nanoid';\nimport { Observable } from 'rxjs';\nimport { applyUpdate, encodeStateAsUpdate } from 'yjs';\n\nimport type { WorkspaceEngineStorageProvider } from '../providers/engine';\nimport { BroadcastChannelAwarenessConnection } from './engine/awareness-broadcast-channel';\nimport { StaticBlobStorage } from './engine/blob-static';\n\nexport const LOCAL_WORKSPACE_LOCAL_STORAGE_KEY = 'affine-local-workspace';\nconst LOCAL_WORKSPACE_CHANGED_BROADCAST_CHANNEL_KEY =\n 'affine-local-workspace-changed';\n\nexport class LocalWorkspaceFlavourProvider\n extends Service\n implements WorkspaceFlavourProvider\n{\n constructor(\n private readonly storageProvider: WorkspaceEngineStorageProvider\n ) {\n super();\n }\n\n flavour: WorkspaceFlavour = WorkspaceFlavour.LOCAL;\n notifyChannel = new BroadcastChannel(\n LOCAL_WORKSPACE_CHANGED_BROADCAST_CHANNEL_KEY\n );\n\n async deleteWorkspace(id: string): Promise {\n const allWorkspaceIDs: string[] = JSON.parse(\n localStorage.getItem(LOCAL_WORKSPACE_LOCAL_STORAGE_KEY) ?? '[]'\n );\n localStorage.setItem(\n LOCAL_WORKSPACE_LOCAL_STORAGE_KEY,\n JSON.stringify(allWorkspaceIDs.filter(x => x !== id))\n );\n\n if (apis && environment.isDesktop) {\n await apis.workspace.delete(id);\n }\n\n // notify all browser tabs, so they can update their workspace list\n this.notifyChannel.postMessage(id);\n }\n async createWorkspace(\n initial: (\n docCollection: DocCollection,\n blobStorage: BlobStorage,\n docStorage: DocStorage\n ) => Promise\n ): Promise {\n const id = nanoid();\n\n // save the initial state to local storage, then sync to cloud\n const blobStorage = this.storageProvider.getBlobStorage(id);\n const docStorage = this.storageProvider.getDocStorage(id);\n\n const docCollection = new DocCollection({\n id: id,\n idGenerator: () => nanoid(),\n schema: globalBlockSuiteSchema,\n blobSources: { main: blobStorage },\n disableBacklinkIndex: true,\n disableSearchIndex: true,\n });\n\n // apply initial state\n await initial(docCollection, blobStorage, docStorage);\n\n // save workspace to local storage, should be vary fast\n await docStorage.doc.set(id, encodeStateAsUpdate(docCollection.doc));\n for (const subdocs of docCollection.doc.getSubdocs()) {\n await docStorage.doc.set(subdocs.guid, encodeStateAsUpdate(subdocs));\n }\n\n // save workspace id to local storage\n const allWorkspaceIDs: string[] = JSON.parse(\n localStorage.getItem(LOCAL_WORKSPACE_LOCAL_STORAGE_KEY) ?? '[]'\n );\n allWorkspaceIDs.push(id);\n localStorage.setItem(\n LOCAL_WORKSPACE_LOCAL_STORAGE_KEY,\n JSON.stringify(allWorkspaceIDs)\n );\n\n // notify all browser tabs, so they can update their workspace list\n this.notifyChannel.postMessage(id);\n\n return { id, flavour: WorkspaceFlavour.LOCAL };\n }\n workspaces$ = LiveData.from(\n new Observable(subscriber => {\n let last: WorkspaceMetadata[] | null = null;\n const emit = () => {\n const value = JSON.parse(\n localStorage.getItem(LOCAL_WORKSPACE_LOCAL_STORAGE_KEY) ?? '[]'\n ).map((id: string) => ({ id, flavour: WorkspaceFlavour.LOCAL }));\n if (isEqual(last, value)) return;\n subscriber.next(value);\n last = value;\n };\n\n emit();\n const channel = new BroadcastChannel(\n LOCAL_WORKSPACE_CHANGED_BROADCAST_CHANNEL_KEY\n );\n channel.addEventListener('message', emit);\n\n return () => {\n channel.removeEventListener('message', emit);\n channel.close();\n };\n }),\n []\n );\n isLoading$ = new LiveData(false);\n revalidate(): void {\n // notify livedata to re-scan workspaces\n this.notifyChannel.postMessage(null);\n }\n\n async getWorkspaceProfile(\n id: string\n ): Promise {\n const docStorage = this.storageProvider.getDocStorage(id);\n const localData = await docStorage.doc.get(id);\n\n if (!localData) {\n return {\n isOwner: true,\n };\n }\n\n const bs = new DocCollection({\n id,\n schema: globalBlockSuiteSchema,\n disableBacklinkIndex: true,\n disableSearchIndex: true,\n });\n\n if (localData) applyUpdate(bs.doc, localData);\n\n return {\n name: bs.meta.name,\n avatar: bs.meta.avatar,\n isOwner: true,\n };\n }\n getWorkspaceBlob(id: string, blob: string): Promise {\n return this.storageProvider.getBlobStorage(id).get(blob);\n }\n\n getEngineProvider(workspaceId: string): WorkspaceEngineProvider {\n return {\n getAwarenessConnections() {\n return [new BroadcastChannelAwarenessConnection(workspaceId)];\n },\n getDocServer() {\n return null;\n },\n getDocStorage: () => {\n return this.storageProvider.getDocStorage(workspaceId);\n },\n getLocalBlobStorage: () => {\n return this.storageProvider.getBlobStorage(workspaceId);\n },\n getRemoteBlobStorages() {\n return [new StaticBlobStorage()];\n },\n };\n }\n}\n","import {\n type BlobStorage,\n createIdentifier,\n type DocStorage,\n} from '@toeverything/infra';\n\nexport interface WorkspaceEngineStorageProvider {\n getDocStorage(workspaceId: string): DocStorage;\n getBlobStorage(workspaceId: string): BlobStorage;\n}\n\nexport const WorkspaceEngineStorageProvider =\n createIdentifier(\n 'WorkspaceEngineStorageProvider'\n );\n","import {\n AuthService,\n GraphQLService,\n WebSocketService,\n} from '@affine/core/modules/cloud';\nimport {\n type Framework,\n GlobalState,\n WorkspaceFlavourProvider,\n} from '@toeverything/infra';\n\nimport { CloudWorkspaceFlavourProviderService } from './impls/cloud';\nimport { IndexedDBBlobStorage } from './impls/engine/blob-indexeddb';\nimport { SqliteBlobStorage } from './impls/engine/blob-sqlite';\nimport { IndexedDBDocStorage } from './impls/engine/doc-indexeddb';\nimport { SqliteDocStorage } from './impls/engine/doc-sqlite';\nimport {\n LOCAL_WORKSPACE_LOCAL_STORAGE_KEY,\n LocalWorkspaceFlavourProvider,\n} from './impls/local';\nimport { WorkspaceEngineStorageProvider } from './providers/engine';\n\nexport function configureBrowserWorkspaceFlavours(framework: Framework) {\n framework\n .impl(WorkspaceFlavourProvider('LOCAL'), LocalWorkspaceFlavourProvider, [\n WorkspaceEngineStorageProvider,\n ])\n .service(CloudWorkspaceFlavourProviderService, [\n GlobalState,\n AuthService,\n WorkspaceEngineStorageProvider,\n GraphQLService,\n WebSocketService,\n ])\n .impl(WorkspaceFlavourProvider('CLOUD'), p =>\n p.get(CloudWorkspaceFlavourProviderService)\n );\n}\n\nexport function configureIndexedDBWorkspaceEngineStorageProvider(\n framework: Framework\n) {\n framework.impl(WorkspaceEngineStorageProvider, {\n getDocStorage(workspaceId: string) {\n return new IndexedDBDocStorage(workspaceId);\n },\n getBlobStorage(workspaceId: string) {\n return new IndexedDBBlobStorage(workspaceId);\n },\n });\n}\n\nexport function configureSqliteWorkspaceEngineStorageProvider(\n framework: Framework\n) {\n framework.impl(WorkspaceEngineStorageProvider, {\n getDocStorage(workspaceId: string) {\n return new SqliteDocStorage(workspaceId);\n },\n getBlobStorage(workspaceId: string) {\n return new SqliteBlobStorage(workspaceId);\n },\n });\n}\n\n/**\n * a hack for directly add local workspace to workspace list\n * Used after copying sqlite database file to appdata folder\n */\nexport function _addLocalWorkspace(id: string) {\n const allWorkspaceIDs: string[] = JSON.parse(\n localStorage.getItem(LOCAL_WORKSPACE_LOCAL_STORAGE_KEY) ?? '[]'\n );\n allWorkspaceIDs.push(id);\n localStorage.setItem(\n LOCAL_WORKSPACE_LOCAL_STORAGE_KEY,\n JSON.stringify(allWorkspaceIDs)\n );\n}\n","import isSvg from 'is-svg';\n\nfunction fastCheckIsNotSvg(buffer: Uint8Array) {\n // check first non-whitespace character is not ' {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import \"../component/src/components/not-found-page/styles.css.ts.vanilla.css!=!../../../../../../node_modules/@vanilla-extract/webpack-plugin/virtualFileLoader/dist/vanilla-extract-webpack-plugin-virtualFileLoader.cjs.js?{\\\"fileName\\\":\\\"../component/src/components/not-found-page/styles.css.ts.vanilla.css\\\",\\\"source\\\":\\\"LnFtM3ZpODAgewogIGZvbnQtc2l6ZTogdmFyKC0tYWZmaW5lLWZvbnQtYmFzZSk7CiAgY29sb3I6IHZhcigtLWFmZmluZS10ZXh0LXByaW1hcnktY29sb3IpOwogIGhlaWdodDogMTAwdmg7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMCAyMHB4Owp9Ci5xbTN2aTgxIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgbWFyZ2luOiAyNHB4IGF1dG8gMDsKfQoucW0zdmk4MiB7CiAgYm94LXNoYWRvdzogdmFyKC0tYWZmaW5lLWxhcmdlLWJ1dHRvbi1lZmZlY3QpICFpbXBvcnRhbnQ7Cn0=\\\"}!../../../../../../node_modules/@vanilla-extract/webpack-plugin/extracted.js\"\nexport var largeButtonEffect = 'qm3vi82';\nexport var notFoundPageContainer = 'qm3vi80';\nexport var wrapper = 'qm3vi81';","import { useI18n } from '@affine/i18n';\nimport { SignOutIcon } from '@blocksuite/icons/rc';\n\nimport { Avatar } from '../../ui/avatar';\nimport { Button, IconButton } from '../../ui/button';\nimport { AffineOtherPageLayout } from '../affine-other-page-layout';\nimport type { User } from '../auth-components';\nimport { NotFoundPattern } from './not-found-pattern';\nimport {\n largeButtonEffect,\n notFoundPageContainer,\n wrapper,\n} from './styles.css';\n\nexport interface NotFoundPageProps {\n user?: User | null;\n signInComponent?: JSX.Element;\n onBack: () => void;\n onSignOut: () => void;\n}\nexport const NoPermissionOrNotFound = ({\n user,\n onBack,\n onSignOut,\n signInComponent,\n}: NotFoundPageProps) => {\n const t = useI18n();\n\n return (\n \n
\n {user ? (\n <>\n
\n \n
\n

{t['404.hint']()}

\n
\n \n {t['404.back']()}\n \n
\n
\n \n {user.email}\n \n \n \n
\n \n ) : (\n signInComponent\n )}\n
\n
\n );\n};\n\nexport const NotFoundPage = ({\n user,\n onBack,\n onSignOut,\n}: NotFoundPageProps) => {\n const t = useI18n();\n\n return (\n \n
\n
\n \n
\n

{t['404.hint']()}

\n
\n \n {t['404.back']()}\n \n
\n\n {user ? (\n
\n \n {user.email}\n \n \n \n
\n ) : null}\n
\n
\n );\n};\n","import {\n NoPermissionOrNotFound,\n NotFoundPage,\n} from '@affine/component/not-found-page';\nimport { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';\nimport { apis } from '@affine/electron-api';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport type { ReactElement } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { SignOutModal } from '../components/affine/sign-out-modal';\nimport { RouteLogic, useNavigateHelper } from '../hooks/use-navigate-helper';\nimport { AuthService } from '../modules/cloud';\nimport { SignIn } from './sign-in';\n\nexport const PageNotFound = ({\n noPermission,\n}: {\n noPermission?: boolean;\n}): ReactElement => {\n const authService = useService(AuthService);\n const account = useLiveData(authService.session.account$);\n const { jumpToIndex } = useNavigateHelper();\n const [open, setOpen] = useState(false);\n\n const handleBackButtonClick = useCallback(\n () => jumpToIndex(RouteLogic.REPLACE),\n [jumpToIndex]\n );\n\n const handleOpenSignOutModal = useCallback(() => {\n setOpen(true);\n }, [setOpen]);\n\n const onConfirmSignOut = useAsyncCallback(async () => {\n setOpen(false);\n await authService.signOut();\n }, [authService]);\n\n useEffect(() => {\n apis?.ui.pingAppLayoutReady().catch(console.error);\n }, []);\n\n return (\n <>\n {noPermission ? (\n }\n />\n ) : (\n \n )}\n\n \n \n );\n};\n\nexport const Component = PageNotFound;\n","import { AffineOtherPageLayout } from '@affine/component/affine-other-page-layout';\nimport { SignInPageContainer } from '@affine/component/auth-components';\nimport { AuthService } from '@affine/core/modules/cloud';\nimport { useLiveData, useService } from '@toeverything/infra';\nimport { useAtom } from 'jotai';\nimport { useCallback, useEffect } from 'react';\n// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { useNavigate, useSearchParams } from 'react-router-dom';\n\nimport { authAtom } from '../atoms';\nimport type { AuthProps } from '../components/affine/auth';\nimport { AuthPanel } from '../components/affine/auth';\nimport { RouteLogic, useNavigateHelper } from '../hooks/use-navigate-helper';\n\nexport const SignIn = () => {\n const [{ state, email = '', emailType = 'changePassword' }, setAuthAtom] =\n useAtom(authAtom);\n const session = useService(AuthService).session;\n const status = useLiveData(session.status$);\n const isRevalidating = useLiveData(session.isRevalidating$);\n const navigate = useNavigate();\n const { jumpToIndex } = useNavigateHelper();\n const [searchParams] = useSearchParams();\n const isLoggedIn = status === 'authenticated' && !isRevalidating;\n\n useEffect(() => {\n if (isLoggedIn) {\n const redirectUri = searchParams.get('redirect_uri');\n if (redirectUri) {\n navigate(redirectUri, {\n replace: true,\n });\n } else {\n jumpToIndex(RouteLogic.REPLACE, {\n search: searchParams.toString(),\n });\n }\n }\n }, [jumpToIndex, navigate, setAuthAtom, isLoggedIn, searchParams]);\n\n const onSetEmailType = useCallback(\n (emailType: AuthProps['emailType']) => {\n setAuthAtom(prev => ({ ...prev, emailType }));\n },\n [setAuthAtom]\n );\n\n const onSetAuthState = useCallback(\n (state: AuthProps['state']) => {\n setAuthAtom(prev => ({ ...prev, state }));\n },\n [setAuthAtom]\n );\n\n const onSetAuthEmail = useCallback(\n (email: AuthProps['email']) => {\n setAuthAtom(prev => ({ ...prev, email }));\n },\n [setAuthAtom]\n );\n\n return (\n \n
\n \n
\n
\n );\n};\n\nexport const Component = () => {\n return (\n \n
\n \n
\n
\n );\n};\n","import { wrapCreateBrowserRouter } from '@sentry/react';\nimport { createContext, useEffect, useState } from 'react';\nimport type { NavigateFunction, RouteObject } from 'react-router-dom';\nimport {\n createBrowserRouter as reactRouterCreateBrowserRouter,\n Outlet,\n redirect,\n // eslint-disable-next-line @typescript-eslint/no-restricted-imports\n useNavigate,\n} from 'react-router-dom';\n\nexport const NavigateContext = createContext(null);\n\nfunction RootRouter() {\n const navigate = useNavigate();\n const [ready, setReady] = useState(false);\n useEffect(() => {\n // a hack to make sure router is ready\n setReady(true);\n }, []);\n\n return (\n ready && (\n \n \n \n )\n );\n}\n\nexport const topLevelRoutes = [\n {\n element: ,\n children: [\n {\n path: '/',\n lazy: () => import('./pages/index'),\n },\n {\n path: '/workspace/:workspaceId/*',\n lazy: () => import('./pages/workspace/index'),\n },\n {\n path: '/share/:workspaceId/:pageId',\n lazy: () => import('./pages/share/share-detail-page'),\n },\n {\n path: '/404',\n lazy: () => import('./pages/404'),\n },\n {\n path: '/admin-panel',\n lazy: () => import('./pages/admin-panel'),\n },\n {\n path: '/auth/:authType',\n lazy: () => import('./pages/auth'),\n },\n {\n path: '/expired',\n lazy: () => import('./pages/expired'),\n },\n {\n path: '/invite/:inviteId',\n lazy: () => import('./pages/invite'),\n },\n {\n path: '/signIn',\n lazy: () => import('./pages/sign-in'),\n },\n {\n path: '/magic-link',\n lazy: () => import('./pages/magic-link'),\n },\n {\n path: '/open-app/:action',\n lazy: () => import('./pages/open-app'),\n },\n {\n path: '/upgrade-success',\n lazy: () => import('./pages/upgrade-success'),\n },\n {\n path: '/ai-upgrade-success',\n lazy: () => import('./pages/ai-upgrade-success'),\n },\n {\n path: '/desktop-signin',\n lazy: () => import('./pages/desktop-signin'),\n },\n {\n path: '/onboarding',\n lazy: () => import('./pages/onboarding'),\n },\n {\n path: '/redirect-proxy',\n lazy: () => import('./pages/redirect'),\n },\n {\n path: '/subscribe',\n lazy: () => import('./pages/subscribe'),\n },\n {\n path: '/try-cloud',\n loader: () => {\n return redirect(\n `/signIn?redirect_uri=${encodeURIComponent('/?initCloud=true')}`\n );\n },\n },\n {\n path: '/theme-editor',\n lazy: () => import('./pages/theme-editor'),\n },\n {\n path: '*',\n lazy: () => import('./pages/404'),\n },\n ],\n },\n] satisfies [RouteObject, ...RouteObject[]];\n\nexport const viewRoutes = [\n {\n path: '/all',\n lazy: () => import('./pages/workspace/all-page/all-page'),\n },\n {\n path: '/collection',\n lazy: () => import('./pages/workspace/all-collection'),\n },\n {\n path: '/collection/:collectionId',\n lazy: () => import('./pages/workspace/collection/index'),\n },\n {\n path: '/tag',\n lazy: () => import('./pages/workspace/all-tag'),\n },\n {\n path: '/tag/:tagId',\n lazy: () => import('./pages/workspace/tag'),\n },\n {\n path: '/trash',\n lazy: () => import('./pages/workspace/trash-page'),\n },\n {\n path: '/:pageId',\n lazy: () => import('./pages/workspace/detail-page/detail-page'),\n },\n {\n path: '*',\n lazy: () => import('./pages/404'),\n },\n] satisfies [RouteObject, ...RouteObject[]];\n\nconst createBrowserRouter = wrapCreateBrowserRouter(\n reactRouterCreateBrowserRouter\n);\nexport const router = (\n window.SENTRY_RELEASE ? createBrowserRouter : reactRouterCreateBrowserRouter\n)(topLevelRoutes, {\n future: {\n v7_normalizeFormMethod: true,\n },\n basename: '/adoc', // Adjust this to your needs\n});\n","import { DebugLogger } from '@affine/debug';\nimport { DocCollection } from '@blocksuite/store';\n\nexport { DocCollection };\n\nexport enum WorkspaceSubPath {\n ALL = 'all',\n TRASH = 'trash',\n SHARED = 'shared',\n}\n\nexport const WorkspaceSubPathName = {\n [WorkspaceSubPath.ALL]: 'All Pages',\n [WorkspaceSubPath.TRASH]: 'Trash',\n [WorkspaceSubPath.SHARED]: 'Shared',\n} satisfies {\n [Path in WorkspaceSubPath]: string;\n};\n\nexport const pathGenerator = {\n all: workspaceId => `/workspace/${workspaceId}/all`,\n trash: workspaceId => `/workspace/${workspaceId}/trash`,\n shared: workspaceId => `/workspace/${workspaceId}/shared`,\n} satisfies {\n [Path in WorkspaceSubPath]: (workspaceId: string) => string;\n};\n\nexport const performanceLogger = new DebugLogger('performance');\nexport const performanceRenderLogger = performanceLogger.namespace('render');\n","import { isBrowser } from '@affine/env/constant';\nimport createCache from '@emotion/cache';\n\nexport default function createEmotionCache() {\n let insertionPoint;\n\n if (isBrowser) {\n const emotionInsertionPoint = document.querySelector(\n 'meta[name=\"emotion-insertion-point\"]'\n );\n insertionPoint = emotionInsertionPoint ?? undefined;\n }\n\n return createCache({ key: 'affine', insertionPoint });\n}\n","import { generateKeyBetween } from 'fractional-indexing';\n\nexport interface SortableProvider {\n getItems(): T[];\n getItemId(item: T): K;\n getItemOrder(item: T): string;\n setItemOrder(item: T, order: string): void;\n}\n\n// Using fractional-indexing managing orders of items in a list\n/**\n * @deprecated\n */\nexport function createFractionalIndexingSortableHelper<\n T,\n K extends string | number,\n>(provider: SortableProvider) {\n function getOrderedItems() {\n return provider.getItems().sort((a, b) => {\n const oa = provider.getItemOrder(a);\n const ob = provider.getItemOrder(b);\n return oa > ob ? 1 : oa < ob ? -1 : 0;\n });\n }\n\n function getLargestOrder() {\n const lastItem = getOrderedItems().at(-1);\n return lastItem ? provider.getItemOrder(lastItem) : null;\n }\n\n function getSmallestOrder() {\n const firstItem = getOrderedItems().at(0);\n return firstItem ? provider.getItemOrder(firstItem) : null;\n }\n\n /**\n * Get a new order at the end of the list\n */\n function getNewItemOrder() {\n return generateKeyBetween(getLargestOrder(), null);\n }\n\n /**\n * Move item from one position to another\n *\n * in the most common sorting case, moving over will visually place the dragging item to the target position\n * the original item in the target position will either move up or down, depending on the direction of the drag\n *\n * @param fromId\n * @param toId\n */\n function move(fromId: K, toId: K) {\n const items = getOrderedItems();\n const from = items.findIndex(i => provider.getItemId(i) === fromId);\n const to = items.findIndex(i => provider.getItemId(i) === toId);\n const fromItem = items[from];\n const toItem = items[to];\n const toNextItem = items[from < to ? to + 1 : to - 1];\n const toOrder = toItem ? provider.getItemOrder(toItem) : null;\n const toNextOrder = toNextItem ? provider.getItemOrder(toNextItem) : null;\n const args: [string | null, string | null] =\n from < to ? [toOrder, toNextOrder] : [toNextOrder, toOrder];\n provider.setItemOrder(fromItem, generateKeyBetween(...args));\n }\n\n function moveTo(fromId: K, toId: K, position: 'before' | 'after') {\n const items = getOrderedItems();\n const from = items.findIndex(i => provider.getItemId(i) === fromId);\n const to = items.findIndex(i => provider.getItemId(i) === toId);\n const fromItem = items[from] as T | undefined;\n if (fromItem === undefined) return;\n const toItem = items[to] as T | undefined;\n const toItemPrev = items[to - 1] as T | undefined;\n const toItemNext = items[to + 1] as T | undefined;\n const toItemOrder = toItem ? provider.getItemOrder(toItem) : null;\n const toItemPrevOrder = toItemPrev\n ? provider.getItemOrder(toItemPrev)\n : null;\n const toItemNextOrder = toItemNext\n ? provider.getItemOrder(toItemNext)\n : null;\n if (position === 'before') {\n provider.setItemOrder(\n fromItem,\n generateKeyBetween(toItemPrevOrder, toItemOrder)\n );\n } else {\n provider.setItemOrder(\n fromItem,\n generateKeyBetween(toItemOrder, toItemNextOrder)\n );\n }\n }\n\n /**\n * Cases example:\n * Imagine we have the following items, | a | b | c |\n * 1. insertBefore('b', undefined). before is not provided, which means insert b after c\n * | a | c |\n * ▴\n * b\n * result: | a | c | b |\n *\n * 2. insertBefore('b', 'a'). insert b before a\n * | a | c |\n * ▴\n * b\n *\n * result: | b | a | c |\n */\n function insertBefore(\n id: string | number,\n beforeId: string | number | undefined\n ) {\n const items = getOrderedItems();\n // assert id is in the list\n const item = items.find(i => provider.getItemId(i) === id);\n if (!item) return;\n\n const beforeItemIndex = items.findIndex(\n i => provider.getItemId(i) === beforeId\n );\n const beforeItem = beforeItemIndex !== -1 ? items[beforeItemIndex] : null;\n const beforeItemPrev = beforeItem ? items[beforeItemIndex - 1] : null;\n\n const beforeOrder = beforeItem ? provider.getItemOrder(beforeItem) : null;\n const beforePrevOrder = beforeItemPrev\n ? provider.getItemOrder(beforeItemPrev)\n : null;\n\n provider.setItemOrder(\n item,\n generateKeyBetween(beforePrevOrder, beforeOrder)\n );\n }\n\n return {\n getOrderedItems,\n getLargestOrder,\n getSmallestOrder,\n getNewItemOrder,\n move,\n moveTo,\n insertBefore,\n };\n}\n\n/**\n * generate a key between a and b, the result key is always satisfied with a < result < b.\n * the key always has a random suffix, so there is no need to worry about collision.\n *\n * make sure a and b are generated by this function.\n */\nexport function generateFractionalIndexingKeyBetween(\n a: string | null,\n b: string | null\n) {\n const randomSize = 32;\n function randomString(length: number = randomSize) {\n const values = new Uint8Array(length);\n crypto.getRandomValues(values);\n const chars =\n '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(values[i] % chars.length);\n }\n return result;\n }\n\n if (a !== null && b !== null && a >= b) {\n throw new Error('a should be smaller than b');\n }\n\n // get the subkey in full key\n // e.g.\n // a0xxxx -> a\n // a0x0xxxx -> a0x\n function subkey(key: string | null) {\n if (key === null) {\n return null;\n }\n if (key.length <= randomSize + 1) {\n // no subkey\n return key;\n }\n const splitAt = key.substring(0, key.length - randomSize - 1);\n return splitAt;\n }\n\n const aSubkey = subkey(a);\n const bSubkey = subkey(b);\n\n if (aSubkey === null && bSubkey === null) {\n // generate a new key\n return generateKeyBetween(null, null) + '0' + randomString();\n } else if (aSubkey === null && bSubkey !== null) {\n // generate a key before b\n return generateKeyBetween(null, bSubkey) + '0' + randomString();\n } else if (bSubkey === null && aSubkey !== null) {\n // generate a key after a\n return generateKeyBetween(aSubkey, null) + '0' + randomString();\n } else if (aSubkey !== null && bSubkey !== null) {\n // generate a key between a and b\n if (aSubkey === bSubkey && a !== null && b !== null) {\n // conflict, if the subkeys are the same, generate a key between fullkeys\n return generateKeyBetween(a, b) + '0' + randomString();\n } else {\n return generateKeyBetween(aSubkey, bSubkey) + '0' + randomString();\n }\n }\n throw new Error('Never reach here');\n}\n","import type { BaseSyntheticEvent } from 'react';\n\nexport function stopPropagation(event: BaseSyntheticEvent) {\n event.stopPropagation();\n}\n\nexport function stopEvent(event: BaseSyntheticEvent) {\n event.stopPropagation();\n event.preventDefault();\n}\n\nexport function isNewTabTrigger(event?: React.MouseEvent) {\n return event ? event.ctrlKey || event.metaKey || event.button === 1 : false;\n}\n","export function popupWindow(target: string) {\n const url = new URL(runtimeConfig.serverUrlPrefix + '/redirect-proxy');\n target = /^https?:\\/\\//.test(target)\n ? target\n : runtimeConfig.serverUrlPrefix + target;\n url.searchParams.set('redirect_uri', target);\n return window.open(url, '_blank', `noreferrer noopener`);\n}\n","import type { ToastOptions } from '@affine/component';\nimport { toast as basicToast } from '@affine/component';\nimport { assertEquals } from '@blocksuite/global/utils';\n\nexport const toast = (message: string, options?: ToastOptions) => {\n const modal = document.querySelector(\n '[role=presentation]'\n ) as HTMLDivElement | null;\n if (modal) {\n assertEquals(modal.constructor, HTMLDivElement, 'modal should be div');\n }\n return basicToast(message, {\n portal: modal || document.body,\n ...options,\n });\n};\n\ndeclare global {\n // global Events\n interface WindowEventMap {\n 'affine-toast:emit': CustomEvent<{\n message: string;\n }>;\n }\n}\n","import reduce from 'image-blob-reduce';\n\n// validate and reduce image size and return as file\nexport const validateAndReduceImage = async (file: File): Promise => {\n // Declare a new async function that wraps the decode logic\n const decodeAndReduceImage = async (): Promise => {\n const img = new Image();\n const url = URL.createObjectURL(file);\n img.src = url;\n\n await img.decode().catch(() => {\n URL.revokeObjectURL(url);\n throw new Error('Image could not be decoded');\n });\n\n img.onload = img.onerror = () => {\n URL.revokeObjectURL(url);\n };\n\n const sizeInMB = file.size / (1024 * 1024);\n if (sizeInMB > 10 || img.width > 4000 || img.height > 4000) {\n // Compress the file to less than 10MB\n const compressedImg = await reduce().toBlob(file, {\n max: 4000,\n unsharpAmount: 80,\n unsharpRadius: 0.6,\n unsharpThreshold: 2,\n });\n return compressedImg;\n }\n\n return file;\n };\n\n try {\n const reducedBlob = await decodeAndReduceImage();\n\n return new File([reducedBlob], file.name, { type: file.type });\n } catch (error) {\n throw new Error('Image could not be reduce :' + error);\n }\n};\n","import type {\n events as helperEvents,\n handlers as helperHandlers,\n} from '@affine/electron/helper/exposed';\nimport type {\n events as mainEvents,\n handlers as mainHandlers,\n} from '@affine/electron/main/exposed';\nimport type { appInfo as exposedAppInfo } from '@affine/electron/preload/electron-api';\nimport type { sharedStorage as exposedSharedStorage } from '@affine/electron/preload/shared-storage';\n\ntype MainHandlers = typeof mainHandlers;\ntype HelperHandlers = typeof helperHandlers;\ntype HelperEvents = typeof helperEvents;\ntype MainEvents = typeof mainEvents;\ntype ClientHandler = {\n [namespace in keyof MainHandlers]: {\n [method in keyof MainHandlers[namespace]]: MainHandlers[namespace][method] extends (\n arg0: any,\n ...rest: infer A\n ) => any\n ? (\n ...args: A\n ) => ReturnType extends Promise\n ? ReturnType\n : Promise>\n : never;\n };\n} & HelperHandlers;\ntype ClientEvents = MainEvents & HelperEvents;\n\nexport const appInfo = (globalThis as any).appInfo as\n | typeof exposedAppInfo\n | null;\nexport const apis = (globalThis as any).apis as ClientHandler | null;\nexport const events = (globalThis as any).events as ClientEvents | null;\n\nexport const sharedStorage = (globalThis as any).sharedStorage as\n | typeof exposedSharedStorage\n | null;\n\nexport type { UpdateMeta } from '@affine/electron/main/updater/event';\nexport {\n type TabViewsMetaSchema,\n type WorkbenchMeta,\n type WorkbenchViewMeta,\n type WorkbenchViewModule,\n} from '@affine/electron/main/windows-manager/tab-views-meta-schema';\n","import { GraphQLError as BaseGraphQLError } from 'graphql';\n\nimport { type ErrorDataUnion, ErrorNames } from './schema';\n\nexport interface UserFriendlyErrorResponse {\n status: number;\n code: string;\n type: string;\n name: ErrorNames;\n message: string;\n args?: any;\n stacktrace?: string;\n}\n\nexport class UserFriendlyError implements UserFriendlyErrorResponse {\n status = this.response.status;\n code = this.response.code;\n type = this.response.type;\n name = this.response.name;\n message = this.response.message;\n args = this.response.args;\n stacktrace = this.response.stacktrace;\n\n static fromAnyError(response: any) {\n if (response instanceof GraphQLError) {\n return new UserFriendlyError(response.extensions);\n }\n\n if (\n response &&\n typeof response === 'object' &&\n response.type &&\n response.name\n ) {\n return new UserFriendlyError(response);\n }\n\n return new UserFriendlyError({\n status: 500,\n code: 'INTERNAL_SERVER_ERROR',\n type: 'INTERNAL_SERVER_ERROR',\n name: ErrorNames.INTERNAL_SERVER_ERROR,\n message: 'Internal server error',\n });\n }\n\n constructor(private readonly response: UserFriendlyErrorResponse) {}\n}\n\nexport class GraphQLError extends BaseGraphQLError {\n // @ts-expect-error better to be a known type without any type casting\n override extensions!: UserFriendlyErrorResponse;\n}\n\ntype ToPascalCase = S extends `${infer A}_${infer B}`\n ? `${Capitalize>}${ToPascalCase}`\n : Capitalize>;\n\nexport type ErrorData = {\n [K in ErrorNames]: Extract<\n ErrorDataUnion,\n { __typename?: `${ToPascalCase}DataType` }\n >;\n};\n","import type { ExecutionResult } from 'graphql';\nimport { isNil, isObject, merge } from 'lodash-es';\n\nimport { GraphQLError } from './error';\nimport type { GraphQLQuery } from './graphql';\nimport type { Mutations, Queries } from './schema';\n\nexport type NotArray = T extends Array ? never : T;\n\nexport type _QueryVariables =\n Q['id'] extends Queries['name']\n ? Extract['variables']\n : Q['id'] extends Mutations['name']\n ? Extract['variables']\n : undefined;\n\nexport type QueryVariables =\n _QueryVariables extends never | Record\n ? never\n : _QueryVariables;\n\nexport type QueryResponse = Extract<\n Queries | Mutations,\n { name: Q['id'] }\n>['response'];\n\ntype NullableKeys = {\n [K in keyof T]: null extends T[K] ? K : never;\n}[keyof T];\n\ntype NonNullableKeys = {\n [K in keyof T]: null extends T[K] ? never : K;\n}[keyof T];\n\nexport type RecursiveMaybeFields = T extends\n | number\n | boolean\n | string\n | null\n | undefined\n ? T\n : {\n [K in NullableKeys]?: RecursiveMaybeFields;\n } & {\n [K in NonNullableKeys]: RecursiveMaybeFields;\n };\n\ntype AllowedRequestContext = Omit;\n\nexport interface RequestBody {\n operationName?: string;\n variables: any;\n query: string;\n form?: FormData;\n}\n\ntype QueryVariablesOption =\n QueryVariables extends never\n ? {\n variables?: undefined;\n }\n : { variables: RecursiveMaybeFields> };\n\nexport type RequestOptions = QueryVariablesOption & {\n /**\n * parameter passed to `fetch` function\n */\n context?: AllowedRequestContext;\n /**\n * Whether keep null or undefined value in variables.\n *\n * if `false` given, `{ a: 0, b: undefined, c: null }` will be converted to `{ a: 0 }`\n *\n * @default true\n */\n keepNilVariables?: boolean;\n};\n\nexport type QueryOptions = RequestOptions & {\n query: Q;\n};\nexport type MutationOptions = RequestOptions & {\n mutation: M;\n};\n\nfunction filterEmptyValue(vars: any) {\n const newVars: Record = {};\n Object.entries(vars).forEach(([key, value]) => {\n if (isNil(value)) {\n return;\n }\n if (isObject(value) && !(value instanceof File)) {\n newVars[key] = filterEmptyValue(value);\n return;\n }\n newVars[key] = value;\n });\n\n return newVars;\n}\n\nexport function transformToForm(body: RequestBody) {\n const form = new FormData();\n const gqlBody: {\n name?: string;\n query: string;\n variables: any;\n map: any;\n } = {\n query: body.query,\n variables: body.variables,\n map: {},\n };\n\n if (body.operationName) {\n gqlBody.name = body.operationName;\n }\n const map: Record = {};\n const files: File[] = [];\n if (body.variables) {\n let i = 0;\n const buildMap = (key: string, value: any) => {\n if (value instanceof File) {\n map['' + i] = [key];\n files[i] = value;\n i++;\n } else if (Array.isArray(value)) {\n value.forEach((v, index) => {\n buildMap(`${key}.${index}`, v);\n });\n } else if (isObject(value)) {\n Object.entries(value).forEach(([k, v]) => {\n buildMap(`${key}.${k}`, v);\n });\n }\n };\n buildMap('variables', body.variables);\n }\n\n form.set('operations', JSON.stringify(gqlBody));\n form.set('map', JSON.stringify(map));\n for (const [i, file] of files.entries()) {\n form.set(`${i}`, file);\n }\n return form;\n}\n\nfunction formatRequestBody({\n query,\n variables,\n keepNilVariables,\n}: QueryOptions): RequestBody | FormData {\n const body: RequestBody = {\n query: query.query,\n variables:\n (keepNilVariables ?? true) ? variables : filterEmptyValue(variables),\n };\n\n if (query.operationName) {\n body.operationName = query.operationName;\n }\n\n if (query.containsFile) {\n return transformToForm(body);\n }\n return body;\n}\n\nexport const gqlFetcherFactory = (\n endpoint: string,\n fetcher: (input: string, init?: RequestInit) => Promise = fetch\n) => {\n const gqlFetch = async (\n options: QueryOptions\n ): Promise> => {\n const body = formatRequestBody(options);\n\n const isFormData = body instanceof FormData;\n const headers: Record = {\n 'x-operation-name': options.query.operationName,\n 'x-definition-name': options.query.definitionName,\n };\n if (!isFormData) {\n headers['content-type'] = 'application/json';\n }\n const ret = fetcher(\n endpoint,\n merge(options.context, {\n method: 'POST',\n headers,\n body: isFormData ? body : JSON.stringify(body),\n })\n ).then(async res => {\n if (res.headers.get('content-type')?.startsWith('application/json')) {\n const result = (await res.json()) as ExecutionResult;\n if (res.status >= 400 || result.errors) {\n if (result.errors && result.errors.length > 0) {\n // throw the first error is enough\n const firstError = result.errors[0];\n throw new GraphQLError(firstError.message, firstError);\n } else {\n throw new GraphQLError('Empty GraphQL error body');\n }\n } else if (result.data) {\n // we have to cast here because the type of result.data is a union type\n return result.data as any;\n }\n }\n\n throw new GraphQLError(\n 'GraphQL query responds unexpected result, query ' +\n options.query.operationName\n );\n });\n\n return ret;\n };\n\n return gqlFetch;\n};\n","/* do not manipulate this file manually. */\nexport interface GraphQLQuery {\n id: string;\n operationName: string;\n definitionName: string;\n query: string;\n containsFile?: boolean;\n}\n\nexport const passwordLimitsFragment = `\nfragment PasswordLimits on PasswordLimitsType {\n minLength\n maxLength\n}`\nexport const credentialsRequirementFragment = `\nfragment CredentialsRequirement on CredentialsRequirementType {\n password {\n ...PasswordLimits\n }\n}`\nexport const adminServerConfigQuery = {\n id: 'adminServerConfigQuery' as const,\n operationName: 'adminServerConfig',\n definitionName: 'serverConfig',\n containsFile: false,\n query: `\nquery adminServerConfig {\n serverConfig {\n version\n baseUrl\n name\n features\n type\n initialized\n credentialsRequirement {\n ...CredentialsRequirement\n }\n availableUserFeatures\n }\n}${passwordLimitsFragment}\n${credentialsRequirementFragment}`,\n};\n\nexport const deleteBlobMutation = {\n id: 'deleteBlobMutation' as const,\n operationName: 'deleteBlob',\n definitionName: 'deleteBlob',\n containsFile: false,\n query: `\nmutation deleteBlob($workspaceId: String!, $hash: String!) {\n deleteBlob(workspaceId: $workspaceId, hash: $hash)\n}`,\n};\n\nexport const listBlobsQuery = {\n id: 'listBlobsQuery' as const,\n operationName: 'listBlobs',\n definitionName: 'listBlobs',\n containsFile: false,\n query: `\nquery listBlobs($workspaceId: String!) {\n listBlobs(workspaceId: $workspaceId)\n}`,\n};\n\nexport const setBlobMutation = {\n id: 'setBlobMutation' as const,\n operationName: 'setBlob',\n definitionName: 'setBlob',\n containsFile: true,\n query: `\nmutation setBlob($workspaceId: String!, $blob: Upload!) {\n setBlob(workspaceId: $workspaceId, blob: $blob)\n}`,\n};\n\nexport const cancelSubscriptionMutation = {\n id: 'cancelSubscriptionMutation' as const,\n operationName: 'cancelSubscription',\n definitionName: 'cancelSubscription',\n containsFile: false,\n query: `\nmutation cancelSubscription($idempotencyKey: String!, $plan: SubscriptionPlan = Pro) {\n cancelSubscription(idempotencyKey: $idempotencyKey, plan: $plan) {\n id\n status\n nextBillAt\n canceledAt\n }\n}`,\n};\n\nexport const changeEmailMutation = {\n id: 'changeEmailMutation' as const,\n operationName: 'changeEmail',\n definitionName: 'changeEmail',\n containsFile: false,\n query: `\nmutation changeEmail($token: String!, $email: String!) {\n changeEmail(token: $token, email: $email) {\n id\n email\n }\n}`,\n};\n\nexport const createChangePasswordUrlMutation = {\n id: 'createChangePasswordUrlMutation' as const,\n operationName: 'createChangePasswordUrl',\n definitionName: 'createChangePasswordUrl',\n containsFile: false,\n query: `\nmutation createChangePasswordUrl($callbackUrl: String!, $userId: String!) {\n createChangePasswordUrl(callbackUrl: $callbackUrl, userId: $userId)\n}`,\n};\n\nexport const changePasswordMutation = {\n id: 'changePasswordMutation' as const,\n operationName: 'changePassword',\n definitionName: 'changePassword',\n containsFile: false,\n query: `\nmutation changePassword($token: String!, $userId: String!, $newPassword: String!) {\n changePassword(token: $token, userId: $userId, newPassword: $newPassword)\n}`,\n};\n\nexport const copilotQuotaQuery = {\n id: 'copilotQuotaQuery' as const,\n operationName: 'copilotQuota',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery copilotQuota {\n currentUser {\n copilot {\n quota {\n limit\n used\n }\n }\n }\n}`,\n};\n\nexport const cleanupCopilotSessionMutation = {\n id: 'cleanupCopilotSessionMutation' as const,\n operationName: 'cleanupCopilotSession',\n definitionName: 'cleanupCopilotSession',\n containsFile: false,\n query: `\nmutation cleanupCopilotSession($input: DeleteSessionInput!) {\n cleanupCopilotSession(options: $input)\n}`,\n};\n\nexport const createCheckoutSessionMutation = {\n id: 'createCheckoutSessionMutation' as const,\n operationName: 'createCheckoutSession',\n definitionName: 'createCheckoutSession',\n containsFile: false,\n query: `\nmutation createCheckoutSession($input: CreateCheckoutSessionInput!) {\n createCheckoutSession(input: $input)\n}`,\n};\n\nexport const createCopilotMessageMutation = {\n id: 'createCopilotMessageMutation' as const,\n operationName: 'createCopilotMessage',\n definitionName: 'createCopilotMessage',\n containsFile: true,\n query: `\nmutation createCopilotMessage($options: CreateChatMessageInput!) {\n createCopilotMessage(options: $options)\n}`,\n};\n\nexport const createCopilotSessionMutation = {\n id: 'createCopilotSessionMutation' as const,\n operationName: 'createCopilotSession',\n definitionName: 'createCopilotSession',\n containsFile: false,\n query: `\nmutation createCopilotSession($options: CreateChatSessionInput!) {\n createCopilotSession(options: $options)\n}`,\n};\n\nexport const createCustomerPortalMutation = {\n id: 'createCustomerPortalMutation' as const,\n operationName: 'createCustomerPortal',\n definitionName: 'createCustomerPortal',\n containsFile: false,\n query: `\nmutation createCustomerPortal {\n createCustomerPortal\n}`,\n};\n\nexport const createUserMutation = {\n id: 'createUserMutation' as const,\n operationName: 'createUser',\n definitionName: 'createUser',\n containsFile: false,\n query: `\nmutation createUser($input: CreateUserInput!) {\n createUser(input: $input) {\n id\n }\n}`,\n};\n\nexport const createWorkspaceMutation = {\n id: 'createWorkspaceMutation' as const,\n operationName: 'createWorkspace',\n definitionName: 'createWorkspace',\n containsFile: false,\n query: `\nmutation createWorkspace {\n createWorkspace {\n id\n public\n createdAt\n }\n}`,\n};\n\nexport const deleteAccountMutation = {\n id: 'deleteAccountMutation' as const,\n operationName: 'deleteAccount',\n definitionName: 'deleteAccount',\n containsFile: false,\n query: `\nmutation deleteAccount {\n deleteAccount {\n success\n }\n}`,\n};\n\nexport const deleteUserMutation = {\n id: 'deleteUserMutation' as const,\n operationName: 'deleteUser',\n definitionName: 'deleteUser',\n containsFile: false,\n query: `\nmutation deleteUser($id: String!) {\n deleteUser(id: $id) {\n success\n }\n}`,\n};\n\nexport const deleteWorkspaceMutation = {\n id: 'deleteWorkspaceMutation' as const,\n operationName: 'deleteWorkspace',\n definitionName: 'deleteWorkspace',\n containsFile: false,\n query: `\nmutation deleteWorkspace($id: String!) {\n deleteWorkspace(id: $id)\n}`,\n};\n\nexport const forkCopilotSessionMutation = {\n id: 'forkCopilotSessionMutation' as const,\n operationName: 'forkCopilotSession',\n definitionName: 'forkCopilotSession',\n containsFile: false,\n query: `\nmutation forkCopilotSession($options: ForkChatSessionInput!) {\n forkCopilotSession(options: $options)\n}`,\n};\n\nexport const getCopilotHistoriesQuery = {\n id: 'getCopilotHistoriesQuery' as const,\n operationName: 'getCopilotHistories',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery getCopilotHistories($workspaceId: String!, $docId: String, $options: QueryChatHistoriesInput) {\n currentUser {\n copilot(workspaceId: $workspaceId) {\n histories(docId: $docId, options: $options) {\n sessionId\n tokens\n action\n createdAt\n messages {\n id\n role\n content\n attachments\n createdAt\n }\n }\n }\n }\n}`,\n};\n\nexport const getCopilotHistoryIdsQuery = {\n id: 'getCopilotHistoryIdsQuery' as const,\n operationName: 'getCopilotHistoryIds',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery getCopilotHistoryIds($workspaceId: String!, $docId: String, $options: QueryChatHistoriesInput) {\n currentUser {\n copilot(workspaceId: $workspaceId) {\n histories(docId: $docId, options: $options) {\n sessionId\n messages {\n id\n role\n createdAt\n }\n }\n }\n }\n}`,\n};\n\nexport const getCopilotSessionsQuery = {\n id: 'getCopilotSessionsQuery' as const,\n operationName: 'getCopilotSessions',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery getCopilotSessions($workspaceId: String!) {\n currentUser {\n copilot(workspaceId: $workspaceId) {\n actions\n chats\n }\n }\n}`,\n};\n\nexport const getCurrentUserFeaturesQuery = {\n id: 'getCurrentUserFeaturesQuery' as const,\n operationName: 'getCurrentUserFeatures',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery getCurrentUserFeatures {\n currentUser {\n id\n name\n email\n emailVerified\n avatarUrl\n features\n }\n}`,\n};\n\nexport const getCurrentUserQuery = {\n id: 'getCurrentUserQuery' as const,\n operationName: 'getCurrentUser',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery getCurrentUser {\n currentUser {\n id\n name\n email\n emailVerified\n avatarUrl\n token {\n sessionToken\n }\n }\n}`,\n};\n\nexport const getInviteInfoQuery = {\n id: 'getInviteInfoQuery' as const,\n operationName: 'getInviteInfo',\n definitionName: 'getInviteInfo',\n containsFile: false,\n query: `\nquery getInviteInfo($inviteId: String!) {\n getInviteInfo(inviteId: $inviteId) {\n workspace {\n id\n name\n avatar\n }\n user {\n id\n name\n avatarUrl\n }\n }\n}`,\n};\n\nexport const getIsOwnerQuery = {\n id: 'getIsOwnerQuery' as const,\n operationName: 'getIsOwner',\n definitionName: 'isOwner',\n containsFile: false,\n query: `\nquery getIsOwner($workspaceId: String!) {\n isOwner(workspaceId: $workspaceId)\n}`,\n};\n\nexport const getMemberCountByWorkspaceIdQuery = {\n id: 'getMemberCountByWorkspaceIdQuery' as const,\n operationName: 'getMemberCountByWorkspaceId',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery getMemberCountByWorkspaceId($workspaceId: String!) {\n workspace(id: $workspaceId) {\n memberCount\n }\n}`,\n};\n\nexport const getMembersByWorkspaceIdQuery = {\n id: 'getMembersByWorkspaceIdQuery' as const,\n operationName: 'getMembersByWorkspaceId',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery getMembersByWorkspaceId($workspaceId: String!, $skip: Int!, $take: Int!) {\n workspace(id: $workspaceId) {\n memberCount\n members(skip: $skip, take: $take) {\n id\n name\n email\n avatarUrl\n permission\n inviteId\n accepted\n emailVerified\n }\n }\n}`,\n};\n\nexport const oauthProvidersQuery = {\n id: 'oauthProvidersQuery' as const,\n operationName: 'oauthProviders',\n definitionName: 'serverConfig',\n containsFile: false,\n query: `\nquery oauthProviders {\n serverConfig {\n oauthProviders\n }\n}`,\n};\n\nexport const getPromptsQuery = {\n id: 'getPromptsQuery' as const,\n operationName: 'getPrompts',\n definitionName: 'listCopilotPrompts',\n containsFile: false,\n query: `\nquery getPrompts {\n listCopilotPrompts {\n name\n model\n action\n config {\n jsonMode\n frequencyPenalty\n presencePenalty\n temperature\n topP\n }\n messages {\n role\n content\n params\n }\n }\n}`,\n};\n\nexport const getServerRuntimeConfigQuery = {\n id: 'getServerRuntimeConfigQuery' as const,\n operationName: 'getServerRuntimeConfig',\n definitionName: 'serverRuntimeConfig',\n containsFile: false,\n query: `\nquery getServerRuntimeConfig {\n serverRuntimeConfig {\n id\n module\n key\n description\n value\n type\n updatedAt\n }\n}`,\n};\n\nexport const getServerServiceConfigsQuery = {\n id: 'getServerServiceConfigsQuery' as const,\n operationName: 'getServerServiceConfigs',\n definitionName: 'serverServiceConfigs',\n containsFile: false,\n query: `\nquery getServerServiceConfigs {\n serverServiceConfigs {\n name\n config\n }\n}`,\n};\n\nexport const getUserByEmailQuery = {\n id: 'getUserByEmailQuery' as const,\n operationName: 'getUserByEmail',\n definitionName: 'userByEmail',\n containsFile: false,\n query: `\nquery getUserByEmail($email: String!) {\n userByEmail(email: $email) {\n id\n name\n email\n features\n hasPassword\n emailVerified\n avatarUrl\n quota {\n humanReadable {\n blobLimit\n historyPeriod\n memberLimit\n name\n storageQuota\n }\n }\n }\n}`,\n};\n\nexport const getUserFeaturesQuery = {\n id: 'getUserFeaturesQuery' as const,\n operationName: 'getUserFeatures',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery getUserFeatures {\n currentUser {\n id\n features\n }\n}`,\n};\n\nexport const getUserQuery = {\n id: 'getUserQuery' as const,\n operationName: 'getUser',\n definitionName: 'user',\n containsFile: false,\n query: `\nquery getUser($email: String!) {\n user(email: $email) {\n __typename\n ... on UserType {\n id\n name\n avatarUrl\n email\n hasPassword\n }\n ... on LimitedUserType {\n email\n hasPassword\n }\n }\n}`,\n};\n\nexport const getUsersCountQuery = {\n id: 'getUsersCountQuery' as const,\n operationName: 'getUsersCount',\n definitionName: 'usersCount',\n containsFile: false,\n query: `\nquery getUsersCount {\n usersCount\n}`,\n};\n\nexport const getWorkspaceFeaturesQuery = {\n id: 'getWorkspaceFeaturesQuery' as const,\n operationName: 'getWorkspaceFeatures',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery getWorkspaceFeatures($workspaceId: String!) {\n workspace(id: $workspaceId) {\n features\n }\n}`,\n};\n\nexport const getWorkspacePublicByIdQuery = {\n id: 'getWorkspacePublicByIdQuery' as const,\n operationName: 'getWorkspacePublicById',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery getWorkspacePublicById($id: String!) {\n workspace(id: $id) {\n public\n }\n}`,\n};\n\nexport const getWorkspacePublicPageByIdQuery = {\n id: 'getWorkspacePublicPageByIdQuery' as const,\n operationName: 'getWorkspacePublicPageById',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery getWorkspacePublicPageById($workspaceId: String!, $pageId: String!) {\n workspace(id: $workspaceId) {\n publicPage(pageId: $pageId) {\n id\n mode\n }\n }\n}`,\n};\n\nexport const getWorkspacePublicPagesQuery = {\n id: 'getWorkspacePublicPagesQuery' as const,\n operationName: 'getWorkspacePublicPages',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery getWorkspacePublicPages($workspaceId: String!) {\n workspace(id: $workspaceId) {\n publicPages {\n id\n mode\n }\n }\n}`,\n};\n\nexport const getWorkspaceQuery = {\n id: 'getWorkspaceQuery' as const,\n operationName: 'getWorkspace',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery getWorkspace($id: String!) {\n workspace(id: $id) {\n id\n }\n}`,\n};\n\nexport const getWorkspacesQuery = {\n id: 'getWorkspacesQuery' as const,\n operationName: 'getWorkspaces',\n definitionName: 'workspaces',\n containsFile: false,\n query: `\nquery getWorkspaces {\n workspaces {\n id\n owner {\n id\n }\n }\n}`,\n};\n\nexport const listHistoryQuery = {\n id: 'listHistoryQuery' as const,\n operationName: 'listHistory',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery listHistory($workspaceId: String!, $pageDocId: String!, $take: Int, $before: DateTime) {\n workspace(id: $workspaceId) {\n histories(guid: $pageDocId, take: $take, before: $before) {\n id\n timestamp\n }\n }\n}`,\n};\n\nexport const getInvoicesCountQuery = {\n id: 'getInvoicesCountQuery' as const,\n operationName: 'getInvoicesCount',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery getInvoicesCount {\n currentUser {\n invoiceCount\n }\n}`,\n};\n\nexport const invoicesQuery = {\n id: 'invoicesQuery' as const,\n operationName: 'invoices',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery invoices($take: Int!, $skip: Int!) {\n currentUser {\n invoices(take: $take, skip: $skip) {\n id\n status\n plan\n recurring\n currency\n amount\n reason\n lastPaymentError\n link\n createdAt\n }\n }\n}`,\n};\n\nexport const leaveWorkspaceMutation = {\n id: 'leaveWorkspaceMutation' as const,\n operationName: 'leaveWorkspace',\n definitionName: 'leaveWorkspace',\n containsFile: false,\n query: `\nmutation leaveWorkspace($workspaceId: String!, $workspaceName: String!, $sendLeaveMail: Boolean) {\n leaveWorkspace(\n workspaceId: $workspaceId\n workspaceName: $workspaceName\n sendLeaveMail: $sendLeaveMail\n )\n}`,\n};\n\nexport const listUsersQuery = {\n id: 'listUsersQuery' as const,\n operationName: 'listUsers',\n definitionName: 'users',\n containsFile: false,\n query: `\nquery listUsers($filter: ListUserInput!) {\n users(filter: $filter) {\n id\n name\n email\n features\n hasPassword\n emailVerified\n avatarUrl\n }\n}`,\n};\n\nexport const pricesQuery = {\n id: 'pricesQuery' as const,\n operationName: 'prices',\n definitionName: 'prices',\n containsFile: false,\n query: `\nquery prices {\n prices {\n type\n plan\n currency\n amount\n yearlyAmount\n lifetimeAmount\n }\n}`,\n};\n\nexport const publishPageMutation = {\n id: 'publishPageMutation' as const,\n operationName: 'publishPage',\n definitionName: 'publishPage',\n containsFile: false,\n query: `\nmutation publishPage($workspaceId: String!, $pageId: String!, $mode: PublicPageMode = Page) {\n publishPage(workspaceId: $workspaceId, pageId: $pageId, mode: $mode) {\n id\n mode\n }\n}`,\n};\n\nexport const quotaQuery = {\n id: 'quotaQuery' as const,\n operationName: 'quota',\n definitionName: 'currentUser,collectAllBlobSizes',\n containsFile: false,\n query: `\nquery quota {\n currentUser {\n id\n quota {\n name\n blobLimit\n storageQuota\n historyPeriod\n memberLimit\n humanReadable {\n name\n blobLimit\n storageQuota\n historyPeriod\n memberLimit\n }\n }\n }\n collectAllBlobSizes {\n size\n }\n}`,\n};\n\nexport const recoverDocMutation = {\n id: 'recoverDocMutation' as const,\n operationName: 'recoverDoc',\n definitionName: 'recoverDoc',\n containsFile: false,\n query: `\nmutation recoverDoc($workspaceId: String!, $docId: String!, $timestamp: DateTime!) {\n recoverDoc(workspaceId: $workspaceId, guid: $docId, timestamp: $timestamp)\n}`,\n};\n\nexport const removeAvatarMutation = {\n id: 'removeAvatarMutation' as const,\n operationName: 'removeAvatar',\n definitionName: 'removeAvatar',\n containsFile: false,\n query: `\nmutation removeAvatar {\n removeAvatar {\n success\n }\n}`,\n};\n\nexport const resumeSubscriptionMutation = {\n id: 'resumeSubscriptionMutation' as const,\n operationName: 'resumeSubscription',\n definitionName: 'resumeSubscription',\n containsFile: false,\n query: `\nmutation resumeSubscription($idempotencyKey: String!, $plan: SubscriptionPlan = Pro) {\n resumeSubscription(idempotencyKey: $idempotencyKey, plan: $plan) {\n id\n status\n nextBillAt\n start\n end\n }\n}`,\n};\n\nexport const revokeMemberPermissionMutation = {\n id: 'revokeMemberPermissionMutation' as const,\n operationName: 'revokeMemberPermission',\n definitionName: 'revoke',\n containsFile: false,\n query: `\nmutation revokeMemberPermission($workspaceId: String!, $userId: String!) {\n revoke(workspaceId: $workspaceId, userId: $userId)\n}`,\n};\n\nexport const revokePublicPageMutation = {\n id: 'revokePublicPageMutation' as const,\n operationName: 'revokePublicPage',\n definitionName: 'revokePublicPage',\n containsFile: false,\n query: `\nmutation revokePublicPage($workspaceId: String!, $pageId: String!) {\n revokePublicPage(workspaceId: $workspaceId, pageId: $pageId) {\n id\n mode\n public\n }\n}`,\n};\n\nexport const sendChangeEmailMutation = {\n id: 'sendChangeEmailMutation' as const,\n operationName: 'sendChangeEmail',\n definitionName: 'sendChangeEmail',\n containsFile: false,\n query: `\nmutation sendChangeEmail($callbackUrl: String!) {\n sendChangeEmail(callbackUrl: $callbackUrl)\n}`,\n};\n\nexport const sendChangePasswordEmailMutation = {\n id: 'sendChangePasswordEmailMutation' as const,\n operationName: 'sendChangePasswordEmail',\n definitionName: 'sendChangePasswordEmail',\n containsFile: false,\n query: `\nmutation sendChangePasswordEmail($callbackUrl: String!) {\n sendChangePasswordEmail(callbackUrl: $callbackUrl)\n}`,\n};\n\nexport const sendSetPasswordEmailMutation = {\n id: 'sendSetPasswordEmailMutation' as const,\n operationName: 'sendSetPasswordEmail',\n definitionName: 'sendSetPasswordEmail',\n containsFile: false,\n query: `\nmutation sendSetPasswordEmail($callbackUrl: String!) {\n sendSetPasswordEmail(callbackUrl: $callbackUrl)\n}`,\n};\n\nexport const sendVerifyChangeEmailMutation = {\n id: 'sendVerifyChangeEmailMutation' as const,\n operationName: 'sendVerifyChangeEmail',\n definitionName: 'sendVerifyChangeEmail',\n containsFile: false,\n query: `\nmutation sendVerifyChangeEmail($token: String!, $email: String!, $callbackUrl: String!) {\n sendVerifyChangeEmail(token: $token, email: $email, callbackUrl: $callbackUrl)\n}`,\n};\n\nexport const sendVerifyEmailMutation = {\n id: 'sendVerifyEmailMutation' as const,\n operationName: 'sendVerifyEmail',\n definitionName: 'sendVerifyEmail',\n containsFile: false,\n query: `\nmutation sendVerifyEmail($callbackUrl: String!) {\n sendVerifyEmail(callbackUrl: $callbackUrl)\n}`,\n};\n\nexport const serverConfigQuery = {\n id: 'serverConfigQuery' as const,\n operationName: 'serverConfig',\n definitionName: 'serverConfig',\n containsFile: false,\n query: `\nquery serverConfig {\n serverConfig {\n version\n baseUrl\n name\n features\n type\n credentialsRequirement {\n ...CredentialsRequirement\n }\n }\n}${passwordLimitsFragment}\n${credentialsRequirementFragment}`,\n};\n\nexport const setWorkspacePublicByIdMutation = {\n id: 'setWorkspacePublicByIdMutation' as const,\n operationName: 'setWorkspacePublicById',\n definitionName: 'updateWorkspace',\n containsFile: false,\n query: `\nmutation setWorkspacePublicById($id: ID!, $public: Boolean!) {\n updateWorkspace(input: {id: $id, public: $public}) {\n id\n }\n}`,\n};\n\nexport const subscriptionQuery = {\n id: 'subscriptionQuery' as const,\n operationName: 'subscription',\n definitionName: 'currentUser',\n containsFile: false,\n query: `\nquery subscription {\n currentUser {\n id\n subscriptions {\n id\n status\n plan\n recurring\n start\n end\n nextBillAt\n canceledAt\n }\n }\n}`,\n};\n\nexport const updateAccountFeaturesMutation = {\n id: 'updateAccountFeaturesMutation' as const,\n operationName: 'updateAccountFeatures',\n definitionName: 'updateUserFeatures',\n containsFile: false,\n query: `\nmutation updateAccountFeatures($userId: String!, $features: [FeatureType!]!) {\n updateUserFeatures(id: $userId, features: $features)\n}`,\n};\n\nexport const updateAccountMutation = {\n id: 'updateAccountMutation' as const,\n operationName: 'updateAccount',\n definitionName: 'updateUser',\n containsFile: false,\n query: `\nmutation updateAccount($id: String!, $input: ManageUserInput!) {\n updateUser(id: $id, input: $input) {\n id\n name\n email\n }\n}`,\n};\n\nexport const updatePromptMutation = {\n id: 'updatePromptMutation' as const,\n operationName: 'updatePrompt',\n definitionName: 'updateCopilotPrompt',\n containsFile: false,\n query: `\nmutation updatePrompt($name: String!, $messages: [CopilotPromptMessageInput!]!) {\n updateCopilotPrompt(name: $name, messages: $messages) {\n name\n model\n action\n config {\n jsonMode\n frequencyPenalty\n presencePenalty\n temperature\n topP\n }\n messages {\n role\n content\n params\n }\n }\n}`,\n};\n\nexport const updateServerRuntimeConfigsMutation = {\n id: 'updateServerRuntimeConfigsMutation' as const,\n operationName: 'updateServerRuntimeConfigs',\n definitionName: 'updateRuntimeConfigs',\n containsFile: false,\n query: `\nmutation updateServerRuntimeConfigs($updates: JSONObject!) {\n updateRuntimeConfigs(updates: $updates) {\n key\n value\n }\n}`,\n};\n\nexport const updateSubscriptionMutation = {\n id: 'updateSubscriptionMutation' as const,\n operationName: 'updateSubscription',\n definitionName: 'updateSubscriptionRecurring',\n containsFile: false,\n query: `\nmutation updateSubscription($idempotencyKey: String!, $plan: SubscriptionPlan = Pro, $recurring: SubscriptionRecurring!) {\n updateSubscriptionRecurring(\n idempotencyKey: $idempotencyKey\n plan: $plan\n recurring: $recurring\n ) {\n id\n plan\n recurring\n nextBillAt\n }\n}`,\n};\n\nexport const updateUserProfileMutation = {\n id: 'updateUserProfileMutation' as const,\n operationName: 'updateUserProfile',\n definitionName: 'updateProfile',\n containsFile: false,\n query: `\nmutation updateUserProfile($input: UpdateUserInput!) {\n updateProfile(input: $input) {\n id\n name\n }\n}`,\n};\n\nexport const uploadAvatarMutation = {\n id: 'uploadAvatarMutation' as const,\n operationName: 'uploadAvatar',\n definitionName: 'uploadAvatar',\n containsFile: true,\n query: `\nmutation uploadAvatar($avatar: Upload!) {\n uploadAvatar(avatar: $avatar) {\n id\n name\n avatarUrl\n email\n }\n}`,\n};\n\nexport const verifyEmailMutation = {\n id: 'verifyEmailMutation' as const,\n operationName: 'verifyEmail',\n definitionName: 'verifyEmail',\n containsFile: false,\n query: `\nmutation verifyEmail($token: String!) {\n verifyEmail(token: $token)\n}`,\n};\n\nexport const enabledFeaturesQuery = {\n id: 'enabledFeaturesQuery' as const,\n operationName: 'enabledFeatures',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery enabledFeatures($id: String!) {\n workspace(id: $id) {\n features\n }\n}`,\n};\n\nexport const availableFeaturesQuery = {\n id: 'availableFeaturesQuery' as const,\n operationName: 'availableFeatures',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery availableFeatures($id: String!) {\n workspace(id: $id) {\n availableFeatures\n }\n}`,\n};\n\nexport const setWorkspaceExperimentalFeatureMutation = {\n id: 'setWorkspaceExperimentalFeatureMutation' as const,\n operationName: 'setWorkspaceExperimentalFeature',\n definitionName: 'setWorkspaceExperimentalFeature',\n containsFile: false,\n query: `\nmutation setWorkspaceExperimentalFeature($workspaceId: String!, $feature: FeatureType!, $enable: Boolean!) {\n setWorkspaceExperimentalFeature(\n workspaceId: $workspaceId\n feature: $feature\n enable: $enable\n )\n}`,\n};\n\nexport const addWorkspaceFeatureMutation = {\n id: 'addWorkspaceFeatureMutation' as const,\n operationName: 'addWorkspaceFeature',\n definitionName: 'addWorkspaceFeature',\n containsFile: false,\n query: `\nmutation addWorkspaceFeature($workspaceId: String!, $feature: FeatureType!) {\n addWorkspaceFeature(workspaceId: $workspaceId, feature: $feature)\n}`,\n};\n\nexport const listWorkspaceFeaturesQuery = {\n id: 'listWorkspaceFeaturesQuery' as const,\n operationName: 'listWorkspaceFeatures',\n definitionName: 'listWorkspaceFeatures',\n containsFile: false,\n query: `\nquery listWorkspaceFeatures($feature: FeatureType!) {\n listWorkspaceFeatures(feature: $feature) {\n id\n public\n createdAt\n memberCount\n owner {\n id\n }\n features\n }\n}`,\n};\n\nexport const removeWorkspaceFeatureMutation = {\n id: 'removeWorkspaceFeatureMutation' as const,\n operationName: 'removeWorkspaceFeature',\n definitionName: 'removeWorkspaceFeature',\n containsFile: false,\n query: `\nmutation removeWorkspaceFeature($workspaceId: String!, $feature: FeatureType!) {\n removeWorkspaceFeature(workspaceId: $workspaceId, feature: $feature)\n}`,\n};\n\nexport const inviteByEmailMutation = {\n id: 'inviteByEmailMutation' as const,\n operationName: 'inviteByEmail',\n definitionName: 'invite',\n containsFile: false,\n query: `\nmutation inviteByEmail($workspaceId: String!, $email: String!, $permission: Permission!, $sendInviteMail: Boolean) {\n invite(\n workspaceId: $workspaceId\n email: $email\n permission: $permission\n sendInviteMail: $sendInviteMail\n )\n}`,\n};\n\nexport const acceptInviteByInviteIdMutation = {\n id: 'acceptInviteByInviteIdMutation' as const,\n operationName: 'acceptInviteByInviteId',\n definitionName: 'acceptInviteById',\n containsFile: false,\n query: `\nmutation acceptInviteByInviteId($workspaceId: String!, $inviteId: String!, $sendAcceptMail: Boolean) {\n acceptInviteById(\n workspaceId: $workspaceId\n inviteId: $inviteId\n sendAcceptMail: $sendAcceptMail\n )\n}`,\n};\n\nexport const workspaceQuotaQuery = {\n id: 'workspaceQuotaQuery' as const,\n operationName: 'workspaceQuota',\n definitionName: 'workspace',\n containsFile: false,\n query: `\nquery workspaceQuota($id: String!) {\n workspace(id: $id) {\n quota {\n name\n blobLimit\n storageQuota\n historyPeriod\n memberLimit\n humanReadable {\n name\n blobLimit\n storageQuota\n historyPeriod\n memberLimit\n }\n usedSize\n }\n }\n}`,\n};\n","export * from './error';\nexport * from './fetcher';\nexport * from './graphql';\nexport * from './schema';\n\nimport { setupGlobal } from '@affine/env/global';\n\nimport { gqlFetcherFactory } from './fetcher';\n\nsetupGlobal();\n\nexport function getBaseUrl(): string {\n if (environment.isDesktop) {\n return runtimeConfig.serverUrlPrefix;\n }\n if (typeof window === 'undefined') {\n // is nodejs\n return '';\n }\n const { protocol, hostname, port } = window.location;\n return `${protocol}//${hostname}${port ? `:${port}` : ''}`;\n}\n\nexport const fetcher = gqlFetcherFactory(getBaseUrl() + '/graphql');\n","/* eslint-disable */\nexport type Maybe = T | null;\nexport type InputMaybe = T | null;\nexport type Exact = {\n [K in keyof T]: T[K];\n};\nexport type MakeOptional = Omit & {\n [SubKey in K]?: Maybe;\n};\nexport type MakeMaybe = Omit & {\n [SubKey in K]: Maybe;\n};\nexport type MakeEmpty<\n T extends { [key: string]: unknown },\n K extends keyof T,\n> = { [_ in K]?: never };\nexport type Incremental =\n | T\n | {\n [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never;\n };\n/** All built-in and custom scalars, mapped to their actual values */\nexport interface Scalars {\n ID: { input: string; output: string };\n String: { input: string; output: string };\n Boolean: { input: boolean; output: boolean };\n Int: { input: number; output: number };\n Float: { input: number; output: number };\n /** A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format. */\n DateTime: { input: string; output: string };\n /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSON: { input: Record; output: Record };\n /** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSONObject: { input: any; output: any };\n /** The `SafeInt` scalar type represents non-fractional signed whole numeric values that are considered safe as defined by the ECMAScript specification. */\n SafeInt: { input: number; output: number };\n /** The `Upload` scalar type represents a file upload. */\n Upload: { input: File; output: File };\n}\n\nexport interface BlobNotFoundDataType {\n __typename?: 'BlobNotFoundDataType';\n blobId: Scalars['String']['output'];\n workspaceId: Scalars['String']['output'];\n}\n\nexport enum ChatHistoryOrder {\n asc = 'asc',\n desc = 'desc',\n}\n\nexport interface ChatMessage {\n __typename?: 'ChatMessage';\n attachments: Maybe>;\n content: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n id: Maybe;\n params: Maybe;\n role: Scalars['String']['output'];\n}\n\nexport interface Copilot {\n __typename?: 'Copilot';\n /** Get the session list of actions in the workspace */\n actions: Array;\n /** Get the session list of chats in the workspace */\n chats: Array;\n histories: Array;\n /** Get the quota of the user in the workspace */\n quota: CopilotQuota;\n workspaceId: Maybe;\n}\n\nexport interface CopilotHistoriesArgs {\n docId: InputMaybe;\n options: InputMaybe;\n}\n\nexport interface CopilotHistories {\n __typename?: 'CopilotHistories';\n /** An mark identifying which view to use to display the session */\n action: Maybe;\n createdAt: Scalars['DateTime']['output'];\n messages: Array;\n sessionId: Scalars['String']['output'];\n /** The number of tokens used in the session */\n tokens: Scalars['Int']['output'];\n}\n\nexport interface CopilotMessageNotFoundDataType {\n __typename?: 'CopilotMessageNotFoundDataType';\n messageId: Scalars['String']['output'];\n}\n\nexport enum CopilotModels {\n DallE3 = 'DallE3',\n Gpt4Omni = 'Gpt4Omni',\n Gpt4OmniMini = 'Gpt4OmniMini',\n TextEmbedding3Large = 'TextEmbedding3Large',\n TextEmbedding3Small = 'TextEmbedding3Small',\n TextEmbeddingAda002 = 'TextEmbeddingAda002',\n TextModerationLatest = 'TextModerationLatest',\n TextModerationStable = 'TextModerationStable',\n}\n\nexport interface CopilotPromptConfigInput {\n frequencyPenalty: InputMaybe;\n jsonMode: InputMaybe;\n presencePenalty: InputMaybe;\n temperature: InputMaybe;\n topP: InputMaybe;\n}\n\nexport interface CopilotPromptConfigType {\n __typename?: 'CopilotPromptConfigType';\n frequencyPenalty: Maybe;\n jsonMode: Maybe;\n presencePenalty: Maybe;\n temperature: Maybe;\n topP: Maybe;\n}\n\nexport interface CopilotPromptMessageInput {\n content: Scalars['String']['input'];\n params: InputMaybe;\n role: CopilotPromptMessageRole;\n}\n\nexport enum CopilotPromptMessageRole {\n assistant = 'assistant',\n system = 'system',\n user = 'user',\n}\n\nexport interface CopilotPromptMessageType {\n __typename?: 'CopilotPromptMessageType';\n content: Scalars['String']['output'];\n params: Maybe;\n role: CopilotPromptMessageRole;\n}\n\nexport interface CopilotPromptNotFoundDataType {\n __typename?: 'CopilotPromptNotFoundDataType';\n name: Scalars['String']['output'];\n}\n\nexport interface CopilotPromptType {\n __typename?: 'CopilotPromptType';\n action: Maybe;\n config: Maybe;\n messages: Array;\n model: Scalars['String']['output'];\n name: Scalars['String']['output'];\n}\n\nexport interface CopilotProviderSideErrorDataType {\n __typename?: 'CopilotProviderSideErrorDataType';\n kind: Scalars['String']['output'];\n message: Scalars['String']['output'];\n provider: Scalars['String']['output'];\n}\n\nexport interface CopilotQuota {\n __typename?: 'CopilotQuota';\n limit: Maybe;\n used: Scalars['SafeInt']['output'];\n}\n\nexport interface CreateChatMessageInput {\n attachments: InputMaybe>;\n blobs: InputMaybe>;\n content: InputMaybe;\n params: InputMaybe;\n sessionId: Scalars['String']['input'];\n}\n\nexport interface CreateChatSessionInput {\n docId: Scalars['String']['input'];\n /** The prompt name to use for the session */\n promptName: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface CreateCheckoutSessionInput {\n coupon: InputMaybe;\n idempotencyKey: Scalars['String']['input'];\n plan: InputMaybe;\n recurring: InputMaybe;\n successCallbackLink: Scalars['String']['input'];\n}\n\nexport interface CreateCopilotPromptInput {\n action: InputMaybe;\n config: InputMaybe;\n messages: Array;\n model: CopilotModels;\n name: Scalars['String']['input'];\n}\n\nexport interface CreateUserInput {\n email: Scalars['String']['input'];\n name: InputMaybe;\n}\n\nexport interface CredentialsRequirementType {\n __typename?: 'CredentialsRequirementType';\n password: PasswordLimitsType;\n}\n\nexport interface DeleteAccount {\n __typename?: 'DeleteAccount';\n success: Scalars['Boolean']['output'];\n}\n\nexport interface DeleteSessionInput {\n docId: Scalars['String']['input'];\n sessionIds: Array;\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface DocAccessDeniedDataType {\n __typename?: 'DocAccessDeniedDataType';\n docId: Scalars['String']['output'];\n workspaceId: Scalars['String']['output'];\n}\n\nexport interface DocHistoryNotFoundDataType {\n __typename?: 'DocHistoryNotFoundDataType';\n docId: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n workspaceId: Scalars['String']['output'];\n}\n\nexport interface DocHistoryType {\n __typename?: 'DocHistoryType';\n id: Scalars['String']['output'];\n timestamp: Scalars['DateTime']['output'];\n workspaceId: Scalars['String']['output'];\n}\n\nexport interface DocNotFoundDataType {\n __typename?: 'DocNotFoundDataType';\n docId: Scalars['String']['output'];\n workspaceId: Scalars['String']['output'];\n}\n\nexport type ErrorDataUnion =\n | BlobNotFoundDataType\n | CopilotMessageNotFoundDataType\n | CopilotPromptNotFoundDataType\n | CopilotProviderSideErrorDataType\n | DocAccessDeniedDataType\n | DocHistoryNotFoundDataType\n | DocNotFoundDataType\n | InvalidHistoryTimestampDataType\n | InvalidPasswordLengthDataType\n | InvalidRuntimeConfigTypeDataType\n | MissingOauthQueryParameterDataType\n | NotInWorkspaceDataType\n | RuntimeConfigNotFoundDataType\n | SameSubscriptionRecurringDataType\n | SubscriptionAlreadyExistsDataType\n | SubscriptionNotExistsDataType\n | SubscriptionPlanNotFoundDataType\n | UnknownOauthProviderDataType\n | VersionRejectedDataType\n | WorkspaceAccessDeniedDataType\n | WorkspaceNotFoundDataType\n | WorkspaceOwnerNotFoundDataType;\n\nexport enum ErrorNames {\n ACCESS_DENIED = 'ACCESS_DENIED',\n ACTION_FORBIDDEN = 'ACTION_FORBIDDEN',\n AUTHENTICATION_REQUIRED = 'AUTHENTICATION_REQUIRED',\n BLOB_NOT_FOUND = 'BLOB_NOT_FOUND',\n BLOB_QUOTA_EXCEEDED = 'BLOB_QUOTA_EXCEEDED',\n CANNOT_DELETE_ALL_ADMIN_ACCOUNT = 'CANNOT_DELETE_ALL_ADMIN_ACCOUNT',\n CANNOT_DELETE_OWN_ACCOUNT = 'CANNOT_DELETE_OWN_ACCOUNT',\n CANT_CHANGE_WORKSPACE_OWNER = 'CANT_CHANGE_WORKSPACE_OWNER',\n CANT_UPDATE_LIFETIME_SUBSCRIPTION = 'CANT_UPDATE_LIFETIME_SUBSCRIPTION',\n COPILOT_ACTION_TAKEN = 'COPILOT_ACTION_TAKEN',\n COPILOT_FAILED_TO_CREATE_MESSAGE = 'COPILOT_FAILED_TO_CREATE_MESSAGE',\n COPILOT_FAILED_TO_GENERATE_TEXT = 'COPILOT_FAILED_TO_GENERATE_TEXT',\n COPILOT_MESSAGE_NOT_FOUND = 'COPILOT_MESSAGE_NOT_FOUND',\n COPILOT_PROMPT_INVALID = 'COPILOT_PROMPT_INVALID',\n COPILOT_PROMPT_NOT_FOUND = 'COPILOT_PROMPT_NOT_FOUND',\n COPILOT_PROVIDER_SIDE_ERROR = 'COPILOT_PROVIDER_SIDE_ERROR',\n COPILOT_QUOTA_EXCEEDED = 'COPILOT_QUOTA_EXCEEDED',\n COPILOT_SESSION_DELETED = 'COPILOT_SESSION_DELETED',\n COPILOT_SESSION_NOT_FOUND = 'COPILOT_SESSION_NOT_FOUND',\n CUSTOMER_PORTAL_CREATE_FAILED = 'CUSTOMER_PORTAL_CREATE_FAILED',\n DOC_ACCESS_DENIED = 'DOC_ACCESS_DENIED',\n DOC_HISTORY_NOT_FOUND = 'DOC_HISTORY_NOT_FOUND',\n DOC_NOT_FOUND = 'DOC_NOT_FOUND',\n EARLY_ACCESS_REQUIRED = 'EARLY_ACCESS_REQUIRED',\n EMAIL_ALREADY_USED = 'EMAIL_ALREADY_USED',\n EMAIL_TOKEN_NOT_FOUND = 'EMAIL_TOKEN_NOT_FOUND',\n EMAIL_VERIFICATION_REQUIRED = 'EMAIL_VERIFICATION_REQUIRED',\n EXPECT_TO_PUBLISH_PAGE = 'EXPECT_TO_PUBLISH_PAGE',\n EXPECT_TO_REVOKE_PUBLIC_PAGE = 'EXPECT_TO_REVOKE_PUBLIC_PAGE',\n FAILED_TO_CHECKOUT = 'FAILED_TO_CHECKOUT',\n INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR',\n INVALID_EMAIL = 'INVALID_EMAIL',\n INVALID_EMAIL_TOKEN = 'INVALID_EMAIL_TOKEN',\n INVALID_HISTORY_TIMESTAMP = 'INVALID_HISTORY_TIMESTAMP',\n INVALID_OAUTH_CALLBACK_STATE = 'INVALID_OAUTH_CALLBACK_STATE',\n INVALID_PASSWORD_LENGTH = 'INVALID_PASSWORD_LENGTH',\n INVALID_RUNTIME_CONFIG_TYPE = 'INVALID_RUNTIME_CONFIG_TYPE',\n LINK_EXPIRED = 'LINK_EXPIRED',\n MAILER_SERVICE_IS_NOT_CONFIGURED = 'MAILER_SERVICE_IS_NOT_CONFIGURED',\n MEMBER_QUOTA_EXCEEDED = 'MEMBER_QUOTA_EXCEEDED',\n MISSING_OAUTH_QUERY_PARAMETER = 'MISSING_OAUTH_QUERY_PARAMETER',\n NOT_IN_WORKSPACE = 'NOT_IN_WORKSPACE',\n NO_COPILOT_PROVIDER_AVAILABLE = 'NO_COPILOT_PROVIDER_AVAILABLE',\n OAUTH_ACCOUNT_ALREADY_CONNECTED = 'OAUTH_ACCOUNT_ALREADY_CONNECTED',\n OAUTH_STATE_EXPIRED = 'OAUTH_STATE_EXPIRED',\n PAGE_IS_NOT_PUBLIC = 'PAGE_IS_NOT_PUBLIC',\n PASSWORD_REQUIRED = 'PASSWORD_REQUIRED',\n RUNTIME_CONFIG_NOT_FOUND = 'RUNTIME_CONFIG_NOT_FOUND',\n SAME_EMAIL_PROVIDED = 'SAME_EMAIL_PROVIDED',\n SAME_SUBSCRIPTION_RECURRING = 'SAME_SUBSCRIPTION_RECURRING',\n SIGN_UP_FORBIDDEN = 'SIGN_UP_FORBIDDEN',\n SUBSCRIPTION_ALREADY_EXISTS = 'SUBSCRIPTION_ALREADY_EXISTS',\n SUBSCRIPTION_EXPIRED = 'SUBSCRIPTION_EXPIRED',\n SUBSCRIPTION_HAS_BEEN_CANCELED = 'SUBSCRIPTION_HAS_BEEN_CANCELED',\n SUBSCRIPTION_NOT_EXISTS = 'SUBSCRIPTION_NOT_EXISTS',\n SUBSCRIPTION_PLAN_NOT_FOUND = 'SUBSCRIPTION_PLAN_NOT_FOUND',\n TOO_MANY_REQUEST = 'TOO_MANY_REQUEST',\n UNKNOWN_OAUTH_PROVIDER = 'UNKNOWN_OAUTH_PROVIDER',\n UNSPLASH_IS_NOT_CONFIGURED = 'UNSPLASH_IS_NOT_CONFIGURED',\n USER_AVATAR_NOT_FOUND = 'USER_AVATAR_NOT_FOUND',\n USER_NOT_FOUND = 'USER_NOT_FOUND',\n VERSION_REJECTED = 'VERSION_REJECTED',\n WORKSPACE_ACCESS_DENIED = 'WORKSPACE_ACCESS_DENIED',\n WORKSPACE_NOT_FOUND = 'WORKSPACE_NOT_FOUND',\n WORKSPACE_OWNER_NOT_FOUND = 'WORKSPACE_OWNER_NOT_FOUND',\n WRONG_SIGN_IN_CREDENTIALS = 'WRONG_SIGN_IN_CREDENTIALS',\n WRONG_SIGN_IN_METHOD = 'WRONG_SIGN_IN_METHOD',\n}\n\n/** The type of workspace feature */\nexport enum FeatureType {\n AIEarlyAccess = 'AIEarlyAccess',\n Admin = 'Admin',\n Copilot = 'Copilot',\n EarlyAccess = 'EarlyAccess',\n UnlimitedCopilot = 'UnlimitedCopilot',\n UnlimitedWorkspace = 'UnlimitedWorkspace',\n}\n\nexport interface ForkChatSessionInput {\n docId: Scalars['String']['input'];\n /** Identify a message in the array and keep it with all previous messages into a forked session. */\n latestMessageId: Scalars['String']['input'];\n sessionId: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface HumanReadableQuotaType {\n __typename?: 'HumanReadableQuotaType';\n blobLimit: Scalars['String']['output'];\n copilotActionLimit: Maybe;\n historyPeriod: Scalars['String']['output'];\n memberLimit: Scalars['String']['output'];\n name: Scalars['String']['output'];\n storageQuota: Scalars['String']['output'];\n}\n\nexport interface InvalidHistoryTimestampDataType {\n __typename?: 'InvalidHistoryTimestampDataType';\n timestamp: Scalars['String']['output'];\n}\n\nexport interface InvalidPasswordLengthDataType {\n __typename?: 'InvalidPasswordLengthDataType';\n max: Scalars['Int']['output'];\n min: Scalars['Int']['output'];\n}\n\nexport interface InvalidRuntimeConfigTypeDataType {\n __typename?: 'InvalidRuntimeConfigTypeDataType';\n get: Scalars['String']['output'];\n key: Scalars['String']['output'];\n want: Scalars['String']['output'];\n}\n\nexport interface InvitationType {\n __typename?: 'InvitationType';\n /** Invitee information */\n invitee: UserType;\n /** User information */\n user: UserType;\n /** Workspace information */\n workspace: InvitationWorkspaceType;\n}\n\nexport interface InvitationWorkspaceType {\n __typename?: 'InvitationWorkspaceType';\n /** Base64 encoded avatar */\n avatar: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n /** Workspace name */\n name: Scalars['String']['output'];\n}\n\nexport interface InviteUserType {\n __typename?: 'InviteUserType';\n /** User accepted */\n accepted: Scalars['Boolean']['output'];\n /** User avatar url */\n avatarUrl: Maybe;\n /**\n * User email verified\n * @deprecated useless\n */\n createdAt: Maybe;\n /** User email */\n email: Maybe;\n /** User email verified */\n emailVerified: Maybe;\n /** User password has been set */\n hasPassword: Maybe;\n id: Scalars['ID']['output'];\n /** Invite id */\n inviteId: Scalars['String']['output'];\n /** User name */\n name: Maybe;\n /** User permission in workspace */\n permission: Permission;\n}\n\nexport enum InvoiceStatus {\n Draft = 'Draft',\n Open = 'Open',\n Paid = 'Paid',\n Uncollectible = 'Uncollectible',\n Void = 'Void',\n}\n\nexport interface LimitedUserType {\n __typename?: 'LimitedUserType';\n /** User email */\n email: Scalars['String']['output'];\n /** User password has been set */\n hasPassword: Maybe;\n}\n\nexport interface ListUserInput {\n first: InputMaybe;\n skip: InputMaybe;\n}\n\nexport interface ManageUserInput {\n /** User email */\n email: InputMaybe;\n /** User name */\n name: InputMaybe;\n}\n\nexport interface MissingOauthQueryParameterDataType {\n __typename?: 'MissingOauthQueryParameterDataType';\n name: Scalars['String']['output'];\n}\n\nexport interface Mutation {\n __typename?: 'Mutation';\n acceptInviteById: Scalars['Boolean']['output'];\n addWorkspaceFeature: Scalars['Int']['output'];\n cancelSubscription: UserSubscription;\n changeEmail: UserType;\n changePassword: Scalars['Boolean']['output'];\n /** Cleanup sessions */\n cleanupCopilotSession: Array;\n /** Create change password url */\n createChangePasswordUrl: Scalars['String']['output'];\n /** Create a subscription checkout link of stripe */\n createCheckoutSession: Scalars['String']['output'];\n /** Create a chat message */\n createCopilotMessage: Scalars['String']['output'];\n /** Create a copilot prompt */\n createCopilotPrompt: CopilotPromptType;\n /** Create a chat session */\n createCopilotSession: Scalars['String']['output'];\n /** Create a stripe customer portal to manage payment methods */\n createCustomerPortal: Scalars['String']['output'];\n /** Create a new user */\n createUser: UserType;\n /** Create a new workspace */\n createWorkspace: WorkspaceType;\n deleteAccount: DeleteAccount;\n deleteBlob: Scalars['Boolean']['output'];\n /** Delete a user account */\n deleteUser: DeleteAccount;\n deleteWorkspace: Scalars['Boolean']['output'];\n /** Create a chat session */\n forkCopilotSession: Scalars['String']['output'];\n invite: Scalars['String']['output'];\n leaveWorkspace: Scalars['Boolean']['output'];\n publishPage: WorkspacePage;\n recoverDoc: Scalars['DateTime']['output'];\n /** Remove user avatar */\n removeAvatar: RemoveAvatar;\n removeWorkspaceFeature: Scalars['Int']['output'];\n resumeSubscription: UserSubscription;\n revoke: Scalars['Boolean']['output'];\n /** @deprecated use revokePublicPage */\n revokePage: Scalars['Boolean']['output'];\n revokePublicPage: WorkspacePage;\n sendChangeEmail: Scalars['Boolean']['output'];\n sendChangePasswordEmail: Scalars['Boolean']['output'];\n sendSetPasswordEmail: Scalars['Boolean']['output'];\n sendVerifyChangeEmail: Scalars['Boolean']['output'];\n sendVerifyEmail: Scalars['Boolean']['output'];\n setBlob: Scalars['String']['output'];\n setWorkspaceExperimentalFeature: Scalars['Boolean']['output'];\n /** @deprecated renamed to publishPage */\n sharePage: Scalars['Boolean']['output'];\n /** Update a copilot prompt */\n updateCopilotPrompt: CopilotPromptType;\n updateProfile: UserType;\n /** update server runtime configurable setting */\n updateRuntimeConfig: ServerRuntimeConfigType;\n /** update multiple server runtime configurable settings */\n updateRuntimeConfigs: Array;\n updateSubscriptionRecurring: UserSubscription;\n /** Update a user */\n updateUser: UserType;\n /** update user enabled feature */\n updateUserFeatures: Array;\n /** Update workspace */\n updateWorkspace: WorkspaceType;\n /** Upload user avatar */\n uploadAvatar: UserType;\n verifyEmail: Scalars['Boolean']['output'];\n}\n\nexport interface MutationAcceptInviteByIdArgs {\n inviteId: Scalars['String']['input'];\n sendAcceptMail: InputMaybe;\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationAddWorkspaceFeatureArgs {\n feature: FeatureType;\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationCancelSubscriptionArgs {\n idempotencyKey: Scalars['String']['input'];\n plan?: InputMaybe;\n}\n\nexport interface MutationChangeEmailArgs {\n email: Scalars['String']['input'];\n token: Scalars['String']['input'];\n}\n\nexport interface MutationChangePasswordArgs {\n newPassword: Scalars['String']['input'];\n token: Scalars['String']['input'];\n userId: InputMaybe;\n}\n\nexport interface MutationCleanupCopilotSessionArgs {\n options: DeleteSessionInput;\n}\n\nexport interface MutationCreateChangePasswordUrlArgs {\n callbackUrl: Scalars['String']['input'];\n userId: Scalars['String']['input'];\n}\n\nexport interface MutationCreateCheckoutSessionArgs {\n input: CreateCheckoutSessionInput;\n}\n\nexport interface MutationCreateCopilotMessageArgs {\n options: CreateChatMessageInput;\n}\n\nexport interface MutationCreateCopilotPromptArgs {\n input: CreateCopilotPromptInput;\n}\n\nexport interface MutationCreateCopilotSessionArgs {\n options: CreateChatSessionInput;\n}\n\nexport interface MutationCreateUserArgs {\n input: CreateUserInput;\n}\n\nexport interface MutationCreateWorkspaceArgs {\n init: InputMaybe;\n}\n\nexport interface MutationDeleteBlobArgs {\n hash: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationDeleteUserArgs {\n id: Scalars['String']['input'];\n}\n\nexport interface MutationDeleteWorkspaceArgs {\n id: Scalars['String']['input'];\n}\n\nexport interface MutationForkCopilotSessionArgs {\n options: ForkChatSessionInput;\n}\n\nexport interface MutationInviteArgs {\n email: Scalars['String']['input'];\n permission: Permission;\n sendInviteMail: InputMaybe;\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationLeaveWorkspaceArgs {\n sendLeaveMail: InputMaybe;\n workspaceId: Scalars['String']['input'];\n workspaceName: Scalars['String']['input'];\n}\n\nexport interface MutationPublishPageArgs {\n mode?: InputMaybe;\n pageId: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationRecoverDocArgs {\n guid: Scalars['String']['input'];\n timestamp: Scalars['DateTime']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationRemoveWorkspaceFeatureArgs {\n feature: FeatureType;\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationResumeSubscriptionArgs {\n idempotencyKey: Scalars['String']['input'];\n plan?: InputMaybe;\n}\n\nexport interface MutationRevokeArgs {\n userId: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationRevokePageArgs {\n pageId: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationRevokePublicPageArgs {\n pageId: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationSendChangeEmailArgs {\n callbackUrl: Scalars['String']['input'];\n email: InputMaybe;\n}\n\nexport interface MutationSendChangePasswordEmailArgs {\n callbackUrl: Scalars['String']['input'];\n email: InputMaybe;\n}\n\nexport interface MutationSendSetPasswordEmailArgs {\n callbackUrl: Scalars['String']['input'];\n email: InputMaybe;\n}\n\nexport interface MutationSendVerifyChangeEmailArgs {\n callbackUrl: Scalars['String']['input'];\n email: Scalars['String']['input'];\n token: Scalars['String']['input'];\n}\n\nexport interface MutationSendVerifyEmailArgs {\n callbackUrl: Scalars['String']['input'];\n}\n\nexport interface MutationSetBlobArgs {\n blob: Scalars['Upload']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationSetWorkspaceExperimentalFeatureArgs {\n enable: Scalars['Boolean']['input'];\n feature: FeatureType;\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationSharePageArgs {\n pageId: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface MutationUpdateCopilotPromptArgs {\n messages: Array;\n name: Scalars['String']['input'];\n}\n\nexport interface MutationUpdateProfileArgs {\n input: UpdateUserInput;\n}\n\nexport interface MutationUpdateRuntimeConfigArgs {\n id: Scalars['String']['input'];\n value: Scalars['JSON']['input'];\n}\n\nexport interface MutationUpdateRuntimeConfigsArgs {\n updates: Scalars['JSONObject']['input'];\n}\n\nexport interface MutationUpdateSubscriptionRecurringArgs {\n idempotencyKey: Scalars['String']['input'];\n plan?: InputMaybe;\n recurring: SubscriptionRecurring;\n}\n\nexport interface MutationUpdateUserArgs {\n id: Scalars['String']['input'];\n input: ManageUserInput;\n}\n\nexport interface MutationUpdateUserFeaturesArgs {\n features: Array;\n id: Scalars['String']['input'];\n}\n\nexport interface MutationUpdateWorkspaceArgs {\n input: UpdateWorkspaceInput;\n}\n\nexport interface MutationUploadAvatarArgs {\n avatar: Scalars['Upload']['input'];\n}\n\nexport interface MutationVerifyEmailArgs {\n token: Scalars['String']['input'];\n}\n\nexport interface NotInWorkspaceDataType {\n __typename?: 'NotInWorkspaceDataType';\n workspaceId: Scalars['String']['output'];\n}\n\nexport enum OAuthProviderType {\n GitHub = 'GitHub',\n Google = 'Google',\n OIDC = 'OIDC',\n}\n\nexport interface PasswordLimitsType {\n __typename?: 'PasswordLimitsType';\n maxLength: Scalars['Int']['output'];\n minLength: Scalars['Int']['output'];\n}\n\n/** User permission in workspace */\nexport enum Permission {\n Admin = 'Admin',\n Owner = 'Owner',\n Read = 'Read',\n Write = 'Write',\n}\n\n/** The mode which the public page default in */\nexport enum PublicPageMode {\n Edgeless = 'Edgeless',\n Page = 'Page',\n}\n\nexport interface Query {\n __typename?: 'Query';\n /** @deprecated no more needed */\n checkBlobSize: WorkspaceBlobSizes;\n /** @deprecated use `user.storageUsage` instead */\n collectAllBlobSizes: WorkspaceBlobSizes;\n /** Get current user */\n currentUser: Maybe;\n error: ErrorDataUnion;\n /** send workspace invitation */\n getInviteInfo: InvitationType;\n /** Get is owner of workspace */\n isOwner: Scalars['Boolean']['output'];\n /**\n * List blobs of workspace\n * @deprecated use `workspace.blobs` instead\n */\n listBlobs: Array;\n /** List all copilot prompts */\n listCopilotPrompts: Array;\n listWorkspaceFeatures: Array;\n prices: Array;\n /** server config */\n serverConfig: ServerConfigType;\n /** get all server runtime configurable settings */\n serverRuntimeConfig: Array;\n serverServiceConfigs: Array;\n /** Get user by email */\n user: Maybe;\n /** Get user by email for admin */\n userByEmail: Maybe;\n /** Get user by id */\n userById: UserType;\n /** List registered users */\n users: Array;\n /** Get users count */\n usersCount: Scalars['Int']['output'];\n /** Get workspace by id */\n workspace: WorkspaceType;\n /** Get all accessible workspaces for current user */\n workspaces: Array;\n}\n\nexport interface QueryCheckBlobSizeArgs {\n size: Scalars['SafeInt']['input'];\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface QueryErrorArgs {\n name: ErrorNames;\n}\n\nexport interface QueryGetInviteInfoArgs {\n inviteId: Scalars['String']['input'];\n}\n\nexport interface QueryIsOwnerArgs {\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface QueryListBlobsArgs {\n workspaceId: Scalars['String']['input'];\n}\n\nexport interface QueryListWorkspaceFeaturesArgs {\n feature: FeatureType;\n}\n\nexport interface QueryUserArgs {\n email: Scalars['String']['input'];\n}\n\nexport interface QueryUserByEmailArgs {\n email: Scalars['String']['input'];\n}\n\nexport interface QueryUserByIdArgs {\n id: Scalars['String']['input'];\n}\n\nexport interface QueryUsersArgs {\n filter: ListUserInput;\n}\n\nexport interface QueryWorkspaceArgs {\n id: Scalars['String']['input'];\n}\n\nexport interface QueryChatHistoriesInput {\n action: InputMaybe;\n fork: InputMaybe;\n limit: InputMaybe;\n messageOrder: InputMaybe;\n sessionId: InputMaybe;\n sessionOrder: InputMaybe;\n skip: InputMaybe;\n}\n\nexport interface QuotaQueryType {\n __typename?: 'QuotaQueryType';\n blobLimit: Scalars['SafeInt']['output'];\n copilotActionLimit: Maybe;\n historyPeriod: Scalars['SafeInt']['output'];\n humanReadable: HumanReadableQuotaType;\n memberLimit: Scalars['SafeInt']['output'];\n name: Scalars['String']['output'];\n storageQuota: Scalars['SafeInt']['output'];\n usedSize: Scalars['SafeInt']['output'];\n}\n\nexport interface RemoveAvatar {\n __typename?: 'RemoveAvatar';\n success: Scalars['Boolean']['output'];\n}\n\nexport interface RuntimeConfigNotFoundDataType {\n __typename?: 'RuntimeConfigNotFoundDataType';\n key: Scalars['String']['output'];\n}\n\nexport enum RuntimeConfigType {\n Array = 'Array',\n Boolean = 'Boolean',\n Number = 'Number',\n Object = 'Object',\n String = 'String',\n}\n\nexport interface SameSubscriptionRecurringDataType {\n __typename?: 'SameSubscriptionRecurringDataType';\n recurring: Scalars['String']['output'];\n}\n\nexport interface ServerConfigType {\n __typename?: 'ServerConfigType';\n /** Features for user that can be configured */\n availableUserFeatures: Array;\n /** server base url */\n baseUrl: Scalars['String']['output'];\n /** credentials requirement */\n credentialsRequirement: CredentialsRequirementType;\n /** enable telemetry */\n enableTelemetry: Scalars['Boolean']['output'];\n /** enabled server features */\n features: Array;\n /** server flags */\n flags: ServerFlagsType;\n /**\n * server flavor\n * @deprecated use `features`\n */\n flavor: Scalars['String']['output'];\n /** whether server has been initialized */\n initialized: Scalars['Boolean']['output'];\n /** server identical name could be shown as badge on user interface */\n name: Scalars['String']['output'];\n oauthProviders: Array;\n /** server type */\n type: ServerDeploymentType;\n /** server version */\n version: Scalars['String']['output'];\n}\n\nexport enum ServerDeploymentType {\n Affine = 'Affine',\n Selfhosted = 'Selfhosted',\n}\n\nexport enum ServerFeature {\n Copilot = 'Copilot',\n OAuth = 'OAuth',\n Payment = 'Payment',\n}\n\nexport interface ServerFlagsType {\n __typename?: 'ServerFlagsType';\n earlyAccessControl: Scalars['Boolean']['output'];\n syncClientVersionCheck: Scalars['Boolean']['output'];\n}\n\nexport interface ServerRuntimeConfigType {\n __typename?: 'ServerRuntimeConfigType';\n description: Scalars['String']['output'];\n id: Scalars['String']['output'];\n key: Scalars['String']['output'];\n module: Scalars['String']['output'];\n type: RuntimeConfigType;\n updatedAt: Scalars['DateTime']['output'];\n value: Scalars['JSON']['output'];\n}\n\nexport interface ServerServiceConfig {\n __typename?: 'ServerServiceConfig';\n config: Scalars['JSONObject']['output'];\n name: Scalars['String']['output'];\n}\n\nexport interface SubscriptionAlreadyExistsDataType {\n __typename?: 'SubscriptionAlreadyExistsDataType';\n plan: Scalars['String']['output'];\n}\n\nexport interface SubscriptionNotExistsDataType {\n __typename?: 'SubscriptionNotExistsDataType';\n plan: Scalars['String']['output'];\n}\n\nexport enum SubscriptionPlan {\n AI = 'AI',\n Enterprise = 'Enterprise',\n Free = 'Free',\n Pro = 'Pro',\n SelfHosted = 'SelfHosted',\n Team = 'Team',\n}\n\nexport interface SubscriptionPlanNotFoundDataType {\n __typename?: 'SubscriptionPlanNotFoundDataType';\n plan: Scalars['String']['output'];\n recurring: Scalars['String']['output'];\n}\n\nexport interface SubscriptionPrice {\n __typename?: 'SubscriptionPrice';\n amount: Maybe;\n currency: Scalars['String']['output'];\n lifetimeAmount: Maybe;\n plan: SubscriptionPlan;\n type: Scalars['String']['output'];\n yearlyAmount: Maybe;\n}\n\nexport enum SubscriptionRecurring {\n Lifetime = 'Lifetime',\n Monthly = 'Monthly',\n Yearly = 'Yearly',\n}\n\nexport enum SubscriptionStatus {\n Active = 'Active',\n Canceled = 'Canceled',\n Incomplete = 'Incomplete',\n IncompleteExpired = 'IncompleteExpired',\n PastDue = 'PastDue',\n Paused = 'Paused',\n Trialing = 'Trialing',\n Unpaid = 'Unpaid',\n}\n\nexport interface UnknownOauthProviderDataType {\n __typename?: 'UnknownOauthProviderDataType';\n name: Scalars['String']['output'];\n}\n\nexport interface UpdateUserInput {\n /** User name */\n name: InputMaybe;\n}\n\nexport interface UpdateWorkspaceInput {\n id: Scalars['ID']['input'];\n /** is Public workspace */\n public: InputMaybe;\n}\n\nexport interface UserInvoice {\n __typename?: 'UserInvoice';\n amount: Scalars['Int']['output'];\n createdAt: Scalars['DateTime']['output'];\n currency: Scalars['String']['output'];\n id: Scalars['String']['output'];\n lastPaymentError: Maybe;\n link: Maybe;\n plan: SubscriptionPlan;\n reason: Scalars['String']['output'];\n recurring: SubscriptionRecurring;\n status: InvoiceStatus;\n updatedAt: Scalars['DateTime']['output'];\n}\n\nexport type UserOrLimitedUser = LimitedUserType | UserType;\n\nexport interface UserQuota {\n __typename?: 'UserQuota';\n blobLimit: Scalars['SafeInt']['output'];\n historyPeriod: Scalars['SafeInt']['output'];\n humanReadable: UserQuotaHumanReadable;\n memberLimit: Scalars['Int']['output'];\n name: Scalars['String']['output'];\n storageQuota: Scalars['SafeInt']['output'];\n}\n\nexport interface UserQuotaHumanReadable {\n __typename?: 'UserQuotaHumanReadable';\n blobLimit: Scalars['String']['output'];\n historyPeriod: Scalars['String']['output'];\n memberLimit: Scalars['String']['output'];\n name: Scalars['String']['output'];\n storageQuota: Scalars['String']['output'];\n}\n\nexport interface UserSubscription {\n __typename?: 'UserSubscription';\n canceledAt: Maybe;\n createdAt: Scalars['DateTime']['output'];\n end: Maybe;\n id: Maybe;\n nextBillAt: Maybe;\n /**\n * The 'Free' plan just exists to be a placeholder and for the type convenience of frontend.\n * There won't actually be a subscription with plan 'Free'\n */\n plan: SubscriptionPlan;\n recurring: SubscriptionRecurring;\n start: Scalars['DateTime']['output'];\n status: SubscriptionStatus;\n trialEnd: Maybe;\n trialStart: Maybe;\n updatedAt: Scalars['DateTime']['output'];\n}\n\nexport interface UserType {\n __typename?: 'UserType';\n /** User avatar url */\n avatarUrl: Maybe;\n copilot: Copilot;\n /**\n * User email verified\n * @deprecated useless\n */\n createdAt: Maybe;\n /** User email */\n email: Scalars['String']['output'];\n /** User email verified */\n emailVerified: Scalars['Boolean']['output'];\n /** Enabled features of a user */\n features: Array;\n /** User password has been set */\n hasPassword: Maybe;\n id: Scalars['ID']['output'];\n /** Get user invoice count */\n invoiceCount: Scalars['Int']['output'];\n invoices: Array;\n /** User name */\n name: Scalars['String']['output'];\n quota: Maybe;\n /** @deprecated use `UserType.subscriptions` */\n subscription: Maybe;\n subscriptions: Array;\n /** @deprecated use [/api/auth/authorize] */\n token: TokenType;\n}\n\nexport interface UserTypeCopilotArgs {\n workspaceId: InputMaybe;\n}\n\nexport interface UserTypeInvoicesArgs {\n skip: InputMaybe;\n take?: InputMaybe;\n}\n\nexport interface UserTypeSubscriptionArgs {\n plan?: InputMaybe;\n}\n\nexport interface VersionRejectedDataType {\n __typename?: 'VersionRejectedDataType';\n serverVersion: Scalars['String']['output'];\n version: Scalars['String']['output'];\n}\n\nexport interface WorkspaceAccessDeniedDataType {\n __typename?: 'WorkspaceAccessDeniedDataType';\n workspaceId: Scalars['String']['output'];\n}\n\nexport interface WorkspaceBlobSizes {\n __typename?: 'WorkspaceBlobSizes';\n size: Scalars['SafeInt']['output'];\n}\n\nexport interface WorkspaceNotFoundDataType {\n __typename?: 'WorkspaceNotFoundDataType';\n workspaceId: Scalars['String']['output'];\n}\n\nexport interface WorkspaceOwnerNotFoundDataType {\n __typename?: 'WorkspaceOwnerNotFoundDataType';\n workspaceId: Scalars['String']['output'];\n}\n\nexport interface WorkspacePage {\n __typename?: 'WorkspacePage';\n id: Scalars['String']['output'];\n mode: PublicPageMode;\n public: Scalars['Boolean']['output'];\n workspaceId: Scalars['String']['output'];\n}\n\nexport interface WorkspaceType {\n __typename?: 'WorkspaceType';\n /** Available features of workspace */\n availableFeatures: Array;\n /** List blobs of workspace */\n blobs: Array;\n /** Blobs size of workspace */\n blobsSize: Scalars['Int']['output'];\n /** Workspace created date */\n createdAt: Scalars['DateTime']['output'];\n /** Enabled features of workspace */\n features: Array;\n histories: Array;\n id: Scalars['ID']['output'];\n /** member count of workspace */\n memberCount: Scalars['Int']['output'];\n /** Members of workspace */\n members: Array;\n /** Owner of workspace */\n owner: UserType;\n /** Permission of current signed in user in workspace */\n permission: Permission;\n /** is Public workspace */\n public: Scalars['Boolean']['output'];\n /** Get public page of a workspace by page id. */\n publicPage: Maybe;\n /** Public pages of a workspace */\n publicPages: Array;\n /** quota of workspace */\n quota: QuotaQueryType;\n /**\n * Shared pages of workspace\n * @deprecated use WorkspaceType.publicPages\n */\n sharedPages: Array;\n}\n\nexport interface WorkspaceTypeHistoriesArgs {\n before: InputMaybe;\n guid: Scalars['String']['input'];\n take: InputMaybe;\n}\n\nexport interface WorkspaceTypeMembersArgs {\n skip: InputMaybe;\n take: InputMaybe;\n}\n\nexport interface WorkspaceTypePublicPageArgs {\n pageId: Scalars['String']['input'];\n}\n\nexport interface TokenType {\n __typename?: 'tokenType';\n refresh: Scalars['String']['output'];\n sessionToken: Maybe;\n token: Scalars['String']['output'];\n}\n\nexport type AdminServerConfigQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type AdminServerConfigQuery = {\n __typename?: 'Query';\n serverConfig: {\n __typename?: 'ServerConfigType';\n version: string;\n baseUrl: string;\n name: string;\n features: Array;\n type: ServerDeploymentType;\n initialized: boolean;\n availableUserFeatures: Array;\n credentialsRequirement: {\n __typename?: 'CredentialsRequirementType';\n password: {\n __typename?: 'PasswordLimitsType';\n minLength: number;\n maxLength: number;\n };\n };\n };\n};\n\nexport type DeleteBlobMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n hash: Scalars['String']['input'];\n}>;\n\nexport type DeleteBlobMutation = {\n __typename?: 'Mutation';\n deleteBlob: boolean;\n};\n\nexport type ListBlobsQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n}>;\n\nexport type ListBlobsQuery = { __typename?: 'Query'; listBlobs: Array };\n\nexport type SetBlobMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n blob: Scalars['Upload']['input'];\n}>;\n\nexport type SetBlobMutation = { __typename?: 'Mutation'; setBlob: string };\n\nexport type CancelSubscriptionMutationVariables = Exact<{\n idempotencyKey: Scalars['String']['input'];\n plan?: InputMaybe;\n}>;\n\nexport type CancelSubscriptionMutation = {\n __typename?: 'Mutation';\n cancelSubscription: {\n __typename?: 'UserSubscription';\n id: string | null;\n status: SubscriptionStatus;\n nextBillAt: string | null;\n canceledAt: string | null;\n };\n};\n\nexport type ChangeEmailMutationVariables = Exact<{\n token: Scalars['String']['input'];\n email: Scalars['String']['input'];\n}>;\n\nexport type ChangeEmailMutation = {\n __typename?: 'Mutation';\n changeEmail: { __typename?: 'UserType'; id: string; email: string };\n};\n\nexport type CreateChangePasswordUrlMutationVariables = Exact<{\n callbackUrl: Scalars['String']['input'];\n userId: Scalars['String']['input'];\n}>;\n\nexport type CreateChangePasswordUrlMutation = {\n __typename?: 'Mutation';\n createChangePasswordUrl: string;\n};\n\nexport type ChangePasswordMutationVariables = Exact<{\n token: Scalars['String']['input'];\n userId: Scalars['String']['input'];\n newPassword: Scalars['String']['input'];\n}>;\n\nexport type ChangePasswordMutation = {\n __typename?: 'Mutation';\n changePassword: boolean;\n};\n\nexport type CopilotQuotaQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type CopilotQuotaQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n copilot: {\n __typename?: 'Copilot';\n quota: {\n __typename?: 'CopilotQuota';\n limit: number | null;\n used: number;\n };\n };\n } | null;\n};\n\nexport type CleanupCopilotSessionMutationVariables = Exact<{\n input: DeleteSessionInput;\n}>;\n\nexport type CleanupCopilotSessionMutation = {\n __typename?: 'Mutation';\n cleanupCopilotSession: Array;\n};\n\nexport type CreateCheckoutSessionMutationVariables = Exact<{\n input: CreateCheckoutSessionInput;\n}>;\n\nexport type CreateCheckoutSessionMutation = {\n __typename?: 'Mutation';\n createCheckoutSession: string;\n};\n\nexport type CreateCopilotMessageMutationVariables = Exact<{\n options: CreateChatMessageInput;\n}>;\n\nexport type CreateCopilotMessageMutation = {\n __typename?: 'Mutation';\n createCopilotMessage: string;\n};\n\nexport type CreateCopilotSessionMutationVariables = Exact<{\n options: CreateChatSessionInput;\n}>;\n\nexport type CreateCopilotSessionMutation = {\n __typename?: 'Mutation';\n createCopilotSession: string;\n};\n\nexport type CreateCustomerPortalMutationVariables = Exact<{\n [key: string]: never;\n}>;\n\nexport type CreateCustomerPortalMutation = {\n __typename?: 'Mutation';\n createCustomerPortal: string;\n};\n\nexport type CreateUserMutationVariables = Exact<{\n input: CreateUserInput;\n}>;\n\nexport type CreateUserMutation = {\n __typename?: 'Mutation';\n createUser: { __typename?: 'UserType'; id: string };\n};\n\nexport type CreateWorkspaceMutationVariables = Exact<{ [key: string]: never }>;\n\nexport type CreateWorkspaceMutation = {\n __typename?: 'Mutation';\n createWorkspace: {\n __typename?: 'WorkspaceType';\n id: string;\n public: boolean;\n createdAt: string;\n };\n};\n\nexport type DeleteAccountMutationVariables = Exact<{ [key: string]: never }>;\n\nexport type DeleteAccountMutation = {\n __typename?: 'Mutation';\n deleteAccount: { __typename?: 'DeleteAccount'; success: boolean };\n};\n\nexport type DeleteUserMutationVariables = Exact<{\n id: Scalars['String']['input'];\n}>;\n\nexport type DeleteUserMutation = {\n __typename?: 'Mutation';\n deleteUser: { __typename?: 'DeleteAccount'; success: boolean };\n};\n\nexport type DeleteWorkspaceMutationVariables = Exact<{\n id: Scalars['String']['input'];\n}>;\n\nexport type DeleteWorkspaceMutation = {\n __typename?: 'Mutation';\n deleteWorkspace: boolean;\n};\n\nexport type ForkCopilotSessionMutationVariables = Exact<{\n options: ForkChatSessionInput;\n}>;\n\nexport type ForkCopilotSessionMutation = {\n __typename?: 'Mutation';\n forkCopilotSession: string;\n};\n\nexport type CredentialsRequirementFragment = {\n __typename?: 'CredentialsRequirementType';\n password: {\n __typename?: 'PasswordLimitsType';\n minLength: number;\n maxLength: number;\n };\n};\n\nexport type PasswordLimitsFragment = {\n __typename?: 'PasswordLimitsType';\n minLength: number;\n maxLength: number;\n};\n\nexport type GetCopilotHistoriesQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n docId: InputMaybe;\n options: InputMaybe;\n}>;\n\nexport type GetCopilotHistoriesQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n copilot: {\n __typename?: 'Copilot';\n histories: Array<{\n __typename?: 'CopilotHistories';\n sessionId: string;\n tokens: number;\n action: string | null;\n createdAt: string;\n messages: Array<{\n __typename?: 'ChatMessage';\n id: string | null;\n role: string;\n content: string;\n attachments: Array | null;\n createdAt: string;\n }>;\n }>;\n };\n } | null;\n};\n\nexport type GetCopilotHistoryIdsQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n docId: InputMaybe;\n options: InputMaybe;\n}>;\n\nexport type GetCopilotHistoryIdsQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n copilot: {\n __typename?: 'Copilot';\n histories: Array<{\n __typename?: 'CopilotHistories';\n sessionId: string;\n messages: Array<{\n __typename?: 'ChatMessage';\n id: string | null;\n role: string;\n createdAt: string;\n }>;\n }>;\n };\n } | null;\n};\n\nexport type GetCopilotSessionsQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n}>;\n\nexport type GetCopilotSessionsQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n copilot: {\n __typename?: 'Copilot';\n actions: Array;\n chats: Array;\n };\n } | null;\n};\n\nexport type GetCurrentUserFeaturesQueryVariables = Exact<{\n [key: string]: never;\n}>;\n\nexport type GetCurrentUserFeaturesQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n id: string;\n name: string;\n email: string;\n emailVerified: boolean;\n avatarUrl: string | null;\n features: Array;\n } | null;\n};\n\nexport type GetCurrentUserQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type GetCurrentUserQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n id: string;\n name: string;\n email: string;\n emailVerified: boolean;\n avatarUrl: string | null;\n token: { __typename?: 'tokenType'; sessionToken: string | null };\n } | null;\n};\n\nexport type GetInviteInfoQueryVariables = Exact<{\n inviteId: Scalars['String']['input'];\n}>;\n\nexport type GetInviteInfoQuery = {\n __typename?: 'Query';\n getInviteInfo: {\n __typename?: 'InvitationType';\n workspace: {\n __typename?: 'InvitationWorkspaceType';\n id: string;\n name: string;\n avatar: string;\n };\n user: {\n __typename?: 'UserType';\n id: string;\n name: string;\n avatarUrl: string | null;\n };\n };\n};\n\nexport type GetIsOwnerQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n}>;\n\nexport type GetIsOwnerQuery = { __typename?: 'Query'; isOwner: boolean };\n\nexport type GetMemberCountByWorkspaceIdQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n}>;\n\nexport type GetMemberCountByWorkspaceIdQuery = {\n __typename?: 'Query';\n workspace: { __typename?: 'WorkspaceType'; memberCount: number };\n};\n\nexport type GetMembersByWorkspaceIdQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n skip: Scalars['Int']['input'];\n take: Scalars['Int']['input'];\n}>;\n\nexport type GetMembersByWorkspaceIdQuery = {\n __typename?: 'Query';\n workspace: {\n __typename?: 'WorkspaceType';\n memberCount: number;\n members: Array<{\n __typename?: 'InviteUserType';\n id: string;\n name: string | null;\n email: string | null;\n avatarUrl: string | null;\n permission: Permission;\n inviteId: string;\n accepted: boolean;\n emailVerified: boolean | null;\n }>;\n };\n};\n\nexport type OauthProvidersQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type OauthProvidersQuery = {\n __typename?: 'Query';\n serverConfig: {\n __typename?: 'ServerConfigType';\n oauthProviders: Array;\n };\n};\n\nexport type GetPromptsQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type GetPromptsQuery = {\n __typename?: 'Query';\n listCopilotPrompts: Array<{\n __typename?: 'CopilotPromptType';\n name: string;\n model: string;\n action: string | null;\n config: {\n __typename?: 'CopilotPromptConfigType';\n jsonMode: boolean | null;\n frequencyPenalty: number | null;\n presencePenalty: number | null;\n temperature: number | null;\n topP: number | null;\n } | null;\n messages: Array<{\n __typename?: 'CopilotPromptMessageType';\n role: CopilotPromptMessageRole;\n content: string;\n params: Record | null;\n }>;\n }>;\n};\n\nexport type GetServerRuntimeConfigQueryVariables = Exact<{\n [key: string]: never;\n}>;\n\nexport type GetServerRuntimeConfigQuery = {\n __typename?: 'Query';\n serverRuntimeConfig: Array<{\n __typename?: 'ServerRuntimeConfigType';\n id: string;\n module: string;\n key: string;\n description: string;\n value: Record;\n type: RuntimeConfigType;\n updatedAt: string;\n }>;\n};\n\nexport type GetServerServiceConfigsQueryVariables = Exact<{\n [key: string]: never;\n}>;\n\nexport type GetServerServiceConfigsQuery = {\n __typename?: 'Query';\n serverServiceConfigs: Array<{\n __typename?: 'ServerServiceConfig';\n name: string;\n config: any;\n }>;\n};\n\nexport type GetUserByEmailQueryVariables = Exact<{\n email: Scalars['String']['input'];\n}>;\n\nexport type GetUserByEmailQuery = {\n __typename?: 'Query';\n userByEmail: {\n __typename?: 'UserType';\n id: string;\n name: string;\n email: string;\n features: Array;\n hasPassword: boolean | null;\n emailVerified: boolean;\n avatarUrl: string | null;\n quota: {\n __typename?: 'UserQuota';\n humanReadable: {\n __typename?: 'UserQuotaHumanReadable';\n blobLimit: string;\n historyPeriod: string;\n memberLimit: string;\n name: string;\n storageQuota: string;\n };\n } | null;\n } | null;\n};\n\nexport type GetUserFeaturesQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type GetUserFeaturesQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n id: string;\n features: Array;\n } | null;\n};\n\nexport type GetUserQueryVariables = Exact<{\n email: Scalars['String']['input'];\n}>;\n\nexport type GetUserQuery = {\n __typename?: 'Query';\n user:\n | {\n __typename: 'LimitedUserType';\n email: string;\n hasPassword: boolean | null;\n }\n | {\n __typename: 'UserType';\n id: string;\n name: string;\n avatarUrl: string | null;\n email: string;\n hasPassword: boolean | null;\n }\n | null;\n};\n\nexport type GetUsersCountQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type GetUsersCountQuery = { __typename?: 'Query'; usersCount: number };\n\nexport type GetWorkspaceFeaturesQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n}>;\n\nexport type GetWorkspaceFeaturesQuery = {\n __typename?: 'Query';\n workspace: { __typename?: 'WorkspaceType'; features: Array };\n};\n\nexport type GetWorkspacePublicByIdQueryVariables = Exact<{\n id: Scalars['String']['input'];\n}>;\n\nexport type GetWorkspacePublicByIdQuery = {\n __typename?: 'Query';\n workspace: { __typename?: 'WorkspaceType'; public: boolean };\n};\n\nexport type GetWorkspacePublicPageByIdQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n pageId: Scalars['String']['input'];\n}>;\n\nexport type GetWorkspacePublicPageByIdQuery = {\n __typename?: 'Query';\n workspace: {\n __typename?: 'WorkspaceType';\n publicPage: {\n __typename?: 'WorkspacePage';\n id: string;\n mode: PublicPageMode;\n } | null;\n };\n};\n\nexport type GetWorkspacePublicPagesQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n}>;\n\nexport type GetWorkspacePublicPagesQuery = {\n __typename?: 'Query';\n workspace: {\n __typename?: 'WorkspaceType';\n publicPages: Array<{\n __typename?: 'WorkspacePage';\n id: string;\n mode: PublicPageMode;\n }>;\n };\n};\n\nexport type GetWorkspaceQueryVariables = Exact<{\n id: Scalars['String']['input'];\n}>;\n\nexport type GetWorkspaceQuery = {\n __typename?: 'Query';\n workspace: { __typename?: 'WorkspaceType'; id: string };\n};\n\nexport type GetWorkspacesQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type GetWorkspacesQuery = {\n __typename?: 'Query';\n workspaces: Array<{\n __typename?: 'WorkspaceType';\n id: string;\n owner: { __typename?: 'UserType'; id: string };\n }>;\n};\n\nexport type ListHistoryQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n pageDocId: Scalars['String']['input'];\n take: InputMaybe;\n before: InputMaybe;\n}>;\n\nexport type ListHistoryQuery = {\n __typename?: 'Query';\n workspace: {\n __typename?: 'WorkspaceType';\n histories: Array<{\n __typename?: 'DocHistoryType';\n id: string;\n timestamp: string;\n }>;\n };\n};\n\nexport type GetInvoicesCountQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type GetInvoicesCountQuery = {\n __typename?: 'Query';\n currentUser: { __typename?: 'UserType'; invoiceCount: number } | null;\n};\n\nexport type InvoicesQueryVariables = Exact<{\n take: Scalars['Int']['input'];\n skip: Scalars['Int']['input'];\n}>;\n\nexport type InvoicesQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n invoices: Array<{\n __typename?: 'UserInvoice';\n id: string;\n status: InvoiceStatus;\n plan: SubscriptionPlan;\n recurring: SubscriptionRecurring;\n currency: string;\n amount: number;\n reason: string;\n lastPaymentError: string | null;\n link: string | null;\n createdAt: string;\n }>;\n } | null;\n};\n\nexport type LeaveWorkspaceMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n workspaceName: Scalars['String']['input'];\n sendLeaveMail: InputMaybe;\n}>;\n\nexport type LeaveWorkspaceMutation = {\n __typename?: 'Mutation';\n leaveWorkspace: boolean;\n};\n\nexport type ListUsersQueryVariables = Exact<{\n filter: ListUserInput;\n}>;\n\nexport type ListUsersQuery = {\n __typename?: 'Query';\n users: Array<{\n __typename?: 'UserType';\n id: string;\n name: string;\n email: string;\n features: Array;\n hasPassword: boolean | null;\n emailVerified: boolean;\n avatarUrl: string | null;\n }>;\n};\n\nexport type PricesQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type PricesQuery = {\n __typename?: 'Query';\n prices: Array<{\n __typename?: 'SubscriptionPrice';\n type: string;\n plan: SubscriptionPlan;\n currency: string;\n amount: number | null;\n yearlyAmount: number | null;\n lifetimeAmount: number | null;\n }>;\n};\n\nexport type PublishPageMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n pageId: Scalars['String']['input'];\n mode?: InputMaybe;\n}>;\n\nexport type PublishPageMutation = {\n __typename?: 'Mutation';\n publishPage: {\n __typename?: 'WorkspacePage';\n id: string;\n mode: PublicPageMode;\n };\n};\n\nexport type QuotaQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type QuotaQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n id: string;\n quota: {\n __typename?: 'UserQuota';\n name: string;\n blobLimit: number;\n storageQuota: number;\n historyPeriod: number;\n memberLimit: number;\n humanReadable: {\n __typename?: 'UserQuotaHumanReadable';\n name: string;\n blobLimit: string;\n storageQuota: string;\n historyPeriod: string;\n memberLimit: string;\n };\n } | null;\n } | null;\n collectAllBlobSizes: { __typename?: 'WorkspaceBlobSizes'; size: number };\n};\n\nexport type RecoverDocMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n docId: Scalars['String']['input'];\n timestamp: Scalars['DateTime']['input'];\n}>;\n\nexport type RecoverDocMutation = {\n __typename?: 'Mutation';\n recoverDoc: string;\n};\n\nexport type RemoveAvatarMutationVariables = Exact<{ [key: string]: never }>;\n\nexport type RemoveAvatarMutation = {\n __typename?: 'Mutation';\n removeAvatar: { __typename?: 'RemoveAvatar'; success: boolean };\n};\n\nexport type ResumeSubscriptionMutationVariables = Exact<{\n idempotencyKey: Scalars['String']['input'];\n plan?: InputMaybe;\n}>;\n\nexport type ResumeSubscriptionMutation = {\n __typename?: 'Mutation';\n resumeSubscription: {\n __typename?: 'UserSubscription';\n id: string | null;\n status: SubscriptionStatus;\n nextBillAt: string | null;\n start: string;\n end: string | null;\n };\n};\n\nexport type RevokeMemberPermissionMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n userId: Scalars['String']['input'];\n}>;\n\nexport type RevokeMemberPermissionMutation = {\n __typename?: 'Mutation';\n revoke: boolean;\n};\n\nexport type RevokePublicPageMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n pageId: Scalars['String']['input'];\n}>;\n\nexport type RevokePublicPageMutation = {\n __typename?: 'Mutation';\n revokePublicPage: {\n __typename?: 'WorkspacePage';\n id: string;\n mode: PublicPageMode;\n public: boolean;\n };\n};\n\nexport type SendChangeEmailMutationVariables = Exact<{\n callbackUrl: Scalars['String']['input'];\n}>;\n\nexport type SendChangeEmailMutation = {\n __typename?: 'Mutation';\n sendChangeEmail: boolean;\n};\n\nexport type SendChangePasswordEmailMutationVariables = Exact<{\n callbackUrl: Scalars['String']['input'];\n}>;\n\nexport type SendChangePasswordEmailMutation = {\n __typename?: 'Mutation';\n sendChangePasswordEmail: boolean;\n};\n\nexport type SendSetPasswordEmailMutationVariables = Exact<{\n callbackUrl: Scalars['String']['input'];\n}>;\n\nexport type SendSetPasswordEmailMutation = {\n __typename?: 'Mutation';\n sendSetPasswordEmail: boolean;\n};\n\nexport type SendVerifyChangeEmailMutationVariables = Exact<{\n token: Scalars['String']['input'];\n email: Scalars['String']['input'];\n callbackUrl: Scalars['String']['input'];\n}>;\n\nexport type SendVerifyChangeEmailMutation = {\n __typename?: 'Mutation';\n sendVerifyChangeEmail: boolean;\n};\n\nexport type SendVerifyEmailMutationVariables = Exact<{\n callbackUrl: Scalars['String']['input'];\n}>;\n\nexport type SendVerifyEmailMutation = {\n __typename?: 'Mutation';\n sendVerifyEmail: boolean;\n};\n\nexport type ServerConfigQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type ServerConfigQuery = {\n __typename?: 'Query';\n serverConfig: {\n __typename?: 'ServerConfigType';\n version: string;\n baseUrl: string;\n name: string;\n features: Array;\n type: ServerDeploymentType;\n credentialsRequirement: {\n __typename?: 'CredentialsRequirementType';\n password: {\n __typename?: 'PasswordLimitsType';\n minLength: number;\n maxLength: number;\n };\n };\n };\n};\n\nexport type SetWorkspacePublicByIdMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n public: Scalars['Boolean']['input'];\n}>;\n\nexport type SetWorkspacePublicByIdMutation = {\n __typename?: 'Mutation';\n updateWorkspace: { __typename?: 'WorkspaceType'; id: string };\n};\n\nexport type SubscriptionQueryVariables = Exact<{ [key: string]: never }>;\n\nexport type SubscriptionQuery = {\n __typename?: 'Query';\n currentUser: {\n __typename?: 'UserType';\n id: string;\n subscriptions: Array<{\n __typename?: 'UserSubscription';\n id: string | null;\n status: SubscriptionStatus;\n plan: SubscriptionPlan;\n recurring: SubscriptionRecurring;\n start: string;\n end: string | null;\n nextBillAt: string | null;\n canceledAt: string | null;\n }>;\n } | null;\n};\n\nexport type UpdateAccountFeaturesMutationVariables = Exact<{\n userId: Scalars['String']['input'];\n features: Array | FeatureType;\n}>;\n\nexport type UpdateAccountFeaturesMutation = {\n __typename?: 'Mutation';\n updateUserFeatures: Array;\n};\n\nexport type UpdateAccountMutationVariables = Exact<{\n id: Scalars['String']['input'];\n input: ManageUserInput;\n}>;\n\nexport type UpdateAccountMutation = {\n __typename?: 'Mutation';\n updateUser: {\n __typename?: 'UserType';\n id: string;\n name: string;\n email: string;\n };\n};\n\nexport type UpdatePromptMutationVariables = Exact<{\n name: Scalars['String']['input'];\n messages: Array | CopilotPromptMessageInput;\n}>;\n\nexport type UpdatePromptMutation = {\n __typename?: 'Mutation';\n updateCopilotPrompt: {\n __typename?: 'CopilotPromptType';\n name: string;\n model: string;\n action: string | null;\n config: {\n __typename?: 'CopilotPromptConfigType';\n jsonMode: boolean | null;\n frequencyPenalty: number | null;\n presencePenalty: number | null;\n temperature: number | null;\n topP: number | null;\n } | null;\n messages: Array<{\n __typename?: 'CopilotPromptMessageType';\n role: CopilotPromptMessageRole;\n content: string;\n params: Record | null;\n }>;\n };\n};\n\nexport type UpdateServerRuntimeConfigsMutationVariables = Exact<{\n updates: Scalars['JSONObject']['input'];\n}>;\n\nexport type UpdateServerRuntimeConfigsMutation = {\n __typename?: 'Mutation';\n updateRuntimeConfigs: Array<{\n __typename?: 'ServerRuntimeConfigType';\n key: string;\n value: Record;\n }>;\n};\n\nexport type UpdateSubscriptionMutationVariables = Exact<{\n idempotencyKey: Scalars['String']['input'];\n plan?: InputMaybe;\n recurring: SubscriptionRecurring;\n}>;\n\nexport type UpdateSubscriptionMutation = {\n __typename?: 'Mutation';\n updateSubscriptionRecurring: {\n __typename?: 'UserSubscription';\n id: string | null;\n plan: SubscriptionPlan;\n recurring: SubscriptionRecurring;\n nextBillAt: string | null;\n };\n};\n\nexport type UpdateUserProfileMutationVariables = Exact<{\n input: UpdateUserInput;\n}>;\n\nexport type UpdateUserProfileMutation = {\n __typename?: 'Mutation';\n updateProfile: { __typename?: 'UserType'; id: string; name: string };\n};\n\nexport type UploadAvatarMutationVariables = Exact<{\n avatar: Scalars['Upload']['input'];\n}>;\n\nexport type UploadAvatarMutation = {\n __typename?: 'Mutation';\n uploadAvatar: {\n __typename?: 'UserType';\n id: string;\n name: string;\n avatarUrl: string | null;\n email: string;\n };\n};\n\nexport type VerifyEmailMutationVariables = Exact<{\n token: Scalars['String']['input'];\n}>;\n\nexport type VerifyEmailMutation = {\n __typename?: 'Mutation';\n verifyEmail: boolean;\n};\n\nexport type EnabledFeaturesQueryVariables = Exact<{\n id: Scalars['String']['input'];\n}>;\n\nexport type EnabledFeaturesQuery = {\n __typename?: 'Query';\n workspace: { __typename?: 'WorkspaceType'; features: Array };\n};\n\nexport type AvailableFeaturesQueryVariables = Exact<{\n id: Scalars['String']['input'];\n}>;\n\nexport type AvailableFeaturesQuery = {\n __typename?: 'Query';\n workspace: {\n __typename?: 'WorkspaceType';\n availableFeatures: Array;\n };\n};\n\nexport type SetWorkspaceExperimentalFeatureMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n feature: FeatureType;\n enable: Scalars['Boolean']['input'];\n}>;\n\nexport type SetWorkspaceExperimentalFeatureMutation = {\n __typename?: 'Mutation';\n setWorkspaceExperimentalFeature: boolean;\n};\n\nexport type AddWorkspaceFeatureMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n feature: FeatureType;\n}>;\n\nexport type AddWorkspaceFeatureMutation = {\n __typename?: 'Mutation';\n addWorkspaceFeature: number;\n};\n\nexport type ListWorkspaceFeaturesQueryVariables = Exact<{\n feature: FeatureType;\n}>;\n\nexport type ListWorkspaceFeaturesQuery = {\n __typename?: 'Query';\n listWorkspaceFeatures: Array<{\n __typename?: 'WorkspaceType';\n id: string;\n public: boolean;\n createdAt: string;\n memberCount: number;\n features: Array;\n owner: { __typename?: 'UserType'; id: string };\n }>;\n};\n\nexport type RemoveWorkspaceFeatureMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n feature: FeatureType;\n}>;\n\nexport type RemoveWorkspaceFeatureMutation = {\n __typename?: 'Mutation';\n removeWorkspaceFeature: number;\n};\n\nexport type InviteByEmailMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n email: Scalars['String']['input'];\n permission: Permission;\n sendInviteMail: InputMaybe;\n}>;\n\nexport type InviteByEmailMutation = { __typename?: 'Mutation'; invite: string };\n\nexport type AcceptInviteByInviteIdMutationVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n inviteId: Scalars['String']['input'];\n sendAcceptMail: InputMaybe;\n}>;\n\nexport type AcceptInviteByInviteIdMutation = {\n __typename?: 'Mutation';\n acceptInviteById: boolean;\n};\n\nexport type WorkspaceQuotaQueryVariables = Exact<{\n id: Scalars['String']['input'];\n}>;\n\nexport type WorkspaceQuotaQuery = {\n __typename?: 'Query';\n workspace: {\n __typename?: 'WorkspaceType';\n quota: {\n __typename?: 'QuotaQueryType';\n name: string;\n blobLimit: number;\n storageQuota: number;\n historyPeriod: number;\n memberLimit: number;\n usedSize: number;\n humanReadable: {\n __typename?: 'HumanReadableQuotaType';\n name: string;\n blobLimit: string;\n storageQuota: string;\n historyPeriod: string;\n memberLimit: string;\n };\n };\n };\n};\n\nexport type Queries =\n | {\n name: 'adminServerConfigQuery';\n variables: AdminServerConfigQueryVariables;\n response: AdminServerConfigQuery;\n }\n | {\n name: 'listBlobsQuery';\n variables: ListBlobsQueryVariables;\n response: ListBlobsQuery;\n }\n | {\n name: 'copilotQuotaQuery';\n variables: CopilotQuotaQueryVariables;\n response: CopilotQuotaQuery;\n }\n | {\n name: 'getCopilotHistoriesQuery';\n variables: GetCopilotHistoriesQueryVariables;\n response: GetCopilotHistoriesQuery;\n }\n | {\n name: 'getCopilotHistoryIdsQuery';\n variables: GetCopilotHistoryIdsQueryVariables;\n response: GetCopilotHistoryIdsQuery;\n }\n | {\n name: 'getCopilotSessionsQuery';\n variables: GetCopilotSessionsQueryVariables;\n response: GetCopilotSessionsQuery;\n }\n | {\n name: 'getCurrentUserFeaturesQuery';\n variables: GetCurrentUserFeaturesQueryVariables;\n response: GetCurrentUserFeaturesQuery;\n }\n | {\n name: 'getCurrentUserQuery';\n variables: GetCurrentUserQueryVariables;\n response: GetCurrentUserQuery;\n }\n | {\n name: 'getInviteInfoQuery';\n variables: GetInviteInfoQueryVariables;\n response: GetInviteInfoQuery;\n }\n | {\n name: 'getIsOwnerQuery';\n variables: GetIsOwnerQueryVariables;\n response: GetIsOwnerQuery;\n }\n | {\n name: 'getMemberCountByWorkspaceIdQuery';\n variables: GetMemberCountByWorkspaceIdQueryVariables;\n response: GetMemberCountByWorkspaceIdQuery;\n }\n | {\n name: 'getMembersByWorkspaceIdQuery';\n variables: GetMembersByWorkspaceIdQueryVariables;\n response: GetMembersByWorkspaceIdQuery;\n }\n | {\n name: 'oauthProvidersQuery';\n variables: OauthProvidersQueryVariables;\n response: OauthProvidersQuery;\n }\n | {\n name: 'getPromptsQuery';\n variables: GetPromptsQueryVariables;\n response: GetPromptsQuery;\n }\n | {\n name: 'getServerRuntimeConfigQuery';\n variables: GetServerRuntimeConfigQueryVariables;\n response: GetServerRuntimeConfigQuery;\n }\n | {\n name: 'getServerServiceConfigsQuery';\n variables: GetServerServiceConfigsQueryVariables;\n response: GetServerServiceConfigsQuery;\n }\n | {\n name: 'getUserByEmailQuery';\n variables: GetUserByEmailQueryVariables;\n response: GetUserByEmailQuery;\n }\n | {\n name: 'getUserFeaturesQuery';\n variables: GetUserFeaturesQueryVariables;\n response: GetUserFeaturesQuery;\n }\n | {\n name: 'getUserQuery';\n variables: GetUserQueryVariables;\n response: GetUserQuery;\n }\n | {\n name: 'getUsersCountQuery';\n variables: GetUsersCountQueryVariables;\n response: GetUsersCountQuery;\n }\n | {\n name: 'getWorkspaceFeaturesQuery';\n variables: GetWorkspaceFeaturesQueryVariables;\n response: GetWorkspaceFeaturesQuery;\n }\n | {\n name: 'getWorkspacePublicByIdQuery';\n variables: GetWorkspacePublicByIdQueryVariables;\n response: GetWorkspacePublicByIdQuery;\n }\n | {\n name: 'getWorkspacePublicPageByIdQuery';\n variables: GetWorkspacePublicPageByIdQueryVariables;\n response: GetWorkspacePublicPageByIdQuery;\n }\n | {\n name: 'getWorkspacePublicPagesQuery';\n variables: GetWorkspacePublicPagesQueryVariables;\n response: GetWorkspacePublicPagesQuery;\n }\n | {\n name: 'getWorkspaceQuery';\n variables: GetWorkspaceQueryVariables;\n response: GetWorkspaceQuery;\n }\n | {\n name: 'getWorkspacesQuery';\n variables: GetWorkspacesQueryVariables;\n response: GetWorkspacesQuery;\n }\n | {\n name: 'listHistoryQuery';\n variables: ListHistoryQueryVariables;\n response: ListHistoryQuery;\n }\n | {\n name: 'getInvoicesCountQuery';\n variables: GetInvoicesCountQueryVariables;\n response: GetInvoicesCountQuery;\n }\n | {\n name: 'invoicesQuery';\n variables: InvoicesQueryVariables;\n response: InvoicesQuery;\n }\n | {\n name: 'listUsersQuery';\n variables: ListUsersQueryVariables;\n response: ListUsersQuery;\n }\n | {\n name: 'pricesQuery';\n variables: PricesQueryVariables;\n response: PricesQuery;\n }\n | {\n name: 'quotaQuery';\n variables: QuotaQueryVariables;\n response: QuotaQuery;\n }\n | {\n name: 'serverConfigQuery';\n variables: ServerConfigQueryVariables;\n response: ServerConfigQuery;\n }\n | {\n name: 'subscriptionQuery';\n variables: SubscriptionQueryVariables;\n response: SubscriptionQuery;\n }\n | {\n name: 'enabledFeaturesQuery';\n variables: EnabledFeaturesQueryVariables;\n response: EnabledFeaturesQuery;\n }\n | {\n name: 'availableFeaturesQuery';\n variables: AvailableFeaturesQueryVariables;\n response: AvailableFeaturesQuery;\n }\n | {\n name: 'listWorkspaceFeaturesQuery';\n variables: ListWorkspaceFeaturesQueryVariables;\n response: ListWorkspaceFeaturesQuery;\n }\n | {\n name: 'workspaceQuotaQuery';\n variables: WorkspaceQuotaQueryVariables;\n response: WorkspaceQuotaQuery;\n };\n\nexport type Mutations =\n | {\n name: 'deleteBlobMutation';\n variables: DeleteBlobMutationVariables;\n response: DeleteBlobMutation;\n }\n | {\n name: 'setBlobMutation';\n variables: SetBlobMutationVariables;\n response: SetBlobMutation;\n }\n | {\n name: 'cancelSubscriptionMutation';\n variables: CancelSubscriptionMutationVariables;\n response: CancelSubscriptionMutation;\n }\n | {\n name: 'changeEmailMutation';\n variables: ChangeEmailMutationVariables;\n response: ChangeEmailMutation;\n }\n | {\n name: 'createChangePasswordUrlMutation';\n variables: CreateChangePasswordUrlMutationVariables;\n response: CreateChangePasswordUrlMutation;\n }\n | {\n name: 'changePasswordMutation';\n variables: ChangePasswordMutationVariables;\n response: ChangePasswordMutation;\n }\n | {\n name: 'cleanupCopilotSessionMutation';\n variables: CleanupCopilotSessionMutationVariables;\n response: CleanupCopilotSessionMutation;\n }\n | {\n name: 'createCheckoutSessionMutation';\n variables: CreateCheckoutSessionMutationVariables;\n response: CreateCheckoutSessionMutation;\n }\n | {\n name: 'createCopilotMessageMutation';\n variables: CreateCopilotMessageMutationVariables;\n response: CreateCopilotMessageMutation;\n }\n | {\n name: 'createCopilotSessionMutation';\n variables: CreateCopilotSessionMutationVariables;\n response: CreateCopilotSessionMutation;\n }\n | {\n name: 'createCustomerPortalMutation';\n variables: CreateCustomerPortalMutationVariables;\n response: CreateCustomerPortalMutation;\n }\n | {\n name: 'createUserMutation';\n variables: CreateUserMutationVariables;\n response: CreateUserMutation;\n }\n | {\n name: 'createWorkspaceMutation';\n variables: CreateWorkspaceMutationVariables;\n response: CreateWorkspaceMutation;\n }\n | {\n name: 'deleteAccountMutation';\n variables: DeleteAccountMutationVariables;\n response: DeleteAccountMutation;\n }\n | {\n name: 'deleteUserMutation';\n variables: DeleteUserMutationVariables;\n response: DeleteUserMutation;\n }\n | {\n name: 'deleteWorkspaceMutation';\n variables: DeleteWorkspaceMutationVariables;\n response: DeleteWorkspaceMutation;\n }\n | {\n name: 'forkCopilotSessionMutation';\n variables: ForkCopilotSessionMutationVariables;\n response: ForkCopilotSessionMutation;\n }\n | {\n name: 'leaveWorkspaceMutation';\n variables: LeaveWorkspaceMutationVariables;\n response: LeaveWorkspaceMutation;\n }\n | {\n name: 'publishPageMutation';\n variables: PublishPageMutationVariables;\n response: PublishPageMutation;\n }\n | {\n name: 'recoverDocMutation';\n variables: RecoverDocMutationVariables;\n response: RecoverDocMutation;\n }\n | {\n name: 'removeAvatarMutation';\n variables: RemoveAvatarMutationVariables;\n response: RemoveAvatarMutation;\n }\n | {\n name: 'resumeSubscriptionMutation';\n variables: ResumeSubscriptionMutationVariables;\n response: ResumeSubscriptionMutation;\n }\n | {\n name: 'revokeMemberPermissionMutation';\n variables: RevokeMemberPermissionMutationVariables;\n response: RevokeMemberPermissionMutation;\n }\n | {\n name: 'revokePublicPageMutation';\n variables: RevokePublicPageMutationVariables;\n response: RevokePublicPageMutation;\n }\n | {\n name: 'sendChangeEmailMutation';\n variables: SendChangeEmailMutationVariables;\n response: SendChangeEmailMutation;\n }\n | {\n name: 'sendChangePasswordEmailMutation';\n variables: SendChangePasswordEmailMutationVariables;\n response: SendChangePasswordEmailMutation;\n }\n | {\n name: 'sendSetPasswordEmailMutation';\n variables: SendSetPasswordEmailMutationVariables;\n response: SendSetPasswordEmailMutation;\n }\n | {\n name: 'sendVerifyChangeEmailMutation';\n variables: SendVerifyChangeEmailMutationVariables;\n response: SendVerifyChangeEmailMutation;\n }\n | {\n name: 'sendVerifyEmailMutation';\n variables: SendVerifyEmailMutationVariables;\n response: SendVerifyEmailMutation;\n }\n | {\n name: 'setWorkspacePublicByIdMutation';\n variables: SetWorkspacePublicByIdMutationVariables;\n response: SetWorkspacePublicByIdMutation;\n }\n | {\n name: 'updateAccountFeaturesMutation';\n variables: UpdateAccountFeaturesMutationVariables;\n response: UpdateAccountFeaturesMutation;\n }\n | {\n name: 'updateAccountMutation';\n variables: UpdateAccountMutationVariables;\n response: UpdateAccountMutation;\n }\n | {\n name: 'updatePromptMutation';\n variables: UpdatePromptMutationVariables;\n response: UpdatePromptMutation;\n }\n | {\n name: 'updateServerRuntimeConfigsMutation';\n variables: UpdateServerRuntimeConfigsMutationVariables;\n response: UpdateServerRuntimeConfigsMutation;\n }\n | {\n name: 'updateSubscriptionMutation';\n variables: UpdateSubscriptionMutationVariables;\n response: UpdateSubscriptionMutation;\n }\n | {\n name: 'updateUserProfileMutation';\n variables: UpdateUserProfileMutationVariables;\n response: UpdateUserProfileMutation;\n }\n | {\n name: 'uploadAvatarMutation';\n variables: UploadAvatarMutationVariables;\n response: UploadAvatarMutation;\n }\n | {\n name: 'verifyEmailMutation';\n variables: VerifyEmailMutationVariables;\n response: VerifyEmailMutation;\n }\n | {\n name: 'setWorkspaceExperimentalFeatureMutation';\n variables: SetWorkspaceExperimentalFeatureMutationVariables;\n response: SetWorkspaceExperimentalFeatureMutation;\n }\n | {\n name: 'addWorkspaceFeatureMutation';\n variables: AddWorkspaceFeatureMutationVariables;\n response: AddWorkspaceFeatureMutation;\n }\n | {\n name: 'removeWorkspaceFeatureMutation';\n variables: RemoveWorkspaceFeatureMutationVariables;\n response: RemoveWorkspaceFeatureMutation;\n }\n | {\n name: 'inviteByEmailMutation';\n variables: InviteByEmailMutationVariables;\n response: InviteByEmailMutation;\n }\n | {\n name: 'acceptInviteByInviteIdMutation';\n variables: AcceptInviteByInviteIdMutationVariables;\n response: AcceptInviteByInviteIdMutation;\n };\n","// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n// Run `yarn run download-resources` to regenerate.\n// If you need to update the code, please edit `i18n/src/scripts/download.ts` inside your project.\nimport ar from './ar.json';\nimport ca from './ca.json';\nimport da from './da.json';\nimport de from './de.json';\nimport en from './en.json';\nimport en_US from './en-US.json';\nimport es from './es.json';\nimport es_AR from './es-AR.json';\nimport es_CL from './es-CL.json';\nimport fr from './fr.json';\nimport hi from './hi.json';\nimport it from './it.json';\nimport ja from './ja.json';\nimport ko from './ko.json';\nimport pt_BR from './pt-BR.json';\nimport ru from './ru.json';\nimport sv_SE from './sv-SE.json';\nimport ur from './ur.json';\nimport zh_Hans from './zh-Hans.json';\nimport zh_Hant from './zh-Hant.json';\n\nexport const LOCALES = [\n {\n id: 1000040010,\n name: 'Korean (South Korea)',\n tag: 'ko',\n originalName: '한국어(대한민국)',\n flagEmoji: '🇰🇷',\n base: false,\n completeRate: 0.726,\n res: ko,\n },\n {\n id: 1000040021,\n name: 'Portuguese (Brazil)',\n tag: 'pt-BR',\n originalName: 'português (Brasil)',\n flagEmoji: '🇧🇷',\n base: false,\n completeRate: 0.317,\n res: pt_BR,\n },\n {\n id: 1000040001,\n name: 'English',\n tag: 'en',\n originalName: 'English',\n flagEmoji: '🇬🇧',\n base: true,\n completeRate: 1,\n res: en,\n },\n {\n id: 1000040003,\n name: 'Traditional Chinese',\n tag: 'zh-Hant',\n originalName: '繁體中文',\n flagEmoji: '🇭🇰',\n base: false,\n completeRate: 0.34,\n res: zh_Hant,\n },\n {\n id: 1000040004,\n name: 'Simplified Chinese',\n tag: 'zh-Hans',\n originalName: '简体中文',\n flagEmoji: '🇨🇳',\n base: false,\n completeRate: 0.974,\n res: zh_Hans,\n },\n {\n id: 1000040006,\n name: 'French',\n tag: 'fr',\n originalName: 'français',\n flagEmoji: '🇫🇷',\n base: false,\n completeRate: 0.877,\n res: fr,\n },\n {\n id: 1000040008,\n name: 'Spanish',\n tag: 'es',\n originalName: 'español',\n flagEmoji: '🇪🇸',\n base: false,\n completeRate: 0.241,\n res: es,\n },\n {\n id: 1000040009,\n name: 'German',\n tag: 'de',\n originalName: 'Deutsch',\n flagEmoji: '🇩🇪',\n base: false,\n completeRate: 0.277,\n res: de,\n },\n {\n id: 1000040011,\n name: 'Russian',\n tag: 'ru',\n originalName: 'русский',\n flagEmoji: '🇷🇺',\n base: false,\n completeRate: 0.913,\n res: ru,\n },\n {\n id: 1000040014,\n name: 'Japanese',\n tag: 'ja',\n originalName: '日本語',\n flagEmoji: '🇯🇵',\n base: false,\n completeRate: 0.414,\n res: ja,\n },\n {\n id: 1000040023,\n name: 'Italian',\n tag: 'it',\n originalName: 'italiano',\n flagEmoji: '🇮🇹',\n base: false,\n completeRate: 0.001,\n res: it,\n },\n {\n id: 1000070001,\n name: 'Catalan',\n tag: 'ca',\n originalName: 'català',\n flagEmoji: '🇦🇩',\n base: false,\n completeRate: 0.063,\n res: ca,\n },\n {\n id: 1000074001,\n name: 'Danish',\n tag: 'da',\n originalName: 'dansk',\n flagEmoji: '🇩🇰',\n base: false,\n completeRate: 0.094,\n res: da,\n },\n {\n id: 1000074002,\n name: 'English (United States)',\n tag: 'en-US',\n originalName: 'English (United States)',\n flagEmoji: '🇺🇸',\n base: false,\n completeRate: 0.009,\n res: en_US,\n },\n {\n id: 1000074003,\n name: 'Spanish (Chile)',\n tag: 'es-CL',\n originalName: 'español (Chile)',\n flagEmoji: '🇨🇱',\n base: false,\n completeRate: 0.026,\n res: es_CL,\n },\n {\n id: 1000074004,\n name: 'Hindi',\n tag: 'hi',\n originalName: 'हिन्दी',\n flagEmoji: '🇮🇳',\n base: false,\n completeRate: 0.016,\n res: hi,\n },\n {\n id: 1000134010,\n name: 'Swedish (Sweden)',\n tag: 'sv-SE',\n originalName: 'svenska (Sverige)',\n flagEmoji: '🇸🇪',\n base: false,\n completeRate: 0.059,\n res: sv_SE,\n },\n {\n id: 1000134011,\n name: 'Spanish (Argentina)',\n tag: 'es-AR',\n originalName: 'español (Argentina)',\n flagEmoji: '🇦🇷',\n base: false,\n completeRate: 0.094,\n res: es_AR,\n },\n {\n id: 1000134012,\n name: 'Urdu',\n tag: 'ur',\n originalName: 'اردو',\n flagEmoji: '🇵🇰',\n base: false,\n completeRate: 0.021,\n res: ur,\n },\n {\n id: 1000134005,\n name: 'Arabic',\n tag: 'ar',\n originalName: 'العربية',\n flagEmoji: '🇸🇦',\n base: false,\n completeRate: 0.974,\n res: ar,\n },\n] as const;\n","import { useMemo } from 'react';\nimport { getI18n, useTranslation } from 'react-i18next';\n\nimport type { useAFFiNEI18N } from './i18n-generated';\n\nexport type I18nFuncs = ReturnType;\n\nexport type I18nInfos = {\n [K in keyof I18nFuncs]: I18nFuncs[K] extends (...a: infer Opt) => any\n ? Opt[0]\n : never;\n};\n\nexport type I18nKeys = keyof I18nInfos;\n\nexport type I18nString =\n | {\n [K in I18nKeys]: {\n key: K;\n } & (I18nInfos[K] extends undefined\n ? unknown\n : { options: I18nInfos[K] });\n }[I18nKeys]\n | string;\n\nexport const isI18nString = (value: any): value is I18nString => {\n return (\n typeof value === 'string' || (typeof value === 'object' && 'key' in value)\n );\n};\n\nfunction createI18nWrapper(\n getI18nFn: () => ReturnType,\n getI18nT: () => ReturnType['t']\n) {\n const I18nMethod = {\n t(i18nStr: I18nString) {\n const i18n = getI18nFn();\n if (typeof i18nStr === 'object') {\n return i18n.t(i18nStr.key, 'options' in i18nStr ? i18nStr.options : {});\n }\n return i18nStr;\n },\n get language() {\n const i18n = getI18nFn();\n return i18n.language;\n },\n changeLanguage(lng?: string | undefined) {\n const i18n = getI18nFn();\n return i18n.changeLanguage(lng);\n },\n get on() {\n const i18n = getI18nFn();\n return i18n.on.bind(i18n);\n },\n };\n\n return new Proxy(I18nMethod, {\n get(self, key) {\n const i18n = getI18nFn();\n if (typeof key === 'string' && i18n.exists(key)) {\n return getI18nT().bind(null, key as string);\n } else {\n return (self as any)[key as string] as any;\n }\n },\n }) as I18nFuncs & typeof I18nMethod;\n}\n\nexport const useI18n = () => {\n const { i18n, t } = useTranslation();\n return useMemo(\n () =>\n createI18nWrapper(\n () => i18n,\n () => t\n ),\n [i18n, t]\n );\n};\n\n/**\n * I18n['com.arms.xxx']({ arg1: 'hello' }) -> '中文 hello'\n */\nexport const I18n = createI18nWrapper(getI18n, () => getI18n().t);\nexport type I18n = typeof I18n;\n","import dayjs from 'dayjs';\n\nimport { I18n } from '../i18n';\n\nexport type TimeUnit =\n | 'second'\n | 'minute'\n | 'hour'\n | 'day'\n | 'week'\n | 'month'\n | 'year';\n\nconst timeUnitCode = {\n second: 1,\n minute: 2,\n hour: 3,\n day: 4,\n week: 5,\n month: 6,\n year: 7,\n} satisfies Record;\n\n/**\n * ```ts\n * // timestamp to string\n * i18nTime(1728538228000) -> 'Oct 10, 2024, 1:30:28 PM'\n *\n * // absolute time string\n * i18nTime('2024-10-10 13:30:28', { absolute: { accuracy: 'minute' } }) -> '2024-10-10 13:30 PM'\n * i18nTime('2024-10-10 13:30:28', { absolute: { accuracy: 'minute', noDate: true } }) -> '13:30 PM'\n * i18nTime('2024-10-10 13:30:28', { absolute: { accuracy: 'minute', noYear: true } }) -> 'Oct 10, 13:30 PM'\n * i18nTime('2024-10-10 13:30:28', { absolute: { accuracy: 'day' } }) -> 'Oct 10, 2024'\n *\n * // relative time string\n * i18nTime('2024-10-10 13:30:30', { relative: true }) -> 'now'\n * i18nTime('2024-10-10 13:30:00', { relative: true }) -> '30s ago'\n * i18nTime('2024-10-10 13:30:30', { relative: { accuracy: 'minute' } }) -> '2m ago'\n *\n * // show absolute time string if time is pass 1 day\n * i18nTime('2024-10-9 14:30:30', { relative: { max: [1, 'day'] } }) -> '23h ago'\n * i18nTime('2024-10-9 13:30:30', { relative: { max: [1, 'day'] } }) -> 'Oct 9, 2024, 1:30:30 PM'\n * ```\n */\nexport function i18nTime(\n time: dayjs.ConfigType,\n options: {\n // override i18n instance, default is global I18n instance\n i18n?: I18n;\n // override now time, default is current time\n now?: dayjs.ConfigType;\n relative?:\n | {\n // max time to show relative time, if time is pass this time, show absolute time\n max?: [number, TimeUnit];\n // show time with this accuracy\n accuracy?: TimeUnit;\n // show weekday, e.g. 'Monday', 'Tuesday', etc.\n weekday?: boolean;\n // show 'yesterday' or 'tomorrow' if time is\n yesterdayAndTomorrow?: boolean;\n }\n | true; // use default relative option\n absolute?: {\n // show time with this accuracy\n accuracy?: TimeUnit;\n // hide year\n noYear?: boolean;\n // hide date (year, month, day)\n noDate?: boolean;\n };\n } = {}\n) {\n const i18n = options.i18n ?? I18n;\n time = dayjs(time);\n if (!time.isValid()) {\n return ''; // invalid time, return empty string\n }\n\n const now = dayjs(options.now);\n\n const defaultRelativeOption = {\n max: [1000, 'year'],\n accuracy: 'second',\n weekday: false,\n yesterdayAndTomorrow: true,\n } satisfies typeof options.relative;\n\n const relativeOption = options.relative\n ? options.relative === true\n ? defaultRelativeOption\n : {\n ...defaultRelativeOption,\n ...options.relative,\n }\n : null;\n\n const defaultAbsoluteOption = {\n accuracy: 'second',\n noYear: false,\n noDate: false,\n } satisfies typeof options.absolute;\n\n const absoluteOption = {\n ...defaultAbsoluteOption,\n ...options.absolute,\n };\n\n if (relativeOption) {\n // show relative\n\n const formatter = new Intl.RelativeTimeFormat(i18n.language, {\n style: 'narrow',\n numeric: relativeOption.yesterdayAndTomorrow ? 'auto' : 'always',\n });\n\n const timeUnitProcessor = {\n second: () => {\n const diffSecond = time.diff(now) / 1000;\n if (Math.abs(diffSecond) < 1) {\n return i18n['com.arms.time.now']();\n }\n if (\n relativeOption.max[1] === 'second' &&\n Math.abs(diffSecond) >= relativeOption.max[0]\n ) {\n return false;\n }\n if (Math.abs(diffSecond) < 60) {\n return formatter.format(Math.trunc(diffSecond), 'second');\n }\n return null;\n },\n minute: () => {\n const diffMinute = time.diff(now) / 1000 / 60;\n if (Math.abs(diffMinute) < 1) {\n return i18n['com.arms.time.now']();\n }\n if (\n relativeOption.max[1] === 'minute' &&\n Math.abs(diffMinute) >= relativeOption.max[0]\n ) {\n return false;\n }\n if (Math.abs(diffMinute) < 60) {\n return formatter.format(Math.trunc(diffMinute), 'minute');\n }\n return null;\n },\n hour: () => {\n const diffHour = time.diff(now) / 1000 / 60 / 60;\n if (Math.abs(diffHour) < 1) {\n return i18n['com.arms.time.now']();\n }\n if (\n relativeOption.max[1] === 'hour' &&\n Math.abs(diffHour) >= relativeOption.max[0]\n ) {\n return false;\n }\n if (Math.abs(diffHour) < 24) {\n return formatter.format(Math.trunc(diffHour), 'hour');\n }\n return null;\n },\n day: () => {\n const diffDay = time.startOf('day').diff(now.startOf('day'), 'day');\n if (Math.abs(diffDay) < 1) {\n return i18n['com.arms.time.today']();\n }\n if (\n relativeOption.max[1] === 'day' &&\n Math.abs(diffDay) >= relativeOption.max[0]\n ) {\n return false;\n }\n if (relativeOption.yesterdayAndTomorrow && Math.abs(diffDay) < 2) {\n return formatter.format(Math.trunc(diffDay), 'day');\n } else if (relativeOption.weekday && Math.abs(diffDay) < 7) {\n return new Intl.DateTimeFormat(i18n.language, {\n weekday: 'long',\n }).format(time.startOf('day').toDate());\n } else if (Math.abs(diffDay) < 7) {\n return formatter.format(Math.trunc(diffDay), 'day');\n }\n return null;\n },\n week: () => {\n const inSameMonth = time.startOf('month').isSame(now.startOf('month'));\n const diffWeek = time.startOf('week').diff(now.startOf('week'), 'week');\n if (Math.abs(diffWeek) < 1) {\n return i18n['com.arms.time.this-week']();\n }\n if (\n relativeOption.max[1] === 'week' &&\n Math.abs(diffWeek) >= relativeOption.max[0]\n ) {\n return false;\n }\n if (inSameMonth || Math.abs(diffWeek) < 3) {\n return formatter.format(Math.trunc(diffWeek), 'week');\n }\n return null;\n },\n month: () => {\n const diffMonth = time\n .startOf('month')\n .diff(now.startOf('month'), 'month');\n if (Math.abs(diffMonth) < 1) {\n return i18n['com.arms.time.this-mouth']();\n }\n if (\n relativeOption.max[1] === 'month' &&\n Math.abs(diffMonth) >= relativeOption.max[0]\n ) {\n return false;\n }\n if (Math.abs(diffMonth) < 12) {\n return formatter.format(Math.trunc(diffMonth), 'month');\n }\n return null;\n },\n year: () => {\n const diffYear = time.startOf('year').diff(now.startOf('year'), 'year');\n if (Math.abs(diffYear) < 1) {\n return i18n['com.arms.time.this-year']();\n }\n if (\n relativeOption.max[1] === 'year' &&\n Math.abs(diffYear) >= relativeOption.max[0]\n ) {\n return false;\n }\n return formatter.format(Math.trunc(diffYear), 'year');\n },\n } as Record string | false | null>;\n\n const processors = Object.entries(timeUnitProcessor).sort(\n (a, b) => timeUnitCode[a[0] as TimeUnit] - timeUnitCode[b[0] as TimeUnit]\n ) as [TimeUnit, () => string | false | null][];\n\n for (const [unit, processor] of processors) {\n if (timeUnitCode[relativeOption.accuracy] > timeUnitCode[unit]) {\n continue;\n }\n const result = processor();\n if (result) {\n return result;\n }\n if (result === false) {\n break;\n }\n }\n }\n\n // show absolute\n const formatter = new Intl.DateTimeFormat(i18n.language, {\n year:\n !absoluteOption.noYear && !absoluteOption.noDate ? 'numeric' : undefined,\n month:\n !absoluteOption.noDate &&\n timeUnitCode[absoluteOption.accuracy] <= timeUnitCode['month']\n ? 'short'\n : undefined,\n day:\n !absoluteOption.noDate &&\n timeUnitCode[absoluteOption.accuracy] <= timeUnitCode['day']\n ? 'numeric'\n : undefined,\n hour:\n timeUnitCode[absoluteOption.accuracy] <= timeUnitCode['hour']\n ? 'numeric'\n : undefined,\n minute:\n timeUnitCode[absoluteOption.accuracy] <= timeUnitCode['minute']\n ? 'numeric'\n : undefined,\n second:\n timeUnitCode[absoluteOption.accuracy] <= timeUnitCode['second']\n ? 'numeric'\n : undefined,\n });\n\n return formatter.format(time.toDate());\n}\n","import type { i18n, Resource } from 'i18next';\nimport i18next from 'i18next';\nimport type { I18nextProviderProps } from 'react-i18next';\nimport { I18nextProvider, initReactI18next, Trans } from 'react-i18next';\n\nimport { LOCALES } from './resources';\nimport type en_US from './resources/en.json';\n\nexport * from './i18n';\nexport * from './utils';\n\ndeclare module 'i18next' {\n // Refs: https://www.i18next.com/overview/typescript#argument-of-type-defaulttfuncreturn-is-not-assignable-to-parameter-of-type-xyz\n interface CustomTypeOptions {\n returnNull: false;\n }\n}\n\n// const localStorage = {\n// getItem() {\n// return undefined;\n// },\n// setItem() {},\n// };\n// See https://react.i18next.com/latest/typescript\ndeclare module 'react-i18next' {\n interface CustomTypeOptions {\n // custom namespace type if you changed it\n // defaultNS: 'ns1';\n // custom resources type\n allowObjectInHTMLChildren: true;\n resources: {\n en: typeof en_US;\n };\n }\n}\n\nconst STORAGE_KEY = 'i18n_lng';\n\nexport { I18nextProvider, LOCALES, Trans };\n\nconst resources = LOCALES.reduce((acc, { tag, res }) => {\n return Object.assign(acc, { [tag]: { translation: res } });\n}, {});\n\nconst fallbackLng = 'en';\nconst standardizeLocale = (language: string) => {\n if (language === 'zh-CN' || language === 'zh' || language === 'zh-Hans') {\n language = 'zh-Hans';\n } else if (language.slice(0, 2).toLowerCase() === 'zh') {\n language = 'zh-Hant';\n }\n if (LOCALES.some(locale => locale.tag === language)) return language;\n if (\n LOCALES.some(locale => locale.tag === language.slice(0, 2).toLowerCase())\n ) {\n return language.slice(0, 2).toLowerCase();\n }\n\n return fallbackLng;\n};\n\nexport const createI18n = (): I18nextProviderProps['i18n'] => {\n const i18n: I18nextProviderProps['i18n'] = i18next.createInstance();\n i18n\n .use(initReactI18next)\n .init({\n lng: 'en',\n fallbackLng,\n debug: false,\n resources,\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n })\n .then(() => {\n console.info('i18n init success');\n })\n .catch(() => {\n console.error('i18n init failed');\n });\n\n if (globalThis.localStorage) {\n i18n.on('languageChanged', lng => {\n localStorage.setItem(STORAGE_KEY, lng);\n });\n }\n return i18n;\n};\n\nexport function setUpLanguage(i: i18n) {\n let language;\n const localStorageLanguage = localStorage.getItem(STORAGE_KEY);\n if (localStorageLanguage) {\n language = standardizeLocale(localStorageLanguage);\n } else {\n language = standardizeLocale(navigator.language);\n }\n return i.changeLanguage(language);\n}\n","import { mixpanel } from '@affine/core/mixpanel';\nimport type { EventProps } from '@affine/core/mixpanel/types';\nimport type { QuotaQuery } from '@affine/graphql';\nimport type { GlobalContextService } from '@toeverything/infra';\nimport { ApplicationStarted, OnEvent, Service } from '@toeverything/infra';\n\nimport {\n AccountChanged,\n type AuthAccountInfo,\n type AuthService,\n} from '../../cloud';\nimport { AccountLoggedOut } from '../../cloud/services/auth';\nimport { UserQuotaChanged } from '../../cloud/services/user-quota';\n\n@OnEvent(ApplicationStarted, e => e.onApplicationStart)\n@OnEvent(AccountChanged, e => e.updateIdentity)\n@OnEvent(AccountLoggedOut, e => e.onAccountLoggedOut)\n@OnEvent(UserQuotaChanged, e => e.onUserQuotaChanged)\nexport class TelemetryService extends Service {\n private prevQuota: NonNullable['quota'] | null =\n null;\n private readonly disposables: (() => void)[] = [];\n\n constructor(\n private readonly auth: AuthService,\n private readonly globalContextService: GlobalContextService\n ) {\n super();\n }\n\n onApplicationStart() {\n const account = this.auth.session.account$.value;\n this.updateIdentity(account);\n this.registerMiddlewares();\n }\n\n updateIdentity(account: AuthAccountInfo | null) {\n if (!account) {\n return;\n }\n mixpanel.identify(account.id);\n mixpanel.people.set({\n $email: account.email,\n $name: account.label,\n $avatar: account.avatar,\n });\n }\n\n onAccountLoggedOut() {\n mixpanel.reset();\n }\n\n onUserQuotaChanged(quota: NonNullable['quota']) {\n const plan = quota?.humanReadable.name;\n // only set when plan is not empty and changed\n if (plan !== this.prevQuota?.humanReadable.name && plan) {\n mixpanel.people.set({\n plan: quota?.humanReadable.name,\n });\n }\n this.prevQuota = quota;\n }\n\n registerMiddlewares() {\n this.disposables.push(\n mixpanel.middleware((_event, parameters) => {\n const extraContext = this.extractGlobalContext();\n return {\n ...extraContext,\n ...parameters,\n };\n })\n );\n }\n\n extractGlobalContext(): EventProps {\n const globalContext = this.globalContextService.globalContext;\n const page = globalContext.isDoc.get()\n ? globalContext.isTrashDoc.get()\n ? 'trash'\n : globalContext.docMode.get() === 'page'\n ? 'doc'\n : 'edgeless'\n : globalContext.isAllDocs.get()\n ? 'allDocs'\n : globalContext.isTrash.get()\n ? 'trash'\n : globalContext.isCollection.get()\n ? 'collection'\n : globalContext.isTag.get()\n ? 'tag'\n : undefined;\n return { page };\n }\n\n override dispose(): void {\n this.disposables.forEach(dispose => dispose());\n super.dispose();\n }\n}\n","import type { ReactNode } from 'react';\nimport { cloneElement } from 'react';\n\ninterface ProviderComposerProps {\n contexts: any;\n children: ReactNode;\n}\n\nexport const ProviderComposer = ({\n contexts,\n children,\n}: ProviderComposerProps) =>\n contexts.reduceRight(\n (kids: ReactNode, parent: any) =>\n cloneElement(parent, {\n children: kids,\n }),\n children\n );\n","import { apis } from '@affine/electron-api';\nimport { ThemeProvider as NextThemeProvider, useTheme } from 'next-themes';\nimport type { PropsWithChildren } from 'react';\nimport { memo, useRef } from 'react';\n\nconst themes = ['dark', 'light'];\n\nconst DesktopThemeSync = memo(function DesktopThemeSync() {\n const { theme } = useTheme();\n const lastThemeRef = useRef(theme);\n const onceRef = useRef(false);\n if (lastThemeRef.current !== theme || !onceRef.current) {\n if (environment.isDesktop && theme) {\n apis?.ui\n .handleThemeChange(theme as 'dark' | 'light' | 'system')\n .catch(err => {\n console.error(err);\n });\n }\n lastThemeRef.current = theme;\n onceRef.current = true;\n }\n return null;\n});\n\nexport const ThemeProvider = ({ children }: PropsWithChildren) => {\n return (\n \n {children}\n \n \n );\n};\n","import { ProviderComposer } from '@affine/component/provider-composer';\nimport { ThemeProvider } from '@affine/component/theme-provider';\nimport type { createStore } from 'jotai';\nimport { Provider } from 'jotai';\nimport type { PropsWithChildren } from 'react';\nimport { useMemo } from 'react';\n\nimport { ConfirmModalProvider } from '../../ui/modal';\n\nexport type AffineContextProps = PropsWithChildren<{\n store?: ReturnType;\n}>;\n\nexport function AffineContext(props: AffineContextProps) {\n return (\n \n [\n ,\n ,\n ,\n ].filter(Boolean),\n [props.store]\n )}\n >\n {props.children}\n \n );\n}\n","import { type DocMeta } from '@blocksuite/store';\nimport { isEqual } from 'lodash-es';\nimport { distinctUntilChanged, Observable } from 'rxjs';\n\nimport { Store } from '../../../framework';\nimport type { WorkspaceLocalState, WorkspaceService } from '../../workspace';\nimport type { DocMode } from '../entities/record';\n\nexport class DocsStore extends Store {\n constructor(\n private readonly workspaceService: WorkspaceService,\n private readonly localState: WorkspaceLocalState\n ) {\n super();\n }\n\n getBlockSuiteDoc(id: string) {\n return this.workspaceService.workspace.docCollection.getDoc(id);\n }\n\n createBlockSuiteDoc() {\n return this.workspaceService.workspace.docCollection.createDoc();\n }\n\n watchDocIds() {\n return new Observable(subscriber => {\n const emit = () => {\n subscriber.next(\n this.workspaceService.workspace.docCollection.meta.docMetas.map(\n v => v.id\n )\n );\n };\n\n emit();\n\n const dispose =\n this.workspaceService.workspace.docCollection.meta.docMetaUpdated.on(\n emit\n ).dispose;\n return () => {\n dispose();\n };\n });\n }\n\n watchTrashDocIds() {\n return new Observable(subscriber => {\n const emit = () => {\n subscriber.next(\n this.workspaceService.workspace.docCollection.meta.docMetas\n .map(v => (v.trash ? v.id : null))\n .filter(Boolean) as string[]\n );\n };\n\n emit();\n\n const dispose =\n this.workspaceService.workspace.docCollection.meta.docMetaUpdated.on(\n emit\n ).dispose;\n return () => {\n dispose();\n };\n });\n }\n\n watchDocMeta(id: string) {\n let meta: DocMeta | null = null;\n return new Observable>(subscriber => {\n const emit = () => {\n if (meta === null) {\n // getDocMeta is heavy, so we cache the doc meta reference\n meta =\n this.workspaceService.workspace.docCollection.meta.getDocMeta(id) ||\n null;\n }\n subscriber.next({ ...meta });\n };\n\n emit();\n\n const dispose =\n this.workspaceService.workspace.docCollection.meta.docMetaUpdated.on(\n emit\n ).dispose;\n return () => {\n dispose();\n };\n }).pipe(distinctUntilChanged((p, c) => isEqual(p, c)));\n }\n\n watchDocListReady() {\n return this.workspaceService.workspace.engine.rootDocState$\n .map(state => !state.syncing)\n .asObservable();\n }\n\n setDocMeta(id: string, meta: Partial) {\n this.workspaceService.workspace.docCollection.setDocMeta(id, meta);\n }\n\n setDocModeSetting(id: string, mode: DocMode) {\n return this.localState.set(`page:${id}:mode`, mode);\n }\n\n getDocModeSetting(id: string) {\n return this.localState.get(`page:${id}:mode`);\n }\n\n watchDocModeSetting(id: string) {\n return this.localState.watch(`page:${id}:mode`);\n }\n\n waitForDocLoadReady(id: string) {\n return this.workspaceService.workspace.engine.doc.waitForReady(id);\n }\n\n setPriorityLoad(id: string, priority: number) {\n return this.workspaceService.workspace.engine.doc.setPriority(id, priority);\n }\n\n markDocSyncStateAsReady(id: string) {\n this.workspaceService.workspace.engine.doc.markAsReady(id);\n }\n}\n","export { GlobalCache, GlobalState } from './providers/global';\nexport { GlobalCacheService, GlobalStateService } from './services/global';\n\nimport type { Framework } from '../../framework';\nimport { MemoryMemento } from '../../storage';\nimport { GlobalCache, GlobalState } from './providers/global';\nimport { GlobalCacheService, GlobalStateService } from './services/global';\n\nexport const configureGlobalStorageModule = (framework: Framework) => {\n framework.service(GlobalStateService, [GlobalState]);\n framework.service(GlobalCacheService, [GlobalCache]);\n};\n\nexport const configureTestingGlobalStorage = (framework: Framework) => {\n framework.impl(GlobalCache, MemoryMemento);\n framework.impl(GlobalState, MemoryMemento);\n};\n","import { Entity } from '../../../framework';\nimport { LiveData } from '../../../livedata';\nimport type { WorkspaceFlavourProvider } from '../providers/flavour';\n\nexport class WorkspaceList extends Entity {\n workspaces$ = new LiveData(this.providers.map(p => p.workspaces$))\n .map(v => {\n return v;\n })\n .flat()\n .map(workspaces => {\n return workspaces.flat();\n });\n isLoading$ = new LiveData(\n this.providers.map(p => p.isLoading$ ?? new LiveData(false))\n )\n .flat()\n .map(isLoadings => isLoadings.some(isLoading => isLoading));\n\n constructor(private readonly providers: WorkspaceFlavourProvider[]) {\n super();\n }\n\n revalidate() {\n this.providers.forEach(provider => provider.revalidate?.());\n }\n}\n","import { DebugLogger } from '@affine/debug';\nimport { isEqual } from 'lodash-es';\nimport { catchError, EMPTY, exhaustMap, mergeMap } from 'rxjs';\n\nimport { Entity } from '../../../framework';\nimport {\n effect,\n fromPromise,\n LiveData,\n onComplete,\n onStart,\n} from '../../../livedata';\nimport type { WorkspaceMetadata } from '../metadata';\nimport type { WorkspaceFlavourProvider } from '../providers/flavour';\nimport type { WorkspaceProfileCacheStore } from '../stores/profile-cache';\nimport type { Workspace } from './workspace';\n\nconst logger = new DebugLogger('affine:workspace-profile');\n\nexport interface WorkspaceProfileInfo {\n avatar?: string;\n name?: string;\n isOwner?: boolean;\n}\n\n/**\n * # WorkspaceProfile\n *\n * This class take care of workspace avatar and name\n */\nexport class WorkspaceProfile extends Entity<{ metadata: WorkspaceMetadata }> {\n private readonly provider: WorkspaceFlavourProvider | null;\n\n get id() {\n return this.props.metadata.id;\n }\n\n profile$ = LiveData.from(\n this.cache.watchProfileCache(this.props.metadata.id),\n null\n );\n\n avatar$ = this.profile$.map(v => v?.avatar);\n name$ = this.profile$.map(v => v?.name);\n\n isLoading$ = new LiveData(false);\n\n constructor(\n private readonly cache: WorkspaceProfileCacheStore,\n providers: WorkspaceFlavourProvider[]\n ) {\n super();\n\n this.provider =\n providers.find(p => p.flavour === this.props.metadata.flavour) ?? null;\n }\n\n private setProfile(info: WorkspaceProfileInfo) {\n if (isEqual(this.profile$.value, info)) {\n return;\n }\n this.cache.setProfileCache(this.props.metadata.id, info);\n }\n\n revalidate = effect(\n exhaustMap(() => {\n const provider = this.provider;\n if (!provider) {\n return EMPTY;\n }\n return fromPromise(signal =>\n provider.getWorkspaceProfile(this.props.metadata.id, signal)\n ).pipe(\n mergeMap(info => {\n if (info) {\n this.setProfile({ ...this.profile$.value, ...info });\n }\n return EMPTY;\n }),\n catchError(err => {\n logger.error(err);\n return EMPTY;\n }),\n onStart(() => this.isLoading$.next(true)),\n onComplete(() => this.isLoading$.next(false))\n );\n })\n );\n\n syncWithWorkspace(workspace: Workspace) {\n workspace.name$.subscribe(name => {\n const old = this.profile$.value;\n this.setProfile({ ...old, name: name ?? old?.name });\n });\n workspace.avatar$.subscribe(avatar => {\n const old = this.profile$.value;\n this.setProfile({ ...old, avatar: avatar ?? old?.avatar });\n });\n }\n}\n","import { type Memento, wrapMemento } from '../../../storage';\nimport type { GlobalCache, GlobalState } from '../../storage';\nimport type {\n WorkspaceLocalCache,\n WorkspaceLocalState,\n} from '../providers/storage';\nimport type { WorkspaceService } from '../services/workspace';\n\nexport class WorkspaceLocalStateImpl implements WorkspaceLocalState {\n wrapped: Memento;\n constructor(workspaceService: WorkspaceService, globalState: GlobalState) {\n this.wrapped = wrapMemento(\n globalState,\n `workspace-state:${workspaceService.workspace.id}:`\n );\n }\n\n keys(): string[] {\n return this.wrapped.keys();\n }\n\n get(key: string): T | undefined {\n return this.wrapped.get(key);\n }\n\n watch(key: string) {\n return this.wrapped.watch(key);\n }\n\n set(key: string, value: T): void {\n return this.wrapped.set(key, value);\n }\n\n del(key: string): void {\n return this.wrapped.del(key);\n }\n\n clear(): void {\n return this.wrapped.clear();\n }\n}\n\nexport class WorkspaceLocalCacheImpl implements WorkspaceLocalCache {\n wrapped: Memento;\n constructor(workspaceService: WorkspaceService, globalCache: GlobalCache) {\n this.wrapped = wrapMemento(\n globalCache,\n `workspace-cache:${workspaceService.workspace.id}:`\n );\n }\n\n keys(): string[] {\n return this.wrapped.keys();\n }\n\n get(key: string): T | undefined {\n return this.wrapped.get(key);\n }\n\n watch(key: string) {\n return this.wrapped.watch(key);\n }\n\n set(key: string, value: T): void {\n return this.wrapped.set(key, value);\n }\n\n del(key: string): void {\n return this.wrapped.del(key);\n }\n\n clear(): void {\n return this.wrapped.clear();\n }\n}\n","import { Service } from '../../../framework';\nimport type { WorkspaceMetadata } from '../metadata';\nimport type { WorkspaceFlavourProvider } from '../providers/flavour';\n\nexport class WorkspaceDestroyService extends Service {\n constructor(private readonly providers: WorkspaceFlavourProvider[]) {\n super();\n }\n\n deleteWorkspace = async (metadata: WorkspaceMetadata) => {\n const provider = this.providers.find(p => p.flavour === metadata.flavour);\n if (!provider) {\n throw new Error(`Unknown workspace flavour: ${metadata.flavour}`);\n }\n return provider.deleteWorkspace(metadata.id);\n };\n}\n","import type { WorkspaceFlavour } from '@affine/env/workspace';\nimport type { DocCollection } from '@blocksuite/store';\n\nimport { Service } from '../../../framework';\nimport type { BlobStorage, DocStorage } from '../../../sync';\nimport type { WorkspaceFlavourProvider } from '../providers/flavour';\n\nexport class WorkspaceFactoryService extends Service {\n constructor(private readonly providers: WorkspaceFlavourProvider[]) {\n super();\n }\n\n /**\n * create workspace\n * @param flavour workspace flavour\n * @param initial callback to put initial data to workspace\n * @returns workspace id\n */\n create = async (\n flavour: WorkspaceFlavour,\n initial: (\n docCollection: DocCollection,\n blobStorage: BlobStorage,\n docStorage: DocStorage\n ) => Promise = () => Promise.resolve()\n ) => {\n const provider = this.providers.find(x => x.flavour === flavour);\n if (!provider) {\n throw new Error(`Unknown workspace flavour: ${flavour}`);\n }\n const metadata = await provider.createWorkspace(initial);\n return metadata;\n };\n}\n","import { Service } from '../../../framework';\nimport { WorkspaceList } from '../entities/list';\n\nexport class WorkspaceListService extends Service {\n list = this.framework.createEntity(WorkspaceList);\n}\n","import { Service } from '../../../framework';\nimport { ObjectPool } from '../../../utils';\nimport { WorkspaceProfile } from '../entities/profile';\nimport type { WorkspaceMetadata } from '../metadata';\n\nexport class WorkspaceProfileService extends Service {\n pool = new ObjectPool();\n\n getProfile = (metadata: WorkspaceMetadata): WorkspaceProfile => {\n const exists = this.pool.get(metadata.id);\n if (exists) {\n return exists.obj;\n }\n\n const profile = this.framework.createEntity(WorkspaceProfile, {\n metadata,\n });\n\n return this.pool.put(metadata.id, profile).obj;\n };\n}\n","import { DebugLogger } from '@affine/debug';\n\nimport { setupEditorFlags } from '../../../atom';\nimport { fixWorkspaceVersion } from '../../../blocksuite';\nimport { Service } from '../../../framework';\nimport { ObjectPool } from '../../../utils';\nimport type { Workspace } from '../entities/workspace';\nimport type { WorkspaceOpenOptions } from '../open-options';\nimport type { WorkspaceFlavourProvider } from '../providers/flavour';\nimport { WorkspaceScope } from '../scopes/workspace';\nimport type { WorkspaceProfileService } from './profile';\nimport { WorkspaceService } from './workspace';\n\nconst logger = new DebugLogger('affine:workspace-repository');\n\nexport class WorkspaceRepositoryService extends Service {\n constructor(\n private readonly providers: WorkspaceFlavourProvider[],\n private readonly profileRepo: WorkspaceProfileService\n ) {\n super();\n }\n pool = new ObjectPool({\n onDelete(workspace) {\n workspace.scope.dispose();\n },\n onDangling(workspace) {\n return workspace.canGracefulStop;\n },\n });\n\n /**\n * open workspace reference by metadata.\n *\n * You basically don't need to call this function directly, use the react hook `useWorkspace(metadata)` instead.\n *\n * @returns the workspace reference and a release function, don't forget to call release function when you don't\n * need the workspace anymore.\n */\n open = (\n options: WorkspaceOpenOptions,\n customProvider?: WorkspaceFlavourProvider\n ): {\n workspace: Workspace;\n dispose: () => void;\n } => {\n if (options.isSharedMode) {\n const workspace = this.instantiate(options, customProvider);\n return {\n workspace,\n dispose: () => {\n workspace.dispose();\n },\n };\n }\n\n const exist = this.pool.get(options.metadata.id);\n if (exist) {\n return {\n workspace: exist.obj,\n dispose: exist.release,\n };\n }\n\n const workspace = this.instantiate(options, customProvider);\n // sync information with workspace list, when workspace's avatar and name changed, information will be updated\n // this.list.getInformation(metadata).syncWithWorkspace(workspace);\n\n const ref = this.pool.put(workspace.meta.id, workspace);\n\n return {\n workspace: ref.obj,\n dispose: ref.release,\n };\n };\n\n instantiate(\n openOptions: WorkspaceOpenOptions,\n customProvider?: WorkspaceFlavourProvider\n ) {\n logger.info(\n `open workspace [${openOptions.metadata.flavour}] ${openOptions.metadata.id} `\n );\n const provider =\n customProvider ??\n this.providers.find(p => p.flavour === openOptions.metadata.flavour);\n if (!provider) {\n throw new Error(\n `Unknown workspace flavour: ${openOptions.metadata.flavour}`\n );\n }\n\n const workspaceScope = this.framework.createScope(WorkspaceScope, {\n openOptions,\n flavourProvider: provider,\n });\n\n const workspace = workspaceScope.get(WorkspaceService).workspace;\n\n workspace.engine.setRootDoc(workspace.docCollection.doc);\n workspace.engine.start();\n\n // apply compatibility fix\n fixWorkspaceVersion(workspace.docCollection.doc);\n\n setupEditorFlags(workspace.docCollection);\n\n this.profileRepo\n .getProfile(openOptions.metadata)\n .syncWithWorkspace(workspace);\n\n return workspace;\n }\n}\n","import type { Doc as YDoc, Map as YMap } from 'yjs';\nimport { transact } from 'yjs';\n\n/**\n * Hard code to fix workspace version to be compatible with legacy data.\n * Let e2e to ensure the data version is correct.\n */\nexport function fixWorkspaceVersion(rootDoc: YDoc) {\n const meta = rootDoc.getMap('meta') as YMap;\n\n /**\n * It doesn't matter to upgrade workspace version from 1 or undefined to 2.\n * Blocksuite just set the value, do nothing else.\n */\n function doFix() {\n if (meta.size === 0) {\n return;\n }\n const workspaceVersion = meta.get('workspaceVersion');\n if (typeof workspaceVersion !== 'number' || workspaceVersion < 2) {\n transact(\n rootDoc,\n () => {\n meta.set('workspaceVersion', 2);\n },\n 'fixWorkspaceVersion',\n // transact as remote update, because blocksuite will skip local changes.\n false\n );\n }\n const pageVersion = meta.get('pageVersion');\n if (typeof pageVersion !== 'number' || pageVersion < 2) {\n transact(\n rootDoc,\n () => {\n meta.set('pageVersion', 2);\n },\n 'fixPageVersion',\n // transact as remote update, because blocksuite will skip local changes.\n false\n );\n }\n }\n\n doFix();\n\n // do fix every time when meta changed\n meta.observe(() => doFix());\n}\n","import { WorkspaceFlavour } from '@affine/env/workspace';\nimport { assertEquals } from '@blocksuite/global/utils';\nimport { applyUpdate, encodeStateAsUpdate } from 'yjs';\n\nimport { Service } from '../../../framework';\nimport { transformWorkspaceDBLocalToCloud } from '../../db';\nimport type { Workspace } from '../entities/workspace';\nimport type { WorkspaceMetadata } from '../metadata';\nimport type { WorkspaceDestroyService } from './destroy';\nimport type { WorkspaceFactoryService } from './factory';\n\nexport class WorkspaceTransformService extends Service {\n constructor(\n private readonly factory: WorkspaceFactoryService,\n private readonly destroy: WorkspaceDestroyService\n ) {\n super();\n }\n\n /**\n * helper function to transform local workspace to cloud workspace\n *\n * @param accountId - all local user data will be transformed to this account\n */\n transformLocalToCloud = async (\n local: Workspace,\n accountId: string\n ): Promise => {\n assertEquals(local.flavour, WorkspaceFlavour.LOCAL);\n\n await local.engine.waitForDocSynced();\n\n const newMetadata = await this.factory.create(\n WorkspaceFlavour.AFFINE_CLOUD,\n async (docCollection, blobStorage, docStorage) => {\n applyUpdate(\n docCollection.doc,\n encodeStateAsUpdate(local.docCollection.doc)\n );\n\n for (const subdoc of local.docCollection.doc.getSubdocs()) {\n for (const newSubdoc of docCollection.doc.getSubdocs()) {\n if (newSubdoc.guid === subdoc.guid) {\n applyUpdate(newSubdoc, encodeStateAsUpdate(subdoc));\n }\n }\n }\n\n // transform db\n await transformWorkspaceDBLocalToCloud(\n local.id,\n docCollection.id,\n local.engine.doc.storage.behavior,\n docStorage,\n accountId\n );\n\n const blobList = await local.engine.blob.list();\n\n for (const blobKey of blobList) {\n const blob = await local.engine.blob.get(blobKey);\n if (blob) {\n await blobStorage.set(blobKey, blob);\n }\n }\n }\n );\n\n await this.destroy.deleteWorkspace(local.meta);\n\n return newMetadata;\n };\n}\n","import { map } from 'rxjs';\n\nimport { Store } from '../../../framework';\nimport type { GlobalCache } from '../../storage';\nimport type { WorkspaceProfileInfo } from '../entities/profile';\n\nconst WORKSPACE_PROFILE_CACHE_KEY = 'workspace-information:';\n\nexport class WorkspaceProfileCacheStore extends Store {\n constructor(private readonly cache: GlobalCache) {\n super();\n }\n\n watchProfileCache(workspaceId: string) {\n return this.cache.watch(WORKSPACE_PROFILE_CACHE_KEY + workspaceId).pipe(\n map(data => {\n if (!data || typeof data !== 'object') {\n return null;\n }\n\n const info = data as WorkspaceProfileInfo;\n\n return {\n avatar: info.avatar,\n name: info.name,\n isOwner: info.isOwner,\n };\n })\n );\n }\n\n setProfileCache(workspaceId: string, info: WorkspaceProfileInfo) {\n this.cache.set(WORKSPACE_PROFILE_CACHE_KEY + workspaceId, info);\n }\n}\n","import type { GlobalCache, GlobalState, Memento } from '@toeverything/infra';\nimport { Observable } from 'rxjs';\n\nexport class LocalStorageMemento implements Memento {\n constructor(private readonly prefix: string) {}\n\n keys(): string[] {\n const keys: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key && key.startsWith(this.prefix)) {\n keys.push(key.slice(this.prefix.length));\n }\n }\n return keys;\n }\n\n get(key: string): T | undefined {\n const json = localStorage.getItem(this.prefix + key);\n return json ? JSON.parse(json) : undefined;\n }\n watch(key: string): Observable {\n return new Observable(subscriber => {\n const json = localStorage.getItem(this.prefix + key);\n const first = json ? JSON.parse(json) : undefined;\n subscriber.next(first);\n\n const channel = new BroadcastChannel(this.prefix + key);\n channel.addEventListener('message', event => {\n subscriber.next(event.data);\n });\n return () => {\n channel.close();\n };\n });\n }\n set(key: string, value: T): void {\n localStorage.setItem(this.prefix + key, JSON.stringify(value));\n const channel = new BroadcastChannel(this.prefix + key);\n channel.postMessage(value);\n channel.close();\n }\n\n del(key: string): void {\n localStorage.removeItem(this.prefix + key);\n }\n\n clear(): void {\n for (const key of this.keys()) {\n this.del(key);\n }\n }\n}\n\nexport class LocalStorageGlobalCache\n extends LocalStorageMemento\n implements GlobalCache\n{\n constructor() {\n super('global-cache:');\n }\n}\n\nexport class LocalStorageGlobalState\n extends LocalStorageMemento\n implements GlobalState\n{\n constructor() {\n super('global-state:');\n }\n}\n","import { appSettingAtom } from '@toeverything/infra';\nimport { useAtomValue } from 'jotai/react';\nimport { useLayoutEffect } from 'react';\n\nimport { enableAutoTrack, mixpanel } from './mixpanel';\n\nexport function Telemetry() {\n const settings = useAtomValue(appSettingAtom);\n useLayoutEffect(() => {\n if (settings.enableTelemetry === false) {\n mixpanel.opt_out_tracking();\n return;\n } else {\n return enableAutoTrack(document.body, mixpanel.track);\n }\n }, [settings.enableTelemetry]);\n return null;\n}\n","import '@affine/component/theme/global.css';\nimport '@affine/component/theme/theme.css';\n\nimport { NotificationCenter } from '@affine/component';\nimport { AffineContext } from '@affine/component/context';\nimport { GlobalLoading } from '@affine/component/global-loading';\nimport { AppFallback } from '@affine/core/components/affine/app-container';\nimport { configureCommonModules } from '@affine/core/modules';\nimport { configureLocalStorageStateStorageImpls } from '@affine/core/modules/storage';\nimport { CustomThemeModifier } from '@affine/core/modules/theme-editor';\nimport { configureBrowserWorkbenchModule } from '@affine/core/modules/workbench';\nimport {\n configureBrowserWorkspaceFlavours,\n configureIndexedDBWorkspaceEngineStorageProvider,\n} from '@affine/core/modules/workspace-engine';\nimport { router } from '@affine/core/router';\nimport {\n performanceLogger,\n performanceRenderLogger,\n} from '@affine/core/shared';\nimport { Telemetry } from '@affine/core/telemetry';\nimport createEmotionCache from '@affine/core/utils/create-emotion-cache';\nimport { createI18n, setUpLanguage } from '@affine/i18n';\nimport { CacheProvider } from '@emotion/react';\nimport {\n Framework,\n FrameworkRoot,\n getCurrentStore,\n LifecycleService,\n} from '@toeverything/infra';\nimport type { PropsWithChildren, ReactElement } from 'react';\nimport { lazy, Suspense } from 'react';\nimport { RouterProvider } from 'react-router-dom';\n\nif (!environment.isBrowser && environment.isDebug) {\n document.body.innerHTML = `

Don't run web entry in electron.

`;\n throw new Error('Wrong distribution');\n}\n\nconst performanceI18nLogger = performanceLogger.namespace('i18n');\nconst cache = createEmotionCache();\n\nconst DevTools = lazy(() =>\n import('jotai-devtools').then(m => ({ default: m.DevTools }))\n);\n\nconst DebugProvider = ({ children }: PropsWithChildren): ReactElement => {\n return (\n <>\n {process.env.DEBUG_JOTAI === 'true' && }\n {children}\n \n );\n};\n\nconst future = {\n v7_startTransition: true,\n} as const;\n\nasync function loadLanguage() {\n performanceI18nLogger.info('start');\n\n const i18n = createI18n();\n document.documentElement.lang = i18n.language;\n\n performanceI18nLogger.info('set up');\n await setUpLanguage(i18n);\n performanceI18nLogger.info('done');\n}\n\nlet languageLoadingPromise: Promise | null = null;\n\nconst framework = new Framework();\nconfigureCommonModules(framework);\nconfigureBrowserWorkbenchModule(framework);\nconfigureLocalStorageStateStorageImpls(framework);\nconfigureBrowserWorkspaceFlavours(framework);\nconfigureIndexedDBWorkspaceEngineStorageProvider(framework);\nconst frameworkProvider = framework.provider();\n\n// setup application lifecycle events, and emit application start event\nwindow.addEventListener('focus', () => {\n frameworkProvider.get(LifecycleService).applicationFocus();\n});\nframeworkProvider.get(LifecycleService).applicationStart();\n\nexport function App() {\n performanceRenderLogger.debug('App');\n\n if (!languageLoadingPromise) {\n languageLoadingPromise = loadLanguage().catch(console.error);\n }\n\n return (\n \n \n \n \n \n \n \n \n \n }\n router={router}\n future={future}\n />\n \n \n \n \n \n );\n}\n","import { configureQuotaModule } from '@affine/core/modules/quota';\nimport { configureInfraModules, type Framework } from '@toeverything/infra';\n\nimport { configureCloudModule } from './cloud';\nimport { configureCollectionModule } from './collection';\nimport { configureDocLinksModule } from './doc-link';\nimport { configureDocsSearchModule } from './docs-search';\nimport { configureExplorerModule } from './explorer';\nimport { configureFavoriteModule } from './favorite';\nimport { configureFindInPageModule } from './find-in-page';\nimport { configureNavigationModule } from './navigation';\nimport { configureOrganizeModule } from './organize';\nimport { configurePeekViewModule } from './peek-view';\nimport { configurePermissionsModule } from './permissions';\nimport { configureWorkspacePropertiesModule } from './properties';\nimport { configureQuickSearchModule } from './quicksearch';\nimport { configureShareDocsModule } from './share-doc';\nimport { configureTagModule } from './tag';\nimport { configureTelemetryModule } from './telemetry';\nimport { configureThemeEditorModule } from './theme-editor';\n\nexport function configureCommonModules(framework: Framework) {\n configureInfraModules(framework);\n configureCollectionModule(framework);\n configureNavigationModule(framework);\n configureTagModule(framework);\n configureWorkspacePropertiesModule(framework);\n configureCloudModule(framework);\n configureQuotaModule(framework);\n configurePermissionsModule(framework);\n configureShareDocsModule(framework);\n configureTelemetryModule(framework);\n configureFindInPageModule(framework);\n configurePeekViewModule(framework);\n configureQuickSearchModule(framework);\n configureDocsSearchModule(framework);\n configureDocLinksModule(framework);\n configureOrganizeModule(framework);\n configureFavoriteModule(framework);\n configureExplorerModule(framework);\n configureThemeEditorModule(framework);\n}\n","export * from './app-config-storage';\nexport * from './atom';\nexport * from './blocksuite';\nexport * from './framework';\nexport * from './initialization';\nexport * from './livedata';\nexport * from './modules/db';\nexport * from './modules/doc';\nexport * from './modules/global-context';\nexport * from './modules/lifecycle';\nexport * from './modules/storage';\nexport * from './modules/workspace';\nexport * from './storage';\nexport * from './sync';\nexport * from './utils';\n\nimport type { Framework } from './framework';\nimport { configureWorkspaceDBModule } from './modules/db';\nimport { configureDocModule } from './modules/doc';\nimport { configureGlobalContextModule } from './modules/global-context';\nimport { configureLifecycleModule } from './modules/lifecycle';\nimport {\n configureGlobalStorageModule,\n configureTestingGlobalStorage,\n} from './modules/storage';\nimport {\n configureTestingWorkspaceProvider,\n configureWorkspaceModule,\n} from './modules/workspace';\n\nexport function configureInfraModules(framework: Framework) {\n configureWorkspaceModule(framework);\n configureDocModule(framework);\n configureWorkspaceDBModule(framework);\n configureGlobalStorageModule(framework);\n configureGlobalContextModule(framework);\n configureLifecycleModule(framework);\n}\n\nexport function configureTestingInfraModules(framework: Framework) {\n configureTestingGlobalStorage(framework);\n configureTestingWorkspaceProvider(framework);\n}\n","export type { WorkspaceProfileInfo } from './entities/profile';\nexport { Workspace } from './entities/workspace';\nexport { WorkspaceEngineBeforeStart } from './events';\nexport { globalBlockSuiteSchema } from './global-schema';\nexport type { WorkspaceMetadata } from './metadata';\nexport type { WorkspaceOpenOptions } from './open-options';\nexport type { WorkspaceEngineProvider } from './providers/flavour';\nexport { WorkspaceFlavourProvider } from './providers/flavour';\nexport { WorkspaceLocalCache, WorkspaceLocalState } from './providers/storage';\nexport { WorkspaceScope } from './scopes/workspace';\nexport { WorkspaceService } from './services/workspace';\nexport { WorkspacesService } from './services/workspaces';\n\nimport type { Framework } from '../../framework';\nimport { GlobalCache, GlobalState } from '../storage';\nimport { WorkspaceEngine } from './entities/engine';\nimport { WorkspaceList } from './entities/list';\nimport { WorkspaceProfile } from './entities/profile';\nimport { WorkspaceUpgrade } from './entities/upgrade';\nimport { Workspace } from './entities/workspace';\nimport {\n WorkspaceLocalCacheImpl,\n WorkspaceLocalStateImpl,\n} from './impls/storage';\nimport { WorkspaceFlavourProvider } from './providers/flavour';\nimport { WorkspaceLocalCache, WorkspaceLocalState } from './providers/storage';\nimport { WorkspaceScope } from './scopes/workspace';\nimport { WorkspaceDestroyService } from './services/destroy';\nimport { WorkspaceEngineService } from './services/engine';\nimport { WorkspaceFactoryService } from './services/factory';\nimport { WorkspaceListService } from './services/list';\nimport { WorkspaceProfileService } from './services/profile';\nimport { WorkspaceRepositoryService } from './services/repo';\nimport { WorkspaceTransformService } from './services/transform';\nimport { WorkspaceUpgradeService } from './services/upgrade';\nimport { WorkspaceService } from './services/workspace';\nimport { WorkspacesService } from './services/workspaces';\nimport { WorkspaceProfileCacheStore } from './stores/profile-cache';\nimport { TestingWorkspaceLocalProvider } from './testing/testing-provider';\n\nexport function configureWorkspaceModule(framework: Framework) {\n framework\n .service(WorkspacesService, [\n [WorkspaceFlavourProvider],\n WorkspaceListService,\n WorkspaceProfileService,\n WorkspaceTransformService,\n WorkspaceRepositoryService,\n WorkspaceFactoryService,\n WorkspaceDestroyService,\n ])\n .service(WorkspaceDestroyService, [[WorkspaceFlavourProvider]])\n .service(WorkspaceListService)\n .entity(WorkspaceList, [[WorkspaceFlavourProvider]])\n .service(WorkspaceProfileService)\n .store(WorkspaceProfileCacheStore, [GlobalCache])\n .entity(WorkspaceProfile, [\n WorkspaceProfileCacheStore,\n [WorkspaceFlavourProvider],\n ])\n .service(WorkspaceFactoryService, [[WorkspaceFlavourProvider]])\n .service(WorkspaceTransformService, [\n WorkspaceFactoryService,\n WorkspaceDestroyService,\n ])\n .service(WorkspaceRepositoryService, [\n [WorkspaceFlavourProvider],\n WorkspaceProfileService,\n ])\n .scope(WorkspaceScope)\n .service(WorkspaceService)\n .entity(Workspace, [WorkspaceScope])\n .service(WorkspaceEngineService, [WorkspaceScope])\n .entity(WorkspaceEngine, [WorkspaceService])\n .service(WorkspaceUpgradeService)\n .entity(WorkspaceUpgrade, [\n WorkspaceService,\n WorkspaceFactoryService,\n WorkspaceDestroyService,\n ])\n .impl(WorkspaceLocalState, WorkspaceLocalStateImpl, [\n WorkspaceService,\n GlobalState,\n ])\n .impl(WorkspaceLocalCache, WorkspaceLocalCacheImpl, [\n WorkspaceService,\n GlobalCache,\n ]);\n}\n\nexport function configureTestingWorkspaceProvider(framework: Framework) {\n framework.impl(\n WorkspaceFlavourProvider('LOCAL'),\n TestingWorkspaceLocalProvider,\n [GlobalState]\n );\n}\n","export { Doc } from './entities/doc';\nexport type { DocMode } from './entities/record';\nexport { DocRecord } from './entities/record';\nexport { DocRecordList } from './entities/record-list';\nexport { DocScope } from './scopes/doc';\nexport { DocService } from './services/doc';\nexport { DocsService } from './services/docs';\n\nimport type { Framework } from '../../framework';\nimport {\n WorkspaceLocalState,\n WorkspaceScope,\n WorkspaceService,\n} from '../workspace';\nimport { Doc } from './entities/doc';\nimport { DocRecord } from './entities/record';\nimport { DocRecordList } from './entities/record-list';\nimport { DocScope } from './scopes/doc';\nimport { DocService } from './services/doc';\nimport { DocsService } from './services/docs';\nimport { DocsStore } from './stores/docs';\n\nexport function configureDocModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(DocsService, [DocsStore])\n .store(DocsStore, [WorkspaceService, WorkspaceLocalState])\n .entity(DocRecord, [DocsStore])\n .entity(DocRecordList, [DocsStore])\n .scope(DocScope)\n .entity(Doc, [DocScope, DocsStore])\n .service(DocService);\n}\n","import type { Framework } from '../../framework';\nimport { WorkspaceScope, WorkspaceService } from '../workspace';\nimport { DB } from './entities/db';\nimport { Table } from './entities/table';\nimport { WorkspaceDBService } from './services/db';\n\nexport { AFFiNE_WORKSPACE_DB_SCHEMA } from './schema';\nexport { WorkspaceDBService } from './services/db';\nexport { transformWorkspaceDBLocalToCloud } from './services/db';\n\nexport function configureWorkspaceDBModule(framework: Framework) {\n framework\n .scope(WorkspaceScope)\n .service(WorkspaceDBService, [WorkspaceService])\n .entity(DB)\n .entity(Table, [WorkspaceService]);\n}\n","export { GlobalContextService } from './services/global-context';\n\nimport type { Framework } from '../../framework';\nimport { GlobalContext } from './entities/global-context';\nimport { GlobalContextService } from './services/global-context';\n\nexport function configureGlobalContextModule(framework: Framework) {\n framework.service(GlobalContextService).entity(GlobalContext);\n}\n","import type { Framework } from '../../framework';\nimport { LifecycleService } from './service/lifecycle';\n\nexport {\n ApplicationFocused,\n ApplicationStarted,\n LifecycleService,\n} from './service/lifecycle';\n\nexport function configureLifecycleModule(framework: Framework) {\n framework.service(LifecycleService);\n}\n","import { type Framework, GlobalContextService } from '@toeverything/infra';\n\nimport { AuthService } from '../cloud';\nimport { TelemetryService } from './services/telemetry';\n\nexport function configureTelemetryModule(framework: Framework) {\n framework.service(TelemetryService, [AuthService, GlobalContextService]);\n}\n","import type { Framework } from '@toeverything/infra';\n\nimport { FindInPage } from './entities/find-in-page';\nimport { FindInPageService } from './services/find-in-page';\n\nexport function configureFindInPageModule(framework: Framework) {\n framework.service(FindInPageService).entity(FindInPage);\n}\n","import { type Framework, GlobalCache, GlobalState } from '@toeverything/infra';\n\nimport { ElectronGlobalCache, ElectronGlobalState } from './impls/electron';\nimport {\n LocalStorageGlobalCache,\n LocalStorageGlobalState,\n} from './impls/local-storage';\n\nexport function configureLocalStorageStateStorageImpls(framework: Framework) {\n framework.impl(GlobalCache, LocalStorageGlobalCache);\n framework.impl(GlobalState, LocalStorageGlobalState);\n}\n\nexport function configureElectronStateStorageImpls(framework: Framework) {\n framework.impl(GlobalCache, ElectronGlobalCache);\n framework.impl(GlobalState, ElectronGlobalState);\n}\n","import './polyfill/dispose';\nimport './polyfill/intl-segmenter';\nimport './polyfill/promise-with-resolvers';\nimport './polyfill/request-idle-callback';\nimport '@affine/core/bootstrap/preload';\n\nimport { performanceLogger } from '@affine/core/shared';\nimport { isDesktop } from '@affine/env/constant';\nimport {\n init,\n reactRouterV6BrowserTracingIntegration,\n setTags,\n} from '@sentry/react';\nimport { StrictMode, useEffect } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport {\n createRoutesFromChildren,\n matchRoutes,\n useLocation,\n useNavigationType,\n} from 'react-router-dom';\n\nimport { App } from './app';\n\nconst performanceMainLogger = performanceLogger.namespace('main');\nfunction main() {\n performanceMainLogger.info('start');\n\n // skip bootstrap setup for desktop onboarding\n if (isDesktop && window.appInfo?.windowName === 'onboarding') {\n performanceMainLogger.info('skip setup');\n } else {\n performanceMainLogger.info('setup start');\n if (window.SENTRY_RELEASE || environment.isDebug) {\n // https://docs.sentry.io/platforms/javascript/guides/react/#configure\n init({\n dsn: process.env.SENTRY_DSN,\n environment: process.env.BUILD_TYPE ?? 'development',\n integrations: [\n reactRouterV6BrowserTracingIntegration({\n useEffect,\n useLocation,\n useNavigationType,\n createRoutesFromChildren,\n matchRoutes,\n }),\n ],\n });\n setTags({\n appVersion: runtimeConfig.appVersion,\n editorVersion: runtimeConfig.editorVersion,\n });\n }\n performanceMainLogger.info('setup done');\n }\n\n mountApp();\n}\n\nfunction mountApp() {\n performanceMainLogger.info('import app');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const root = document.getElementById('app')!;\n performanceMainLogger.info('render app');\n createRoot(root).render(\n \n \n \n );\n}\n\ntry {\n main();\n} catch (err) {\n console.error('Failed to bootstrap app', err);\n}\n","if (Intl.Segmenter === undefined) {\n await import('intl-segmenter-polyfill-rs').then(({ Segmenter }) => {\n Object.defineProperty(Intl, 'Segmenter', {\n value: Segmenter,\n configurable: true,\n writable: true,\n });\n });\n}\n\nexport {};\n","window.requestIdleCallback =\n window.requestIdleCallback ||\n function (cb) {\n const start = Date.now();\n return setTimeout(function () {\n cb({\n didTimeout: false,\n timeRemaining: function () {\n return Math.max(0, 50 - (Date.now() - start));\n },\n });\n }, 1);\n };\n\nwindow.cancelIdleCallback =\n window.cancelIdleCallback ||\n function (id) {\n clearTimeout(id);\n };\n"],"names":["authMessage","authModalContent","captchaWrapper","forgetPasswordButtonRow","linkButton","resendCountdown","resendWrapper","sendMagicLinkButtonRow","sentMessage","sentRow","userPlanButton","addPropertyButton","backlinksList","checkboxProperty","collapsedIcon","menuHeader","menuItemList","menuItemListScrollable","menuItemListScrollbar","pageInfoDimmed","propertyRow","propertyRowIconContainer","propertyRowName","propertyRowNameCell","propertyRowNameContainer","propertyRowNamePopupRow","propertyRowTypeItem","propertyRowValueCell","propertyRowValueNumberCell","propertyRowValueTextCell","propertyRowValueTextarea","propertyRowValueTextareaInvisible","propertySettingRow","propertyTypeName","root","rootCentered","selectorButton","sortablePropertyRowNameCell","tableBodyRoot","tableBodySortable","tableHeader","tableHeaderBacklinksHint","tableHeaderCollapseButtonWrapper","tableHeaderDivider","tableHeaderInfoRow","tableHeaderSecondaryRow","tableHeaderTimestamp","tagsPropertyRow","argStyle","ellipsisTextStyle","filterContainerStyle","filterItemCloseStyle","filterItemStyle","filterTypeIconStyle","filterTypeStyle","inputStyle","menuItemStyle","menuItemTextStyle","switchStyle","variableSelectTitleStyle","colWrapper","deleteButton","deleteIcon","editTagWrapper","favoriteCell","groupsContainer","heading","hideInSmallContainer","pageListScrollContainer","actionButton","bottomLeft","collectionEditContainer","ellipsis","includeItem","includeItemContent","includeItemContentIs","includeItemTitle","includeListTitle","includeTitle","pageList","pagesTab","pagesTabContent","previewCountTips","previewCountTipsHighlight","resultPages","rulesBottom","rulesContainer","rulesContainerLeft","rulesContainerLeftContent","rulesContainerLeftContentInclude","rulesContainerLeftTab","rulesContainerRight","rulesTitle","rulesTitleHighlight","SESSION_KEY","window","location","search","includes","sessionStorage","setItem","getItem","debug","console","warn","DebugLogger","constructor","namespace","_debug","enabled","message","args","log","info","error","level","bind","toUpperCase","extra","currentNamespace","isBrowser","isServer","navigator","isDesktop","appInfo","electron","DEFAULT_WORKSPACE_NAME","UNTITLED_WORKSPACE_NAME","DEFAULT_SORT_KEY","MessageCode","loginError","noPermission","loadListFailed","getDetailFailed","createWorkspaceFailed","getMembersFailed","updateWorkspaceFailed","deleteWorkspaceFailed","inviteMemberFailed","removeMemberFailed","acceptInvitingFailed","getBlobFailed","leaveWorkspaceFailed","downloadWorkspaceFailed","refreshTokenError","blobTooLarge","PageNotFoundError","TypeError","docCollection","pageId","Unreachable","Error","UaHelper","isLinux","isMacOs","isSafari","isWindows","isFireFox","isMobile","isChrome","isIOS","getChromeVersion","raw","userAgent","match","parseInt","uaMap","getUa","initUaFlags","checkUseragent","isUseragent","Boolean","ua","uas","toLowerCase","mobile","test","android","indexOf","ios","mac","iphone","wx","chrome","tiktok","weibo","safari","firefox","ipad","win","linux","runtimeFlagsSchema","z","object","serverUrlPrefix","string","appVersion","editorVersion","appBuildType","union","literal","isSelfHosted","boolean","optional","githubUrl","changelogUrl","downloadUrl","imageProxyUrl","linkPreviewUrl","allowLocalWorkspace","enablePreloading","enableNewSettingUnstableApi","enableCaptcha","enableEnhanceShareMode","enableExperimentalFeature","enableInfoModal","enableOrganize","enableThemeEditor","setupGlobal","environment","globalThis","$AFFINE_SETUP","parse","runtimeConfig","isDebug","process","uaHelper","origin","assertEquals","chromeVersion","WorkspaceFlavour","rootStore","createStore","getCurrentStore","logger","windowFrameStyleOptions","dateFormatOptions","fontStyleOptions","key","value","appSettingBaseAtom","atomWithStorage","clientBorder","fullWidthLayout","windowFrameStyle","fontStyle","dateFormat","startWeekOnMonday","enableBlurBackground","enableNoisyBackground","autoCheckUpdate","autoDownloadUpdate","enableTelemetry","enableMultiView","editorFlags","setupEditorFlags","store","syncEditorFlags","get","Object","entries","forEach","awarenessStore","setFlag","blocksuiteFeatureFlags","undefined","defaultState","err","sub","appSettingEffect","atomEffect","settings","apis","updater","setConfig","catch","appSettingAtom","atom","_get","set","apply","prev","next","isNotStableBuild","neverShow","enable_database_attachment_note","displayName","description","precondition","enable_database_statistics","enable_block_query","enable_synced_doc_block","enable_edgeless_text","enable_color_picker","enable_ai_chat_block","enable_ai_onboarding","enable_expand_database_block","Symbol","dispose","Component","eventBus","framework","CONSTRUCTOR_CONTEXT","current","provider","props","Entity","__isEntity","Scope","collection","scope","getAll","getOptional","createEntity","createScope","emitEvent","__injectable","Service","__isService","Store","__isStore","withContext","cb","context","pre","DEFAULT_VARIANT","ROOT_SCOPE","SUB_COMPONENTS","RecursionLimitError","CircularDependencyError","stringifyDependencyStack","dependencyStack","ComponentNotFoundError","stringifyIdentifier","identifier","MissingDependencyError","target","from","DuplicateDefinitionError","identifierName","variant","map","join","createEvent","id","_type","EventBus","handler","parent","listeners","handlers","EventHandler","sameScope","values","on","event","listener","push","off","filter","l","emit","payload","e","createIdentifier","OnEvent","pick","name","stableHash","factory","i","FrameworkProvider","options","getRaw","parseIdentifier","getAllRaw","noCache","newProvider","ComponentCachePool","getOrInsert","insert","cache","Map","has","cached","t","setImmediate","Resolver","depth","stack","getFactory","runFactory","nextResolver","track","vars","getFactoryAll","result","service","find","BasicFrameworkProvider","disposed","resolver","stringifyScope","Framework","EMPTY","componentCount","count","identifiers","components","variants","size","FrameworkEditor","impl","entity","override","addValue","addFactory","normalizedScope","normalizedIdentifier","normalizedVariant","services","remove","delete","clone","di","s","currentScopeStack","arg2","Function","Array","dependenciesToFactory","arg3","cls","deps","dep","isAll","isArray","length","isConstructor","Reflect","construct","assign","input","FrameworkStackContext","React","useFramework","useContext","useService","useServices","charAt","slice","useServiceOptional","FrameworkRoot","children","Provider","FrameworkScope","nextStack","useMemo","MountPoint","ScopeRootComponentsContext","nodes","setNodes","_id","useMount","unmount","mount","node","debugKey","div","data-testid","style","display","initEmptyPage","page","title","load","pageBlockId","addBlock","Text","noteBlockId","history","clear","effect","subject$","Subject","effectLocation","split","trim","EffectError","subscription","pipe","subscribe","complete","effectError","fn","unsubscribe","observable","LiveData","Observable","upstream$","initialValue","stream$","mergeMap","v","of","scan","acc","op","distinctUntilChanged","switchMap","GLOBAL_COMPUTED_RECURSIVE_COUNT","computed","compute","execute","subscriptions","first","data$","looper","upstream","ops$","isPoisoned","poisonedError","getValue","raw$","setValue","reactSubscribe","skip","add","reactGetSnapshot","Promise","resolve","then","BehaviorSubject","upstreamSubscription","closed","PoisonedError","observerOrNext","mapper","sub$","subscriber","comparator","throttleTime","duration","trailing","leading","asObservable","flat","combineLatest","waitFor","predicate","signal","reject","addEventListener","reason","waitForNonNull","_subscribe","originalError","mapInto","l$","catchErrorInto","onComplete","catchError","onStart","observable$","fromPromise","promise","abortController","AbortController","rawPromise","abort","MANUALLY_STOP","backoffRetry","when","delay","maxDelay","obs$","retry","retryIndex","throwError","d","Math","pow","timer","min","exhaustMapSwitchUntilChanged","project","onSwitch","connect","shared$","merge","exhaustMap","index","noopSubscribe","nullGetSnapshot","undefinedGetSnapshot","useLiveData","liveData","useSyncExternalStore","useEnsureLiveData","liveData$","data","use","DB","db","schema","tableName","table","Table","storageDocId","defineProperty","workspaceService","isSyncing$","workspace","engine","doc","docState$","docState","syncing","isLoading$","loading","create","update","get$","find$","keys","inputType","val","typeMatches","typeWant","typeGet","dataValidators","PrimaryKeyShouldExist","validate","keyField","PrimaryKeyShouldNotBeUpdated","DataTypeShouldMatch","field","type","DataTypeShouldExactlyMatch","Set","lodashPick","createEntityDataValidators","updateEntityDataValidators","PRESERVED_FIELDS","rules","errors","code","validator","throwIfError","validators","validateTableSchema","some","isPrimaryKey","OnlyOnePrimaryKey","primaryFields","PrimaryKeyShouldNotBeOptional","opts","default","validateCreateEntityData","validateUpdateEntityData","validateYjsTableSchema","UsePreservedFields","validateYjsEntityData","SetPreservedFields","subscribedKeys","adapter","reduce","fieldName","fieldBuilder","setup","omitBy","isUndefined","record","where","byKey","ob$","observe","callback","shareReplay","refCount","bufferSize","select","keys$","ORMClient","hooksMap","tables","tableSchema","hooks","defineHook","_desc","hook","createORMClient","Class","deserialize","toObject","YjsTableAdapter","deleteFlagKey","fields","destroy","query","getMap","toString","transact","results","iterate","setField","records","listeningOnAll","keyof","ob","hasChanged","ty","tx","changed","isMatch","isDeleted","prevMatch","isPrevMatched","newValue","deleteTy","YMap","prototype","toJSON","call","recordByKey","share","selectedFields","isEmpty","every","c","_map","YjsDBAdapter","getDoc","FieldSchemaBuilder","primaryKey","f","AFFiNE_WORKSPACE_DB_SCHEMA","folders","nanoid","parentId","AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA","favorite","WorkspaceDBClient","WorkspaceUserdataDBClient","WorkspaceDBService","userdataDBPool","ObjectPool","onDangling","guid","ydoc","YDoc","addDoc","setPriority","userdataDB","userId","userdataDb","obj","newDB","put","isDBDocId","docId","startsWith","transformWorkspaceDBLocalToCloud","localWorkspaceId","cloudWorkspaceId","localDocStorage","cloudDocStorage","accountId","localDocName","localDoc","cloudDocName","Doc","blockSuiteDoc","meta$","mode$","title$","trash$","setMode","mode","getMode","toggleMode","observeMode","moveToTrash","restoreFromTrash","waitForSyncReady","waitForDocLoadReady","setPriorityLoad","priority","DocRecordList","pool","docs$","watchDocIds","ids","exists","DocRecord","trashDocs$","watchTrashDocIds","isReady$","watchDocListReady","doc$","setDocModeSetting","getDocModeSetting","watchDocModeSetting","docsStore","watchDocMeta","meta","trash","setMeta","setDocMeta","DocScope","DocService","DocsService","list","onDelete","open","docRecord","getBlockSuiteDoc","release","docScope","createDoc","createBlockSuiteDoc","markDocSyncStateAsReady","addLinkedDoc","targetDocId","linkedDocId","text","fromDelta","attributes","reference","frame","getBlocksByFlavour","changeDocTitle","newTitle","pageBlock","at","model","GlobalContext","define","memento","$","watch","MemoryMemento","workspaceId","isDoc","isTrashDoc","docMode","isCollection","collectionId","isTrash","isTag","tagId","isAllDocs","GlobalContextService","globalContext","ApplicationStarted","ApplicationFocused","LifecycleService","applicationStart","applicationFocus","GlobalState","GlobalCache","GlobalStateService","globalState","GlobalCacheService","globalCache","PriorityQueue","oldPriority","priorityMap","tree","pop","max","removeNode","removed","updatePriority","BinarySearchTree","a","b","AsyncPriorityQueue","asyncPop","_waitForUpdate","_resolveUpdate","race","_","aborted","DOC_ENGINE_ORIGIN","DocEngineLocalPart","ready","status","readyDocs","connectedDocs","jobMap","currentJob","statusUpdatedSubject$","updatedId","clientId","storage","prioritySettings","docs","jobDocQueue","engineState$","total","actions","schedule","markAsReady","jobs","job","existingData","encodeStateAsUpdate","isEmptyUpdate","handleDocUpdate","docData","loadDocFromLocal","applyUpdate","save","merged","mergeUpdates","j","newSeqNum","commitDocAsClientUpdate","seqNum","throwIfAborted","isInitialize","events","ServerUpdateCommitted","ClientUpdateCommitted","mainLoop","groupBy","applyJob","existingJobs","ClockMap","setIfBigger","DocEngineRemotePart","server","serverClocks","retrying","errorMessage","pushedSeqNum","loadDocSeqNumPushed","loadDocSeqNum","pullAndPush","pulled","loadDocServerClockPulled","normalizeServerDocId","pull","maxSeqNum","serverClock","pushDoc","saveDocPushedSeqNum","stateVector","encodeStateVectorFromUpdate","Uint8Array","serverData","pullDoc","newData","serverStateVector","saveServerClock","updateServerClock","commitDocAsServerUpdate","diff","diffUpdate","saveDocServerClockPulled","serverDoc","retryLoop","setTimeout","disposes","onInterrupted","waitForConnectingServer","subscribeAllDocs","loadServerClock","maxClockValue","newClocks","disconnectServer","DocVariant","parts","DocEngine","localState$","localPart","remoteState$","remotePart","localState","remoteState","saving","DocStorageInner","start","all","stop","resetSyncStatus","clearSyncMetadata","clearServerClock","withSubDocs","subdoc","getSubdocs","added","waitForSaved","state","saved","waitForSynced","synced","waitForReady","AwarenessEngine","connections","awareness","connection","disconnect","WorkspaceEngine","engineProvider","getDocStorage","getDocServer","blob","BlobEngine","getLocalBlobStorage","getRemoteBlobStorages","getAwarenessConnections","docEngineState$","rootDocState$","setRootDoc","yDoc","WorkspaceEngineBeforeStart","canGracefulStop","waitForGracefulStop","forceStop","waitForDocSynced","waitForRootDocReady","checkWorkspaceCompatibility","isCloud","spaceMetaObj","docKeys","haveSpaceMeta","haveLegacySpace","hasVersion","validateVersion","flavour","version","blockVersions","flavourSchemaMap","MigrationPoint","migrationOrigin","upgradeV1ToV2","oldDoc","targetDoc","newDoc","migrateToSubdoc","idMap","migrateMeta","originalMeta","originalVersions","originalPages","pages","YArray","updateBlockVersions","versions","frameVersion","embedVersion","databaseVersion","mapList","migrateBlocks","spaces","newId","spaceId","originalBlocks","blocks","blockData","runBlockMigration","elements","migrateSurface","migrateSurfaceConnector","controllers","xywh","JSON","position","x","y","width","color","migrateDatabase","columns","views","col","hide","conditions","cells","convertColumn","row","newColumns","selection","cell","Number","parseFloat","getLatestVersions","migratePages","rootDoc","oldVersions","upgradeDoc","space","upgradeCollection","pageVersion","newVersions","migrateGuidCompatibility","newPageId","WorkspaceUpgrade","workspaceFactory","workspaceDestroy","needUpgrade$","upgrading$","checkIfNeedUpgrade","needUpgrade","AFFINE_CLOUD","upgrade","step","clonedDoc","applyDoc","SubDoc","newWorkspace","LOCAL","blobStorage","blobKey","forceUpgradePages","blobSync","deleteWorkspace","GuidFix","BlockVersion","targetSubDoc","subdocs","resultSubDoc","resultSubDocs","item","Workspace","openOptions","metadata","_docCollection","name$","commonFieldsUpdated","avatar$","avatar","DocCollection","blobSources","main","idGenerator","globalBlockSuiteSchema","disableBacklinkIndex","disableSearchIndex","rootYDoc","WorkspaceEngineService","WorkspaceUpgradeService","flavourProvider","Schema","schemas","AffineSchemas","AIChatBlockSchema","register","WorkspaceFlavourProvider","WorkspaceLocalState","WorkspaceLocalCache","WorkspaceScope","_engine","workspaceScope","getEngineProvider","WorkspaceService","_workspace","WorkspacesService","listService","providers","profileRepo","transform","workspaceRepo","getProfile","transformLocalToCloud","getWorkspaceBlob","setAll","init","getLiveData","v$","k","del","wrapMemento","prefix","local","remotes","readonly","isStorageOverCapacity$","singleBlobSizeLimit","onAbortLargeBlob","Slot","abortSignal","sync","finally","storages","remote","localList","remoteList","difference","BlobStorageOverCapacity","allSettled","r","peer","_key","blobList","EmptyBlobStorage","_value","originError","AsyncLock","acquire","nextLock","_lock","MemoryByteKV","lock","transaction","u","ReadonlyByteKV","MemoryDocEventBus","DocEventBusInner","eventBusBehavior","Keys","SeqNum","SeqNumPushed","ServerClockPulled","Values","UInt64","view","DataView","buffer","getBigUint64","serialize","ArrayBuffer","setBigUint64","BigInt","behavior","oldBuffer","bytes","syncMetadata","saveDocSeqNum","oldBytes","old","ReadonlyStorage","binary","byteLength","objects","timeoutToGc","exist","rc","released","requestGc","clearInterval","setInterval","gc","arg","isDate","Date","RegExp","counter","sort","stringify","WeakMap","useNavConfig","useI18n","path","DesktopNavbar","config","className","href","rel","MobileNavbar","openMenu","setOpenMenu","useState","navConfig","menuItems","MenuItem","onClick","Menu","items","contentOptions","sideOffset","rootOptions","onOpenChange","IconButton","CloseIcon","PropertyIcon","AffineOtherPageLayout","openDownloadLink","useCallback","Logo1Icon","height","Button","AuthContent","otherProps","clsx","AuthInput","label","errorHint","withoutHint","onEnter","inputProps","Input","onKeyDown","AuthPageContainer","subtitle","p","Empty","BackButton","marginTop","marginLeft","paddingLeft","paddingRight","cssVar","ArrowLeftSmallIcon","ChangeEmailPage","onChangeEmail","propsOnChangeEmail","hasSetUp","setHasSetUp","email","setEmail","isValidEmail","setIsValidEmail","setLoading","onContinue","emailRegex","onEmailChange","styles","placeholder","onChange","disabled","ErrorIcon","svg","viewBox","fill","xmlns","g","fillRule","clipRule","statusWrapper","SuccessIcon","Tag","minimum","maximum","textMap","weak","medium","strong","PASSWORD_STRENGTH_OPTIONS","minDiversity","minLength","PasswordInput","passwordLimits","onPass","onPrevent","setStatus","confirmStatus","setConfirmStatus","canSubmit","setCanSubmit","password","setPassWord","confirmPassword","setConfirmPassword","validationSchema","maxLength","superRefine","ctx","addIssue","ZodIssueCode","custom","params","passwordStrength","validatePasswords","safeParse","success","firstIssue","issues","isEqual","onPasswordChange","onConfirmPasswordChange","useEffect","marginBottom","String","endFix","SetPassword","onLater","onSetPassword","showLater","passwordPass","setPasswordPass","passwordRef","useRef","Wrapper","marginRight","ChangePasswordPage","propsOnSetPassword","onOpenAffine","passWord","notify","ConfirmChangeEmail","formatTime","formattedMinutes","minutes","floor","time","padStart","formattedSeconds","seconds","CountDownRender","forwardRef","timeLeft","ref","AuthModal","setOpen","Modal","minHeight","padding","ModalHeader","subTitle","disableButton","ScrollableLayout","headerItems","isMacosDesktop","isWindowsDesktop","data-is-macos-electron","header","data-is-windows-electron","ScrollableContainer","footer","Divider","orientation","OnboardingPage","user","useLocation","navigate","useNavigate","questionIdx","setQuestionIdx","questions","useSWR","url","fetch","json","suspense","revalidateOnFocus","setOptions","inputs","setInputs","callbackUrl","getCallbackUrl","callbackURL","URLSearchParams","parsedUrl","URL","pathname","question","searchParams","h1","option","optionIndex","Checkbox","labelClassName","checked","itemType","method","body","form","ask","answer","suffix","ArrowRightSmallIcon","SetPasswordPage","SignInPageContainer","SignInSuccessPage","SignUpPage","openButtonText","PublicLinkDisableModal","ConfirmModal","cancelText","confirmText","confirmButtonOptions","globalLoadingEventsBaseAtom","globalLoadingEventsAtom","resolveGlobalLoadingEventAtom","globalLoadingEvent","notification","pushGlobalLoadingEventAtom","newGlobalLoadingEvent","globalLoadingEvents","GlobalLoading","useAtomValue","data-loading","Loading","EditorLoading","Skeleton","animation","PageDetailSkeleton","ResizeHandle","resizing","minWidth","maxWidth","resizeHandlePos","resizeHandleOffset","resizeHandleVerticalPadding","onOpen","onResizing","onWidthChange","rest","onResizeStart","resized","panelContainer","parentElement","assertExists","left","anchorLeft","right","anchorRight","getBoundingClientRect","onMouseMove","preventDefault","clientX","document","removeEventListener","once","assignInlineVars","data-handle-position","data-resizing","data-open","onMouseDown","ResizePanel","floating","enableAnimation","_enableAnimation","unmountOnExit","useEnableAnimation","enable","setEnable","safeWidth","toggle","useTransition","timeout","useLayoutEffect","data-transition-state","data-is-floating","data-enable-animation","WorkspaceAvatar","workspacesService","profile","revalidate","avatarKey","profile$","downloadedAvatar","setDownloadedAvatar","canceled","image","createElement","objectUrl","createObjectURL","src","decode","ratio","naturalWidth","naturalHeight","imageBitmap","createImageBitmap","resizeWidth","resizeHeight","revokeObjectURL","Avatar","useAutoFocus","autoFocus","focus","useAutoSelect","autoSelect","reservedReactProperties","listenedEvents","addOrUpdateEventListener","handleEvent","setProperty","HTMLElement","removeAttribute","createComponent","react","tagName","elementClass","eventProps","ReactComponent","containerRef","prevPropsRef","elementRef","reactProps","elementProps","element","prop","container","append","LitElement","customElement","LitReactPortal","properties","portalId","createRenderRoot","connectedCallback","disconnectedCallback","willUpdate","changedProperties","previousPortalId","useLitPortalFactory","portals","setPortals","elementOrFactory","createLitPortalAnchor","html","newPortals","portal","ReactDOM","LitTemplateWrapper","template","render","TemplateWrapper","toReactNode","calendarHeaderTriggerButton","decadeViewBodyCell","monthViewBodyCell","monthViewRow","gapX","gapY","yearViewBodyCell","DATE_MIN","DATE_MAX","YEAR_MIN","dayjs","year","YEAR_MAX","autoHeight","HeaderLayout","memo","attrs","finalStyle","isLeft","isRight","data-length","data-is-left","data-is-right","CalendarLayout","headerLeft","headerRight","data-mode","DefaultDateCell","date","isToday","notCurrentMonth","selected","focused","button","data-is-date-cell","data-value","format","data-is-today","data-not-current-month","data-selected","tabIndex","NavButtons","prevDisabled","nextDisabled","onPrev","onNext","DayPicker","dayPickerRootRef","headerMonthRef","cursor","weekDays","monthNames","todayLabel","customDayRenderer","onCursorChange","onModeChange","matrix","firstDayOfFirstWeek","firstDayOfMonth","startOf","lastDayOfLastWeek","lastDayOfMonth","endOf","currentDay","isBefore","week","isSame","onNextMonth","onPrevMonth","focusCursor","querySelector","openMonthPicker","openYearPicker","activeElement","hasAttribute","shiftKey","stopPropagation","HeaderLeft","whiteSpace","data-month","month","data-year","HeaderRight","Body","day","MonthPicker","monthCursor","setMonthCursor","closeMonthPicker","onMonthChange","m","nextYear","prevYear","subtract","nextYearDisabled","prevYearDisabled","currentMonth","data-is-month-cell","data-current-month","aria-label","defaultDatePickerProps","YearPicker","yearCursor","setYearCursor","closeYearPicker","onYearChange","nextDecade","prevDecade","decadeIndex","decadeStart","decadeEnd","DECADE","nextDecadeDisabled","isAfter","prevDecadeDisabled","currentYear","isDisabled","aria-disabled","data-is-year-cell","data-current-year","DatePicker","finalProps","setCursor","variables","onPreChange","newCursor","_resizeObserver","elementsMap","_resizeObserverElementsMap","getResizeObserver","ResizeObserver","entry","removeListener","observer","unobserve","observeResize","prevListeners","WeekDatePicker","handleRef","weekRef","dense","setDense","viewPortSize","setViewPortSize","useImperativeHandle","range","cursorIndex","end","allDays","displayDays","nextDay","prevDay","onDayClick","el","contentRect","rect","focusCursorCell","cursorCell","Cell","toISOString","isActive","isCurrentMonth","data-active","data-curr-month","data-today","draggableGet","useDraggable","getOptions","dragging","setDragging","draggingPosition","setDraggingPosition","offsetX","offsetY","clientY","outWindow","dropTarget","setDropTarget","customDragPreviewPortal","setCustomDragPreviewPortal","dragRef","dragHandleRef","enableCustomDragPreview","enableDraggingPosition","enableDropTarget","enableDragging","windowEvent","dragleave","dragover","cleanupDraggable","draggable","dragHandle","canDrag","getInitialData","getInitialDataForExternal","dataForExternal","onDragStart","initial","dataset","onDrop","onDrag","onDropTargetChange","dropTargets","onGenerateDragPreview","nativeSetDragImage","source","disableDragPreview","disableNativeDragPreview","previewPosition","dragPreviewPosition","setCustomNativeDragPreview","getOffset","centerUnderPointer","pointerOutsideOfPreview","preserveOffsetOnSource","flushSync","cloneNode","CustomDragPreview","horizontalIndent","lineBelowStyles","treeLine","getTreeElement","instruction","isBlocked","currentLevel","indentPerLevel","desiredLevel","edgeToOrientationMap","top","bottom","orientationStyles","horizontal","vertical","edgeStyles","DropIndicator","edge","getEdgeElement","gap","lineOffset","desired","dropTargetGet","treeInstruction","extractInstruction","attachInstruction","block","closestEdge","extractClosestEdge","attachClosestEdge","allowedEdges","useDropTarget","dropTargetRef","draggedOver","setDraggedOver","setTreeInstruction","setClosestEdge","dropEffect","setDropEffect","draggedOverDraggable","setDraggedOverDraggable","draggedOverPosition","setDraggedOverPosition","relativeX","relativeY","enableDraggedOver","enableDraggedOverDraggable","enableDraggedOverPosition","enableDropEffect","dropTargetForElements","canDrop","getDropEffect","getIsSticky","isSticky","self","getData","originData","withInstruction","InlineEdit","editable","exitible","trigger","onInput","placeholderClassName","placeholderStyle","inputAttrs","editing","setEditing","editingValue","setEditingValue","inputRef","triggerEdit","onDoubleClick","submit","blur","onBlur","scrollTo","inputHandler","displayValue","replace","inputWrapperInheritsStyles","margin","borderRadius","fontSize","fontFamily","lineHeight","fontWeight","letterSpacing","textAlign","backgroundColor","inputInheritsStyles","data-editing","Placeholder","ErrorMessage","inline","span","AnimatedCollectionsIcon","lottieRef","lottie","setDirection","play","Lottie","autoPlay","loop","animationData","AnimatedDeleteIcon","AnimatedFolderIcon","speed","setSpeed","Popover","content","portalOptions","contentClassName","contentStyle","otherContentOptions","PopoverPrimitive","asChild","align","zIndex","Switch","checkedProp","onChangeProp","checkedState","setCheckedState","newChecked","styled","showBorder","tableLayout","borderCollapse","borderSpacing","thead","background","transition","opacity","proportion","active","boxSizing","verticalAlign","userSelect","textEllipsis","td","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","ToastContainer","htmlToElement","innerHTML","strings","cur","firstChild","createToastContainer","css","animateToastOut","toastElement","createAndShowNewToast","contains","toastStyles","textContent","dispatchEvent","CustomEvent","detail","toast","oldestToast","lineNum","wordBreak","WebkitBoxOrient","WebkitLineClamp","overflow","textOverflow","avatarImage","colorsSchema","ColorfulFallback","char","colors","charCodeAt","topColor","middleColor","bottomColor","isHover","setIsHover","onMouseEnter","onMouseLeave","clearTimeout","propsStyles","colorfulFallback","hoverIcon","fallbackProps","fallbackClassName","imageProps","avatarProps","rounded","onRemove","hoverWrapperProps","hoverWrapperClassName","avatarTooltipOptions","removeTooltipOptions","removeButtonProps","removeButtonClassName","firstCharOfName","containerDom","setContainerDom","removeButtonDom","setRemoveButtonDom","canvas","setCanvas","getContext","drawImageFit","img","centerShift_x","centerShift_y","drawImage","devicePixelRatio","canvasRef","AvatarRoot","Tooltip","withUnit","AvatarImage","alt","AvatarFallback","delayMs","tooltipOptions","IconSlot","icon","visible","showLoadingHere","cloneElement","withoutHover","prefixClassName","prefixStyle","suffixClassName","suffixStyle","tooltip","tooltipShortcut","upstreamRef","handleClick","shortcut","data-block","data-disabled","data-size","data-variant","data-no-hover","DropdownButton","onClickDropDown","ArrowDownSmallIcon","iconClassName","iconStyle","validatedSize","isNaN","data-icon-variant","data-icon-size","RadioGroup","RadioButton","spanStyle","RadixRadioGroup","RadioButtonGroup","unchecked","indeterminate","inputClassName","handleChange","inputElement","playCheckAnimation","role","icons","htmlFor","refElement","sparkingEl","classList","cssText","animate","boxShadow","easing","finished","dividerColor","data-divider","EmptySvg","fillOpacity","circle","cx","cy","containerStyle","descriptionStyle","propsOnChange","noBorder","preFix","focusRef","selectRef","warning","large","shouldForwardProp","weight","paddingTop","paddingBottom","FlexWrapper","justifyContent","alignItems","wrap","flexDirection","flexShrink","flexGrow","flexWrap","progress","sizeWithUnit","strokeWidth","stroke","strokeDasharray","PI","menuContent","noPortal","DropdownMenu","MenuIcon","useMenuItem","propsChildren","propsClassName","danger","DoneIcon","MenuSeparator","MenuSub","subOptions","triggerOptions","otherTriggerOptions","subContentOptions","subContentClassName","otherSubContentOptions","MenuTrigger","getVar","defaultValue","ModalTransitionContainer","child","startViewTransition","pendingTransitionNodes","requestTransition","removeChild","animationFrame","cancelAnimationFrame","requestAnimationFrame","defined","ModalInner","modal","withoutCloseButton","persistent","onPointerDownOutside","onEscapeKeyDown","overlayOptions","overlayClassName","overlayStyle","otherOverlayOptions","closeButtonOptions","closeButtonClassName","otherCloseButtonProps","setContainer","createContainer","customElements","handlePointerDownOutSide","handleEscapeKeyDown","Dialog","data-modal","VisuallyHidden","cancelButtonOptions","reverseFooter","onConfirm","onCancel","autoFocusConfirm","onConfirmClick","modalFooterWithChildren","reverse","DialogTrigger","ConfirmModalContext","createContext","modalProps","openConfirmModal","closeConfirmModal","ConfirmModalProvider","setModalProps","autoClose","onSuccess","_onConfirm","useConfirmModal","defaultContentOptions","defaultOverlayOptions","backdropFilter","OverlayModal","topImage","to","external","withoutCancelButton","handleConfirm","Link","headAlignWrapper","getCardColor","theme","getActionTextColor","getCardForegroundColor","getCardBorderColor","getIconColor","iconColor","getCloseIconColor","NotificationCard","InformationFillDuotoneIcon","thumb","action","alignMessage","onDismiss","rootAttrs","onActionClicked","data-with-icon","buttonProps","data-float","data-align","NotificationCenter","pointerEvents","toastOptions","Toaster","dismiss","SingleSelectSelectSolidIcon","itemHeight","animationDuration","animationEasing","activeItemClassName","activeItemStyle","iconMode","animationTImerRef","finalItems","createRef","indicatorRef","oldValue","oldItem","newItem","oldRect","newRect","activeIndicator","prevValue","previousValue","onValueChange","data-icon-mode","customRender","testId","classMap","forceMount","scrollableContainerRoot","scrollableViewport","scrollbar","scrollbarThumb","ScrollableRoot","ScrollArea","ScrollableViewport","ScrollableScrollbar","Scrollable","Root","Viewport","Scrollbar","useHasScrollTop","hasScrollTop","setHasScrollTop","unsub","updateScrollTop","debounce","scrollTop","showScrollTopBorder","inTableView","_styles","viewPortClassName","scrollBarClassName","data-has-scroll-top","pulse","wave","circular","rectangular","getSize","_width","_height","_style","_className","macOS","getCommand","cmd","TooltipShortcut","commands","side","restContentOptions","TooltipPrimitive","delayDuration","cssVarV2","unit","openCreateWorkspaceModalAtom","openSignOutModalAtom","openQuotaModalAtom","openStarAFFiNEModalAtom","openIssueFeedbackModalAtom","openHistoryTipsModalAtom","openInfoModalAtom","rightSidebarWidthAtom","openSettingModalAtom","activeTab","authAtom","openModal","emailType","allPageFilterSelectAtom","openWorkspaceListModalAtom","WithDisposable","withMargin","AIStarIconWithAnimation","SmallHintIcon","AIHelpIcon","AffineIcon","ChatClearIcon","ChatSendIcon","ChatAbortIcon","CurrentSelectionIcon","ImageIcon","SmallImageIcon","DocIcon","DownArrowIcon","ReplaceIcon","InsertBelowIcon","InsertTopIcon","CreateIcon","AffineAvatarIcon","ActionIcon","LanguageIcon","ImproveWritingIcon","AIDoneIcon","ShorterIcon","LongerIcon","ExplainIcon","AIExplainIcon","SelectionIcon","AIExplainSelectionIcon","ToneIcon","AIChangeToneIcon","AISearchIcon","AIImproveWritingIcon","AIMakeLongerIcon","AIMakeShorterIcon","AIMakeRealIcon","AIPenIcon","AIPenIconWithAnimation","AIPresentationIcon","AIPresentationIconWithAnimation","AIMindMapIcon","AIMindMapIconWithAnimation","AIExpandMindMapIcon","AIFindActionsIcon","AIImageIcon","AIImageIconWithAnimation","ChatWithAIIcon","MakeItRealIcon","MakeItRealIconWithAnimation","ArrowDownIcon","ArrowUpIcon","DiscardIcon","ErrorTipIcon","CopyIcon","RetryIcon","MoreIcon","ArticleIcon","MindmapIcon","PreloadImageIcon","PreloadPenIcon","CommunicateIcon","CommentIcon","BlockIcon","EXCLUDING_COPY_ACTIONS","EXCLUDING_INSERT_ACTIONS","IMAGE_ACTIONS","commonImageStages","generatingStages","makeItReal","brainstormMindmap","createSlides","createImage","processImage","filterImage","INSERT_ABOVE_ACTIONS","CustomPageRootService","PageRootService","loadFonts","CustomPageEditorBlockSpecs","PageEditorBlockSpecs","spec","component","updateSnapshotText","point","snapshot","delta","sliceToDelta","getContentFromSlice","host","Job","std","middlewares","titleMiddleware","embedSyncedDocMiddleware","sliceToSnapshot","processTextInSnapshot","processSnapshot","getBlockById","modelId","blockId","childSnapshot","MarkdownAdapter","PlainTextAdapter","fromSliceSnapshot","assets","assetsManager","file","markdownToSnapshot","markdown","defaultImageProxyMiddleware","pasteMiddleware","markdownAdapter","MixTextAdapter","workspaceVersion","toSliceSnapshot","insertFromMarkdown","snapshots","flatMap","models","blockSnapshot","snapshotToBlock","markDownToDoc","initialize","mdAdapter","toDoc","textBlockStyles","ParagraphBlockComponent","ListBlockComponent","DividerBlockComponent","CodeBlockComponent","customHeadingStyles","property","attribute","AIAnswerText","_container","_onWheel","shouldUpdate","_answers","_updateDoc","_timer","_clearTimer","updated","scrollHeight","maxHeight","customHeading","classes","keyed","_doc","renderSpecPortal","_query","viewType","BlockViewType","Display","latestAnswer","blockCollection","disposables","clearQuery","setReadonly","requestUpdate","createTextRenderer","AIProvider","slots","instance","userInfo","userInfoFn","photoEngine","histories","actionHistory","toggleGeneralAIOnboarding","forkChat","LAST_ACTION_SESSIONID","LAST_ROOT_SESSION_ID","MAX_LOCAL_HISTORY","shift","asyncIterator","PaymentRequiredError","UnauthorizedError","provide","provideAction","requestOpenWithChat","requestInsertTemplate","requestLogin","requestUpgradePlan","requestRunInEdgeless","toggleChatCards","reportResponse","lastAction","isMindMapRoot","ele","group","MindmapElementModel","isMindmapChild","getService","getEdgelessCopilotWidget","rootBlockId","getWidget","AFFINE_EDGELESS_COPILOT_WIDGET","getNoteId","blockElement","parentBlock","setBlockSelection","selections","isInsideEdgelessEditor","surfaceElementId","surfaceSelection","setGroup","selectBlock","below","blockParent","findIndex","updateComplete","insertBelow","insertAbove","firstBlock","selectedModels","textSelection","firstBlockParent","firstIndex","snapshotToSlice","deleteBlock","copyTextAnswer","panel","copyText","previewDoc","Slice","fromModels","clipboard","copySlice","getRootService","getEdgelessRootFromEditor","editor","edgelessRoot","getElementsByTagName","alert","getEdgelessService","rootService","EdgelessRootService","selectedToCanvas","notes","frames","shapes","images","BlocksUtils","splitElements","selectedElements","clipboardController","toCanvas","getSelectedModels","editorHost","chain","command","types","run","getTextContentFromBlockModels","drafts","selectedTextModels","matchFlavours","toDraftModel","draft","traverse","isDatabase","idx","splice","getSelectedTextContent","selectAboveBlocks","num","lastLeafModel","noteModel","lastRootModel","getParent","endIndex","startIndex","startBlock","getSelections","tryAll","getTextSelection","getBlockSelections","getImageSelections","getSelectedBlocks","getSelectedImagesAsBlobs","blobs","selectedBlocks","sourceId","File","getSelectedNoteAnchor","getCopilotSelectedElems","tool","imageCustomInput","imageBlock","ImageBlockModel","attachments","getSelection","lastBlock","asCaption","showWhen","getAIPanel","caption","updateBlock","createNewNote","findNoteBlockModel","curBlock","bound","Bound","newBound","w","displayMode","NoteDisplayMode","EdgelessOnly","generateIndex","newNote","getBlock","bounds","zoom","centerX","centerY","getFitToScreenData","viewport","setViewport","replaceWithAnswer","insertAnswerBelow","insertAnswerAbove","aiPanel","AFFINE_AI_PANEL_WIDGET","AffineAIPanelWidget","bindTextStream","stream","finish","actionToHandler","generatingIcon","trackerOptions","updateAIPanelConfig","generateAnswer","actionToStream","currentTextSelection","isCollapsed","sendAttachments","control","answerRenderer","finishStateConfig","responses","buildTextResponseConfig","generate","discard","generatingStateConfig","errorStateConfig","login","cancel","buildErrorResponseConfig","copy","allowed","onCopy","discardCallback","noop","MiniMindmapPreview","createMindmapRenderer","generatingElement","updateLoadingProgress","nothing","createMindmapExecuteRenderer","markdownToMindmap","getSurfaceElementFromEditor","surfaceModel","getBlockByFlavour","surfaceId","surfaceElement","replaceText","getImageUrlByKeyword","h","photos","searchImages","keyword","rng","stringToNumber","str","res","getImages","imgs","getImage","createBasicCover","section1","getRandomElement","keywords","arr","random","basic1section","basic2section","section2","basic3section","section3","basic4section","section4","basicTheme","isCover","sections","PPTBuilder","contents","allImages","getText","createTemplateJob","insertTemplate","refresh","done","createSlidesRenderer","preprocessHtml","AISlidesRenderer","_editorHost","firstUpdated","_editorContainer","EdgelessEditorBlockSpecs","resetHistory","AIAnswerWrapper","createIframeRenderer","createImageRenderer","fetchImageToFile","filename","imageProxy","fetchImage","ok","convertToPng","reader","FileReader","Image","onload","imageSmoothingEnabled","imageSmoothingQuality","toBlob","onerror","readAsDataURL","tmp","crossOrigin","readBlobAsURL","canvasToBlob","quality","getElementToolbar","EDGELESS_ELEMENT_TOOLBAR_WIDGET","DeleteIcon","ResetIcon","createBlockAndInsert","edgelessCopilot","determineInsertionBounds","EDGELESS_TEXT_BLOCK_MIN_WIDTH","EDGELESS_TEXT_BLOCK_MIN_HEIGHT","surfaceBlock","defaultHandler","EdgelessTextBlockModel","edgelessTextBlockId","imageHandler","selectedImageBlockModel","selectedBound","hideCopilotPanel","configs","minX","minY","toViewCoord","addImages","blockIds","imageBlockId","imageModel","imageBound","expandMindmap","surface","queueMicrotask","mindmap","childTree","addTree","subtree","getNode","updateNodeSize","fitContent","edgelessService","selectionRect","selectionModelRect","newGenerated","removeElement","mindmapId","addElement","getElementById","childElements","shape","telemetryService","module","segment","moveTo","setViewportByBound","elementBound","design","getButtonText","regenerate","getInsertAndReplaceHandler","buttonText","createInsertResp","getContentFromEmbedSyncedDocModel","getContentFromHubBlockModel","getContentFromSelected","texts","edgelessTexts","embedSyncedDocs","NoteBlockModel","TextElementModel","ShapeElementModel","EmbedSyncedDocModel","noteContent","edgelessTextContent","syncedDocsContent","customInput","internal","lockToolbar","updateEdgelessAIPanelConfig","actionToRenderer","extract","getTextFromSelected","stages","hideCallback","edgeless","switchToDefaultMode","elementToolbar","isCreateImageAction","isMakeItRealAction","referenceElement","togglePanel","selectionElem","toolbarVisible","lastSelected","noteBlockOrTextShowWhen","__","noteWithCodeBlockShowWen","imageOnlyShowWhen","notAllAIChatBlockShowWhen","AIChatBlockModel","translateLangs","textTones","imageFilterStyles","imageProcessingTypes","translateSubItem","lang","toneSubItem","tone","imageFilterSubItem","imageProcessingSubItem","editGroup","subItem","draftGroup","edgelessActionGroups","beta","len","inputText","pureShapes","dpr","png","seed","randomSeed","now","round","firstSelected","mindMapToMarkdown","markdownStr","indent","repeat","n","subItemOffset","EdgelessCopilotToolbarEntry","ARMSIcon","setupFormatBarEntry","formatBar","toolbarDefaultConfig","toolbar","clearConfig","addParagraphDropdown","addDivider","addTextStyleToggle","toggleBold","BoldIcon","toggleItalic","ItalicIcon","toggleUnderline","UnderlineIcon","toggleStrike","StrikethroughIcon","toggleCode","CodeIcon","toggleLink","LinkIcon","addHighlighterDropdown","addInlineAction","DatabaseTableViewIcon20","createSimplePortal","middleware","DATABASE_CONVERT_WHITE_LIST","promptDocTitle","autofill","notificationService","rangeCount","getRangeAt","startContainer","endContainer","req_title","prompt","inputTitle","versionSelect","getTitleFromSelectedModels","linkedDoc","convertSelectedBlocksToLinkedDoc","linkedDocService","linkedDocCreated","notifyDocCreated","arms_add_req","addBlockTypeSwitch","TextIcon","Heading1Icon","Heading2Icon","Heading3Icon","Heading4Icon","Heading5Icon","Heading6Icon","BulletedListIcon","NumberedListIcon","CheckBoxIcon","QuoteIcon","axios","c_title","c_req_pdservice_link","c_req_pdservice_versionset_link","c_req_contents","ownerDocument","c_req_desc","c_req_etc","headers","crossDomain","AskAIPanel","actionGroups","scrollbarStyle","_edgeless","_actionGroups","styleMap","buttonWidthMap","small","middle","buttonHeightMap","AskAIButton","_askAIButton","toggleType","_clearAbortController","buttonStyles","_whenHover","setReference","_toggleAIPanel","AIStarIcon","_abortController","HoverController","computePosition","placement","flip","offset","mainAxis","crossAxis","autoUpdate","allowMultiple","panelWidth","panelMinWidth","createLitPortal","closeOnClickAway","blockActionTrackerOptions","edgelessHandler","tools","setEdgelessTool","currentController","updateDragPointsWith","draggingAreaUpdated","edgelessActionToHandler","OthersAIGroup","AIImageItemGroups","buttonOptions","setupSlashMenuEntry","slashMenu","menu","unshift","rootComponent","docModeService","AffineSlashMenuWidget","DEFAULT_CONFIG","AIPageRootBlockSpec","PageRootBlockSpec","widgets","unsafeStatic","disposableGroup","widgetConnected","AffineFormatBarWidget","AIEdgelessRootBlockSpec","EdgelessRootBlockSpec","EdgelessCopilotWidget","widget","groups","EdgelessElementToolbarWidget","setupEdgelessElementToolbarEntry","registerEntry","filtered","AIParagraphBlockSpec","ParagraphBlockSpec","mounted","assertInstanceOf","ParagraphBlockService","placeholderGenerator","placeholders","h2","h3","h4","h5","h6","quote","AIImageBlockSpec","ImageBlockSpec","AffineImageToolbarWidget","setupImageToolbarEntry","imageToolbar","onAskAIClick","buildDefaultConfig","addConfigItems","imageBlockComponent","ChatPanelInput","imagesWrapper","textarea","closeWrapper","curIndex","isInputEmpty","chatContextValue","updateContext","cleanupHistories","_addImages","oldImages","_renderImages","evt","parentRect","abs","newImages","hasImages","lines","line","imagesHeight","overflowY","isComposing","send","clipboardData","kind","getAsFile","openFileOrFiles","acceptType","multiple","createdAt","chat","isRootSession","last","chatSessionId","historyIds","sessionId","messages","AILoading","stopGenerating","renderImages","HISTORY_IMAGE_ACTIONS","Translate","Summary","Clearer","ActionWrapper","promptShow","originalText","ActionText","isCode","border","ActionMakeReal","ShadowlessElement","ActionSlides","ActionMindmap","ChatText","ActionImageToText","ActionImage","cardsStyles","CardType","ChatCards","temporaryParams","cards","renderText","renderImage","renderDoc","textTpl","imageTpl","hasImage","_renderCard","card","_updateCards","_handleDocSelection","_extractAll","_selectCard","_selectedCardId","_extract","hasText","currentImageSelections","_extractOnEdgeless","note","_appendCardWithParams","_currentDocId","_disposables","ChatActionList","messageId","layoutDirection","_selectionValue","_rootService","_currentTextSelection","_currentBlockSelections","_currentImageSelections","currentSelections","accent","onClose","ChatCopyMore","_showMoreMenu","_moreButton","_moreMenu","isLast","_toggle","_morePopper","createButtonPopper","_notifySuccess","queryHistoryMessages","forkSessionId","chats","messageOrder","ChatHistoryOrder","asc","constructUserInfoWithMessages","userInfoProps","isUser","userName","avatarUrl","constructRootChatBlockMessages","getViewportCenter","center","editPropsStore","getStorage","SAVE_CHAT_TO_BLOCK_ACTION","surfaceService","layer","curMode","viewportCenter","newBlockIndex","newSessionId","latestMessageId","addAIChatBlock","getBlocks","rootWorkspaceId","rootDocId","category","ADD_TO_EDGELESS_AS_NOTE","getElementsBound","maxY","CommonActions","blockSelections","currentBlockSelections","PageEditorActions","rootId","noteId","docLinkClicked","addContent","newHost","EdgelessEditorActions","ChatBlockPeekViewActions","POSITIVE_INFINITY","AIErrorWrapper","PaymentRequiredErrorRenderer","generateText","nope","GeneralErrorRenderer","AIChatErrorRenderer","tip","AIPreloadConfig","readAforeign","TidyMindMapV3","redHat","completeWritingWithAI","freelyCommunicateWithAI","ChatPanelMessages","showDownIndicator","isLoading","messagesContainer","showChatCards","_renderAIOnboarding","getFlag","filteredItems","clientHeight","renderAvatar","renderItem","scrollToDown","renderLoading","shouldRenderError","renderEditorActions","isInsidePageEditor","ChatPanel","_changedProperties","_resetItems","_chatMessages","_cleanupHistories","_resettingCounter","fork","getTime","confirm","cleanup","continueInChat","ChatBlockInput","parentSessionId","updateChatBlock","createChatBlock","chatContext","_isInputEmpty","_focused","_curIndex","disableCleanUp","cleanButtonClasses","_send","currentChatBlockId","currentSessionId","DateTime","i18nTime","relative","accuracy","weekday","absolute","PeekViewStyles","unsafeCSS","baseTheme","fontSansFamily","AIChatBlockPeekView","_chatMessagesContainer","parentModel","_historyMessages","_modeService","historyMessagesString","parentChatBlockId","parentRootDocId","parentRootWorkspaceId","_deserializeHistoryChatMessages","latestHistoryMessage","latestMessageCreatedAt","latestHistoryMessageId","updateChatBlockMessages","createAIChatBlock","cleanCurrentChatHistories","currentChatMessages","CurrentMessages","ChatMessagesSchema","_constructBranchChatBlockMessages","currentUserInfo","forkMessages","forkLength","historyLength","_resetContext","calcChildBound","parentX","parentY","parentWidth","connectors","getConnectors","defaultX","CHAT_BLOCK_WIDTH","CHAT_BLOCK_HEIGHT","targetBlocks","childConnectors","connector","middleIndex","middleBlock","middleY","middleHeight","lastX","lastY","lastHeight","aiChatBlockId","CanvasElementType","CONNECTOR","ConnectorMode","Curve","chatBlock","currentMessages","isAssistantMessage","isLastReply","isNotReady","shouldRenderCopyMore","shouldRenderActions","messageClasses","AIChatBlockPeekViewTemplate","templates","FiveWTwoH","ConceptMap","Flowchart","SMART","SWOT","FourPMarketingMatrix","Storyboard","UserJourneyMap","BusinessProposal","DataAnalysis","SimplePresentation","FishboneDiagram","GanttChart","builtInTemplates","categories","candidates","cates","cate","temp","lcs","text1","text2","dp","buildStickerTemplate","preview","cover","hash","createDate","tags","rotate","stickerCover000","stickerContent000","stickerCover001","stickerContent001","stickerCover002","stickerContent002","stickerCover003","stickerContent003","stickerCover004","stickerContent004","stickerCover005","stickerContent005","stickerCover006","stickerContent006","stickerCover007","stickerContent007","stickerCover008","stickerContent008","stickerCover009","stickerContent009","stickerCover010","stickerContent010","stickerCover011","stickerContent011","stickerCover012","stickerContent012","stickerCover013","stickerContent013","stickerCover014","stickerContent014","stickerCover015","stickerContent015","stickerCover016","stickerContent016","stickerCover017","stickerContent017","stickerCover018","stickerContent018","stickerCover019","stickerContent019","stickerCover020","stickerContent020","stickerCover021","stickerContent021","stickerCover022","stickerContent022","stickerCover023","stickerContent023","stickerCover024","stickerContent024","stickerCover025","stickerContent025","stickerCover026","stickerContent026","stickerCover027","stickerContent027","stickerCover028","stickerContent028","stickerCover029","stickerContent029","stickerCover030","stickerContent030","stickerCover031","stickerContent031","stickerCover032","stickerContent032","stickerCover033","stickerContent033","stickerCover034","stickerContent034","stickerCover035","stickerContent035","stickerCover036","stickerContent036","stickerCover037","stickerContent037","stickerCover038","stickerContent038","stickerCover039","stickerContent039","stickerCover040","stickerContent040","stickerCover041","stickerContent041","stickerCover042","stickerContent042","stickerCover043","stickerContent043","stickerCover044","stickerContent044","stickerCover045","stickerContent045","stickerCover046","stickerContent046","stickerCover047","stickerContent047","stickerCover048","stickerContent048","stickerCover049","stickerContent049","stickerCover050","stickerContent050","stickerCover051","stickerContent051","stickerCover052","stickerContent052","stickerCover053","stickerContent053","stickerCover054","stickerContent054","stickerCover055","stickerContent055","stickerCover056","stickerContent056","stickerCover057","stickerContent057","stickerCover058","stickerContent058","stickerCover059","stickerContent059","stickerCover060","stickerContent060","stickerCover061","stickerContent061","stickerCover062","stickerContent062","stickerCover063","stickerContent063","stickerCover064","stickerContent064","stickerCover065","stickerContent065","stickerCover066","stickerContent066","stickerCover067","stickerContent067","stickerCover068","stickerContent068","stickerCover069","stickerContent069","stickerCover070","stickerContent070","stickerCover071","stickerContent071","stickerCover072","stickerContent072","stickerCover073","stickerContent073","stickerCover074","stickerContent074","stickerCover075","stickerContent075","stickerCover076","stickerContent076","stickerCover077","stickerContent077","stickerCover078","stickerContent078","stickerCover079","stickerContent079","stickerCover080","stickerContent080","stickerCover081","stickerContent081","stickerCover082","stickerContent082","stickerCover083","stickerContent083","stickerCover084","stickerContent084","stickerCover085","stickerContent085","stickerCover086","stickerContent086","stickerCover087","stickerContent087","stickerCover088","stickerContent088","stickerCover089","stickerContent089","stickerCover090","stickerContent090","stickerCover091","stickerContent091","stickerCover092","stickerContent092","stickerCover093","stickerContent093","stickerCover094","stickerContent094","stickerCover095","stickerContent095","stickerCover096","stickerContent096","stickerCover097","stickerContent097","stickerCover098","stickerContent098","stickerCover099","stickerContent099","stickerCover100","stickerContent100","stickerCover101","stickerContent101","stickerCover102","stickerContent102","stickerCover103","stickerContent103","stickerCover104","stickerContent104","stickerCover105","stickerContent105","stickerCover106","stickerContent106","stickerCover107","stickerContent107","stickerCover108","stickerContent108","stickerCover109","stickerContent109","stickerCover110","stickerContent110","stickerCover111","stickerContent111","stickerCover112","stickerContent112","stickerCover113","stickerContent113","stickerCover114","stickerContent114","stickerCover115","stickerContent115","stickerCover116","stickerContent116","stickerCover117","stickerContent117","stickerCover118","stickerContent118","stickerCover119","stickerContent119","stickerCover120","stickerContent120","stickerCover121","stickerContent121","stickerCover122","stickerContent122","stickerCover123","stickerContent123","stickerCover124","stickerContent124","stickerCover125","stickerContent125","stickerCover126","stickerContent126","stickerCover127","stickerContent127","stickerCover128","stickerContent128","stickerCover129","stickerContent129","stickerCover130","stickerContent130","stickerCover131","stickerContent131","stickerCover132","stickerContent132","stickerCover133","stickerContent133","stickerCover134","stickerContent134","stickerCover135","stickerContent135","stickerCover136","stickerContent136","stickerCover137","stickerContent137","stickerCover138","stickerContent138","stickerCover139","stickerContent139","stickerCover140","stickerContent140","stickerCover141","stickerContent141","stickerCover142","stickerContent142","stickerCover143","stickerContent143","stickerCover144","stickerContent144","stickerCover145","stickerContent145","stickerCover146","stickerContent146","stickerCover147","stickerContent147","stickerCover148","stickerContent148","stickerCover149","stickerContent149","stickerCover150","stickerContent150","stickerCover151","stickerContent151","stickerCover152","stickerContent152","stickerCover153","stickerContent153","stickerCover154","stickerContent154","stickerCover155","stickerContent155","stickerCover156","stickerContent156","stickerCover157","stickerContent157","stickerCover158","stickerContent158","stickerCover159","stickerContent159","stickerCover160","stickerContent160","stickerCover161","stickerContent161","stickerCover162","stickerContent162","stickerCover163","stickerContent163","stickerCover164","stickerContent164","stickerCover165","stickerContent165","stickerCover166","stickerContent166","stickerCover167","stickerContent167","stickerCover168","stickerContent168","stickerCover169","stickerContent169","stickerCover170","stickerContent170","stickerCover171","stickerContent171","stickerCover172","stickerContent172","stickerCover173","stickerContent173","stickerCover174","stickerContent174","stickerCover175","stickerContent175","stickerCover176","stickerContent176","stickerCover177","stickerContent177","stickerCover178","stickerContent178","stickerCover179","stickerContent179","stickerCover180","stickerContent180","stickerCover181","stickerContent181","stickerCover182","stickerContent182","stickerCover183","stickerContent183","stickerCover184","stickerContent184","stickerCover185","stickerContent185","stickerCover186","stickerContent186","stickerCover187","stickerContent187","stickerCover188","stickerContent188","stickerCover189","stickerContent189","stickerCover190","stickerContent190","stickerCover191","stickerContent191","stickerCover192","stickerContent192","stickerCover193","stickerContent193","stickerCover194","stickerContent194","stickerCover195","stickerContent195","stickerCover196","stickerContent196","stickerCover197","stickerContent197","stickerCover198","stickerContent198","stickerCover199","stickerContent199","stickerCover200","stickerContent200","stickerCover201","stickerContent201","stickerCover202","stickerContent202","stickerCover203","stickerContent203","stickerCover204","stickerContent204","stickerCover205","stickerContent205","stickerCover206","stickerContent206","stickerCover207","stickerContent207","stickerCover208","stickerContent208","stickerCover209","stickerContent209","stickerCover210","stickerContent210","stickerCover211","stickerContent211","stickerCover212","stickerContent212","stickerCover213","stickerContent213","stickerCover214","stickerContent214","stickerCover215","stickerContent215","stickerCover216","stickerContent216","stickerCover217","stickerContent217","stickerCover218","stickerContent218","stickerCover219","stickerContent219","stickerCover220","stickerContent220","stickerCover221","stickerContent221","stickerCover222","stickerContent222","stickerCover223","stickerContent223","stickerCover224","stickerContent224","stickerCover225","stickerContent225","stickerCover226","stickerContent226","stickerCover227","stickerContent227","stickerCover228","stickerContent228","stickerCover229","stickerContent229","stickerCover230","stickerContent230","EdgelessTemplatePanel","extend","builtInStickersTemplates","builtInEdgelessTemplates","PreconditionStrategy","commandLogger","bindKeys","keyBindingMap","onKeyEvent","createKeybindingsHandler","capture","AffineCommandRegistry","unsubKb","preconditionStrategy","keyBinding","binding","skipRegister","keybinding","registerAffineCommand","registerAffineCreationCommands","pageHelper","unsubs","PlusIcon","cmdk","creation","createPage","createEdgeless","createWorkspace","ImportIcon","registerAffineHelpCommands","NewIcon","help","openChangelog","popupWindow","ContactWithUsIcon","contactUs","workspaceMetadata","registerAffineLayoutCommands","SidebarIcon","appSidebarOpenAtom","navigationPanel","registerAffineNavigationCommands","navigationHelper","ArrowRightBigIcon","navigation","jumpToSubPath","WorkspaceSubPath","ALL","jumpToCollections","jumpToTags","openSettings","TRASH","registerAffineSettingsCommands","languageHelper","onLanguageChange","languagesList","currentLanguage","SettingsIcon","changeAppSetting","setTheme","language","originalName","tag","registerAffineUpdatesCommands","updateReadyAtom","updates","quitAndInstall","ERROR_REFLECT_KEY","createErrorFallback","ErrorConstructor","DumpInfo","globalContextService","currentWorkspaceId","useParams","ErrorStatus","imageMap","light","imageUrlFor404","dark","imageUrlForLight500","imageUrlForDark500","ErrorDetail","direction","onButtonClick","resetError","withoutImage","descriptions","isBtnLoading","setBtnLoading","resolvedTheme","useTheme","onBtnClick","useAsyncCallback","backgroundImage","ContactUS","Trans","AnyErrorFallback","reloadPage","reload","NoPageRootFallback","NoPageRootError","fallbacks","jumpToIndex","useNavigateHelper","RouteLogic","REPLACE","NotFound","canRetry","ttl","rerender","buttonDesc","onRetry","AffineErrorFallback","getErrorFallbackComponent","AffineErrorBoundary","fallbackRender","onError","componentStack","ErrorBoundary","fallback","AppContainer","appSettings","useAppSettingHelper","AppContainerWithoutSettings","useNoisyBackground","useBlurBackground","AppFallback","AppSidebarFallback","MainContainer","showAILoginRequiredAtom","AiLoginRequiredModal","useAtom","setAuth","useSetAtom","openSignIn","challengeFetcher","challenge","resource","generateChallengeResponse","ui","getChallengeResponse","captchaAtom","responseAtom","Captcha","setCaptcha","response","Turnstile","siteKey","useCaptcha","verifyToken","setResponse","prevChallenge","useEmailTitle","useNotificationHint","useButtonContent","useSendEmail","sendChangePasswordEmail","isMutating","isChangePasswordMutating","useMutation","mutation","sendChangePasswordEmailMutation","sendSetPasswordEmail","isSetPasswordMutating","sendSetPasswordEmailMutation","sendChangeEmail","isChangeEmailMutating","sendChangeEmailMutation","sendVerifyEmail","isVerifyEmailMutation","sendVerifyEmailMutation","sendEmail","OAuthProviderMap","OAuthProviderType","Google","GoogleDuotoneIcon","GitHub","GithubIcon","OIDC","OAuth","redirectUri","serverConfig","ServerConfigService","oauth","features$","oauthProviders","config$","OAuthProvider","br","authService","AuthService","isConnecting","setIsConnecting","signInOauth","auth","signIn","setAuthState","setAuthEmail","onSignedIn","useSearchParams","setIsMutating","session","status$","hasPassword","isExist","isUserExist","checkUserByEmail","sendEmailMagicLink","signUp","i18nKey","afterSignUpSendEmail","resendCountDown","setResendCountDown","isSending","setIsSending","loginStatus","onResendClick","afterSignInSendEmail","onSignInWithPasswordClick","onBackBottomClick","signInWithPassword","setEmailType","setPassword","passwordError","setPasswordError","setIsLoading","sendingEmail","setSendingEmail","onSignIn","signInPassword","sendMagicLink","credentialsRequirement$","hasSentEmail","setHasSentEmail","hint","buttonContent","onSendEmail","onBack","AuthModalBase","AuthPanel","CurrentPanel","UserPlanButton","serverConfigService","subscriptionService","SubscriptionService","hasPayment","payment","plan","pro$","isBeliever","isBeliever$","setSettingModalAtom","useCatchEventCallback","scrollAnchor","planLabel","SubscriptionPlan","Free","data-is-believer","data-event-props","ConfirmDeletePropertyModal","show","WorkspacePropertiesAdapter","manager","PagePropertiesMetaManager","getPropertyRelatedPages","iconNames","getDefaultIconName","getSafeIconName","iconName","PagePropertyType","nameToComponentName","capitalize","nameToIcon","Icon","managerContext","tagSelectorItem","InlineTagsList","focusedIndex","tagList","TagService","tags$","tagIds","tagIdsByPageId$","onRemoved","untag","TagItem","EditTagMenu","onTagDelete","legacyProperties","WorkspaceLegacyProperties","tagService","tagByTagId$","tagColor","color$","tagValue","value$","menuProps","updateTagName","rename","currentTarget","TagsIcon","jumpToTag","tagColors","changeColor","renderMenuItemOptions","isCreateNewTag","tagOption","TagsEditor","inputValue","setInputValue","filteredTags","filterTagsByName$","selectedTagIds","setSelectedTagIds","showCreateTag","tagOptions","setFocusedIndex","focusedInlineIndex","setFocusedInlineIndex","safeFocusedIndex","clamp","safeInlineFocusedIndex","scrollContainerRef","handleCloseModal","onInputChange","onToggleTag","tagEntity","o","focusInput","nextColor","rotateNextColor","useReducer","onCreateTag","newTag","createTag","onSelectTagOption","onInputKeyDown","tagToRemove","newFocusedIndex","scrollIntoView","newItemToFocus","commonProps","TempTagItem","data-tag-id","data-tag-value","MoreHorizontalIcon","DeleteTagConfirmModal","TagsInlineEditor","empty","avoidCollisions","data-empty","data-readonly","TextValue","handleBlur","updateCustomProperty","handleOnChange","endsWith","TagsValue","propertyValueRenderers","checkbox","number","editingPropertyAtom","modifiers","restrictToParentElement","restrictToVerticalAxis","SortableProperties","sorter","getOrderedItems","editingItem","sensors","useSensors","useSensor","PointerSensor","activationConstraint","distance","localProperties","setLocalProperties","onDragEnd","over","move","filteredProperties","getCustomPropertyMeta","DndContext","SortableContext","SortablePropertyRow","setNodeRef","isDragging","isSorting","useSortable","data-property","data-draggable","data-dragging","data-other-dragging","visibilities","rotateVisibility","visibility","visibilityMenuText","visibilitySelectorText","VisibilityModeSelector","required","data-required","PagePropertiesSettingsPopup","PageBacklinksPopup","backlinks","link","AffinePageReference","wrapper","PagePropertyRowNameMenu","onFinishEditing","localPropertyMeta","setLocalPropertyMeta","localProperty","setLocalProperty","nextVisibility","showDeleteModal","setShowDeleteModal","handleFinishEditing","updateCustomPropertyMeta","handleNameBlur","handleNameChange","toggleHide","handleDelete","removeCustomProperty","handleIconChange","EditPropertyNameMenuItem","onIconChange","onNameBlur","onNameChange","PropertyTypeMenuItem","InvisibleIcon","ViewIcon","onInteractOutside","PagePropertiesTableHeader","docLinksServices","DocLinksServices","DocLinksService","docBacklinks","backlinks$","docService","timestampElement","localizedCreateTime","createTimeElement","updatedDate","dTimestampElement","useDebouncedValue","handleCollapse","inlineDocInfo","Collapsible","ToggleExpandIcon","data-collapsed","PagePropertyRow","rowNameClassName","ValueRenderer","editingMeta","setEditingMeta","setEditingItem","handleEditMeta","handleFinishEditingMeta","PageTagsRow","PagePropertiesTableBody","isPropertyRequired","PagePropertiesAddProperty","findNextDefaultName","allNames","PagePropertiesCreatePropertyMenuItems","onCreated","metaManager","onAddProperty","schemaList","getOrderedPropertiesSchema","nameExists","addPropertyMeta","newPropertyTypes","PagePropertiesAddPropertyMenuItems","onCreateClicked","nonRequiredMetaList","metaList","isChecked","hasCustomProperty","onClickProperty","addCustomProperty","nonRequiredMetaOptions","adding","setAdding","toggleAdding","menuOptions","PagePropertiesTableInner","expanded","setExpanded","whenSynced","usePagePropertiesManager","useCurrentWorkspacePropertiesAdapter","PagePropertiesManager","PagePropertiesTable","Suspense","BackLinksRow","references","TagsRow","RowComponent","TimeRow","formatI18nTime","DateTimeIcon","HistoryIcon","InfoModal","docsSearchService","DocsSearchService","titleInputHandleRef","handleClose","watchRefsFrom","BlocksuiteHeaderTitle","inputHandleRef","InfoTable","iconRows","chunk","IconsSelectorPanel","onSelectedChange","iconButton","iconRow","data-name","IconsSelectorButton","isElementOption","isValidElement","propertiesSchema","pageProperties","systemPropertiesSchema","system","customPropertiesSchema","order","checkPropertyExists","validatePropertyValue","Tags","newOrder","updatePropertyMeta","opt","removePropertyMeta","getPropertyStatistics","mapping","getPageProperties","createFractionalIndexingSortableHelper","ensuring","ensureRequiredProperties","ensurePageProperties","getItems","getCustomProperties","getItemOrder","setItemOrder","getItemId","intrinsicMeta","fromEntries","getCustomProperty","getNewItemOrder","pageReferenceIcon","pageMetaHelper","useDocMetaHelper","journalHelper","useJournalHelper","docsService","pageReferenceRenderer","isPageJournal","getLocalizedJournalDateString","referencedPage","getDocMeta","LinkedPageIcon","LinkedEdgelessIcon","isJournal","localizedJournalDate","TodayIcon","peekView","PeekViewService","isInPeekView","useInsidePeekView","close","WorkbenchLink","SignOutModal","defaultTexts","getDefaultText","APP_SIDEBAR_OPEN","innerWidth","appSidebarFloatingAtom","appSidebarResizingAtom","appSidebarWidthAtom","navBodyStyle","navHeaderStyle","navStyle","navWrapperStyle","SidebarHeader","SidebarSwitch","sideBottom","AddPageButton","onAuxClick","CategoryDivider","collapsed","setCollapsed","collapsible","data-collapsible","ToggleCollapseIcon","onCollapsedChange","postfix","MenuLinkItem","linkComponent","LinkComponent","Spotlight","outside","useMouseOffset","setOffset","setOutside","offsetVars","isDark","QuickSearchInput","isMac","SearchIcon","SidebarContainer","SidebarScrollableContainer","AppSidebar","setWidth","setFloating","setResizing","dOnResize","isFloatingMaxWidth","matchMedia","matches","isOverflowWidth","isFloating","localStorage","hasRightBorder","data-transparent","data-has-border","nav","currentWorkspace","WorkspaceSelector","tooltipContent","data-show","EmbedLinkedDocBlockComponent","divider","dividerContainer","linksContainer","linksTitles","BiDirectionalLinkPanel","setShow","docLinksService","links","links$","handleClickShow","BlocksuiteEditorJournalDocTitle","isTodayJournal","journalDate","useJournalInfoHelper","patchSpecService","onMounted","onWidgetConnected","oldSetup","disposable","patchReferenceRenderer","specs","reactToLit","reactRenderer","litRenderer","referenceNodeConfig","setCustomContent","LinkedDocBlockComponent","_load","isBannerEmpty","CustomAttachmentBlockService","AttachmentBlockService","maxFileSize","CustomAttachmentBlockSpec","AttachmentBlockSpec","CommonBlockSpecs","ListBlockSpec","NoteBlockSpec","DatabaseBlockSpec","DataViewBlockSpec","DividerBlockSpec","BookmarkBlockSpec","EmbedFigmaBlockSpec","EmbedGithubBlockSpec","EmbedYoutubeBlockSpec","EmbedLoomBlockSpec","EmbedHtmlBlockSpec","EmbedSyncedDocBlockSpec","EmbedLinkedDocBlockSpec","AIChatBlockSpec","EdgelessAIChatBlockSpec","createLinkedWidgetConfig","getMenus","inlineEditor","rawMetas","docMetas","getJournalPageDateString","I18n","isFuzzyMatch","pureName","regex","isEdgeless","LinkedWidgetUtils","insertLinkedNode","atMenu","linkDoc","maxDisplay","overflowText","createNewDocMenuGroup","withAffineRootService","customLoadFonts","fontLoader","AffineCanvasTextFonts","eventName","mixpanel","adapted","DocEditor","createReactComponentFromLit","PageEditor","DocTitle","PageMetaTags","DocMetaTags","EdgelessEditor","usePatchSpecs","shared","peekViewService","referenceRenderer","EdgelessSurfaceBlockSpec","EdgelessSurfaceRefBlockSpec","FrameBlockSpec","EdgelessTextBlockSpec","EdgelessNoteBlockSpec","linkedWidget","PageSurfaceBlockSpec","PageSurfaceRefBlockSpec","confirmModal","patched","patchEdgelessClipboard","rootSpec","viewConnected","EdgelessRootBlockComponent","AIChatBlockFlavour","registerBlock","scale","patchPeekViewService","pageService","peek","patchNotificationService","ul","li","Multiselect","searchBox","singleSelect","accentToNotify","toastId","onAutoClose","patchQuickSearchService","quickSearchService","searchDoc","searchResult","skipSelection","userInput","resolvedDoc","resolveLinkToDoc","searchedDoc","QuickSearchService","quickSearch","RecentDocsQuickSearchSession","DocsQuickSearchSession","CreationQuickSearchSession","isNewDoc","defaultQuery","oldAction","addSiblingBlocks","embedOptions","getEmbedBlockOptions","linkedDocNames","patchDocModeService","DEFAULT_MODE","Fragment","BlocksuiteDocEditor","titleRef","docRef","docPage","setDocPage","workbench","WorkbenchService","activeView","activeView$","location$","onDocRef","richText","focusEnd","focusFirstParagraph","hasViewport","appendParagraph","BlocksuiteEdgelessEditor","editorRef","click","forwardSlot","slot","useBlockElementById","setBlockElement","BlocksuiteEditorContainer","defaultSelectedBlockId","scrolledRef","hashChangedRef","rootRef","edgelessRef","editorModeSwitched","docUpdated","tagClicked","edgelessPage","newDocId","affineEditorContainerProxy","api","Proxy","maybeFn","handleScrollToBlock","selectManager","newSelection","data-affine-editor-container","BlockSuiteEditorImpl","onLoadEditor","rootAdded","editorDisposeRef","onRefChange","blockUpdated","BlockSuiteEditor","AIOnboardingType","createStorageEvent","StorageEvent","storageArea","GENERAL","handleError","codeToError","GeneralNetworkError","GraphQLError","UserFriendlyError","extensions","fromAnyError","fetcher","defaultFetcher","ms","safeParseError","toTextStream","eventSource","resolveMessagePromise","rejectMessagePromise","messageQueue","resetMessagePromise","messagePromise","messageListener","readyState","EventSource","CLOSED","client","createSession","createCopilotSessionMutation","createCopilotSession","forkSession","forkCopilotSessionMutation","forkCopilotSession","createMessage","createCopilotMessageMutation","createCopilotMessage","getSessions","getCopilotSessionsQuery","currentUser","copilot","getHistories","getCopilotHistoriesQuery","getHistoryIds","getCopilotHistoryIdsQuery","cleanupSessions","cleanupCopilotSessionMutation","cleanupCopilotSession","chatText","backendUrl","chatTextStream","endpoint","imagesStream","getBaseUrl","resizeImage","createSessionMessage","promptName","providedSessionId","hasAttachments","stringAttachments","partition","attachment","textToText","workflow","_sessionId","_messageId","retrySessionId","onabort","listHistories","toImage","trackAction","inferPageMode","defaultActionOptions","isElementModel","isBlockModel","toTrackedOptions","inferEventName","pageMode","otherProperties","omit","inferObjectType","inferSegment","inferModule","inferControl","lowerCase","other","filterStyleToPromptName","processTypeToPromptName","setupAIProvider","chatSessions","getChatSessionId","storeKey","createChatSession","SlideSchema","enum","parseJson","slides","slide","sessionIds","urls","regular","paywall","aiAction","viewPlans","CustomSpecs","specProvider","SpecProvider","getInstance","extendSpec","hasExpectSpace","spaceDoc","havePageBlock","expectPageId","expectGuid","blockSize","isPublic","onEditSave","currentPage","pageMeta","useBlockSuiteDocMeta","setDocTitle","usePageHelper","useDocCollectionHelper","docRecordList","isPreferredEdgeless","createPageAndOpen","openDoc","createEdgelessAndOpen","importFileAndOpen","showImportModal","withResolvers","pageIds","importedCount","isWorkspaceFile","openAll","onFail","importFile","EditorOutlineViewer","openOutlinePanel","outlineViewerRef","OutlineViewer","toggleOutlinePanel","titleIconsWrapper","ListTitleCell","ListIconCell","CollectionSelectionCell","selectable","onSelectionChange","CollectionListOperationsCell","operations","CollectionListItem","collectionTitleElement","CollectionListItemWrapper","ColWrapper","flex","alignment","selectionState","setSelectionActive","selectionStateAtom","selectionActive","CollectionListHeader","onCreate","FavoriteOperation","favAdapter","CompatibleFavoriteItemsAdapter","isFavorite","isFavorite$","onToggleFavoriteCollection","FavoriteTag","SelectCollection","collectionService","CollectionService","collections","collections$","setSelection","setKeyword","collectionMetas","reg","collectionItemRenderer","CollectionListItemRenderer","collectionHeaderRenderer","ListTableHeader","headerCols","collectionHeaderColsDef","collectionOperationRenderer","SelectorLayout","searchPlaceholder","selectedCount","onSearch","onClear","VirtualizedList","selectedIds","onSelectedIdsChange","itemRenderer","rowAsLink","operationsRenderer","headerRenderer","useCollectionOperationsRenderer","CollectionOperationCell","VirtualizedCollectionList","setHideHeaderCreateNewCollection","handleCreateCollection","listRef","showFloatingToolbar","setShowFloatingToolbar","selectedCollectionIds","setSelectedCollectionIds","useDeleteCollectionInfo","collectionOperations","filteredSelectedCollectionIds","hideFloatingToolbar","toggleSelectable","deleteCollection","atTopThreshold","atTopStateChange","onSelectionActiveChange","ListFloatingToolbar","playAnimation","setPlayAnimation","favoritedAnimation","FavoritedIcon","FavoriteIcon","FloatingToolbar","Toolbar","Item","Separator","onRestore","DeletePermanentlyIcon","dateCell","displayProperties","useAllDocDisplayProperties","bodyNotes","PageSelectionCell","PageTagsCell","tagsByPageId$","PageTags","hoverExpandDirection","widthOnHover","maxItems","PageCreateDateCell","data-date-raw","PageUpdatedDateCell","PageListOperationsCell","PageListItem","pageTitleElement","PageListItemWrapper","hidden","anchorIndex","setAnchorIndex","anchorIndexAtom","rangeIds","setRangeIds","rangeIdsAtom","handleShiftClick","currentIndex","lowerIndex","upperIndex","newRangeIds","currentSelected","setRange","newSelected","concat","handleKeyUp","tagIndicator","tagInline","tagLabel","handleRemove","data-idx","data-focused","TagItemNormal","nTags","tagsOrdered","sanitizedWidthOnHover","tagsInPopover","lastTags","useFilterTag","FilterTag","evalRef","variableMap","evalLiteral","lit","evalFilter","filterMatcher","findData","funcName","evalFilterList","filterList","datePickerPopperContentOptions","DateSelect","onDateChange","valueOf","MultiSelect","optionMap","literalMatcher","Matcher","typesystem","isSubtype","tDateRange","tBoolean","tDate","getTagsOfArrayTag","tTag","is","tArray","Condition","propertiesMeta","variableDefineMap","ast","renderArgs","VariableSelect","onSelect","FunctionSelect","allMatchedData","defaultArgs","Arg","argType","FilterList","oldIndex","CreateFilterMenu","defineData","DataHelper","supers","_match","allMatched","tUnion","tTypeVar","tTypeRef","tFunction","typeVars","rt","DataDefine","dataMap","isByName","isSubOf","superType","sup","isSubOfByName","isSuperOf","subType","dataDefine","createDataHelper","extends","isDataType","tUnknown","subst","realArgs","realRt","realArg","Created","CreatedIcon","Updated","UpdatedIcon","CloudWorkspaceIcon","createDefaultFilter","variable","firstArg","staticType","safeArray","safeTags","usePageHeaderColsDef","ListHeaderTitleCell","sortable","tagHeaderColsDef","blockCardAround","BlockCard","desc","CreateNewPagePopup","createNewPage","PageIcon","NewPageButton","handleCreateNewPage","allDocs","handleImportFile","hideWhenDetached","PageDisplayMenu","workspaceProperties","setProperties","handleSelect","handleSetDocDisplayProperties","propertyOptions","groupOptions","subItems","currentGroupType","alignOffset","createTagFilter","docListHeader","docListHeaderTitle","PageListNewPageButton","onCreatePage","onCreateEdgeless","onImportFile","createNewEdgeless","PageListHeader","isNewTabTrigger","CollectionPageListHeader","handleJumpToCollections","useEditCollection","handleEdit","ret","updateCollection","createAndAddDocument","createDocumentFn","addPageToCollection","onConfirmAddDocument","ViewLayersIcon","TagPageListHeader","tagTitle","jumpToCollection","useEditCollectionName","showTips","handleJumpToTags","saveToCollection","addCollection","createEmptyCollection","SwitchTag","TagLink","GroupLabel","useDateGroupDefinitions","withinDaysAgo","betweenDaysAgo","GroupTagLabel","useTagGroupDefinitions","sortedTagsLiveData$","localeCompare","untagged","useFavoriteGroupDefinitions","favourites","favorites$","fav","usePageItemGroupDefinitions","tagGroupDefinitions","createDateGroupDefinitions","updatedDateGroupDefinitions","favouriteGroupDefinitions","itemGroupDefinitions","none","useFilteredPageMetas","pageMetas","shareDocsService","ShareDocsService","shareDocs","list$","getPublicMode","shareDoc","PublicPageMode","Edgeless","favoriteItems","pageData","publicMode","filters","filterPageByRules","filterPage","usePageOperationsRenderer","removeFromAllowList","deletePagesFromCollections","isInAllowList","PageOperationCell","onRemoveFromAllowList","VirtualizedPageList","listItem","setHideHeaderCreateNewPage","selectedPageIds","setSelectedPageIds","pageOperations","pageHeaderColsDef","filteredPageMetas","pageMetasToRender","filteredSelectedPageIds","pageOperationRenderer","allowList","pageHeaderRenderer","pageItemRenderer","PageListItemRenderer","setTrashModal","useTrashModalHelper","handleMultiDelete","pageNameMapping","pageNames","pageTitles","VirtualizedTrashList","permanentlyDeletePage","useBlockSuiteMetaHelper","handleMultiRestore","onConfirmPermanentlyDelete","pageOperationsRenderer","TrashOperationCell","onPermanentlyDeletePage","onRestorePage","List","ListProvider","initialValues","listPropsAtom","ListInnerWrapper","ListInner","useItemSelectionStateEffect","startTime","dblClickHandler","closest","escHandler","setListPropsAtom","setListSelectionState","groupsAtom","hideHeader","ItemGroup","ListScrollContainer","tooltipSideTop","tooltipSideTopAlignEnd","openDisableShared","setOpenDisableShared","favourite","duplicate","blocksuiteDoc","openInfoModal","setOpenInfoModal","onOpenInfoModal","docInfoPanel","onDisablePublicSharing","onRemoveToTrash","docMenu","deleteDoc","onOpenInSplitView","openInSplitView","onOpenInNewTab","onToggleFavoritePage","onToggleFavoritePageOption","toggleFavorite","onDuplicate","handleRemoveFromAllowList","docList","removeOrganizeItem","OperationMenu","DisablePublicSharing","FilterMinusIcon","InformationIcon","OpenInNewIcon","SplitViewIcon","DuplicateIcon","MoveToTrash","data-favorite","MoreVerticalIcon","DisablePublicSharingModal","handleRestorePage","openEditCollectionModal","editModal","openEditCollectionNameModal","editNameModal","handleEditName","onConfirmAddDocToCollection","EditIcon","FilterIcon","TagOperationCell","favoriteService","FavoriteService","favoriteList","CreateOrEditTag","tagMeta","ShareIcon","transitionStyle","ExportMenuItem","ExportMenuItems","exportHandler","itemMap","ExportToPdfIcon","ExportToHtmlIcon","ExportToPngIcon","ExportToMarkdownIcon","Export","handleExportMenuOpenChange","docOptions","export","ExportIcon","titles","confirmModalProps","Delete","weakMap","getPagePreviewText","pageRoot","queue","previewLenNeeded","emptyAtom","PagePreviewInner","previewAtom","useBlockSuitePagePreview","baseAtom","onMount","useDocCollectionPage","setPage","DisposableGroup","docAdded","docRemoved","loaded","PagePreview","collapsedIconContainer","headerCount","headerLabel","selectAllButton","spacer","ItemGroupHeader","collapseState","setCollapseState","groupCollapseStateAtom","onExpandedClicked","selectedItems","allSelected","onSelectAll","nonCurrentGroupIds","newSelectedPageIds","data-group-id","data-group-items-count","data-group-selected-items-count","data-state","requiredPropNames","listsPropsAtom","selectAtom","shallowEqual","pageItems","pageMetaToListItemProp","toggleSelection","prevSelected","PageTitle","UnifiedPageIcon","isPublicPage","collectionMetaToListItemProp","TagListItemRenderer","TagListItem","tagMetaToListItemProp","pageCount","EdgelessIcon","ListHeaderCell","sortKey","sorting","onSort","data-sortable","data-sorting","SortUpIcon","SortDownIcon","ListHeaderCheckbox","setSelectionState","itemsAtom","onActivateSelection","listHandlersAtom","_e","MultiSelectIcon","hideHeaderAtom","setSorter","sorterAtom","newSortKey","data-selectable","data-selection-active","isTagHidden","selectionActiveAtom","baseState","validKeys","sorterStateAtom","sortingFn","fallbackKey","valA","valB","revertSymbol","revert","sorterState","sortCtx","itemsToItemGroups","groupDefs","allItems","groupDef","def","createIsolation","onSearchChange","TagIcon","tagMetas$","menuOpen","setMenuOpen","setTagName","handleChangeName","tagIcon","setTagIcon","randomTagColor","handleChangeIcon","tagItems","handleEscape","SelectTag","tagMetas","filteredTagMetas","tagItemRenderer","tagOperationRenderer","tagHeaderRenderer","TagListHeader","VirtualizedTagList","showCreateTagInput","setShowCreateTagInput","tagOperations","filteredSelectedTagIds","onOpenCreate","TagListTitleCell","TagSelectionCell","TagListOperationsCell","TagListItemWrapper","displayPropertiesAtom","defaultProps","filterByFilterList","varMap","flexBasis","data-hide-item","days","startDate","getDate","getMonth","getFullYear","days0","days1","objA","objB","keysA","keysB","hasOwnProperty","AffineShapeIcon","ellipse","rx","ry","CreateCollectionModal","onConfirmTitle","CreateCollection","onConfirmText","isNameEmpty","useAllPageListConfig","shareDocService","pageMap","allPages","Page","getPage","favoriteRender","RulesMode","reset","buttons","switchMode","allPageListConfig","showPreview","setShowPreview","allowListPages","rulesPages","favorites","expandInclude","setExpandInclude","tips","highlight","onFocus","RulesEmpty","noRules","fullHeight","filteredCount","EditCollectionModal","onConfirmOnCollection","EditCollection","initMode","onSaveCollection","onIdsChange","SelectPage","useFilter","changeFilters","showFilter","setShowFilter","clickFilter","onCreateFilter","updateFilters","createFilter","filteredList","useSearch","searchText","updateSearchText","searchedList","clearSelected","compatibleFavoriteItemsAdapter","EmptyList","AllPageListOperationsMenu","onChangeFilterList","SaveAsCollectionButton","SaveIcon","setData","headingAtom","PageListHeading","useVirtuosoItems","groupCollapsedState","Scroller","virtuosoItems","atTop","setAtTop","handleAtTopStateChange","Header","itemContentRenderer","_index","Virtuoso","data-total-count","topItemCount","totalCount","itemContent","ItemContainer","ItemText","AddWorkspace","onAddWorkspace","onNewWorkspace","UserAccountItem","WorkspaceCardSkeleton","WorkspaceCard","onSettingClick","onEnableCloudClick","openingId","isOwner","enableCloudText","isLocal","onEnableCloud","CollaborationIcon","SortableWorkspaceItem","useIsWorkspaceOwner","useWorkspaceName","WorkspaceList","workspaceList","workspaceType","workspaceTypeIcon","useWorkspaceInfo","CloudWorkSpaceList","workspaces","onClickWorkspace","onClickWorkspaceSetting","LocalWorkspaces","onClickEnableCloud","LocalWorkspaceIcon","AFFiNEWorkspaceList","onEventEnd","workspaces$","setOpenCreateWorkspaceModal","confirmEnableCloud","useEnableCloud","setOpenSettingModalAtom","cloudWorkspaces","localWorkspaces","onFinished","isAuthenticated","SignInItem","onClickSignIn","UserWithWorkspaceListLoading","UserWithWorkspaceListInner","session$","setOpenSignIn","openSignInModal","workspaceManager","account","UserWithWorkspaceList","useDocEngineStatus","engineState","workspaceInfo","CloudWorkspaceStatus","SyncingWorkspaceStatus","UnSyncWorkspaceStatus","UnsyncIcon","LocalWorkspaceStatus","OfflineStatus","NoNetworkIcon","useSyncEngineSyncProgress","isOnline","useSystemOnline","isOverCapacity","setIsOverCapacity","permissionService","WorkspacePermissionService","permission","isOwner$","jumpToPricePlan","disposableOverCapacity","isStorageOverCapacity","CloudWorkspaceSyncStatus","usePauseAnimation","timeToResume","paused","setPaused","resume","pause","WorkspaceInfo","delayActive","setDelayActive","data-type","information","isUserWorkspaceListOpened","setOpenUserWorkspaceList","closeUserWorkspaceList","openUserWorkspaceList","mainContainerStyle","noisyBackground","blurBackground","data-noise-background","data-is-resizing","data-blur-background","appSideBarOpen","data-is-desktop","data-client-border","data-side-bar-open","AsyncCallbackContext","handleAsyncError","setAppSettings","updateSettings","prevSettings","setDocReadonly","openPage","pageRecordList","removeToTrash","trashDate","removeDoc","publicPage","cancelPublicPage","openPageAfterDuplication","currentPageMode","currentPageMeta","newPage","lastDigitRegex","newNumber","newPageTitle","account$","setAuthAtom","enableCloud","ws","openPageId","signInOrEnableCloud","closeOnSuccess","trashModalAtom","trashModal","handleOnConfirm","useReactiveAdapter","proxy","setProxy","useDebouncedState","docMetaUpdated","observeDeep","unobserveDeep","rpcToObservable","onSubscribe","atomWithObservable","onUpdateReady","updateAvailableAtom","onUpdateAvailable","downloadProgressAtom","onDownloadProgress","changelogCheckedAtom","checkingForUpdatesAtom","currentVersionAtom","currentVersion","currentChangelogUnreadAtom","useAppUpdater","appQuitting","setAppQuitting","updateReady","setting","setSetting","downloadProgress","changelogUnread","setChangelogUnread","checkingForUpdates","setCheckingForUpdates","bottomButtons","checkForUpdates","settingsPanel","about","checkUpdates","updateInfo","downloadUpdate","toggleAutoDownload","toggleAutoCheck","dismissChangelog","autoCheck","autoDownload","updateAvailable","useAllBlockSuiteDocMeta","docMeta","JOURNAL_DATE_FORMAT","bsWorkspaceHelper","_createJournal","maybeDate","toDate","setJournalPageDateString","getJournalsByDate","getJournalByDate","isPageTodayJournal","getJournalDateString","journalDateString","appendContentToToday","useJournalRouteHelper","openJournal","newTab","openToday","toDayjs","isValid","useSWRMutation","useMutateQueryResource","mutate","useSWRConfig","varsFilter","_vars","defaultNavigate","router","NavigateContext","jumpToPage","logic","jumpToPageBlock","subPath","jumpTo404","jumpToExpired","jumpToSignIn","otherOptions","encodeURIComponent","openInApp","encodedUrl","getOnLineStatus","onLine","onStoreChange","trackFn","levels","enableAutoTrack","argName","createMixpanel","createProxyHandler","event_name","middlewareProperties","opt_out_tracking","opt_in_tracking","has_opted_in_tracking","has_opted_out_tracking","identify","unique_id","people","track_pageview","makeTrackerInner","levelProxy","AuthSession","watchCachedAuthSession","waitForAuthenticated","isRevalidating$","getSession","Infinity","sessionInfo","setCachedAuthSession","fetchSession","waitForRevalidation","isRevalidating","removeAvatar","uploadAvatar","reducedFile","validateAndReduceImage","updateLabel","UserFeature","isEarlyAccess$","features","FeatureType","EarlyAccess","error$","getUserFeatures","isNetworkError","isBackendError","UserQuota","quota$","used$","usedFormatted$","used","max$","quota","storageQuota","maxFormatted$","percent$","toFixed","percent","fetchUserQuota","NetworkError","BackendError","GraphQLService","rawGql","gqlFetcherFactory","rxGql","gql","standardError","ServerConfig","credentialsRequirement","fetchServerConfig","revalidateIfNeeded","onApplicationStart","Subscription","subscription$","Pro","ai$","AI","recurring","SubscriptionRecurring","Lifetime","fetchSubscriptions","setCachedSubscriptions","getCachedSubscriptions","resumeSubscription","idempotencyKey","mutateResumeSubscription","cancelSubscription","mutateCancelSubscription","setSubscriptionRecurring","SubscriptionPrices","prices$","proPrice$","prices","price","aiPrice$","readableLifetimePrice$","lifetimeAmount","fetchSubscriptionPrices","AccountChanged","onAccountChanged","createCheckoutSession","UserCopilotQuota","copilotActionLimit$","copilotActionUsed$","aiQuota","fetchUserCopilotQuota","limit","UserCopilotQuotaService","copilotQuota","reconnect","WebSocketService","ioManager","Manager","getAffineCloudBaseUrl","autoConnect","transports","secure","protocol","sockets","newSocket","socket","AuthStore","fetchService","gqlService","globalStateService","uploadAvatarMutation","removeAvatarMutation","updateUserProfileMutation","getUserQuery","ServerConfigStore","serverConfigData","serverConfigQuery","ServerFeature","oauthProvidersData","oauthProvidersQuery","SUBSCRIPTION_CACHE_KEY","getDefaultSubscriptionSuccessCallbackLink","SubscriptionStore","globalCacheService","subscriptionQuery","resumeSubscriptionMutation","cancelSubscriptionMutation","updateSubscriptionMutation","createCheckoutSessionMutation","successCallbackLink","pricesQuery","UserCopilotQuotaStore","graphqlService","copilotQuotaQuery","UserFeatureStore","getUserFeaturesQuery","UserQuotaStore","quotaQuery","collectAllBlobSizes","configureCloudModule","FetchService","UserQuotaService","UserFeatureService","AccountLoggedIn","AccountLoggedOut","toAIUserInfo","onApplicationFocused","redirect","buildRedirectUri","openExternal","credential","signOut","hostname","port","rxFetch","externalSignal","timeoutId","statusText","userFeature","UserQuotaChanged","q","COLLECTIONS_KEY","COLLECTIONS_TRASH_KEY","collectionsYArray","toArray","collectionsTrash$","collectionsTrashYArray","collection$","updateFirstOfYArray","deletePageFromCollection","indexList","deletePagesFromCollection","idSet","newAllowList","array","configureCollectionModule","DocBacklinks","watchRefsTo","DocLinks","configureDocLinksModule","exhaustMapWithTrailing","defer","release$","source$","throttle","scheduled","asyncScheduler","finalize","IndexedDBJobQueue","databaseName","database","broadcast","BroadcastChannel","TIMEOUT","enqueue","ensureInitialized","trx","objectStore","batchKey","commit","postMessage","accept","batchKeys","currentBatchKey","currentBatchJobs","skipCurrentBatch","isAcceptable","waitForAccept","deferred","onmessage","return","nid","openDB","createObjectStore","autoIncrement","createIndex","isTimeout","remaining","JobRunner","worker","interval","defaultBM25params","bm25","termFreq","matchingCount","fieldLength","avgFieldLength","bm25params","invDocFreq","Match","scores","highlighters","getScore","addScore","score","currentScore","getHighlighters","addHighlighter","newRanges","ranges","and","newWeight","copyExtData","or","exclude","boost","asyncFilter","NGramTokenizer","tokenize","splitted","nextBreak","Graphemer","substring","term","tokens","GeneralTokenizer","tokenizeWord","word","testLang","token","StringInvertedIndex","fieldKey","objs","InvertedIndexKey","forString","IDBKeyRange","forPrefix","add1","terms","IntegerInvertedIndex","forInt64","BooleanInvertedIndex","forBoolean","FullTextInvertedIndex","queryTokens","matched","submatched","originTokenTerm","fromBuffer","asString","matchLength","pos","rs","positions","_end","maxScore","minScore","normalizedScore","highestScore","highestIndex","highestRanges","tokenMap","originString","kvMetadataStore","TextDecoder","asInt64","getBigInt64","carry","sum","TextEncoder","encode","setBigInt64","DataStruct","initializePromise","invertedIndex","iidx","getKey","indexId","getAllKeys","batchWrite","deletes","inserts","inst","matchAll","allNids","queryRaw","weights","queries","occur","pagination","nids","resultNode","hasMore","aggregate","hitPagination","hits","buckets","bucket","bucketIndex","Document","readwrite","keyPath","recordsStore","unique","invertedIndexStore","highlights","before","highlightValues","rawValues","highlighter","originText","after","maxPrefix","mergeRanges","intervals","firstMatch","pointer","matchStart","matchEnd","highlighted","IndexedDBIndex","broadcast$","channel","write","IndexedDBIndexWriter","search$","aggregate$","rollback","IndexedDBIndexStorage","getIndex","docIndexSchema","blockIndexSchema","createWorker","Worker","msgId","terminateAbort","currentMsgId","msgHandler","output","abortHandler","terminate","DocsIndexer","jobQueue","runner","execJob","requestIdleCallback","indexStorage","docIndex","blockIndex","workspaceEngine","setupListener","workerOutput","ensureWorker","performance","rootDocBuffer","allIndexedDocs","MAX_SAFE_INTEGER","docBuffer","deletedDoc","addedDoc","docIndexWriter","blockIndexWriter","oldBlocks","reindexDoc","startCrawling","handleWorkspaceEngineBeforeStart","indexer","firstMatchFlavour","blockContent","matchedBlockId","searchRefsFrom","docIds","refs","searchRefsTo","getDocTitle","configureDocsSearchModule","DEFAULT_COLLAPSABLE_STATE","organize","favoritesOld","migrationFavorites","ExplorerSection","collapsed$","EmptyNodeChildren","useExplorerCollectionNodeOperations","onOpenCollapsed","onOpenEdit","workbenchService","deleteInfo","addDocToCollection","handleToggleFavoriteCollection","handleAddDocToCollection","handleOpenInSplitView","openCollection","handleOpenInNewTab","openInNewTab","handleDeleteCollection","deleteOrganizeItem","handleShowEdit","CollectionIcon","ExplorerCollectionNode","reorderable","additionalOperations","dndData","handleRename","renameOrganizeItem","handleDropOnCollection","createOrganizeItem","handleDropEffectOnCollection","handleDropOnPlaceholder","finalOperations","handleCanDrop","entityType","ExplorerTreeNode","renameable","onRename","childrenPlaceholder","ExplorerCollectionNodeChildren","ExplorerDocNode","RootEmpty","onClickCreate","ExplorerEmptySection","messageTestId","actionText","onActionClick","ExplorerCollections","explorerService","ExplorerService","explorerSection","openCreateCollectionModel","CollapsibleSection","ExplorerTreeRoot","useSelectDialog","onOpenChanged","useSelectCollection","useSelectDoc","useSelectTag","FolderEmpty","FavoriteFolderOperation","ExplorerFolderNode","nodeId","defaultRenaming","organizeService","OrganizeService","folderTree","folderNode$","type$","handleDrop","ExplorerFolderNodeFolder","ExplorerTagNode","ExplorerFolderIcon","openDocsSelector","openTagsSelector","openCollectionsSelector","newFolderId","setNewFolderId","sortedChildren$","newName","handleDropOnFolder","beChildOf","moveHere","indexAt","moveOrganizeItem","createLink","handleDropEffect","handleDropOnChildren","dropAtNode","handleDropEffectOnChildren","handleChildrenCanDrop","handleNewDoc","handleCreateSubfolder","createFolder","handleAddToFolder","initialIds","selector","newItemIds","removedItemIds","removedItems","folderOperations","FolderIcon","PlusThickIcon","childrenOperations","RemoveFolderIcon","data-event-args-type","handleCollapsedChange","favoriteChildrenDropEffect","isFavoriteSupportType","favoriteRootDropEffect","sourceType","favoriteRootCanDrop","favoriteChildrenCanDrop","RootEmptyLoading","RootEmptyReady","DropEffect","ExplorerFavorites","sortedList$","handleCreateNewFavoriteDoc","handleOnChildrenDrop","reorder","orderOrganizeItem","headerRef","headerTestId","data-event-args-control","ExplorerFavoriteNode","childLocation","descriptionHighlight","ExplorerMigrationFavorites","migrationFavoriteItemsAdapter","MigrationFavoriteItemsAdapter","trashDocs","migrated","migrated$","favs","handleClickClear","markFavoritesMigrated","handleClickHelp","BroomIcon","migrationData","openMigrationDataHelp","HelpIcon","ExplorerMigrationFavoriteNode","OrganizeSupportType","isOrganizeSupportType","organizeChildrenDropEffect","organizeEmptyDropEffect","organizeEmptyRootCanDrop","ExplorerOrganize","rootFolder","handleCreateFolder","createFolderAndDrop","newFolder$","folder","configureExplorerModule","allSectionName","headerClassName","section","useExplorerDocNodeOperations","handleOpenInfoModal","handleMoveToTrash","handleAddLinkedPage","openNodeCollapsed","handleToggleFavoriteDoc","isLinked","docTitle","isInTrash","indexerLoading","referencesLoading","setReferencesLoading","handleDropOnDoc","handleDropEffectOnDoc","setEnableInfoModal","useExplorerTagNodeOperations","favorite$","tagRecord","deleteTag","openTag","handleToggleFavoriteTag","handleDropOnTag","tagDoc","handleDropEffectOnTag","ExplorerTagNodeDocs","tagDocIds","pageIds$","createPortal","MoveToIcon","RenameModal","currentName","ExplorerTreeContext","cid","useId","clickForCollapse","childCount","setChildCount","sidebarWidth","renaming","setRenaming","lastInGroup","setLastInGroup","__cid","isSelfDraggedOver","updateLastInGroup","lastElementChild","MutationObserver","childList","presetOperations","menuOperations","inlineOperations","sorted","contextValue","registerChild","data-self-dragged-over","FavoriteList","watchFavorites","watchIsLoading","watchFavorite","addFavorite","removeFavorite","reorderFavorite","targetRecord","sortedChildren","targetIndex","generateFractionalIndexingKeyBetween","FavoriteSupportType","FavoriteStore","workspaceDBService","userdataDB$","toRecord","encodeKey","parseKey","configureFavoriteModule","FindInPage","searchText$","isSearching$","direction$","visible$","result$","searchId","tap","debounceTime","findNext","findInPage","currentId","forward","onChangeVisible","toggleVisible","nextVisible","backward","FindInPageService","Navigator","history$","listen","backable$","forwardable$","back","resolveRouteLinkMeta","maybeAffineOrigin","moduleName","subModuleName","basename","isRouteModulePath","routeModulePaths","tooltipSideBottom","NavigationButtons","NavigatorService","backable","forwardable","handleBack","handleForward","configureNavigationModule","FolderNode","info$","watchNodeInfo","children$","watchNodeChildren","filterInvalidChildren","index$","childId","isAncestor","targetId","removeFolder","removeLink","moveNode","renameNode","FolderTree","folderStore","FolderStore","dbService","ancestorId","folderId","linkId","configureOrganizeModule","EMBED_DOC_FLAVOURS","isEmbedDocModel","blockModel","isImageBlockModel","isSurfaceRefModel","isAIChatBlockModel","PeekViewEntity","_active$","_show$","active$","show$","resolvedInfo","resolvePeekInfoFromPeekTarget","peekTarget","AffineReference","refMeta","refModel","referenceModel","HTMLAnchorElement","maybeDoc","firstValueFrom","WorkbenchLocationChanged","PeekViewContext","emptyContext","PeekViewModalContainer","controls","onAnimationStart","onAnimateEnd","dialogFrame","vtOpen","setVtOpen","animeState","setAnimeState","contentClipRef","contentRef","overlayRef","controlsRef","prevAnimeMap","animateControls","animateIn","anime","targets","translateX","zoomAnimate","zoomIn","paramsMap","contentClip","overlay","fromRect","toRect","lockSizeEl","contentWrapper","overlayAnime","contentAnime","contentWrapperAnime","ins","animateZoomIn","animateZoomOut","animateFade","PeekViewModalOverlay","onAnimationEnd","data-anime-state","data-padding","data-peek-view-wrapper","data-full-width-layout","useDoc","docListReady","setDoc","opened","DocPeekPreview","setEditor","resolvedMode","setResolvedMode","fitViewport","onResize","openSidebar","activeSidebarTab","PageNotFound","useZoomControls","zoomRef","imageRef","currentScale","setCurrentScale","isZoomedBigger","setIsZoomedBigger","setIsDragging","mouseX","setMouseX","mouseY","setMouseY","dragBeforeX","setDragBeforeX","dragBeforeY","setDragBeforeY","imagePos","setImagePos","handleDragStart","handleDrag","currentX","currentY","newPosX","newPosY","dragEndImpl","newPos","handleDragEnd","handleMouseUp","checkZoomSize","zoomArea","zoomedWidth","zoomedHeight","containerWidth","containerHeight","innerHeight","newScale","zoomOut","resetZoom","viewportWidth","viewportHeight","availableWidth","availableHeight","resetScale","handleScroll","deltaY","handleResize","passive","dividerStyle","filterImageBlock","imageUrlToBlob","arrayBuffer","fileTypeFromBuffer","Blob","mime","copyImageToClipboard","ClipboardItem","saveBufferToFile","blobUrl","download","ImagePreviewModalImpl","onBlockIdChange","setBlocks","goto","deleteHandler","newBlocks","toSpliced","downloadHandler","copyHandler","prevs","getPrevs","nexts","getNexts","prevBlock","findLast","nextBlock","useErrorBoundary","prevData","setPrevData","setUrl","data-blob-id","onMouseUp","onLoad","ViewBarIcon","MinusIcon","DownloadIcon","ErrorLogger","ImagePreviewErrorBoundary","ImagePreviewPeekView","setBlockId","buttonRef","ControlButton","nameKey","data-action-name","DefaultPeekViewControls","DocPeekViewControls","ExpandFullIcon","renderControls","getRendererProps","activePeekView","renderPeekView","PeekViewManagerModal","peekViewEntity","renderProps","BlockComponent","configurePeekViewModule","WorkspacePermission","fetchIsOwner","leaveWorkspace","WorkspacePermissionStore","getIsOwnerQuery","workspaceName","leaveWorkspaceMutation","configurePermissionsModule","ensuredRoot","ensuredPages","createYProxy","properties$","ensureRootProperties","defaultsDeep","journal","PageSystemPropertyId","Journal","favoritesMigrated","updateProperties","tagOptions$","updateTagOptions","updateTagOption","removeTagOption","updatePageTags","configureWorkspacePropertiesModule","TagOptionSchema","PagePropertyMetaBaseSchema","nativeEnum","PageSystemPropertyMetaBaseSchema","PageCustomPropertyMetaSchema","PageInfoItemSchema","any","PageInfoJournalItemSchema","PageInfoTagsItemSchema","WorkspaceFavoriteItemSchema","WorkspaceAffinePropertiesSchemaSchema","PageInfoCustomPropertyItemSchema","WorkspacePagePropertiesSchema","CollectionsQuickSearchSession","query$","items$","Fuse","includeMatches","includeScore","ignoreLocation","threshold","nomalizedRange","titleMatches","indices","CommandsQuickSearchSession","contextService","Always","InEdgeless","InPaper","InPaperOrEdgeless","Never","fuse","normalizedRange","subTitleMatches","keyWord","docDisplayMetaService","isIndexerLoading$","isQueryLoading$","out","getDocDisplayMeta","truncate","timestamp","setQuery","recentDocsService","docRecords","getRecentDocs","QuickSearch","state$","sessions","options$","loadingProgress$","mean","sources","DocDisplayMetaService","propertiesAdapter","originalTitle","RECENT_PAGES_KEY","EMPTY_ARRAY","RecentDocsService","addRecentDoc","recentPages","getRecentDocIds","HighlightText","part","ending","CMDK","newGroups","inputLabel","newLoading","loadingProgress","onQueryChange","onSubmit","opening","setOpening","selectedValue","dispatch","firstItem","prevGroups","prevSelectedValue","prevFirstItem","newFirstItem","selectedExists","handleValueChange","handleSelectChange","Command","shouldFilter","data-opening","CMDKGroup","i18n","Group","overflowAnchor","isI18nString","data-is-danger","CMDKKeyBinding","isMacOS","fragments","fragment","QuickSearchModal","QuickSearchContainer","onToggleQuickSearch","existingGroup","handleChangeQuery","handleSubmit","configureQuickSearchModule","CMDKQuickSearchService","recent","recentDocs","searchResultsDocs","WorkspaceQuota","fetchWorkspaceQuota","WorkspaceQuotaService","WorkspaceQuotaStore","workspaceQuotaQuery","configureQuotaModule","Share","isShared$","sharedMode$","getShareInfoByDocId","enableShare","enableSharePage","changeShare","disableShare","disableSharePage","ShareService","ShareDocsList","getWorkspacesShareDocs","ShareStore","getWorkspacePublicPageByIdQuery","publishPageMutation","revokePublicPageMutation","ShareDocsStore","getWorkspacePublicPagesQuery","publicPages","configureShareDocsModule","tagColorMap","tagOption$","watchTagInfo","tagInfo","createDate$","updateDate$","updateDate","updateTagInfo","pageRecord","TagList","watchTagIds","createNewTag","filterFn","trimmedQuery","trimmedValue","tagColorIds","randomIndex","selectedTags","TagStore","configureTagModule","ThemeEditorService","customTheme$","removeEmpty","modified$","isEmptyObj","setCustomTheme","updateCustomTheme","useCustomTheme","themeEditor","CustomThemeModifier","documentElement","ThemeEmpty","colorCellColor","colorCellRow","colorCellValue","ThemeTreeNode","setActive","isCustomized","isLeaf","data-checked","data-customized","PaletteIcon","variableNameToParts","partsToVariableName","isColor","SimpleColorPicker","ColorCell","data-override","data-custom","StringCell","VariableList","customTheme","textDecoration","variableName","Renderer","sortTree","compare","walk","getTree","allKeys","rootNodesSet","nodeMap","ancestors","affineThemes","v1","lightCssVariables","darkCssVariables","v2","lightCssVariablesV2","darkCssVariablesV2","ThemeEditor","setVersion","activeNode","setActiveNode","customizedNodeIds","setCustomizedNodeIds","onToggleVersion","configureThemeEditorModule","SidebarTab","createNavigableHistory","initialEntries","initialIndex","freeze","createKey","parsePath","Action","Pop","createEvents","blockers","getNextLocation","allowTx","applyTx","nextAction","nextLocation","go","nextIndex","createHref","createPath","Push","Replace","blocker","substr","cond","lowerBound","upperBound","View","ViewScope","sidebarTabs$","_activeSidebarTabId$","activeSidebarTab$","activeTabId","tabs","tab","entries$","size$","icon$","defaultLocation","setSize","addSidebarTab","removeSidebarTab","setTitle","setIcon","Workbench","newTabHandler","activeViewIndex$","activeViewIndex","basename$","views$","activeIndex","sidebarOpen$","updateBasename","createView","newViews","closeSidebar","toggleSidebar","replaceHistory","viewAt","newIndex","openCollections","openTrash","openTags","positionIndex","closeOthers","moveView","fromView","toView","resize","nextView","totalViewSize","percentOfTotal","newSize","newNextSize","useIsActiveView","ViewService","createIsland","targetLiveData$","Target","ViewIslandRegistryContext","ViewIslandSetContext","ViewIsland","setter","island","ViewIslandTarget","ViewIslandRegistryProvider","setContextValue","ViewBody","ViewBodyTarget","viewId","ViewHeader","ViewHeaderTarget","ViewSidebarTab","tabId","unmountOnInactive","ViewSidebarTabIconTarget","ViewSidebarTabBodyTarget","Container","data-sidebar-floating","ToggleButton","onToggle","RightSidebarIcon","SidebarHeaderSwitcher","tabItems","handleActiveTabChange","viewService","sidebarTabs","handleToggleOpen","sidebar","SplitViewMenuIndicator","setPressed","onOpenMenu","SplitViewIndicator","setOpenMenuManually","menuRootOptions","menuContentOptions","data-is-dragging","SplitViewPanel","setSlots","indicatorPressed","setIndicatorPressed","dndIsDragging","dragStyle","data-is-active","data-is-last","SplitViewMenu","viewIndex","handleMoveLeft","handleMoveRight","handleCloseOthers","CloseItem","ExpandCloseIcon","MoveLeftItem","MoveToLeftDuotoneIcon","FullScreenItem","SoloViewIcon","MoveRightItem","MoveToRightDuotoneIcon","onResizeEnd","prevPos","SplitView","renderer","onMove","resizingViewId","setResizingViewId","rootEl","rootRect","resizeHandleRenderer","dxy","fromIndex","toIndex","data-orientation","collisionDetection","closestCenter","strategy","horizontalListSortingStrategy","RouteContainer","route","viewPosition","useViewPosition","leftSidebarOpen","sidebarOpen","handleToggleSidebar","isFirst","warpedRoutes","viewRoutes","lazy","reactLazy","ViewRoot","viewRouter","createMemoryRouter","UNSAFE_LocationContext","UNSAFE_RouteContext","outlet","isDataRoute","RouterProvider","useAdapter","browserLocation","newLocation","newBrowserLocation","WorkbenchRoot","panelRenderer","WorkbenchView","WorkbenchSidebar","handleOnFocus","handleOpenChange","WorkbenchNewTabHandler","BrowserWorkbenchNewTabHandler","WorkbenchDefaultState","InMemoryWorkbenchDefaultState","configureBrowserWorkbenchModule","configureWorkbenchCommonModule","DesktopStateSynchronizer","startSync","onTabAction","onToggleRightSidebar","updateWorkbenchMeta","setPosition","calcPosition","viewList","ViewTitle","defaultPrevented","altKey","CloudBlobStorage","bufferToBlob","setBlobMutation","setBlob","deleteBlobMutation","listBlobsQuery","listBlobs","BroadcastChannelAwarenessConnection","handleAwarenessUpdate","changes","changedClients","encodeAwarenessUpdate","handleChannelMessage","applyAwarenessUpdate","clientID","uint8ArrayToBase64","dataUrl","base64ToUint8Array","base64","binaryString","CloudAwarenessConnection","awarenessBroadcast","wsId","awarenessUpdate","encodedUpdate","newClientAwarenessInitHandler","encodedAwarenessUpdate","windowBeforeUnloadHandler","removeAwarenessStates","handleConnect","handleReject","connected","predefinedStaticFiles","StaticBlobStorage","_TEST_SIMULATE_SYNC_LAG","CloudDocEngineServer","interruptCb","SEND_TIMEOUT","handleInterrupted","handleDisconnect","handleVersionRejected","clientHandShake","emitWithAck","missing","ErrorNames","DOC_NOT_FOUND","handleUpdate","CloudStaticDocStorage","CLOUD_WORKSPACES_CACHE_KEY","CloudWorkspaceFlavourProviderService","storageProvider","webSocketService","getWorkspacesQuery","deleteWorkspaceMutation","waitForLoaded","createWorkspaceMutation","getBlobStorage","docStorage","getWorkspaceProfile","cloudStorage","localData","cloudData","getIsOwner","bs","localBlob","cloudBlob","IndexedDBBlobStorage","mimeTypeDb","BroadcastChannelDocEventBus","senderChannel","IndexedDBDocStorage","KV","dbName","dbPromise","dbVersion","upgradeDB","getDb","rows","KVBehavior","LOCAL_WORKSPACE_LOCAL_STORAGE_KEY","LOCAL_WORKSPACE_CHANGED_BROADCAST_CHANNEL_KEY","LocalWorkspaceFlavourProvider","notifyChannel","allWorkspaceIDs","WorkspaceEngineStorageProvider","configureBrowserWorkspaceFlavours","configureIndexedDBWorkspaceEngineStorageProvider","_addLocalWorkspace","isSVG","isSvgBuffer","fastCheckIsNotSvg","ch","decoder","isSvg","NotFoundPattern","strokeOpacity","largeButtonEffect","notFoundPageContainer","NoPermissionOrNotFound","onSignOut","signInComponent","SignOutIcon","NotFoundPage","handleBackButtonClick","handleOpenSignOutModal","onConfirmSignOut","pingAppLayoutReady","SignIn","isLoggedIn","onSetEmailType","onSetAuthState","onSetAuthEmail","topLevelRoutes","setReady","Outlet","RootRouter","loader","createBrowserRouter","wrapCreateBrowserRouter","reactRouterCreateBrowserRouter","SENTRY_RELEASE","future","v7_normalizeFormMethod","performanceLogger","performanceRenderLogger","createEmotionCache","insertionPoint","emotionInsertionPoint","createCache","oa","getLargestOrder","lastItem","getSmallestOrder","generateKeyBetween","fromId","toId","fromItem","toItem","toNextItem","toOrder","toNextOrder","toItemPrev","toItemNext","toItemOrder","toItemPrevOrder","toItemNextOrder","insertBefore","beforeId","beforeItemIndex","beforeItem","beforeItemPrev","beforeOrder","beforePrevOrder","randomString","crypto","getRandomValues","chars","subkey","randomSize","aSubkey","bSubkey","ctrlKey","metaKey","HTMLDivElement","basicToast","decodeAndReduceImage","sizeInMB","unsharpAmount","unsharpRadius","unsharpThreshold","reducedBlob","sharedStorage","INTERNAL_SERVER_ERROR","stacktrace","BaseGraphQLError","formatRequestBody","keepNilVariables","filterEmptyValue","newVars","isNil","isObject","operationName","containsFile","transformToForm","FormData","gqlBody","files","buildMap","isFormData","definitionName","firstError","passwordLimitsFragment","credentialsRequirementFragment","changeEmailMutation","changePasswordMutation","createCustomerPortalMutation","getCurrentUserQuery","getInviteInfoQuery","getMemberCountByWorkspaceIdQuery","getMembersByWorkspaceIdQuery","getServerRuntimeConfigQuery","listHistoryQuery","getInvoicesCountQuery","invoicesQuery","recoverDocMutation","revokeMemberPermissionMutation","sendVerifyChangeEmailMutation","updateServerRuntimeConfigsMutation","verifyEmailMutation","inviteByEmailMutation","acceptInviteByInviteIdMutation","CopilotModels","CopilotPromptMessageRole","InvoiceStatus","Permission","RuntimeConfigType","ServerDeploymentType","SubscriptionStatus","LOCALES","flagEmoji","base","completeRate","ko","pt_BR","en","zh_Hans","fr","es","de","ru","ja","it","ca","da","en_US","es_CL","hi","sv_SE","es_AR","ur","ar","createI18nWrapper","getI18nFn","getI18nT","i18nStr","changeLanguage","lng","useTranslation","getI18n","timeUnitCode","second","minute","hour","defaultRelativeOption","yesterdayAndTomorrow","relativeOption","absoluteOption","noYear","noDate","formatter","Intl","RelativeTimeFormat","numeric","processor","diffSecond","trunc","diffMinute","diffHour","diffDay","DateTimeFormat","inSameMonth","diffWeek","diffMonth","diffYear","STORAGE_KEY","resources","translation","standardizeLocale","locale","createI18n","i18next","initReactI18next","fallbackLng","interpolation","escapeValue","setUpLanguage","localStorageLanguage","ProviderComposer","contexts","reduceRight","kids","themes","DesktopThemeSync","lastThemeRef","onceRef","handleThemeChange","ThemeProvider","NextThemeProvider","enableSystem","AffineContext","DocsStore","configureGlobalStorageModule","isLoadings","WorkspaceProfile","watchProfileCache","setProfile","setProfileCache","syncWithWorkspace","WorkspaceLocalStateImpl","wrapped","WorkspaceLocalCacheImpl","WorkspaceDestroyService","WorkspaceFactoryService","WorkspaceListService","WorkspaceProfileService","WorkspaceRepositoryService","customProvider","isSharedMode","instantiate","fixWorkspaceVersion","doFix","WorkspaceTransformService","newMetadata","newSubdoc","WORKSPACE_PROFILE_CACHE_KEY","WorkspaceProfileCacheStore","updateIdentity","onAccountLoggedOut","onUserQuotaChanged","TelemetryService","prevQuota","registerMiddlewares","$email","$name","$avatar","humanReadable","_event","parameters","extractGlobalContext","LocalStorageMemento","removeItem","LocalStorageGlobalCache","LocalStorageGlobalState","Telemetry","performanceI18nLogger","DebugProvider","v7_startTransition","loadLanguage","languageLoadingPromise","configureCommonModules","configureWorkspaceModule","configureDocModule","configureWorkspaceDBModule","configureGlobalContextModule","configureLifecycleModule","configureTelemetryModule","configureFindInPageModule","configureLocalStorageStateStorageImpls","frameworkProvider","App","CacheProvider","fallbackElement","performanceMainLogger","windowName","dsn","integrations","reactRouterV6BrowserTracingIntegration","useNavigationType","createRoutesFromChildren","matchRoutes","setTags","mountApp","createRoot","StrictMode","Segmenter","configurable","writable","didTimeout","timeRemaining","cancelIdleCallback"],"sourceRoot":""}
\n \" end=\"\" />\n