JUPYTER_BIN := jupyter-labextension

.PHONY: build build-dev build-prod clean clean-all watch install dist publish publish-test

## Build extension (dev mode, with source maps)
build-dev: lib
	$(JUPYTER_BIN) build --development True .

## Build extension (production, minified)
build-prod: lib
	$(JUPYTER_BIN) build .

## Default build target (dev)
build: build-dev

## Compile TypeScript to lib/
lib: src/index.ts tsconfig.json
	npx tsc
	@touch lib

## Remove compiled output
clean:
	rm -rf lib tsconfig.tsbuildinfo

## Remove everything including labextension bundle
clean-all: clean
	rm -rf nb_margin/labextension

## Watch for changes and rebuild continuously
watch:
	npx tsc -w --sourceMap &
	$(JUPYTER_BIN) watch . &
	wait

## Install extension in development mode
install:
	uv sync

## Build sdist and wheel for PyPI
dist: clean-all build-prod
	uv build

## Publish to PyPI
publish: dist
	uv publish

## Publish to Test PyPI
publish-test: dist
	uv publish --publish-url https://test.pypi.org/legacy/
